BAB POLYMORPHISM Pokok bahasan : Memperkenalkan salah satu karaktristik bahasa Pemograman berorientasi objek yaitu polymorphism Tujuan Instruksional Umum : Menjelaskan apa arti bahasa pemograman Java dan tujuannya dan mencoba memahaminya dengan langsung praktek, dimana pemograman berorientasi pada objek yang saling berinteraksi dalam lingkungan kelas-kelas yang kita definisikan sendiri dan kelas-kelas standard Java. Tujuan Instruksional Khusus : Membuat kelas polymorphism Deskripsi Polymorphism Polymorphism merupakan konsep pokok di dalam perancangan berorieontasi objek. Polymorphism berarti mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai Polymorphic bila objek-objek itu mempunyai antarmuka-antarmuka yang identik namun mempunyai perilaku-perilaku yang berbeda. Polymorphism berupa satu nama tunggal (seperti deklarasi fungsi ) dan dapat menyatakan objek-objek kelas-kelas berbeda yang terhubung denga suatu superkelas yang common d iantara kelas-kelas itu. Sembarang objek yang ditandai dengan nama ini dapat menanggapi sekumpulan operasi yang common. Polymorphism merupakan fitur yang ada karena interaksi konsep pewarisan dan dynamic binding. Polymorphism merupakan fitur penting dan ampuh bahasa pemrograman berorientasi objek. Kepentingannya merupakan peringkat kedua setelah dukungan terhadap abstraksi berorientasi objek. Fitur ini merupakan pembeda pemrograman berorientasi objek dari bahasa pemrograman tradisional yang hanya sampai pada tipe data abstrak. Bahasa yang tidak mendukung Polymorphism belum layak disebut bahsa pemrograman berorientasi objek, paling- paling disebut bahasa berbasis objek bila telahmendukung pengkapsulan. Polymorphism memungkinkan kita mengenali dan mengekploitasi keserupaan- keserupaan di antara kelas-kelas berbeda. Ketika kita mengenali bahwa beberapa jenis objek dapat menanggapi pesan yang sama. Kita mengenali tidak adanya pembeda antara nama pesan dan metode. Objek mengirim pesan, jika penerima http://www.mercubuana.ac.id
} Abstract class GeometryToy{ //Jenis/tipe geometry Abstract public String getGeometry(); //Luas bentuk geometri Abstract public double area(); //Keliling geometri Abstract public double circumference(); } //Persegi panjang Class rectangle Toy extends GeometryToy { Double width, height; Public RectangleToy(double newWidth, double newHeight){ Width = newWidth; Heidht = newHeight; } Public String getGeometry() { Return”Persegi panjang”; } //Luas bentuk Persegi panjang Public double area() { Return width * height; } // Keliling Persegi panjang Public double circumference() { Return2*( width + height); } //Bujursangkar //Kenapa bujur sangkar tidak boleh diturunkan dari persegi panjang //meskupun hubungan secara matematika, bujursangkar adalah Class SquareToy extends GeometryToy { Double side; Public SquareToy(double newSide){ http://www.mercubuana.ac.id
GeometryToy. Bila didefinisikan kelas baru EllipseToy, TriangleToy, Ketidakperdulian perbedaan-perbedaan tiu membantu kita mengelola kompleksitas. Kompleksitas yang disebabkan sebabkan adanya perbedaan-perbedaan pada kelompok objek itu menjadi tidak relevan untuk diperhatikan/diperdulikan. Perhatikan fungsi printGeometry() maka dapat disimpulkan sebagai berikut: Fungsi dapat menerima argument dengan tipe RectangleToy, SquareToy, dan CircleToy tanpa harus bersusah payah melakukan pemeriksaan menggunakan switchcase. Fungsi tersebut telah ditutup dari perubahan atau tidak lagi memerlukan perubahan apapun untuk menerima argument-argumen bertipe baru yang belum didefinisikan sebelumnya asalkan tipe argument-argumen yang dimasukan merupakan turunan kelas GeometryToy. Bila didefinisikan kelas baru EllipseToy, TriangleToy, TrepeziumToy, dan seterusnya asalkan turunan kelas GeometryToy maka objek-objek dari kelas-kelas tersebut dapat dilewatkan ke metode PrintGeometry() tanpa perlu perubahan apapun di GeometryToy. Polymorphism adalah tehnik ampuh menangani atau mengelola kompleksitas. Program: Polimorfisme.java // Berkas : polimorfisme.java Class Makhluk{ Public void info() { System.out.println(“ info() pada Mahluk…”); } Class Mamalia extends Mahluk { System.out.println(“ info() pada Mamalia…”); Class Sapi extends Mamalia{ http://www.mercubuana.ac.id