TUGAS MAKALAH

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Contohnya. kita akan menemui pesan error berikut ini. Human.out.. dibutuhkan untuk override method abstract walk().* abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk()."). }} Jika class Human tidak dapat overridde method walk. atau lainnya.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 interface [InterfaceName] { //beberapa method tanpa isi } 16 . juga subclass akan menjadi class abstract..println("Human walks. kita tulis. oleh karena itu tidak dapat di-instantiate. } Ketika class meng-extend class abstract LivingThing. public class Human extends LivingThing { public void walk(){ System.

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

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

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

Sign up to vote on this title
UsefulNot useful