Selasa, 08 Oktober 2013

Pemrograman Berorientasi Obyek

  Syarat Polymorphisme :
·         Method yang dipanggil harus melalui variabel dari basis class atau superclass.
·         Method yang dipanggil harus juga menjadi method dari basis class.
·         Signature method harus sama baik pada superclass maupun subclass.
·         Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.

Contoh dalam program C++ :

#include <stdio.h>
#include <iostream.h>
// Deklarasi kelas-kelas
class Kotak
{
 protected :
 int panjang, lebar;
 long luas, keliling;
 public :
 Kotak (int Panjang, int Lebar);
 int ambil_panjang();
 int ambil_lebar();
virtual void hitung(); // metode virtual
void ambil (long& Luas, long& Keliling);
 };
 class Balok : public Kotak
{
 private :
int tinggi;
 int volume;
 public :
 Balok (int Panjang, int Lebar, int Tinggi);
 int ambil_tinggi();
 virtual void hitung(); // metode virtual
void ambil (long& Luas, long& Keliling, long& Volume);
};

 // Definisi metode-metode kelas Kotak
Kotak::Kotak (int Panjang, int Lebar)
{
 panjang = Panjang;
 lebar = Lebar;
 }
 int Kotak::ambil_panjang()
 {
 return panjang;
}
 int Kotak::ambil_lebar()
 {
 return lebar;
}
 void Kotak::hitung()
 {
 luas = panjang * lebar;
 keliling = 2 * (panjang + lebar);
}
 void Kotak::ambil (long& Luas, long& Keliling)
 {
 Luas = luas;
 Keliling = keliling;
 }

 // Definisi metode-metode kelas Balok
 Balok::Balok (int Panjang, int Lebar, int Tinggi):Kotak (Panjang, Lebar)
 {
 tinggi = Tinggi;
 }
 int Balok::ambil_tinggi()
 {
 return tinggi;
 }
 void Balok::hitung()
 {
 Kotak::hitung();
 volume = panjang*lebar*tinggi;
 }
 void Balok::ambil(long& Luas, long& Keliling, long& Volume)
 {
 Kotak::ambil(Luas, Keliling);
 Volume = volume;
}

 // Program Utama
int main ()
 {
Kotak A (12, 3);
 Balok B (12, 3, 8);
 cout << "Menghitung luas, keliling, dan volume bangun" <<endl;
 cout << "===============================================" <<endl;
 A.hitung();

 long l, k;
 A.ambil(l, k);
 cout << "Kotak sisi-sisinya : " <<endl;
cout << "Panjang = " << A.ambil_panjang() << endl;
 cout << "Lebar = " << A.ambil_lebar() << endl;
cout << "Memiliki luas " << l <<" dan keliling "<< k <<endl <<endl;

long v;
 B.hitung();
 B.ambil(l, k, v);
 cout << "Balok dengan rusuk-rusuknya : " << endl;
cout << "Panjang = " << B.ambil_panjang() <<endl;
cout << "Lebar = " << B.ambil_lebar() << endl;
cout << "Tinggi = " << B.ambil_tinggi() << endl;
cout << "Memiliki luas " << l <<", keliling "<< k <<", dan volume " << v <<endl;
}



2.      Manfaat Polymorphisme

·         Dapat menggunakan kelas-kelas yang kita buat (sebagai super kelas) dan membuat kelas kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.
·         Dapat membuat super kelas yang hanya mendefinisikan behaviour namun tidak memberikan implementasi dari metode-metode yang ada.
·         Menghindari duplikasi object, Dapat menciptakan class baru dari class yang sudah ada,sehingga tidak perlu menuliskan code dari nol ataupun mengulangnya, namun tetap bisa menambahkan attribute dan method unik dari class itu sendiri.


3.      Manfaat Inheritance :
·         Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
·         Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
·         Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama Untuk memodifikasi suatu data atau method untuk semua subkelas / kelas anak, makatidak perlu melakukan perubahan di masing-masing kelas anak melainkan hanya pada kelas induk saja.

Contoh inheritance dalam java :

[modifier] class namaSubKelas extend namaKelasSuper {
// classBody
}
public class Komunitas {
String nama;
String alamat;
String alamat2;
String kota;
int umur;
/** Defenisi kelas Komunitas */
public Komunitas() {
nama = "";
alamat = "";
alamat2 = "";
kota = "";
umur = 0;
}
public Komunitas(String newNama, String newAlamat, String newAlamat2, String newKota, int
newUmur) {
nama = newNama;
alamat = newAlamat;
alamat2 = newAlamat2;
kota = newKota;
umur = newUmur;
}
public void setNama (String newNama){
nama = newNama;
}
public void setAlmat (String newAlamat){
alamat = newAlamat;
}
public void setAlamat2 (String newAlamat2) {
alamat2 = newAlamat2;
}
public void setKota (String newKota) {
kota = newKota;
}
public void setUmur (int newUmur) {
umur = newUmur;
}
public String getNama (){
return nama;
}
public String getAlamat (){
return alamat;
}
public String getAlamat2 (){
return alamat2;
}
public String getKota (){
return kota;
}
public int getUmur (){
return umur;
}
public String toString(){
String str =
"Nama : "+ nama + "\n"+
"Alamat 1 : "+ alamat + "\n"+
"Alamat 2 : "+ alamat2 + "\n"+
"Kota : "+ kota + "\n"+
"Umur : "+ umur + "\n";
return str;
}
static void nilai(){
Komunitas t = new Komunitas ("Sukma Murdani, S.Kom","Jalan Aru","Lubuk
Begalung","Padang",25);
System.out.println("\nSukma Murdani sebagai Dosen Komunitas:\n");
System.out.println(t);
}
public static void main(String[] args) {
nilai();
}
}
public class Mahasiswa extends Komunitas {
String BP;
String strata;
String Jurusan;
/** Penciptaan Kelas Mahasiswa sebagai Pewarisan dari Komunitas */
public Mahasiswa() {
super();
BP = "";
strata = "";
Jurusan = "";
}
public Mahasiswa (String newNama, String newAlamat, String newAlamat2, String newKota, int
newUmur, String newBP, String newStrata, String newJurusan) {
super(newNama, newAlamat, newAlamat2, newKota, newUmur);
BP = newBP;
strata = newStrata;
Jurusan = newJurusan;
}
public void setBP (String newBP) {
BP = newBP;
}
public String getBP () {
return BP;
}
public void setStrata (String newStrata) {
strata = newStrata;
}
public String getStrata () {
return strata;
}
public void setJurusan (String newJurusan) {
Jurusan = newJurusan;
}
public String getJurusan() {
return Jurusan;
}
public String toString(){
String str =
"Nama : "+ nama + "\n"+
"Alamat 1 : "+ alamat + "\n"+
"Alamat 2 : "+ alamat2 + "\n"+
"Kota : "+ kota + "\n"+
"Umur : "+ umur + "\n"+
"NRP : "+ BP + "\n"+
"Strata : "+ strata + "\n"+
"Jurusan : "+ Jurusan;
return str;
}
static void nilai(){
Mahasiswa t = new Mahasiswa ("James Bond","Jalan Aru","Lubuk
Begalung","Padang",20,"10007","Strata 1","Teknik Informatika");
System.out.println("\nJames Bond sebagai Mahasiswa Komunitas:\n");
System.out.println(t);
}
public static void main(String[] args) {
nilai();
}
}

Tidak ada komentar:

Posting Komentar