Selasa, 08 Oktober 2013

OOP(Object Oriented Programming)_Struktur Data dan Algoritma

1.      A. Class:  merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
         Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua  mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai  suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
·         contoh:
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
B. Attribute: merupakan  segala  sesuatu  yang melekat  pada Object.  Didalam  penerapan  didalam program, atribut adalah Variabel.
C. Method: sarana bagi programmer untuk memecah program kompleks menjadi bagian yang kecil-kecil,sehingga nantinya dapat digunakan berulang-ulang. Contoh : pada object mangga : terdapat method ambil Rasa , kupas Kulit dll. Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.

2.      Object
Object  adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan  yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.

o   contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
3.      Konstruktor
Kontruktor  merupakan  suatu  method  yang  akan  memberikan  nilai  awal  pada  saat  suatu  objek  dibuat.  Pada  saat  program  dijalankan, konstruktor  akan  langsung memberikan  nilai  awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan konstruktor, hal mendasar yang perlu diperhatikan, yaitu :
1.    Nama konstruktor sama dengan nama Class.
2.    Tidak ada return type yang diberikan kedalam konstruktor Signature.
3.    Tidak ada return stetement, didalam tubuh konstruktor.

4.      Private

5.         Karakteristik OOP dan contohnya:
            A. Inheritance: Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.

B. Polymorphisme: Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.
C.   Encapsulation: Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlumenghubungkan semua benda-benda bersama, mungkin dapat menambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu  bekerja untuk menulis, bagaimana sistem saraf pusat  memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}
D.   Absraction: Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction.Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
E.    Aggregation: 
5.  Over loading: Overloading adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
6.    membuat program oop untuk hitung nilai mata kuliah dan konversinya.
namespace ConsoleApplication1
{
classProgram
{
staticvoid Main(string[] args)
{
//Isi data Mahasiswa Satu
Mahasiswa mhs1 = newMahasiswa();
mhs1.Nama = “Sismantoro”;
mhs1.Nim = “12.12.0036″;
mhs1.Jurusan = “Sistem Informasi”;
mhs1.Tgl_lahir = DateTime.Parse(“1992-04-02″);
mhs1.Nilai_algoritma = “90″;
mhs1.Nilai_pbo = “86″;
mhs1.Nilai_spbd = “89″;
mhs1.Ipk = 3.25;
//Menampilkan Profil Mahasiswa Satu
mhs1.tampilProfilNonVrble();
mhs1.menghitung_Jumlah_NilaiNonVariable();
mhs1.menhitungRataRataNonVariable();
Console.WriteLine(“\n”);
//Isi data Mhs Kedua
Mahasiswa mhs2 = newMahasiswa();
mhs2.Nama = “Laurendra”;
mhs2.Nim = “12.12.3636″;
mhs2.Jurusan = “Sistem Informasi”;
mhs2.Tgl_lahir = DateTime.Parse(“1994-04-02″);
mhs2.Nilai_algoritma = “95″;
mhs2.Nilai_pbo = “98″;
mhs2.Nilai_spbd = “78″;
mhs2.Ipk = 3.45;
//Menampilkan Profil Mahasiswa Kedua
mhs2.tampilProfil(mhs2);
mhs2.menghitung_Jumlah_Nilai(mhs2);
mhs2.menhitungRataRata(mhs2);
Console.WriteLine(“\n”);
//Isi data Mhs Ketiga
Mahasiswa mhs3 = newMahasiswa(“12.12.0063″, “Eka Putri Pertiwi”,
“Sistem Informasi”,DateTime.Parse(“1993-12-18″), 3.53, “97″, “88″, “93″);
//Menampilkan Profil Mahasiswa Ketiga
mhs3.tampilProfil(mhs3);
mhs3.menghitung_Jumlah_Nilai(mhs3);
mhs3.menhitungRataRata(mhs3);
Console.WriteLine(“\n”);
Console.WriteLine(“###############################”);
Console.Read();
}
}
}
Tampilan Untuk Class Mahasiswa (Class Child)
namespace ConsoleApplication1
{
classMahasiswa
{
//Daftar Field
string nim, nama,jurusan, nilai_algoritma, nilai_spbd, nilai_pbo; 
publicstring Nilai_pbo
{
get { return nilai_pbo; }
set { nilai_pbo = value; }
}
publicstring Nilai_spbd
{
get { return nilai_spbd; }
set { nilai_spbd = value; }
}
publicstring Nilai_algoritma
{
get { return nilai_algoritma; }
set { nilai_algoritma = value; }
}
publicstring Jurusan
{
get { return jurusan; }
set { jurusan = value; }
}
publicstring Nama
{
get { return nama; }
set { nama = value; }
}

publicstring Nim
{
get { return nim; }
set { nim = value; }
}
DateTime tgl_lahir;
publicDateTime Tgl_lahir
{
get { return tgl_lahir; }
set { tgl_lahir = value; }
}
double ipk;
publicdouble Ipk
{
get { return ipk; }
set { ipk = value; }
}
//tampilan umum Constructor
public Mahasiswa()
{
}
//Constructor Tugas tambahan…DI aplikasikan untuk mahasiswa Ketiga di class utama
public Mahasiswa(string nim, string nama, string Jurusan,
DateTime tglLahir, double ipk, string nilai_algoritma, string nilai_spbd, string nilai_pbo)
{
this.nilai_algoritma = nilai_algoritma;
this.nilai_spbd = nilai_spbd;
this.nilai_pbo = nilai_pbo;
this.nim = nim;
this.nama = nama;
jurusan = Jurusan;
tgl_lahir = tglLahir;
this.ipk = ipk;
}
//overloading Constructor dari tugas di atas
public Mahasiswa(string nim, string nama, string jurusan,
DateTime tgl_lahir, double ipk)
{
this.nim = nim;
this.nama = nama;
this.jurusan = jurusan;
this.tgl_lahir = tgl_lahir;
this.ipk = ipk;
}
//Method Untuk Menampilkan Profil dan Nilai mata kuliah
//(Diaplikasikan untuk mahasiswa kedua dan ketida di class utama)
publicvoid tampilProfil(Mahasiswa mhs)
{
Console.WriteLine(“”);
Console.WriteLine(mhs.nim);
Console.WriteLine(mhs.nama);
Console.WriteLine(mhs.jurusan);
Console.WriteLine(mhs.tgl_lahir);
Console.WriteLine(mhs.ipk);
Console.WriteLine(“Nilai Algoritma\t\t= “+mhs.nilai_algoritma);
Console.WriteLine(“Nila spbd \t\t= “+mhs.nilai_spbd);
Console.WriteLine(“Nilai pbo \t\t= “+mhs.nilai_pbo);
}
//Method ‘tidak’ menggunakan variable
//(Digunakan untuk mhs pertama pada class utama)
publicvoid tampilProfilNonVrble()
{
Console.WriteLine(“”);
Console.WriteLine(“########################################”);
Console.WriteLine(nim);
Console.WriteLine(nama);
Console.WriteLine(jurusan);
Console.WriteLine(tgl_lahir);
Console.WriteLine(ipk);
Console.WriteLine(“Nilai Algoritma\t\t= ” + nilai_algoritma);
Console.WriteLine(“Nilai spbd \t\t= ” + nilai_spbd);
Console.WriteLine(“Nilai pbo \t\t= ” + nilai_pbo);
}
//Method Menampilkan hanya Nilai Makul
// (Method ini tidak diaplikasikan, tapi bisa di panggil pada class utama)
publicvoid aksesnilai()
{
Console.WriteLine(nim);
Console.WriteLine(nilai_spbd);
Console.WriteLine(nilai_algoritma);
Console.WriteLine(nilai_pbo);
}
//Method untuk menghitung Nilai Rata-rata dari nilai mata kuliah
//(Diaplikasikan pada mhs kedua dan ketida)
publicvoid menhitungRataRata(Mahasiswa mhs)
{
int algo, pbo, spbd;
algo = int.Parse(mhs.nilai_algoritma);
pbo = int.Parse(mhs.nilai_pbo);
spbd = int.Parse(mhs.nilai_spbd);
double hasil = (algo + pbo + spbd) / 3;
Console.Write(“Nilai Rata-rata adalah \t= “+hasil);
}
//Method untuk menghitung Nilai Rata-rata Tanpa variable
//(Diaplikasikan pada mhs pertama)
publicvoid menhitungRataRataNonVariable()
{
int algo, pbo, spbd;
algo = int.Parse(nilai_algoritma);
pbo = int.Parse(nilai_pbo);
spbd = int.Parse(nilai_spbd);
double hasil = (algo + pbo + spbd) / 3;
Console.Write(“Nilai Rata-rata adalah \t= ” + hasil);
}
//Method Menghitung jumlah Nilai
//(Diaplikasikan pada mhs kedua dan ketida)
publicvoid menghitung_Jumlah_Nilai(Mahasiswa mhs)
{
int algo, pbo, spbd;
algo = int.Parse(mhs.nilai_algoritma);
pbo = int.Parse(mhs.nilai_pbo);
spbd = int.Parse(mhs.nilai_spbd);
int hasil = algo + pbo + spbd;
Console.WriteLine(“”);
Console.WriteLine(“Jumlah Nilainya adalah \t= “+hasil);
}
//Method Mengitung Jumlah Nilai Tanpa Variabl
//(Diaplikasikan pada mhs pertama)
publicvoid menghitung_Jumlah_NilaiNonVariable()
{
int algo, pbo, spbd;
algo = int.Parse(nilai_algoritma);
pbo = int.Parse(nilai_pbo);
spbd = int.Parse(nilai_spbd);
int hasil = algo + pbo + spbd;
Console.WriteLine(“”);
Console.WriteLine(“Jumlah Nilainya adalah \t= ” + hasil);
}
}
}



1.      A. Class:  merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
         Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua  mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai  suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
·         contoh:
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
B. Attribute: merupakan  segala  sesuatu  yang melekat  pada Object.  Didalam  penerapan  didalam program, atribut adalah Variabel.
C. Method: sarana bagi programmer untuk memecah program kompleks menjadi bagian yang kecil-kecil,sehingga nantinya dapat digunakan berulang-ulang. Contoh : pada object mangga : terdapat method ambil Rasa , kupas Kulit dll. Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.

2.      Object
Object  adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan  yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.

o   contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
3.      Konstruktor
Kontruktor  merupakan  suatu  method  yang  akan  memberikan  nilai  awal  pada  saat  suatu  objek  dibuat.  Pada  saat  program  dijalankan, konstruktor  akan  langsung memberikan  nilai  awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan konstruktor, hal mendasar yang perlu diperhatikan, yaitu :
1.    Nama konstruktor sama dengan nama Class.
2.    Tidak ada return type yang diberikan kedalam konstruktor Signature.
3.    Tidak ada return stetement, didalam tubuh konstruktor.

4.      Private

5.         Karakteristik OOP dan contohnya:
            A. Inheritance: Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.

B. Polymorphisme: Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.
C.   Encapsulation: Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlumenghubungkan semua benda-benda bersama, mungkin dapat menambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu  bekerja untuk menulis, bagaimana sistem saraf pusat  memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}
D.   Absraction: Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction.Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
E.    Aggregation: 
5.  Over loading: Overloading adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
6.    membuat program oop untuk hitung nilai mata kuliah dan konversinya.
namespace ConsoleApplication1
{
classProgram
{
staticvoid Main(string[] args)
{
//Isi data Mahasiswa Satu
Mahasiswa mhs1 = newMahasiswa();
mhs1.Nama = “Sismantoro”;
mhs1.Nim = “12.12.0036″;
mhs1.Jurusan = “Sistem Informasi”;
mhs1.Tgl_lahir = DateTime.Parse(“1992-04-02″);
mhs1.Nilai_algoritma = “90″;
mhs1.Nilai_pbo = “86″;
mhs1.Nilai_spbd = “89″;
mhs1.Ipk = 3.25;
//Menampilkan Profil Mahasiswa Satu
mhs1.tampilProfilNonVrble();
mhs1.menghitung_Jumlah_NilaiNonVariable();
mhs1.menhitungRataRataNonVariable();
Console.WriteLine(“\n”);
//Isi data Mhs Kedua
Mahasiswa mhs2 = newMahasiswa();
mhs2.Nama = “Laurendra”;
mhs2.Nim = “12.12.3636″;
mhs2.Jurusan = “Sistem Informasi”;
mhs2.Tgl_lahir = DateTime.Parse(“1994-04-02″);
mhs2.Nilai_algoritma = “95″;
mhs2.Nilai_pbo = “98″;
mhs2.Nilai_spbd = “78″;
mhs2.Ipk = 3.45;
//Menampilkan Profil Mahasiswa Kedua
mhs2.tampilProfil(mhs2);
mhs2.menghitung_Jumlah_Nilai(mhs2);
mhs2.menhitungRataRata(mhs2);
Console.WriteLine(“\n”);
//Isi data Mhs Ketiga
Mahasiswa mhs3 = newMahasiswa(“12.12.0063″, “Eka Putri Pertiwi”,
“Sistem Informasi”,DateTime.Parse(“1993-12-18″), 3.53, “97″, “88″, “93″);
//Menampilkan Profil Mahasiswa Ketiga
mhs3.tampilProfil(mhs3);
mhs3.menghitung_Jumlah_Nilai(mhs3);
mhs3.menhitungRataRata(mhs3);
Console.WriteLine(“\n”);
Console.WriteLine(“###############################”);
Console.Read();
}
}
}
Tampilan Untuk Class Mahasiswa (Class Child)
namespace ConsoleApplication1
{
classMahasiswa
{
//Daftar Field
string nim, nama,jurusan, nilai_algoritma, nilai_spbd, nilai_pbo; 
publicstring Nilai_pbo
{
get { return nilai_pbo; }
set { nilai_pbo = value; }
}
publicstring Nilai_spbd
{
get { return nilai_spbd; }
set { nilai_spbd = value; }
}
publicstring Nilai_algoritma
{
get { return nilai_algoritma; }
set { nilai_algoritma = value; }
}
publicstring Jurusan
{
get { return jurusan; }
set { jurusan = value; }
}
publicstring Nama
{
get { return nama; }
set { nama = value; }
}

publicstring Nim
{
get { return nim; }
set { nim = value; }
}
DateTime tgl_lahir;
publicDateTime Tgl_lahir
{
get { return tgl_lahir; }
set { tgl_lahir = value; }
}
double ipk;
publicdouble Ipk
{
get { return ipk; }
set { ipk = value; }
}
//tampilan umum Constructor
public Mahasiswa()
{
}
//Constructor Tugas tambahan…DI aplikasikan untuk mahasiswa Ketiga di class utama
public Mahasiswa(string nim, string nama, string Jurusan,
DateTime tglLahir, double ipk, string nilai_algoritma, string nilai_spbd, string nilai_pbo)
{
this.nilai_algoritma = nilai_algoritma;
this.nilai_spbd = nilai_spbd;
this.nilai_pbo = nilai_pbo;
this.nim = nim;
this.nama = nama;
jurusan = Jurusan;
tgl_lahir = tglLahir;
this.ipk = ipk;
}
//overloading Constructor dari tugas di atas
public Mahasiswa(string nim, string nama, string jurusan,
DateTime tgl_lahir, double ipk)
{
this.nim = nim;
this.nama = nama;
this.jurusan = jurusan;
this.tgl_lahir = tgl_lahir;
this.ipk = ipk;
}
//Method Untuk Menampilkan Profil dan Nilai mata kuliah
//(Diaplikasikan untuk mahasiswa kedua dan ketida di class utama)
publicvoid tampilProfil(Mahasiswa mhs)
{
Console.WriteLine(“”);
Console.WriteLine(mhs.nim);
Console.WriteLine(mhs.nama);
Console.WriteLine(mhs.jurusan);
Console.WriteLine(mhs.tgl_lahir);
Console.WriteLine(mhs.ipk);
Console.WriteLine(“Nilai Algoritma\t\t= “+mhs.nilai_algoritma);
Console.WriteLine(“Nila spbd \t\t= “+mhs.nilai_spbd);
Console.WriteLine(“Nilai pbo \t\t= “+mhs.nilai_pbo);
}
//Method ‘tidak’ menggunakan variable
//(Digunakan untuk mhs pertama pada class utama)
publicvoid tampilProfilNonVrble()
{
Console.WriteLine(“”);
Console.WriteLine(“########################################”);
Console.WriteLine(nim);
Console.WriteLine(nama);
Console.WriteLine(jurusan);
Console.WriteLine(tgl_lahir);
Console.WriteLine(ipk);
Console.WriteLine(“Nilai Algoritma\t\t= ” + nilai_algoritma);
Console.WriteLine(“Nilai spbd \t\t= ” + nilai_spbd);
Console.WriteLine(“Nilai pbo \t\t= ” + nilai_pbo);
}
//Method Menampilkan hanya Nilai Makul
// (Method ini tidak diaplikasikan, tapi bisa di panggil pada class utama)
publicvoid aksesnilai()
{
Console.WriteLine(nim);
Console.WriteLine(nilai_spbd);
Console.WriteLine(nilai_algoritma);
Console.WriteLine(nilai_pbo);
}
//Method untuk menghitung Nilai Rata-rata dari nilai mata kuliah
//(Diaplikasikan pada mhs kedua dan ketida)
publicvoid menhitungRataRata(Mahasiswa mhs)
{
int algo, pbo, spbd;
algo = int.Parse(mhs.nilai_algoritma);
pbo = int.Parse(mhs.nilai_pbo);
spbd = int.Parse(mhs.nilai_spbd);
double hasil = (algo + pbo + spbd) / 3;
Console.Write(“Nilai Rata-rata adalah \t= “+hasil);
}
//Method untuk menghitung Nilai Rata-rata Tanpa variable
//(Diaplikasikan pada mhs pertama)
publicvoid menhitungRataRataNonVariable()
{
int algo, pbo, spbd;
algo = int.Parse(nilai_algoritma);
pbo = int.Parse(nilai_pbo);
spbd = int.Parse(nilai_spbd);
double hasil = (algo + pbo + spbd) / 3;
Console.Write(“Nilai Rata-rata adalah \t= ” + hasil);
}
//Method Menghitung jumlah Nilai
//(Diaplikasikan pada mhs kedua dan ketida)
publicvoid menghitung_Jumlah_Nilai(Mahasiswa mhs)
{
int algo, pbo, spbd;
algo = int.Parse(mhs.nilai_algoritma);
pbo = int.Parse(mhs.nilai_pbo);
spbd = int.Parse(mhs.nilai_spbd);
int hasil = algo + pbo + spbd;
Console.WriteLine(“”);
Console.WriteLine(“Jumlah Nilainya adalah \t= “+hasil);
}
//Method Mengitung Jumlah Nilai Tanpa Variabl
//(Diaplikasikan pada mhs pertama)
publicvoid menghitung_Jumlah_NilaiNonVariable()
{
int algo, pbo, spbd;
algo = int.Parse(nilai_algoritma);
pbo = int.Parse(nilai_pbo);
spbd = int.Parse(nilai_spbd);
int hasil = algo + pbo + spbd;
Console.WriteLine(“”);
Console.WriteLine(“Jumlah Nilainya adalah \t= ” + hasil);
}
}
}



Sabtu, 18 Mei 2013


PENGANTAR
Exception(Pengecualian) adalah suatu peristiwa yang terjadi selama pelaksanaan program, dan membutuhkan eksekusi kode luar aliran normal kontrol. Ada dua jenis pengecualian: pengecualian hardware dan software pengecualian. Pengecualian Hardware yang diprakarsai oleh CPU. Mereka dapat hasil dari eksekusi urutan instruksi tertentu, seperti pembagian dengan nol atau usaha untuk mengakses alamat memori yang tidak valid. Pengecualian Software yang dimulai secara eksplisit oleh aplikasi atau sistem operasi. Sebagai contoh, sistem dapat mendeteksi ketika nilai parameter tidak valid ditentukan.Structured
Exception handling adalah suatu mekanisme untuk menangani hardware dan software pengecualian. Oleh karena itu, kode Anda akan menangani perangkat keras dan perangkat lunak pengecualian identik. Penanganan eksepsi terstruktur memungkinkan Anda untuk memiliki kontrol penuh atas penanganan pengecualian, menyediakan dukungan untuk debugger, dan dapat digunakan di semua bahasa pemrograman dan mesin. Pengecualian penanganan vektor adalah perluasan untuk penanganan eksepsi terstruktur.Sistem ini juga mendukung penanganan terminasi, yang memungkinkan Anda untuk memastikan bahwa setiap kali tubuh dijaga kode dijalankan, sebuah blok tertentu dari kode terminasi juga dieksekusi. Kode terminasi dijalankan terlepas dari bagaimana aliran kontrol meninggalkan tubuh dijaga. Misalnya, penangan terminasi dapat menjamin bahwa tugas bersih-bersih dilakukan bahkan jika pengecualian atau beberapa error lain terjadi ketika tubuh dijaga kode yang sedang dieksekusi.

Terstruktur pengecualian penanganan dan mekanisme penanganan terminasi merupakan bagian integral dari sistem, mereka memungkinkan sistem untuk menjadi kuat. Anda dapat menggunakan mekanisme ini untuk membuat aplikasi secara konsisten kuat dan dapat diandalkan.Structured exception handling dibuat tersedia terutama melalui dukungan compiler. Sebagai contoh, Microsoft C / C + + Mengoptimalkan Compiler mendukung __ mencoba kata kunci yang mengidentifikasi tubuh dijaga kode, __ kecuali kata kunci yang mengidentifikasi pengecualian handler, dan __ akhirnya kata kunci yang mengidentifikasi handler terminasi. Meskipun gambaran ini menggunakan contoh-contoh spesifik untuk Microsoft C / C + + compiler, compiler lain memberikan dukungan ini juga.

Pengecualian dapat dimulai oleh perangkat keras atau perangkat lunak, dan dapat terjadi pada kernel-mode serta kode mode pengguna. Penanganan eksepsi terstruktur menyediakan mekanisme tunggal untuk penanganan kernel-mode dan user-mode pengecualian.Pelaksanaan urutan instruksi tertentu dapat mengakibatkan pengecualian yang diprakarsai oleh hardware. Misalnya, pelanggaran akses yang dihasilkan oleh perangkat keras ketika proses mencoba untuk membaca dari atau menulis ke alamat virtual yang tidak memiliki akses yang tepat. Acara yang memerlukan penanganan eksepsi juga dapat terjadi selama proses eksekusi rutin perangkat lunak (misalnya, ketika sebuah nilai parameter tidak valid ditentukan). Ketika ini terjadi, benang dapat memulai pengecualian eksplisit dengan memanggil fungsi RaiseException. Fungsi ini memungkinkan benang menelepon untuk menentukan informasi yang menggambarkan pengecualian. Pengecualian bisa berlanjut atau noncontinuable. Pengecualian noncontinuable muncul ketika acara tersebut tidak berlanjut di hardware, atau jika kelanjutan tidak masuk akal. Pengecualian noncontinuable tidak mengakhiri aplikasi. Oleh karena itu, aplikasi mungkin dapat menangkap pengecualian dan menjalankan. Namun, pengecualian noncontinuable biasanya muncul sebagai akibat dari tumpukan rusak atau masalah serius lainnya, sehingga sulit untuk pulih dari pengecualian.

Penanganan sistem pengecualian mode pengguna menyediakan dukungan untuk debugger canggih. Jika proses di mana pengecualian terjadi sedang debugged, sistem menghasilkan acara debug. Jika debugger menggunakan fungsi WaitForDebugEvent, acara debug menyebabkan bahwa fungsi untuk kembali dengan pointer ke struktur DEBUG_EVENT. Struktur ini berisi proses dan pengenal benang debugger dapat digunakan untuk mengakses catatan konteks thread. Struktur ini juga mengandung struktur EXCEPTION_DEBUG_INFO yang mencakup salinan dari catatan pengecualian.Ketika sistem mencari pengecualian handler, itu membuat dua upaya untuk memberitahukan debugger proses itu. Upaya pemberitahuan pertama menyediakan debugger dengan kesempatan untuk menangani breakpoint atau pengecualian satu langkah. Ini dikenal sebagai pemberitahuan pertama-kebetulan. Pengguna kemudian dapat mengeluarkan perintah debugger untuk memanipulasi lingkungan proses itu sebelum penangan pengecualian dieksekusi. Upaya kedua untuk memberitahu debugger hanya terjadi jika sistem tidak dapat menemukan handler pengecualian berbasis frame yang menangani pengecualian. Ini dikenal sebagai pemberitahuan-kesempatan terakhir. Jika debugger tidak menangani pengecualian setelah pemberitahuan-kesempatan terakhir, sistem mengakhiri proses yang sedang debugged.Pada setiap upaya pemberitahuan, debugger menggunakan fungsi ContinueDebugEvent untuk mengembalikan kontrol ke sistem. Sebelum kembali kontrol, debugger dapat menangani pengecualian dan memodifikasi negara thread yang sesuai, atau dapat memilih untuk tidak menangani pengecualian. Menggunakan ContinueDebugEvent, debugger dapat menunjukkan bahwa ia telah menangani pengecualian, dalam hal keadaan mesin dipulihkan dan eksekusi thread dilanjutkan pada titik di mana pengecualian terjadi. Debugger juga dapat menunjukkan bahwa itu tidak menangani pengecualian, yang menyebabkan sistem untuk melanjutkan pencarian untuk pengecualian handler.

Tujuan Sebuah aplikasi dapat menggunakan aplikasi Pemulihan dan Restart (ARR) untuk menyimpan data dan informasi negara sebelum keluar aplikasi karena eksepsi tidak tertangani atau ketika aplikasi berhenti merespons. Aplikasi ini juga ulang, jika diminta.Sebuah aplikasi juga bisa restart jika installer update komponen dari aplikasi, atau jika komputer perlu me-restart sebagai hasil dari update. Perhatikan bahwa untuk mendukung me-restart aplikasi otomatis setelah update installer aplikasi, baik aplikasi dan installer harus ditulis dengan tepat. Untuk rincian, lihat Pendaftaran untuk Restart Aplikasi.penonton PengembangARR dirancang untuk C dan C + + pengembang.Persyaratan Run-timeARR tersedia mulai dengan sistem operasi Windows Vista.

Sebuah aplikasi dapat menggunakan aplikasi Pemulihan dan Restart (ARR) untuk menyimpan data dan informasi negara sebelum keluar aplikasi karena eksepsi tidak tertangani atau ketika aplikasi berhenti merespons. Aplikasi ini juga ulang, jika diminta.Ketika Anda mendaftar untuk pemulihan atau restart, informasi pendaftaran akan ditambahkan ke proses. Windows Error Reporting (Wer) menggunakan informasi pendaftaran untuk memanggil callback pemulihan dan restart aplikasi Anda. Misalnya, jika Anda mendaftar untuk pemulihan dan aplikasi Anda menemukan sebuah eksepsi tidak tertangani, Wer menampilkan dialog untuk pengguna yang memberikan pengguna pilihan untuk memeriksa solusi online, menutup program, atau debugging program. Jika pengguna memilih untuk langsung memeriksanya untuk solusi atau menutup program, Wer memanggil callback terdaftar dan memberikan aplikasi kesempatan untuk menyimpan data dan informasi negara. Ketika pemulihan selesai, aplikasi diakhiri.Jika Anda mendaftar untuk restart dan aplikasi Anda menemukan sebuah eksepsi tidak tertangani, Wer menampilkan dialog yang sama kepada pengguna tetapi memberikan pilihan untuk me-restart program bukan menutup program. Jika Anda mendaftar untuk kedua pemulihan dan restart, pemulihan lebih cepat terjadi; aplikasi ini kemudian dihentikan dan dimulai kembali.Sebuah aplikasi responsif ditangani dengan cara yang sama. Sebuah aplikasi dianggap tidak responsif jika tidak merespon Windows pesan selama lima detik dan pengguna kemudian mencoba untuk berinteraksi dengan aplikasi tersebut, pengguna akan melihat (Tidak Menanggapi) dalam judul bar. WER diaktifkan ketika pengguna mengklik tombol sistem tertutup.Anda harus mendaftar untuk pemulihan atau restart, atau menghapus pendaftaran, sebelum aplikasi menjadi tidak responsif atau pertemuan unhandled pengecualian. Namun, dalam callback pemulihan Anda, Anda dapat mengubah baris perintah restart.
Untuk rincian tentang mendaftar untuk pemulihan atau restart, lihat topik berikut:
Bagian ini memberikan rincian tentang menerapkan fitur pemulihan dalam aplikasi Anda. Anda harus mempertimbangkan untuk menerapkan fitur ini untuk menangani kasus-kasus berikut:Memulihkan ketika aplikasi mengalami unhandled pengecualian atau berhenti meresponsMencegah hilangnya data saat aplikasi tiba-tiba berhenti bekerja.Menyimpan data dan kondisi aplikasi saat aplikasi sedang ditutup karena pembaruan perangkat lunakMemungkinkan pengguna untuk mulus kembali data aplikasi ketika aplikasi ditutup karena instalasi software update (yang mungkin terjadi tanpa memberikan pengguna kesempatan untuk menyimpan data).Memulihkan ketika aplikasi mengalami unhandled pengecualian atau berhenti meresponsUntuk mendaftarkan callback pemulihan, memanggil fungsi RegisterApplicationRecoveryCallback. Windows Error Reporting (Wer) panggilan panggilan balik pemulihan Anda sebelum aplikasi keluar karena eksepsi tidak tertangani atau aplikasi tidak menanggapi. Anda menggunakan callback pemulihan untuk mencoba untuk menyimpan data dan informasi negara sebelum aplikasi berakhir. Anda kemudian dapat menggunakan data yang disimpan dan informasi negara saat aplikasi di-restart.Selama proses pemulihan, Anda harus memanggil fungsi ApplicationRecoveryInProgress dalam interval ping tertentu, jika tidak, proses pemulihan dihentikan. Memanggil ApplicationRecoveryInProgress memungkinkan Wer tahu bahwa Anda masih aktif memulihkan data. Ketika proses pemulihan selesai, memanggil fungsi ApplicationRecoveryFinished. Perhatikan bahwa fungsi ApplicationRecoveryFinished harus menjadi panggilan terakhir yang Anda lakukan sebelum keluar karena fungsi segera berakhir aplikasi.Anda harus mempertimbangkan secara berkala menyimpan salinan sementara dari data dan informasi negara selama normal dari proses aplikasi. Berkala menyimpan data dapat menghemat waktu dalam proses pemulihan.Menyimpan data dan kondisi aplikasi saat aplikasi sedang ditutup karena pembaruan perangkat lunakJika sebuah aplikasi Windows dapat diperbarui, aplikasi juga harus memproses WM_QUERYENDSESSION dan pesan WM_ENDSESSION. Installer mengirimkan pesan ini ketika installer membutuhkan aplikasi untuk shutdown untuk menyelesaikan instalasi atau saat reboot diperlukan untuk menyelesaikan instalasi. Perhatikan bahwa dalam kasus ini, aplikasi memiliki sedikit waktu untuk melakukan recovery. Misalnya, aplikasi tersebut harus merespon setiap pesan dalam waktu lima detik.Untuk aplikasi konsol yang dapat diperbarui, Anda harus mempertimbangkan penanganan pemberitahuan CTRL_C_EVENT. Sebagai contoh, lihat Pendaftaran untuk Restart Aplikasi. Installer mengirimkan pemberitahuan ini ketika membutuhkan aplikasi untuk shutdown untuk menyelesaikan pembaruan. Aplikasi ini memiliki 30 detik untuk menangani pemberitahuan.Contoh berikut menunjukkan bagaimana cara mendaftar untuk pemulihan, implementasi callback pemulihan sederhana, dan bagaimana memproses pesan-pesan WM_QUERYENDSESSION dan WM_ENDSESSION

ERROR HANDLING
·         Error Mode
Modus kesalahan ini menunjukkan ke sistem bagaimana aplikasi akan menanggapi kesalahan serius. Kesalahan serius termasuk kegagalan disk, kesalahan drive-tidak-siap, misalignment data, dan pengecualian tertangani. Modus Kesalahan ini dapat dikelola oleh baik per-benang atau per-proses dasar. Sebuah aplikasi dapat membiarkan sistem menampilkan kotak pesan yang memberitahu pengguna bahwa kesalahan telah terjadi, atau dapat menangani kesalahan.Untuk menangani kesalahan ini tanpa campur tangan pengguna, gunakan SetErrorMode atau SetThreadErrorMode benang khusus. Setelah memanggil salah satu fungsi dan menetapkan bendera yang tepat, sistem tidak akan menampilkan kotak pesan kesalahan yang sesuai.Sebuah proses dapat mengambil modus kesalahan dengan menggunakan GetErrorMode atau GetThreadErrorMode.Praktik terbaik adalah bahwa semua aplikasi memanggil fungsi SetErrorMode proses-lebar dengan parameter SEM_FAILCRITICALERRORS saat startup. Hal ini untuk mencegah kesalahan dari dialog modus tergantung aplikasi.Selain itu, penelepon harus mendukung versi benang-spesifik fungsi-fungsi karena mereka kurang mengganggu perilaku normal dari sistem.
·       Last-Error Code
Bila terjadi kesalahan, fungsi sistem yang paling mengembalikan kode kesalahan, biasanya 0, NULL, atau -1. Banyak fungsi sistem juga menetapkan kode kesalahan tambahan yang disebut kode-kesalahan terakhir. Kode kesalahan ini dipertahankan secara terpisah untuk setiap thread berjalan, kesalahan dalam satu thread tidak menimpa kode kesalahan terakhir di thread lain. Setiap fungsi dapat memanggil SetLastError atau fungsi SetLastErrorEx untuk mengatur kode-kesalahan terakhir untuk thread saat ini. Fungsi-fungsi dimaksudkan terutama untuk perpustakaan dynamic link (DLL), sehingga mereka dapat memberikan informasi kepada aplikasi yang memanggil. Perhatikan bahwa beberapa fungsi panggilan SetLastError atau SetLastErrorEx dengan 0 ketika mereka berhasil, menghapus kode kesalahan yang ditetapkan oleh fungsi yang paling baru-baru ini gagal, sementara yang lainnya tidak.Sebuah aplikasi dapat mengambil kode-kesalahan terakhir dengan menggunakan fungsi GetLastError, kode kesalahan mungkin mengatakan lebih banyak tentang apa yang sebenarnya terjadi untuk membuat fungsi gagal. Dokumentasi untuk fungsi sistem akan menunjukkan kondisi di mana fungsi menetapkan kode-kesalahan terakhir.Sistem ini mendefinisikan satu set kode kesalahan yang dapat ditetapkan sebagai kode-kesalahan terakhir atau dikembalikan oleh fungsi tersebut. Kode kesalahan adalah nilai-nilai 32-bit (bit 31 adalah bit yang paling signifikan). Bit 29 dicadangkan untuk didefinisikan aplikasi kode kesalahan, tidak ada kode kesalahan sistem memiliki sedikit set ini. Jika anda mendefinisikan kode kesalahan untuk aplikasi Anda, mengatur sedikit ini untuk menunjukkan bahwa kode kesalahan telah didefinisikan oleh aplikasi dan memastikan bahwa kode kesalahan tidak bertentangan dengan kode kesalahan didefinisikan sistem. Untuk informasi lebih lanjut, lihat winerror.h dan Sistem Kode Kesalahan.

·       Notifying the User
Untuk memberitahu pengguna bahwa beberapa jenis kesalahan telah terjadi, banyak aplikasi hanya menghasilkan suara dengan menggunakan fungsi MessageBeep atau berkedip jendela dengan menggunakan salah satu FlashWindow atau fungsi FlashWindowEx. Sebuah aplikasi juga dapat menggunakan fungsi-fungsi untuk memperhatikan kesalahan dan kemudian menampilkan kotak pesan atau pesan kesalahan yang berisi rincian tentang kesalahan.
·       Tabel Pesan
Tabel pesan adalah sumber daya khusus string yang digunakan ketika menampilkan pesan kesalahan. Mereka dinyatakan dalam file sumber daya menggunakan pernyataan sumber-definisi MESSAGETABLE. Untuk mengakses string pesan, gunakan fungsi FormatMessage.Sistem ini menyediakan meja pesan untuk kode kesalahan sistem. Untuk mengambil string yang sesuai dengan kode kesalahan, panggilan FormatMessage dengan bendera FORMAT_MESSAGE_FROM_SYSTEM.Untuk menyediakan meja pesan untuk aplikasi Anda, ikuti petunjuk dalam pesan teks File. Untuk mengambil string dari meja pesan Anda, hubungi FormatMessage dengan bendera FORMAT_MESSAGE_FROM_HMODULE.

·       Fatal Application Exit
Fungsi FatalAppExit menampilkan kotak pesan dan berakhir aplikasi ketika pengguna menutup kotak pesan. Fungsi ini seharusnya hanya digunakan sebagai pilihan terakhir, karena mungkin tidak membebaskan memori atau file yang dimiliki oleh aplikasi.


Sumber Refrensi:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee663269(v=vs.85).aspx