DAFTAR ISI

Halaman Judul ................................................................................................. 1 Kata Pengantar .................................................................................................. 2 Daftar Isi .......................................................................................................... 3 Bab I Pendahuluan ........................................................................................... 4 Bab II Pembahasan .......................................................................................... 6 Mendefinisikan Superclass dan Subclass ............................................. 6 Kata Kunci Super ................................................................................. 9 Overidding Method ............................................................................... 10 Method Final and class final ................................................................ 11 Polimorfisme ........................................................................................ 12 Abstract Class ...................................................................................... 14 Membuat Interface ................................................................................ 16 Bab III Penutup ................................................................................................ 18 Daftar Pustaka ................................................................................................... 19

1

Saya juga berterima kasih kepada teman-teman saya sehingga laporan ini dapat diselesaikan. Oleh karena itu. perlu kiranya saya dengan ketulusan hati mengucapkan terima kasih kepada Asisten Dosen yang telah membimbing saya dalam menyelesaikan laporan ini. terselesaikannya makalah ini tentu saja bukan karena kemampuan saya semata-mata. Bengkulu. 02 April 2012 Juju Nurul Utami 2 . sehingga Makalah Pemrograman Berorientasi Objek mengenai Polimorfisme telah dapat saya selesaikan. berbagai hambatan telah saya alami. atas segala kebesaran dan limpahan nikmat yang diberikan-Nya. Dalam penulisan makalah ini. saya menyadari pengetahuan dan pengalaman saya masih sangat terbatas. Sehubungan dengan hal tersebut. Namun karena adanya dukungan dan bantuan dari pihak-pihak yang terkait. saya sangat mengharapkan adanya kritik dan saran dari berbagai pihak agar laporan ini lebih baik dan bermanfaaat. Dalam penyusunan laporan ini. Oleh karena itu. Adapun penulisan tugas ini bertujuan untuk tugas teori Pemrograman Berorientasi Objek.KATA PENGANTAR Puji syukur saya panjatkan kehadirat Allah SWT.

Untuk mendapatkan operasi polymorphism dari suatu method. “Mobil” dan “Pesawat”. . Beberapa syarat yang harus dipenuhi agar operasi polymorphism dapat berlangsung adalah : . akan tetapi apakah method “Move()” akan memberikan hasil yang sama pada tiga class tersebut. Sebagai contoh seumpama kita memiliki 3 class berbeda yaitu: “Motor”.BAB I PENDAHULUAN Dalam pemrograman berorientasi object kita mengenal suatu istilah yaitu “ Polimorfisme ”. Anda harus mendefinisikan method yang akan dipanggil ini dalam kelas. Dengan kata lain.Method dari kelas tutunan yang akan dieksekusi.Nama method di kelas induk harus sama dengan yang ada di kelas tutunan. yang akan menghasilkan suatu hasil yang berbeda tergantung class yang menggunakan method tersebut. Oleh karena itu. yaitu penggunaan method yang sama. .Deklarasi method yang akan di-polymorphism-kan dalam body kelas induk 3 . yaitu suatu teknik dalam programming yang lebih mengarahkan kita untuk memprogram secara general dari pada secara spesifik.Atribut akses dari method di kelas turunan tidak boleh lebih terbatas 10 dari yang ada di kelas induk. Hal inilah yang kita sebut sebagai Polimorfisme . method ini harus merupakan member dari kelas induk. langkah – langkah untuk membuat polymorphism adalah : .Tipe yang dikembalikan juga harus sama. Dimana jika method “Move()” dipanggil pada class “Motor” akan menghasilkan perpindahan 30Km. . jika pada class “Mobil” akan menghasilkan perpindahan 70Km dan jika dipanggil pada class “Pesawat” akan menghasilkan perpindahan 300Km.Method ini harus merupakan member dari kelas induk. Dimana ketiga class tersebut adalah turunan dari class “Kendaraan”. . dipanggil oleh objek dari kelas induk. Dalam kelas kedaraan terdapat suatu method yaitu “Move()”.

adalah subclassesdari superclass Object. Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass. Interface Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant). . definisikan ulang method tadi dengan memastikan atribut aksesnya tidak lebih terbatas dari atributnya yang ada di kelas induk. Pewarisan Dalam Java. Contoh hirarki class diperlihatkan di bawah ini. semua class. dan tidak berlaku untuk field data. termasuk class yang membangun Java API. Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass.Dalam tiap kelas turunan dari kelas induk. Satu hal yang penting lainnya yang harus di ingat adalah polymorphism hanya berlaku untuk method. Jadi.Definisikan method ini dalam kelas induk sebagai method yang tidak melakukan apapun (hanya terdiridari „{„ dan „}‟ ). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa 4 ..Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass.Sementara beberapa class di bawah class pokok dalam hirarki lass dikenal sebagai subclass dari class tersebut. sifat ini secara otomatis diwariskan dari semua subclasses. Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan induknya.

Mereka menyediakan class-class.tubuh. BAB II 5 .Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Dengan catatan bahwainterface-interface juga menunjukkan polimorfisme. untuk mengimplementasikan sifat-sifat yang umum. dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung daritipe object yang melewati pemanggil method interface. tanpa memperhatikan lokasinya dalam hirarki class.

6 .PEMBAHASAN Pada pembahasan ini. pewarisan dan interface  Mendefinisikan Superclass dan Subclass Untuk memperoleh suatu class. Untuk mengilustrasikan ini. } /** * Constructor dengan dua parameter */ public Person( String name. address = "".address = address. kita akan membuat contoh class induk. this. protected String address /** * Default constructor */ public Person(){ System. kita menggunakan kata kunci extend.name = name. String address ){ this. public class Person { protected String name. name = "".out. Dimisalkan kita mempunyai class induk yang dinamakan Person. terdapat analisis kode pada beberapa program yang menggunakan polimorfisme .println(“Inside Person:Constructor”).

Karena Student juga sebagai Person. Jika kita mendeklarasikannya sebagai private. } } Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. kita ingin membuat class lain bernama Student. kita putuskan hanya meng-extend class Person.name = name. kita inginkan atribut-atribut ini untuk bisa diakses oleh subclassesdari superclassess.} /** * Method accessor */ public String getName(){ return name.address = add. kita tulis. protected dan default dapat diakses oleh subclasses-nya. } public void setAddress( String add ){ this. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public. subclasses tidak dapat menggunakannya. Sekarang. Alasannyakita melakukan ini yaitu. } public void setName( String name ){ this. sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Untuk melakukan ini. } public String getAddress(){ return address. public class Student extends Person 7 .

println(“Inside Student:Constructor”). Keluaran dari program adalah. perhatikan kode berikut : public static void main( String[] args ){ Student anna = new Student(). } Dalam kode ini. kita membuat sebuah object dari class Student. Setelah itu. //beberapa kode di sini } // beberapa kode di sini } Ketika object Student di-instantiate. Untuk mengilustrasikannya.{ public Student(){ System. default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. pernyataan di dalam subclass dieksekusi. Inside Person:Constructor Inside Student:Constructor 8 .out.

9 . Person dan Student. Diberikan kode berikut untuk Student.println("Inside Student:Constructor"). public Student(){ super(). Contoh kode lain ditunjukkan sebagai berikut. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan. public Student(){ super( "SomeName". Hal ini dilakukan dengan pemanggil construktor super. "SomeAddress" ). kita tunjukkan contoh dari pemanggil constructor super. } Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya. Kata Kunci Super Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat.Sebagai contoh.out. berdasar dari argumen sebelumnya.println("Inside Student:Constructor"). System. pada contoh class sebelumnya. System.out.

Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.address = “some address”. Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM constructor YANG SAMA. Sebagai contoh. Pemanggil super() hanya dapat digunakan dalam definisi constructor. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super: 1. public class Person { 10 .} Kode ini memanggil default constructor dari superclass terdekat (yaitu Person) dan mengeksekusinya. 3. terkadang class asal perlu mempunyai implementasiberbeda dari method yang khusus dari superclass tersebut.name = “somename”. Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass Person. method overriding digunakan. Pemakaian lain dari super adalah untuk menunjuk anggota dari superclass(seperti reference this). 2. Oleh karena itulah. super. public Student() { super. }  Overriding Method Untuk beberapa pertimbangan.

println("Parent: getName"). public class Student extends Person { : : public String getName(){ System. Class ini dinamakan class final. kita tulis. juga memungkinkan untuk mendeklarasikan class-class yang tidak lama menjadi subclass. keluarannya akan menjadi. public final class Person { 11 .Student: getName  Method final dan class final Dalam Java.println("Student: getName"). return name.: : public String getName(){ System.out. methodoverriddeakan dipanggil. Sebagai contoh. } :} Jadi. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. ketika kita meminta method getName dari object class Student.out. jika kita ingin class Person untuk dideklarasikan final. } : } Untuk override. method getName dalam subclass Student. kita tulis. return name.

//area kode } Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. jika kita ingin method getName dalam class Person untuk dideklarasikan final. Dalam Java. Di bawah ini adalah hierarkinya. Sebagai contohnya. kita tulis. kitatambahkan subclass lain dari Person yaitu Employee. dan String. Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Contohnya. public static main( String[] args ) 12 . Ini artinya Anda tidak dapat membuatnya override. Contoh-contoh dari class ini adalah Integer. Untuk mendeklarasikan method untuk menjadi final. Method inidapat kita panggil method final. } Method static juga secara otomatis final.  Polimorfisme Sekarang. kita tambahkan kata kunci final ke dalam deklarasi method. kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari subclass tersebut. Double. class induk Person dan subclass Student dari contoh sebelumnya. public final String getName(){ return name.

public class Person { public String getName(){ System.println(“Person Name:” + name).out. return name.{ Person ref. ref = studentObject. Employee employeeObject = new Employee(). Student studentObject = new Student(). return name. } } public class Student extends Person { public String getName(){ System. dan kita override method ini dalam kedua subclasses Student dan Employee.out. } } public class Employee extends Person { public String getName(){ 13 .println(“Student Name:” + name). //Person menunjuk kepada // object Student //beberapa kode di sini } Sekarang dimisalkan kita punya method getName dalam superclass Person kita.

secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya. jika kita berikan ref ke object Employee.out. method getName dari object Student akan dipanggil. return name. ref = employeeObject.println(“Employee Name:” + name). ref = studentObject.println( temp ).  Abstract Class 14 .getName(). public static main( String[] args ) { Person ref.out. } Kembali ke method utama kita. //getName dari Employee //class dipanggil System. Sekarang.System. ketika kita mencoba memanggil method getName dari reference Person ref.println( temp ). Employee employeeObject = new Employee(). } Kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme. //getName dari Student //class dipanggil System. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal.getName(). //Person menunjuk kepada // object Student String temp = ref. Student studentObject = new Student(). //Person menunjuk kepada // object Employee String temp = ref. method getName dari Employee akan dipanggil.out.

Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Akan tetapi..out. dan juga beberapa method yang akan di-overridden oleh subclasses nya. public abstract class LivingThing { public void breath(){ System. Ambil manusia sebagai misal. ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi.. beberapa ciri umum dalam kehidupan sudah biasa. dimana kehidupan lainnya seperti anjing berjalan dengan empat kaki. dan walk. } public void eat(){ System. eat. Sekarang mari membuat contoh class abstract. Akan tetapi. kita akan membuat superclass bernama LivingThing. itulah kenapa kita inginkan membuat superclass umum dalam hal ini..").out.. kita manusia berjalan dengan dua kaki. } /** 15 . class ini mempunyai method tertentu seperti breath. sleep. Kita ambil contoh.println("Living Thing breathing.Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang berisiimplementasi. method walk.println("Living Thing eating. Sebagai contoh.").

println("Human walks.. kita akan menemui pesan error berikut ini. public interface [InterfaceName] { //beberapa method tanpa isi } 16 . } Ketika class meng-extend class abstract LivingThing.out. oleh karena itu tidak dapat di-instantiate.. dibutuhkan untuk override method abstract walk(). Contohnya. atau lainnya."). juga subclass akan menjadi class abstract.* abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk(). Human. kita tulis.java:1: Human is not abstract and does not override abstract method walk() in LivingThing public class Human extends LivingThing ^ 1 error  Membuat Interface Untuk membuat interface. public class Human extends LivingThing { public void walk(){ System. }} Jika class Human tidak dapat overridde method walk.

public boolean isLess( Object a.Sebagai contoh. Object b). public boolean isEqual( Object a. mari kita membuat sebuah interface yang mendefinisikan hubungan antara dua object menurut urutan asli dari object. Object b). Object b). public interface Relation { public boolean isGreater( Object a. } 17 .

objek tersebut berperilaku seperti kelas dasar . bahwa perubahan perilaku ini dari kelas dasar kepada kelas turunan . tidak dapat objek turunan menunjuk kelas dasar. tetapi ketika objek tersebut menunjuk kelas turunan objek tersebut berperilaku seperti kelas turunan . Atau bahkan kelas turunan bisa mengubah atau mengganti perilaku kelas supernya. Hubungan antara kelas turunan dan kelas super sering dilukiskan dalam bentuk diagram di mana kelas turunan digambarkan di bawah kelas supernya. dan dihubungkan dengan garis penghubung dengan tanda segitiga yang diletakkan di dekat kelas supernya. Polimorfisme adalah pemikiran bahwa objek dinamis suatu kelas dasar dapat berperilaku seperti kelas turunan. Istilah pewarisan berarti suatu kelas bisa mewariskan sebagian atau keseluruhan struktur dan perilaku kelas lain.Dalam hal ini objek dapat memiliki beberapa bentuk . Yang perlu menjadi catatan. Jika kelas B adalah kelas turunan dari kelas A. maka kita bisa juga menyebut kelas A adalah kelas super dari kelas B. Ketika objek tersebut menunjuk kelas dasar .BAB III PENUTUP Polimorfisme erat kaitannya dengan pewarisan . 18 . Kelas turunan bisa memiliki struktur atau perilaku tambahan dari kelas supernya. tergantung pada saat itu kelas mana yang ditunjuk.

wikipedia.com www.com www.com .scribd.google. 19 .com www.DAFTAR PUSTAKA www.lyracc.

Sign up to vote on this title
UsefulNot useful