a

Saturday 25 May 2013

dasar teori tentang pemrograman berbasis objek kaitanya dengan permasalahan tentang: inheritance ,poly morphism ,encapsulation ,method overriding, accessor dan mutator

dasar teori tentang pemrograman berbasis objek kaitanya dengan permasalahan tentang:
a.inheritance
b.poly morphism
c.encapsulation
d.method overriding, accessor dan mutator

Inheritance

Inheritance atau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
   class Titik
      private integer x
      private integer y
         Titik()
            x < 0
            y < 0
         {end Titik}

         public getX() -> integer
            -> x
         {end getX}
         
         public getY() -> integer
            -> y
         {end getY}
   {end class}
   class Titik3D: Titik
      private integer z

      Titik3D()
         z <- 0
      {end Titik3D}

         public getZ() -> integer
            -> z
         {end getZ}
   
   {end class} 
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:
   Titik3D p <-  new Titik3D()
   integer x <-  p.getX()
   integer y <-  p.getY()
   integer z <-  p.getZ()
Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.
Salah satu pilar Pemrograman Berorientasi Objek yang lain adalah polymorphism yaitu kemampuan objek bertipe sama beraksi berbeda terhadap “pesan” yang sama.
Polymorphism adalah suatu object dapat memiliki berbagai bentuk, sebagai object dari class sendiri atau object dari superclassnya
- Overloading : penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
- Overriding : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya.
a).Overloading
- class luas.java










class luasBeraksi.java
hasil dari script diatas adalah dibawah ini:
b). Overriding
- class mobilBeraksi.java

- class kijang.java


hasil dari script diatas adalah dibawah ini:
Encapsulation
Encapsulation merupakan cara membungkus data dan method yang menyusun kelas dan menyembunyikannya dari dunia luar. Jika kita telah melakukan information hiding terhadap suatu attribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap attribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu attribut tersebut.
Berikut ini keuntungan dari prinsip encapsulation :
  • Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari yang lain. Sehingga dapat digunakan pada bagian manapun dari program.
  • Bersifat transparan. Jika Anda melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan oleh semua bagian yang menggunakan modul tersebut.
  • Menghindari dari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian program melalui variable input dan output yang telah didefinisikan sebelumnya. Sehingga dapat mengurangi kemungkinan bug.
Kesimpulan :
Tujuan encapsulation adalah untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interfensi atau penyalahgunaan dari luar system dan sekaligus menyederhanakan system itu sendiri
Contoh :
Person.java
public class Person {
private int age;
private String name;
private String personId;
public void setAge(int newValue){
age = newValue;
}
public void setName( String newValue){
name = newValue;
}
public void setPersonId(String newValue){
personId = newValue;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getPersonId(){
return personId;
}
}
Main.java
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Person ren = new Person();
ren.setAge(22);
ren.setName(“Ren A”);
ren.setPersonId(“113060002″);
System.out.println(“My name is” +ren.getName() +” My age :”+ ren.getAge() +”and My Id”+ren.getPersonId());
}
}

Method Overriding

Jika pada subclass kita menulis ulang method yang ada pada super classnya, maka method yang ada di subclass tersebut disebut meng-override method super classnya. Jadi ketika kita memanggil method tersebut dari objek subclassnya maka yang akan dijalankan adalah method yang berada di subclass tersebut. Untuk lebih jelasnya perhatikan contoh berikut.
public class A {
 public void cetak(){
  System.out.println("Dicetak oleh class A");
 }
}
public class B extends A {
 public void cetak(){
  System.out.println("Dicetak oleh class B");
 }
}
public class TestOverride {
 public static void main(String[] args){
  B objB = new B();
  objB.cetak();
 }
}
Accessor Methods

Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods.
Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get<namaInstanceVariable>. Method ini juga mempunyai sebuah return value.
Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.
Mari kita perhatikan salah satu contoh implementasi accessor method.
public class StudentRecord
{
private String name;
:
: public String getName(){
return name;
}
}

dimana, public
-
Menjelaskan bahwa method tersebut dapat diakses object luar kelas
String
-
Tipe data return value dari method tersebut
getName
-
Nama dari method
()
-
Menjelaskan bahwa method tidak memiliki parameter apapun


Mutator Methods

Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator methods. Sebuah mutator method umumnya tertulis set<namaInstanceVariabel>.
Mari kita perhatikan salah satu dari implementasi mutator method :
public class StudentRecord
{
private String name;
:
: public void setName( String temp ){
name = temp;
}
}
dimana, public
-
Menjelaskan bahwa method ini dapat dipanggil object luar kelas
void
-
Method ini tidak menghasilkan return value
setName
-
Nama dari method
(String temp)
-
Parameter yang akan digunakan pada method

No comments:

Post a Comment