REPRESENTASI INHERITANCE

Inheritance atau pewarisan sifat adalah sebuah class yang memiliki properti(variabel dan method) dari class induknya. Dengan demikian suatu class anak akan mempunyai semua member dan semua method yang ada di class induk. Berikut  ini adalah sebuah contoh penggunaan inheritance dimana class Person adalah class induk dari class Student. Dan Class Student adalah class induk dari Class Undergraduate. Dalam hal ini Person adalah Sebuah Obyek yang umum dimana dalam person bisa terdapat student, Employee dan lain – lain. Demikian pula Student bisa terdapat ungraduate maupun graduate.


Class Person

 

 

public class Person{

 

    protected String name;

 

    public Person()

    {}

 

    public Person(String name)

    {

        this.name = name;

    }

 

    public void writeOutput(){

       System.out.println(“Name : ” + name);

    }

 

    public boolean sameName(Person otherPerson){

       return (this.name.equalsIgnoreCase(otherPerson.name)) ;

    }

 

    public void setName(String name)

    {

        this.name = name;

    }

 

    public String getName()

    {

        return name;

    }

}

 

 

Penjelasan Class Person :

Pada Class Person, terdapat sebuah member yaitu name yang berupa String untuk menyimpan nama dari Person. Di samping itu terdapat dua Constructor yang pertama tanpa parameter [public Person()] dan yang ke dua Constructor dengan satu parameter yaitu parameter nama [public Person(String name)] yang digunakan untuk men-Set Variabel name pada saat pertama kali mendeklarasikan Obyek dengan tipe Class Person.


 

Beberapa Method yang terdapat pada Class Person :

1.        Method public void writeOutput()

Method ini digunakan untuk mencetak informasi Person, yaitu name.

2.        Method public boolean sameName(Person otherPerson)

Method ini digunakan untuk membandingkan dua Person apakah Person tersebut sama atau tidak. Bila kedua Person sama, maka akan mengembalikan nilai true dan sebaliknya. Kita lihat pernyataan return (this.name.equalsIgnoreCase(otherPerson.name))  Method equals-IgnoreCase  mengembalikan nilai true / false. Dengan mengabaikan huruf besar ataupun huruf kecil.

3.        Method public void setName(String name)

Digunakan untuk men-Set Variabel name.

4.        Method public String getName()

Di gunakan untuk mengembalikan nilai variabel name.

 

 

Class Student

 

public class Student extends Person{

 

   protected int studentNumber;

 

   public Student()

   {}

 

   public Student(String name, int studentNumber)

   {

        this.name = name;

        this.studentNumber = studentNumber;

   }

 

    public void writeOutput(){

        System.out.println(“Name: ” + getName());

        System.out.println(“  Student Number: ” + studentNumber);

    }

 

    public boolean equals(Student otherStudent){

        return (sameName(otherStudent) && (studentNumber == otherStudent.studentNumber));

    }

 

    public void reset(String name, int studentNumber)

    {

        this.name = name;

        this.studentNumber = studentNumber;

    }

 

    public int getStudentNumber()

    {

        return studentNumber;

    }  

}


 

Penjelasan Class Student :

Class Student merupakan Child dari Class Person yang mempunyai satu member yaitu studentNumber dan satu member warisan dari parent class yaitu name.  Dalam Class Student terdapat satu Constructor tanpa parameter dan satu Constructor dengan dua parameter yaitu name dan studentNumber [public Student(String name, int studentNumber)] yang digunakan untuk men-Set name dan studentNumber.

Beberapa Method yang terdapat pada Class Student :

1.        Method public void writeOutput()

Merupakan Overiding method dari parent class (class Person) yang tadinya digunakan untuk mencetak informasi yang terdapat pada class Person. Dalam class Student Informasi yang di cetak oleh method writeOutput  ditambahkan lagi studentNumber yang tadinya hanya mencetak name saja pada class Person.

2.        Method public boolean equals(Student otherStudent)

Method ini juga Overiding Method, tetapi dari Class Object. Ingat semua Class dalam java adalah anak dari class object. Method ini digunakan untuk membandingkan antara dua obyek yang dibentuk dari class student. Apabila kedua obyek sama maka akan mengembalikan nilai true dan sebaliknya. Coba kita perhatikan pernyataan return (sameName(otherStudent) && (studentNumber == otherStudent.studentNumber)). Bila dari method sameName dari parent class nilainya false maka akan langsung mengembalikan nilai false tanpa melakukan pernyataan (studentNumber == otherStudent.studentNumber)) dan bila nilainya true akan mengecek apakah (studentNumber == otherStudent.studentNumber))bila true, maka method akan mengembalikan nilai true dan bila false akan mengembalikan nilai false.

3.        Method public void reset(String name, int studentNumber)

Method ini digunakan untuk merubah / men-seting ulang nilai dari name dan studentNumber

4.        Method public int getStudentNumber()

Method ini digunakan untuk mengembalikan nilai dari studentNumber.

 


 

Class Undergraduate

 

public class Undergraduate extends Student{

 

    protected int level;

 

    public Undergraduate()

    {}

 

    public Undergraduate(String name, int studentNumber,int level)

    {

        super(name,studentNumber);

        this.level = level;

    }

 

    public void writeOutput(){

        super.writeOutput();

        System.out.println(“  Student Level : ” + level);

    }

 

    public boolean equals(Undergraduate otherUndergraduate){

        return (super.equals(otherUndergraduate) && this.level == otherUndergraduate.level);

    } 

}

 

Penjelasan Class Undergraduate :

Class Undergraduate merupakan anak dari class Student member yang terdapat pada class Undergraduate adalah nama dan studentNumber yang merupakan warisan dari class Student dan level. Dalam class terdapat dua constructor yaitu constructor tanpa parameter dan constructor dengan tiga parameter [public Undergraduate(String name, int studentNumber,int level)], dalam constructor pertama kali menjalankan constructor parent [super(name,studentNumber);] kemudian men-set nilai level.

Method dari class Undergraduate :

1.        Method public void writeOutput()

Merupakan Overiding method dari parent class  yang tadinya digunakan untuk mencetak informasi yang terdapat pada parent class. Dalam class Undergraduate Informasi yang di cetak oleh method writeOutput  ditambahkan lagi dengan level yang tadinya hanya mencetak name dan studentNumber .  Keyword super digunakan untuk menjalankan method pada parent class.

2.        Method public boolean equals(Student otherStudent)

Method ini juga Overiding Method  dari method sebelumnya pada class student. Method ini digunakan untuk membandingkan antara dua obyek yang dibentuk dari class Undergraduate. Apabila kedua obyek sama maka akan mengembalikan nilai true dan sebaliknya. Dari pernyataan return (super.equals(otherUndergraduate) && this.level == otherUndergraduate.level); Bila dari method super.equals() dari parent class nilainya false maka akan langsung mengembalikan nilai false tanpa melakukan pernyataan this.level == otherUndergraduate.level)dan bila nilainya true akan mengecek apakah this.level == otherUndergraduate.level) bila true, maka method akan mengembalikan nilai true dan bila false akan mengembalikan nilai false.

 

 

 

 

 

Class Test

 

import java.util.*;

public class Test{

     public static Random acak = new Random();

     public static final String[] nama = {“Andi”,”Anton”,”Toni”};

     public static final int[] no = {22,56,13};

     public static final int[] lvl = {1,2,3};

 

     public static final int MAKS = 10;

 

     public static void main(String args[]){

     Vector orang = new Vector();

 

     isi(orang);

     info(orang);

     banding(orang);

 

 

    }

    public static void isi(Vector v)

    {

        for(int i = 0; i<MAKS; i++)

        {

            int j = Math.abs(acak.nextInt())%3;

            if(j==1)

                v.add(i, new Person(nama[i%3]));

            else if(j==2)

                v.add(i, new Student(nama[i%3],no[j]));

            else

                v.add(i, new Undergraduate(nama[i%3],no[j],lvl[i%3]));

        }

    }

 

    public static void  info(Vector v)

    {

        for(int i =0;i<MAKS; i++)

        {

            System.out.print((i+1) + ” “);

            Person p = (Person) v.elementAt(i);

                p.writeOutput();

        }

    }

 

    public static void  banding(Vector v)

    {

     Student p1 = new Student(“Andi”,13);

     for(int i =0;i<MAKS; i++)

        {

            if(v.elementAt(i) instanceof Undergraduate)

               {

                  Undergraduate p2 = new Undergraduate();

                  p2 = (Undergraduate) v.elementAt(i);

                  System.out.println();

                  System.out.print((i+1) + ” “);

                if(p1.sameName(p2))

                  System.out.println(“Andi No 13 Memiliki nama yang SAMA dengan orang

No ” + (i+1));

                else

                  System.out.println(“Andi No 13  Memiliki nama yang BERBEDA dengan

orang No ” + (i+1));

                if(p1.equals(p2))

                  System.out.println(“  Andi No 13 adalah orang yang SAMA dengan orang

No ” + (i+1));

                else

                  System.out.println(“  Andi No 13  adalah orang yang BERBEDA dengan

orang No ” + (i+1));

                }

                else if(v.elementAt(i) instanceof Student)

                {

                  Student p2 = new Student();

                  p2 = (Student) v.elementAt(i);

                  System.out.println();

                  System.out.print((i+1) + ” “);

                if(p1.sameName(p2))

                  System.out.println(“Andi No 13  Memiliki nama yang SAMA dengan orang

No ” + (i+1));

                else

                  System.out.println(“Andi No 13  Memiliki nama yang BERBEDA dengan

orang No ” + (i+1));

                if(p1.equals(p2))

                  System.out.println(“  Andi No 13  adalah orang yang SAMA dengan

orang No ” + (i+1));

                else

                  System.out.println(“  Andi No 13  adalah orang yang BERBEDA dengan

orang No ” + (i+1));

                }

                else

                {

                   Person p2 = new Person();

                   p2 = (Person) v.elementAt(i);

                   System.out.println();

                  System.out.print((i+1) + ” “);

                if(p1.sameName(p2))

                  System.out.println(“Andi No 13  Memiliki nama yang SAMA dengan orang

No ” + (i+1));

                else

                  System.out.println(“Andi No 13  Memiliki nama yang BERBEDA dengan

orang No ” + (i+1));

                if(p1.equals(p2))

                  System.out.println(“  Andi No 13  adalah orang yang SAMA dengan

orang No ” + (i+1));

                else

                  System.out.println(“  Andi No 13  adalah orang yang BERBEDA dengan

orang No ” + (i+1));

                }

        }

    }

}

 

 


 

Penjelasan Class Test :

Beberapa Member yang terdapat pada Class Test :

1.        acak yang merupakan instance variabel dari class Random yang digunakan untuk mengacak angka.

2.        Konstanta nama yang merupakan array of String yang digunakan untuk pemberian nama pada saat membuat Obyek.

3.        Konstanta no yang merupakan array of int yang digunakan untuk pemberian studentNumber pada saat pembuatan obyek Student atau obyek Undergraduate.

4.        Konstanta lvl yang merupakan array of int yang digunakan untuk pemberian level pada saat pembuatan obyek Undergraduate

5.        Konstanta Maks yang digunakan untuk menentukan data Maksimal.

6.        Member orang yang merupakan instance variabel dari class Vector, yang digunakan untuk menyimpan obyek – obyek yang dibuat.

Beberapa Method yang terdapat pada class Test :

1.        Method main yang merupakan method utama program.

2.        Method isi

Method ini digunakan untuk mengisi obyek orang dengan data sebanyak Maks, dengan cara kita bangkitkan bilangan acak dari 0 sampai 2 kemudian kita isi dengan ketentuan :

·         Bila Bilangan acak = 1 maka orang kita isi dengan class Person. Dengan nama yaitu nama[1]

·         Bila bilangan acak = 2 maka orang kita isi dengan Student Dengan name = nama[2], studentNumber[2]. Dan

·         Bila bilangan acak selain dari di atas maka orang kita isi dengan Undergraduate.

3.        Method info

Method ini digunakan untuk mencetak informasi yang dimiliki oleh masing – masing class. Dalam method ini memanggil method writeOutput dimana informasi yang di cetak tergantung dari Jenis obyek masing – masing. Karena method writeOutput merupakan overriding method. Bila Obyeknya Person maka yang dicetak hanya name saja, bila obyeknya Student maka yang dicetak adalah name dan studentNumber dan bila obyeknya Undergraduate yang dicetak adalah name, studentNumber dan level.

4.        Method banding

Method ini digunakan untuk membandingkan apakah obyek yang telah kita simpan pada Vector orang sama atau tidak ataukah hanya sama namanya saja antara satu sama lain. Kita umpamakan saja salah satu dari Maks data yang tersimpan pada Vector orang adalah obyek Student.  Untuk itu kita buat obyek Student [Student p1 = new Student(“Andi”,13);] Kemudian kita bandingkan p1 dengan obyek dari Maks data yang tersimpan pada Vector orang.  Dari data – data tersebut kita tidak mengetahui tipe dari obyek – obyeknya. Oleh karena itu kita menggunakan keyword instanceof untuk mengetahui termasuk obyek apa pada masing – masing index vector orang[if(v.elementAt(i) instanceof Undergraduate)]. Kemudian kita buat obyek baru p2 sesuai dengan obyek yang kita ketahui dari proses instanceof. Misalkan obyeknya Undergraduate, maka kita buat obyek baru dari class undergraduate dan kita inisialisasi sesuai yang terdapat pada vector orang seperti semisal  :

Undergraduate p2 = new Undergraduate();

p2 = (Undergraduate) v.elementAt(i);

ingat isi dari vector bertipe obyek, agar obyek yang kita inisialisasikan pada p2 sama persis dan tidak terjadi Miss data, kita casting obyek menjadi Undergraduate.

Setelah itu kita bandingkan antara p1 dan p2 apakah sama ataukah hanya name saja yang sama. Pada pernyataan if(p1.sameName(p2)) method sameName  adalah method warisan dari class Person method ini akan mengembalikan nilai true jika name sama dan sebaliknya. Dan pada pernyataan if(p1.equals(p2)) method equals  adalah overriding method dari class Object dimana akan menghasilkan nilai true atau false dengan ketentuan yang terdapat pada Class Student dan Class Undergraduate di atas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s