SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Pertemuan 4                                                              Halaman 1/1




                          Class Inheritance

Inheritance merupakan suatu cara untuk menurunkan suatu class yang lebih umum
menjadi suatu class yang lebih spesifik.

Superclass dan Subclasses
Subclass merupakan class yang diturunkan dari suatu class superclass. Superclass
kadang-kadang disebut dengan parent class atau base class. sedangkan subclass biasa
disebut dengan child class atau extended class.

Pada subclass biasanya terdapat fungsi yang lebih atau class yang lebih detail
dibandingkan superclass-nya.

untuk membuat subclass digunakan keyword extends sehingga :

class namaClass extends namaSuperclass {
 ...
}

contoh :

pada circle.java
public class Circle {

    private double radius;

    Circle(double r) {      //Constructor
      radius = r;
    }

    Circle() {              //Constructor
      radius = 1.0;
    }

    public double getRadius() {
      return radius;
    }

    public double findArea() {
       return radius*radius*3.14159;
    }
}




Bahasa Pemrograman I                                                  Class Inheritance
Pertemuan 4                                                                   Halaman 2/2



pada cylinder.java yang merupakan subclass dari class Circle

public class Cylinder extends Circle {
  private double length;

    public Cylinder() {                            //Constructor
      super();
      length = 1.0;
    }

    public Cylinder(double r,double l) {           //Constructor
      super(r);
      length = l;
    }

    public double getLength() {
      return length;
    }

    public double findVolume() {
      return findArea() * length;
    }


}


pada Test.java

public class Test {

     public static void main(String [] Args) {

         //Create Cylinder object and display it's properties
         Cylinder myCylinder = new Cylinder(5.0,2.0);

       System.out.println("The         length is "+myCylinder.getLength());
       System.out.println("The         radius is "+myCylinder.getRadius());
       System.out.println("The         Cylinder Volume is
"+myCylinder.findVolume());
       System.out.println("The         area of Circle is
"+myCylinder.findArea());


     }

}

pada contoh diatas tampak bahwa Cylinder merupakan subclass dari Circle.




Bahasa Pemrograman I                                                       Class Inheritance
Pertemuan 4                                                                 Halaman 3/3




Menggunakan Keyword “super”
Keyword super digunakan untuk melakukan reference ke superclass-nya. super dapat
digunakan untuk dua cara yaitu :

•   memanggil superclass constructor
•   memanggil superclass method

Untuk memanggil superclass constructor syntaks yang digunakan adalah :

super(parameters);

Contoh :
pada Cylinder.java
public class Cylinder extends Circle {
  private double length;

    public Cylinder() {                          //Constructor
      super();
      length = 1.0;
    }

  public Cylinder(double r,double l) {           //Constructor
    super(r);
    length = l;
  }
...
}


pemanggilan keyword super harus dilakukan awal didalam constructor


Untuk memanggil superclass method syntaks yang digunakan adalah :

       super.method(parameters);

Contoh :
pada Cylinder.java findVolume dapat dibuat menjadi :

public class Cylinder extends Circle {
  ...
  public double findVolume() {
    return super.findArea() * length;
  }
  ...
}

Bahasa Pemrograman I                                                     Class Inheritance
Pertemuan 4                                                                Halaman 4/4




Penggunaan super untuk method boleh digunakan atau tidak digunakan apabila method
pada superclass tidak dioverride / dibuat ulang pada subclass. bila terjadi method
override keyword super harus digunakan.

contoh :
pada Cylinder.java
public class Cylinder extends Circle {
  private double length;

    public Cylinder() {                          //Constructor
      super();
      length = 1.0;
    }

    public Cylinder(double r,double l) {         //Constructor
      super(r);
      length = l;
    }

    public double getLength() {
      return length;
    }

    public double findArea() {
      System.out.println(“Call Cylinder find Area”);
      return 2*super.findArea()+2*getRadius()*3.14159*length;
    }

    public double findVolume() {
      return findArea() * length;
    }

}



Class Object
Semua class yang dibuat di java merupakan turunan dari class java.lang.object. jika
keyword extends tidak diikuti dengan class superclass maka subclass tersebut merupakan
extends dari class java.lang.object

dua method penting dari object class adalah :
• public boolean equals()
• public String toString()

Method equals()



Bahasa Pemrograman I                                                    Class Inheritance
Pertemuan 4                                                                   Halaman 5/5



Method ini digunakan untuk membandingkan apakah dua object sama. dua buah object
sama hanya jika keduanya mempunyai nilai yang sama pada nilai datanya. Syntaks
penggunaan adalah sebagai berikut :
object1.equals(object2);

Method toString()

Method toString() digunakan untuk merepresentasikan nilai object dalam bentuk String.
secara default, toString() mengembalikan suatu String yang berisi nama class dari object,
tanda “@” dan nilai yang merepresentasikan object.

Contoh :

Cylinder myCylinder = new Cylinder(5.0,2.0);
System.out.println(myCylinder.toString());

akan menghasilkan seperti Cylinder@15037e5. Method toString() harus dioverride jika
ingin menghasilkan suatu informasi yang berguna.

Contoh :

public String toString() {
        return “Cylinder length = “ + length;
}

maka jika dilakukan pemanggilan toString() akan menghasilkan seperti :

Cylinder length = 5

protected, final dan abstract Modifier
protected Modifier

protected modifier dapat digunakan pada data/ attribute dan method. Protected data
maupun protected method pada suatu public class dapat diakses oleh class lain dengan
syarat :

•   menggunakan package yang sama
•   subclass-nya dengan package yang sama atau berlainan.

Contoh :
jika C1 mempunyai protected data bernama x di dalam package P1 maka :

1. jika class C2 pada package P2 merupakan subclass dari C1, maka x dapat diakses C2
   karena x dapat diakses oleh semua subclass C1
Bahasa Pemrograman I                                                       Class Inheritance
Pertemuan 4                                                               Halaman 6/6




2. jika class C3 pada package P1 mempunyai instance dari C1 bernama c1, maka x
   dapat diakses c1 karena C3 dan C1 berada pada package yang sama

3. jika class C4 pada package P2 mempunyai instance dari C1 bernama c1, maka x tidak
   dapat diakses karena C4 dan C1 berlainan package.

final Modifier

final modifier dapat digunakan pada class, data dan method. final modifier pada class
digunakan untuk membuat class yang tidak dapat diperluas lagi (tidak dapat dibuat
subclass-nya). sedangkan penggunaan pada method biasanya untuk membuat method
yang tidak dapat dioverride pada subclass-nya.

abstract Modifier

Penggunaan abstract modifier yaitu pada class atau method. Untuk penggunaan pada
class biasanya disebut dengan abstract class yaitu class yang sifatnya tidak dapat
mempunyai instance yang spesifik. sedangkan penggunaan pada method biasanya disebut
dengan abstract method yaitu method yang tidak mempunyai implementasi / kosong.
Implementasi baru dilakukan pada subclass dari class tersebut.

contoh :
pada GeometricObject

public abstract class GeometricObject { //abstract class
  private String color;
  private double weight;

  public GeometricObject(String c, double w) {
     color = c;
     weight = w;
  }

  public GeometricObject() {
    color = “white”;
    weight = 1.0;
  }

  public String getColor() {
    return color;
  }

  public double getWeight() {
    return weight;
  }

  public abstract double findArea();                     //abstract method
  public abstract double findCircumference();            //abstract method

Bahasa Pemrograman I                                                   Class Inheritance
Pertemuan 4                                                               Halaman 7/7



}

pada contoh diatas GeometricObject merupakan abstract class dan mempunyai dua buah
method abstract yaitu findArea() dan findCircumference(). kedua method ini akan
diimplementasikan pada subclass-nya.

public class Circle extends GeometriObject {

    private double radius;

    public Circle(double r, double w, String c)           {
       super(c,w);
       radius = r;
    }

    public Circle() {
      this(1.0,1.0,”white”);
    }

    public Circle(double r) {
      super(“white”,1.0);
      radius = r;
    }

    public double getRadius() {
      return radius;
    }

    public double findArea() {
      return radius*radius*Math.PI;         //implementasi findArea()
    }

    public double findCircumference() {
       return 2*radius*Math.PI;      //implementasi findCircumference()
    }

    public String toString() {
       return “Circle radius = “+radius;
    }
}



Casting Objects
Casting object / konversi object digunakan untuk melakukan konversi dari suatu object
ke object lain dalam satu susunan hirarki yang sama.

untuk mengkonversi dapat dilakukan dengan cara

Circle myCircle = (Circle)myCylinder;
mengkonversi myCylinder kedalam superclass-nya yaitu variabel myCircle.

Bahasa Pemrograman I                                                   Class Inheritance
Pertemuan 4                                                               Halaman 8/8




Cylinder myCylinder = (Cylinder)myCircle;
mengkonversi superclass myCircle menjadi subclass-nya myCylinder.

pada saat mengkonversi object ke object lain biasakan gunakan operator instanceof
untuk melakukan pemeriksaan apakah object tersebut benar-benar dalam satu susunan
hirarki class yang sama.
contoh :

Circle myCircle = new Circle();
....
if(myCircle instanceof Cylinder) {
   //lakukan konversi jika myCircle instance dari Cylinder
   Cylinder myCylinder = (Cylinder) myCircle;
   ....
}
....

casting object kadang-kadang diperlukan apabila kita mempunyai array dari object yang
berisi bermacam-macam object dan kita ingin menjalankan method yang berlainan dari
object-object tersebut. Perhatikan contoh berikut :

pada TestCasting.java

public class TestCasting {

    public static void main (String [] args) {
      //GeometricObject untuk menampung kedua jenis object
      GeometricObject geoObject[] = new GeometricObject[2];
      geoObject[0] = new Circle(5.0,2.0,”white”);
      geoObject[1] = new Cylinder(5.0,2.0,”black”);

        for(int i=0;i<2;i++) {
           if (geoObject[i] instanceof Cylinder) {
           //check apakah object Cylinder ?
              System.out.println(“Object is Cylinder”);
              System.out.println(“Cylinder volume = “+
              ((Cylinder)geoObject[i]).findVolume()));
           }
           //Check apakah object Circle ?
           else if (geoObject[i] instanceof Cirlce) {
               System.out.println(“Object is Circle”);
               System.out.println(“Cylinder area = “+
               ((Circle)geoObject[i]).findArea()));
           }
        }
    }
}



Bahasa Pemrograman I                                                   Class Inheritance
Pertemuan 4                                                             Halaman 9/9




pada Cylinder.java

class Cylinder extends Circle {
private double length;

public Cylinder() {
  super();
  length = 1.0;
}

public Cylinder(double r,double w,String c, double l) {
  super(r,w,c);
  length=l;
}

    public Cylinder(double r,double l) {
      this(r,1.0,”white”,l)
    }

    public double getLength() {
      return length;
    }

    public double findVolume() {
      return findArea()*length;
    }
}


hal ini dapat dilakukan karena Cylinder merupakan subclass dari Circle dan Circle
merupakan subclass dari GeometricObject

interfaces
interfaces digunakan untuk melakukan penurunan dari beberapa class atau multiple
inheritance. jika kita menggunakan keywords extends penurunan hanya dilakukan dari
sebuah parent class. dengan interface kita dapat menurunkan beberapa class menjadi
sebuah subclass.

pendeklarasian suatu interfaces class adalah sebagai berikut :
modifier interfaces InterfaceName {
   //Constant declarations;
   //method signatures;
}

modifier abstract tidak dapat digunakan pada interfaces
Bahasa Pemrograman I                                                 Class Inheritance
Pertemuan 4                                                   Halaman 10/10




sedangkan untuk menggunakan interfaces pada suatu class digunakan keyword
Implements.

modifier class Classname implements interface1,interface2,...{
  //...
}

atau dengan penggabungan dengan keyword extends
modifier class Classname extends anyClass implements interface1,...{
  //...
}

Contoh :

pada CompareObject.java

public interface CompareObject {
  public static final int LESS = -1;
  public static final int EQUAL = 0;
  public static final int GREATER = 1;

    public int compare(CompareObject otherObject);
}

pada Sort.java

class Sort {
  public static void sort(CompareObject[] o) {
    CompareObject currentMax;
    int currentMaxIndex;

        for(int i=o.length-1;i>=1;i--) {
           currentMax = o[i];
           currentMaxIndex = i;

            for(int j=i-1;j>=0;j--) {
               if(currentMax.compare(o[j])==-1) {
                 currentMax = o[j];
                 currentMaxIndex =j;
               }
            }

            if(currentMaxIndex!=i) {
              o[currentMaxIndex]=o[i];
              o[i]=currentMax;
            }
        }
    }
}


Bahasa Pemrograman I                                         Class Inheritance
Pertemuan 4                                                    Halaman 11/11




pada TestSort.java

public class TestSort {
   public static void main(String[] args) {
     CompareCircle[] c = new CompareCircle[10];

         for(int i=0;i<c.length;i++)
           c[i]= new CompareCircle(100*Math.random(),1.0,”white”);

         Sort.sort(c);

         System.out.println(“Sorted Circles”);
         printObject(c);

         CompareCylinder[] cyl = new CompareCylinder[10];

     for(int i=0;i<cyl.length;i++)
       cyl[i]= new CompareCylinder(100*Math.random(),1.0,”white”,
100*Math.random());

         Sort.sort(cyl);

         System.out.println(“Sorted Cylinders”);
         printObject(cyl);

     }

     public static void printObject(Object[] c) {
       for(int i=0;i<c.length;i++)
         System.out.println(“”+c[i]);
     }
}

pada CompareCircle.java

class CompareCircle extends Circle implements CompareObject
{
  public CompareCircle(double r,double w, String c) {
    super(r,w,c);
  }

    public int compare(CompareObject otherObject) {
      Circle c = (Circle) otherObject;
      if(getRadius() < c.getRadius())
         return LESS;
      else if(getRadius() == c.getRadius())
         return EQUAL;
      else return GREATER;
    }
}




Bahasa Pemrograman I                                          Class Inheritance
Pertemuan 4                                                 Halaman 12/12




pada CompareCylinder.java

class CompareCylinder extends Cylinder implements CompareObject
{
  public CompareCylinder(double r,double w, String c, double l) {
    super(r,w,c,l);
  }

    public int compare(CompareObject otherObject) {
      Cylinder c = (Cylinder) otherObject;
      if(getVolume() < c.getVolume())
         return LESS;
      else if(getVolume() == c.getVolume())
         return EQUAL;
      else return GREATER;
    }

    public String toString() {
      return “Cylinder volume = “+findVolume());
    }
}

Perbedaan interfaces dengan abstract adalah :

1. interfaces class digunakan untuk multiple inheritance pada java,
   sedangkan abstract class digunakan untuk single inheritance.

2. interfaces class hanya boleh berisi data constant dan method
   signature saja. sedangkan pada abstract class boleh berisi tipe data
   apa saja dan method dapat berisi atau method signature saja.

3. interface tidak dapat menggunakan modifier abstract pada class-nya.
   sedangkan abstract class menggunakan abstract modifier pada awal
   abstract method ataupun abstract class.




Bahasa Pemrograman I                                       Class Inheritance

Contenu connexe

Tendances (13)

Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATION
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritance
 
Materi pelatihan java fundamental
Materi pelatihan java fundamentalMateri pelatihan java fundamental
Materi pelatihan java fundamental
 
Materi pelatihan java_fundamental
Materi pelatihan java_fundamentalMateri pelatihan java_fundamental
Materi pelatihan java_fundamental
 
Laporan8
Laporan8Laporan8
Laporan8
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)
 
Pemograman berorientasi objek
Pemograman berorientasi objekPemograman berorientasi objek
Pemograman berorientasi objek
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 
Algoritma Pemrograman 2
Algoritma Pemrograman 2Algoritma Pemrograman 2
Algoritma Pemrograman 2
 
31322 2 class & object
31322 2 class & object31322 2 class & object
31322 2 class & object
 
My javanote04
My javanote04My javanote04
My javanote04
 
My javanote03
My javanote03My javanote03
My javanote03
 
Overridung polymorphism
Overridung polymorphismOverridung polymorphism
Overridung polymorphism
 

En vedette

La Cantante Calva Las Criadas
La Cantante Calva   Las CriadasLa Cantante Calva   Las Criadas
La Cantante Calva Las Criadas
guestdb7eaa67
 
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
editoraprospectiva
 
Sacem Bieet Finala
Sacem Bieet FinalaSacem Bieet Finala
Sacem Bieet Finala
guest00a508
 
Sustentable S U B
Sustentable  S U BSustentable  S U B
Sustentable S U B
eyapur
 
Slide For Pinning Part 2
Slide For Pinning Part 2Slide For Pinning Part 2
Slide For Pinning Part 2
fusionhoney
 
Descobrint Miró 2
Descobrint Miró 2Descobrint Miró 2
Descobrint Miró 2
guest235767
 
Clase De Decisiones1
Clase De Decisiones1Clase De Decisiones1
Clase De Decisiones1
lester17
 
Christmas Manchester
Christmas ManchesterChristmas Manchester
Christmas Manchester
bukbuk
 
Pessebre de Sorra de La Pineda 2009
Pessebre de Sorra de La Pineda 2009Pessebre de Sorra de La Pineda 2009
Pessebre de Sorra de La Pineda 2009
manuelamoya
 

En vedette (20)

Festival Nadal 2009
Festival Nadal 2009Festival Nadal 2009
Festival Nadal 2009
 
Review2
Review2Review2
Review2
 
La Cantante Calva Las Criadas
La Cantante Calva   Las CriadasLa Cantante Calva   Las Criadas
La Cantante Calva Las Criadas
 
Sin Ingenieros
Sin IngenierosSin Ingenieros
Sin Ingenieros
 
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
Livro Um pequeno guia sobre o movimento estudantil e o golpe de 1964 em Ouro ...
 
Sacem Bieet Finala
Sacem Bieet FinalaSacem Bieet Finala
Sacem Bieet Finala
 
Sustentable S U B
Sustentable  S U BSustentable  S U B
Sustentable S U B
 
Slide For Pinning Part 2
Slide For Pinning Part 2Slide For Pinning Part 2
Slide For Pinning Part 2
 
Curiosidades
CuriosidadesCuriosidades
Curiosidades
 
San Marino + Andorra
San Marino + AndorraSan Marino + Andorra
San Marino + Andorra
 
Programa Curricular 1.º CEB
Programa Curricular 1.º CEBPrograma Curricular 1.º CEB
Programa Curricular 1.º CEB
 
Jiuzhou
JiuzhouJiuzhou
Jiuzhou
 
Descobrint Miró 2
Descobrint Miró 2Descobrint Miró 2
Descobrint Miró 2
 
El Proyecto Matriz #92. GUERRA BIOLOGICA: DE PADRES CANIBALES Y EXPERIMENTACION
El Proyecto Matriz #92. GUERRA BIOLOGICA: DE PADRES CANIBALES Y EXPERIMENTACIONEl Proyecto Matriz #92. GUERRA BIOLOGICA: DE PADRES CANIBALES Y EXPERIMENTACION
El Proyecto Matriz #92. GUERRA BIOLOGICA: DE PADRES CANIBALES Y EXPERIMENTACION
 
Ahorrandovida 2
Ahorrandovida 2Ahorrandovida 2
Ahorrandovida 2
 
La Guerra de Flandes
La Guerra de FlandesLa Guerra de Flandes
La Guerra de Flandes
 
Clase De Decisiones1
Clase De Decisiones1Clase De Decisiones1
Clase De Decisiones1
 
Christmas Manchester
Christmas ManchesterChristmas Manchester
Christmas Manchester
 
Arte Griego
Arte GriegoArte Griego
Arte Griego
 
Pessebre de Sorra de La Pineda 2009
Pessebre de Sorra de La Pineda 2009Pessebre de Sorra de La Pineda 2009
Pessebre de Sorra de La Pineda 2009
 

Similaire à Java4

JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
Jurnal IT
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3
rahmi wahyuni
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
Individual Consultants
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2
rahmi wahyuni
 

Similaire à Java4 (20)

Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceJeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
 
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
 
2.other oop basic
2.other oop basic2.other oop basic
2.other oop basic
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 15
Laporan praktikum Algoritma dan Pemrograman pertemuan 15Laporan praktikum Algoritma dan Pemrograman pertemuan 15
Laporan praktikum Algoritma dan Pemrograman pertemuan 15
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3
 
JENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdf
 
2_enkapsulasi.pptx
2_enkapsulasi.pptx2_enkapsulasi.pptx
2_enkapsulasi.pptx
 
Modul 6 pbo
Modul 6 pboModul 6 pbo
Modul 6 pbo
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5
 
Jeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiriJeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiri
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
 
Tugas 5 rekayasa web
Tugas 5 rekayasa webTugas 5 rekayasa web
Tugas 5 rekayasa web
 
Job 11 sebenarnya
Job 11 sebenarnyaJob 11 sebenarnya
Job 11 sebenarnya
 
class-diagram.pptx
class-diagram.pptxclass-diagram.pptx
class-diagram.pptx
 
Tugas 5 rekayasa web
Tugas 5 rekayasa webTugas 5 rekayasa web
Tugas 5 rekayasa web
 
P5 depandi enda
P5 depandi endaP5 depandi enda
P5 depandi enda
 
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptxpertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
 
Modul 7 pbo
Modul 7 pboModul 7 pbo
Modul 7 pbo
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2
 

Plus de The World Bank

Plus de The World Bank (20)

Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017
 
G20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-versionG20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-version
 
Virtualization
VirtualizationVirtualization
Virtualization
 
Kebijakan pembinaan smk 2017 (rakor lsp, 140317)
Kebijakan pembinaan smk  2017  (rakor lsp, 140317)Kebijakan pembinaan smk  2017  (rakor lsp, 140317)
Kebijakan pembinaan smk 2017 (rakor lsp, 140317)
 
Inpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMKInpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMK
 
JBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco MatrixJBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco Matrix
 
VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0
 
SoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonSoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi Son
 
KPTIK Maestro internship program
KPTIK Maestro internship programKPTIK Maestro internship program
KPTIK Maestro internship program
 
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
 
PKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKPKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMK
 
Design Sprint Methods
Design Sprint MethodsDesign Sprint Methods
Design Sprint Methods
 
Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)
 
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compressKebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
 
Instruktur Teman Sebaya
Instruktur Teman SebayaInstruktur Teman Sebaya
Instruktur Teman Sebaya
 
Docker QNAP Container Station
Docker QNAP Container StationDocker QNAP Container Station
Docker QNAP Container Station
 
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
 
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
 
Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital
 
Presentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi PerkantoranPresentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi Perkantoran
 

Java4

  • 1. Pertemuan 4 Halaman 1/1 Class Inheritance Inheritance merupakan suatu cara untuk menurunkan suatu class yang lebih umum menjadi suatu class yang lebih spesifik. Superclass dan Subclasses Subclass merupakan class yang diturunkan dari suatu class superclass. Superclass kadang-kadang disebut dengan parent class atau base class. sedangkan subclass biasa disebut dengan child class atau extended class. Pada subclass biasanya terdapat fungsi yang lebih atau class yang lebih detail dibandingkan superclass-nya. untuk membuat subclass digunakan keyword extends sehingga : class namaClass extends namaSuperclass { ... } contoh : pada circle.java public class Circle { private double radius; Circle(double r) { //Constructor radius = r; } Circle() { //Constructor radius = 1.0; } public double getRadius() { return radius; } public double findArea() { return radius*radius*3.14159; } } Bahasa Pemrograman I Class Inheritance
  • 2. Pertemuan 4 Halaman 2/2 pada cylinder.java yang merupakan subclass dari class Circle public class Cylinder extends Circle { private double length; public Cylinder() { //Constructor super(); length = 1.0; } public Cylinder(double r,double l) { //Constructor super(r); length = l; } public double getLength() { return length; } public double findVolume() { return findArea() * length; } } pada Test.java public class Test { public static void main(String [] Args) { //Create Cylinder object and display it's properties Cylinder myCylinder = new Cylinder(5.0,2.0); System.out.println("The length is "+myCylinder.getLength()); System.out.println("The radius is "+myCylinder.getRadius()); System.out.println("The Cylinder Volume is "+myCylinder.findVolume()); System.out.println("The area of Circle is "+myCylinder.findArea()); } } pada contoh diatas tampak bahwa Cylinder merupakan subclass dari Circle. Bahasa Pemrograman I Class Inheritance
  • 3. Pertemuan 4 Halaman 3/3 Menggunakan Keyword “super” Keyword super digunakan untuk melakukan reference ke superclass-nya. super dapat digunakan untuk dua cara yaitu : • memanggil superclass constructor • memanggil superclass method Untuk memanggil superclass constructor syntaks yang digunakan adalah : super(parameters); Contoh : pada Cylinder.java public class Cylinder extends Circle { private double length; public Cylinder() { //Constructor super(); length = 1.0; } public Cylinder(double r,double l) { //Constructor super(r); length = l; } ... } pemanggilan keyword super harus dilakukan awal didalam constructor Untuk memanggil superclass method syntaks yang digunakan adalah : super.method(parameters); Contoh : pada Cylinder.java findVolume dapat dibuat menjadi : public class Cylinder extends Circle { ... public double findVolume() { return super.findArea() * length; } ... } Bahasa Pemrograman I Class Inheritance
  • 4. Pertemuan 4 Halaman 4/4 Penggunaan super untuk method boleh digunakan atau tidak digunakan apabila method pada superclass tidak dioverride / dibuat ulang pada subclass. bila terjadi method override keyword super harus digunakan. contoh : pada Cylinder.java public class Cylinder extends Circle { private double length; public Cylinder() { //Constructor super(); length = 1.0; } public Cylinder(double r,double l) { //Constructor super(r); length = l; } public double getLength() { return length; } public double findArea() { System.out.println(“Call Cylinder find Area”); return 2*super.findArea()+2*getRadius()*3.14159*length; } public double findVolume() { return findArea() * length; } } Class Object Semua class yang dibuat di java merupakan turunan dari class java.lang.object. jika keyword extends tidak diikuti dengan class superclass maka subclass tersebut merupakan extends dari class java.lang.object dua method penting dari object class adalah : • public boolean equals() • public String toString() Method equals() Bahasa Pemrograman I Class Inheritance
  • 5. Pertemuan 4 Halaman 5/5 Method ini digunakan untuk membandingkan apakah dua object sama. dua buah object sama hanya jika keduanya mempunyai nilai yang sama pada nilai datanya. Syntaks penggunaan adalah sebagai berikut : object1.equals(object2); Method toString() Method toString() digunakan untuk merepresentasikan nilai object dalam bentuk String. secara default, toString() mengembalikan suatu String yang berisi nama class dari object, tanda “@” dan nilai yang merepresentasikan object. Contoh : Cylinder myCylinder = new Cylinder(5.0,2.0); System.out.println(myCylinder.toString()); akan menghasilkan seperti Cylinder@15037e5. Method toString() harus dioverride jika ingin menghasilkan suatu informasi yang berguna. Contoh : public String toString() { return “Cylinder length = “ + length; } maka jika dilakukan pemanggilan toString() akan menghasilkan seperti : Cylinder length = 5 protected, final dan abstract Modifier protected Modifier protected modifier dapat digunakan pada data/ attribute dan method. Protected data maupun protected method pada suatu public class dapat diakses oleh class lain dengan syarat : • menggunakan package yang sama • subclass-nya dengan package yang sama atau berlainan. Contoh : jika C1 mempunyai protected data bernama x di dalam package P1 maka : 1. jika class C2 pada package P2 merupakan subclass dari C1, maka x dapat diakses C2 karena x dapat diakses oleh semua subclass C1 Bahasa Pemrograman I Class Inheritance
  • 6. Pertemuan 4 Halaman 6/6 2. jika class C3 pada package P1 mempunyai instance dari C1 bernama c1, maka x dapat diakses c1 karena C3 dan C1 berada pada package yang sama 3. jika class C4 pada package P2 mempunyai instance dari C1 bernama c1, maka x tidak dapat diakses karena C4 dan C1 berlainan package. final Modifier final modifier dapat digunakan pada class, data dan method. final modifier pada class digunakan untuk membuat class yang tidak dapat diperluas lagi (tidak dapat dibuat subclass-nya). sedangkan penggunaan pada method biasanya untuk membuat method yang tidak dapat dioverride pada subclass-nya. abstract Modifier Penggunaan abstract modifier yaitu pada class atau method. Untuk penggunaan pada class biasanya disebut dengan abstract class yaitu class yang sifatnya tidak dapat mempunyai instance yang spesifik. sedangkan penggunaan pada method biasanya disebut dengan abstract method yaitu method yang tidak mempunyai implementasi / kosong. Implementasi baru dilakukan pada subclass dari class tersebut. contoh : pada GeometricObject public abstract class GeometricObject { //abstract class private String color; private double weight; public GeometricObject(String c, double w) { color = c; weight = w; } public GeometricObject() { color = “white”; weight = 1.0; } public String getColor() { return color; } public double getWeight() { return weight; } public abstract double findArea(); //abstract method public abstract double findCircumference(); //abstract method Bahasa Pemrograman I Class Inheritance
  • 7. Pertemuan 4 Halaman 7/7 } pada contoh diatas GeometricObject merupakan abstract class dan mempunyai dua buah method abstract yaitu findArea() dan findCircumference(). kedua method ini akan diimplementasikan pada subclass-nya. public class Circle extends GeometriObject { private double radius; public Circle(double r, double w, String c) { super(c,w); radius = r; } public Circle() { this(1.0,1.0,”white”); } public Circle(double r) { super(“white”,1.0); radius = r; } public double getRadius() { return radius; } public double findArea() { return radius*radius*Math.PI; //implementasi findArea() } public double findCircumference() { return 2*radius*Math.PI; //implementasi findCircumference() } public String toString() { return “Circle radius = “+radius; } } Casting Objects Casting object / konversi object digunakan untuk melakukan konversi dari suatu object ke object lain dalam satu susunan hirarki yang sama. untuk mengkonversi dapat dilakukan dengan cara Circle myCircle = (Circle)myCylinder; mengkonversi myCylinder kedalam superclass-nya yaitu variabel myCircle. Bahasa Pemrograman I Class Inheritance
  • 8. Pertemuan 4 Halaman 8/8 Cylinder myCylinder = (Cylinder)myCircle; mengkonversi superclass myCircle menjadi subclass-nya myCylinder. pada saat mengkonversi object ke object lain biasakan gunakan operator instanceof untuk melakukan pemeriksaan apakah object tersebut benar-benar dalam satu susunan hirarki class yang sama. contoh : Circle myCircle = new Circle(); .... if(myCircle instanceof Cylinder) { //lakukan konversi jika myCircle instance dari Cylinder Cylinder myCylinder = (Cylinder) myCircle; .... } .... casting object kadang-kadang diperlukan apabila kita mempunyai array dari object yang berisi bermacam-macam object dan kita ingin menjalankan method yang berlainan dari object-object tersebut. Perhatikan contoh berikut : pada TestCasting.java public class TestCasting { public static void main (String [] args) { //GeometricObject untuk menampung kedua jenis object GeometricObject geoObject[] = new GeometricObject[2]; geoObject[0] = new Circle(5.0,2.0,”white”); geoObject[1] = new Cylinder(5.0,2.0,”black”); for(int i=0;i<2;i++) { if (geoObject[i] instanceof Cylinder) { //check apakah object Cylinder ? System.out.println(“Object is Cylinder”); System.out.println(“Cylinder volume = “+ ((Cylinder)geoObject[i]).findVolume())); } //Check apakah object Circle ? else if (geoObject[i] instanceof Cirlce) { System.out.println(“Object is Circle”); System.out.println(“Cylinder area = “+ ((Circle)geoObject[i]).findArea())); } } } } Bahasa Pemrograman I Class Inheritance
  • 9. Pertemuan 4 Halaman 9/9 pada Cylinder.java class Cylinder extends Circle { private double length; public Cylinder() { super(); length = 1.0; } public Cylinder(double r,double w,String c, double l) { super(r,w,c); length=l; } public Cylinder(double r,double l) { this(r,1.0,”white”,l) } public double getLength() { return length; } public double findVolume() { return findArea()*length; } } hal ini dapat dilakukan karena Cylinder merupakan subclass dari Circle dan Circle merupakan subclass dari GeometricObject interfaces interfaces digunakan untuk melakukan penurunan dari beberapa class atau multiple inheritance. jika kita menggunakan keywords extends penurunan hanya dilakukan dari sebuah parent class. dengan interface kita dapat menurunkan beberapa class menjadi sebuah subclass. pendeklarasian suatu interfaces class adalah sebagai berikut : modifier interfaces InterfaceName { //Constant declarations; //method signatures; } modifier abstract tidak dapat digunakan pada interfaces Bahasa Pemrograman I Class Inheritance
  • 10. Pertemuan 4 Halaman 10/10 sedangkan untuk menggunakan interfaces pada suatu class digunakan keyword Implements. modifier class Classname implements interface1,interface2,...{ //... } atau dengan penggabungan dengan keyword extends modifier class Classname extends anyClass implements interface1,...{ //... } Contoh : pada CompareObject.java public interface CompareObject { public static final int LESS = -1; public static final int EQUAL = 0; public static final int GREATER = 1; public int compare(CompareObject otherObject); } pada Sort.java class Sort { public static void sort(CompareObject[] o) { CompareObject currentMax; int currentMaxIndex; for(int i=o.length-1;i>=1;i--) { currentMax = o[i]; currentMaxIndex = i; for(int j=i-1;j>=0;j--) { if(currentMax.compare(o[j])==-1) { currentMax = o[j]; currentMaxIndex =j; } } if(currentMaxIndex!=i) { o[currentMaxIndex]=o[i]; o[i]=currentMax; } } } } Bahasa Pemrograman I Class Inheritance
  • 11. Pertemuan 4 Halaman 11/11 pada TestSort.java public class TestSort { public static void main(String[] args) { CompareCircle[] c = new CompareCircle[10]; for(int i=0;i<c.length;i++) c[i]= new CompareCircle(100*Math.random(),1.0,”white”); Sort.sort(c); System.out.println(“Sorted Circles”); printObject(c); CompareCylinder[] cyl = new CompareCylinder[10]; for(int i=0;i<cyl.length;i++) cyl[i]= new CompareCylinder(100*Math.random(),1.0,”white”, 100*Math.random()); Sort.sort(cyl); System.out.println(“Sorted Cylinders”); printObject(cyl); } public static void printObject(Object[] c) { for(int i=0;i<c.length;i++) System.out.println(“”+c[i]); } } pada CompareCircle.java class CompareCircle extends Circle implements CompareObject { public CompareCircle(double r,double w, String c) { super(r,w,c); } public int compare(CompareObject otherObject) { Circle c = (Circle) otherObject; if(getRadius() < c.getRadius()) return LESS; else if(getRadius() == c.getRadius()) return EQUAL; else return GREATER; } } Bahasa Pemrograman I Class Inheritance
  • 12. Pertemuan 4 Halaman 12/12 pada CompareCylinder.java class CompareCylinder extends Cylinder implements CompareObject { public CompareCylinder(double r,double w, String c, double l) { super(r,w,c,l); } public int compare(CompareObject otherObject) { Cylinder c = (Cylinder) otherObject; if(getVolume() < c.getVolume()) return LESS; else if(getVolume() == c.getVolume()) return EQUAL; else return GREATER; } public String toString() { return “Cylinder volume = “+findVolume()); } } Perbedaan interfaces dengan abstract adalah : 1. interfaces class digunakan untuk multiple inheritance pada java, sedangkan abstract class digunakan untuk single inheritance. 2. interfaces class hanya boleh berisi data constant dan method signature saja. sedangkan pada abstract class boleh berisi tipe data apa saja dan method dapat berisi atau method signature saja. 3. interface tidak dapat menggunakan modifier abstract pada class-nya. sedangkan abstract class menggunakan abstract modifier pada awal abstract method ataupun abstract class. Bahasa Pemrograman I Class Inheritance