tugas online 3 rangkuman INHERITANCE dan POLYMORPHISM

advertisement
INHERITANCE dan POLYMORPHISM dalam Java
1.
INHERITANCE
Perngertian dari inheritance adalah dimana sebuah objek dapat mempunyai objek turunan. Dalam hal
pemrogramman makan dapat diimpelementasikan dengan sebuahclass yang mempunyai class
turunan. Class yang mempunyai class turunan disebut sebagai Parent Class atau Base Class, sedangkan
class yang menjadi turunan dari Parent Class disebut sebagai Subclass atau Child Class. Secara sederhana
misal Hewan adalah parent class maka child class bisa berupa ayam,kucing,bebek dll.
a.
Dekalarasi Inheritance
Cara untuk mendeklarasikan inheritance adalah dengan memberikan keyword extendssetelah nama class
diikuti denga nama parent class.Kata kunci extends memberikan informasi pada kompiler Java bahwa kita
ingin melakukan perluasan class.
b.
Konsep Inheritance dalam Java
Konsep inheritane yang ada di Java adalah hanya memperkenankan adanya Single
inheritance.Konsep Single inheritane artinya bahwa sebuah subclass hanya diperkenankan memiliki
satu parent class. Konsep inheritance yang ada di java memperkenankan adanya multilevel inheritance.
Konsep multilevel inheritance berarti bahwa sebuah subclass dapat memiliki subclass lagi sebagai
turunannya.
Subclass menggunakan keyword super untuk mereferensi data dan fungsi dari parent class-nya. Dengan
kata lain keyword super ini berfungsi sebagai alias dari Parent class.Format penulisan dari keyword ini :
Ø
super.data_member -> merujuk pada data member dari parent class
Ø
super.function_member() -> merujuk pada function member dari parent class
Ø
super() -> merujuk pada konstruktor dari parent class
c.
Keuntungan dari inheritance
Ø
Bersifat reusable. Bayangkan bila anda perlu membuat beberapa class yang mempunyai sifat dasar
dan basis class yang sama, dan pada masing masing class tersebut ditambahkan data dan method yang
unique. Tanpa inheritance anda harus menyalin semua data dan method dari suatu class. Hal tersebut
mungkin masih bisa dilakukan jika basis class anda definisikan sendiri.
Ø
Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama. Jika anda ingin
melakukan modifikasi suatu data atau method pada semua sub class anda tidak perlu melakukan
perubahan pada masing masing sub class. Modifikasi cukup dilakukan pada super class.
Ø
Dalam inheritance dikenal dengan istilah overriding. Overidding adalah kemampuan sub class untuk
melakukan modifikasi data dan method dari super class. Sebelum anda melakukan overidding terhadap
method atau data dari class induk, anda harus memperhatikan aksesibelitas dari data dan method dari
super class.[ overidding hanya bisa dilakukan untuk data dan method yang memiliki modifier default,
public dan protected.
Contoh Program:
import java.util.Scanner;
class ling{
Scanner in = new Scanner(System.in);
int r = in.nextInt();
}
class ling1 extends ling{
double jari1;
}
class luas1 extends ling1{
public void Luas(){
jari1 = super.r;
double luas = 3.14*jari1*jari1;
System.out.format("Luas Lingkaran 1 = %.2f", luas);
}
}
class keliling1 extends ling1{
public void Keliling(){
jari1 = super.r;
double keliling = 3.14*2*jari1;
System.out.format("Keliling Lingkaran 1 = %.2f", keliling);
}
}
class ling2 extends ling{
double jari2;
}
class luas2 extends ling2{
public void Luas(){
jari2 = super.r;
double luas = 3.14*jari2*jari2;
System.out.format("Luas Lingkaran 2 = %.2f", luas);
}
}
class keliling2 extends ling2{
public void Keliling(){
jari2 = super.r;
double keliling = 3.14*2*jari2;
System.out.format("Keliling Lingkaran 2 = %.2f", keliling);
}
}
public class lingkar{
public static void main ( String[]args ) {
System.out.println("Masukkan jari-jari lingkaran");
luas1 a=new luas1();
keliling1 b=new keliling1();
luas2 c=new luas2();
keliling2 d=new keliling2();
a.Luas();
System.out.println();
b.Keliling();
System.out.println();
c.Luas();
System.out.println();
d.Keliling();
}
}
output program :
2.
POLYMORPHISM
Polymorphism berarti “mempunyai banyak bentuk” juga merupakan salah satu sifat class yang
memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.
Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku seperti class
turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar, dan jika ia menunjuk class
turunan ia akan berperilaku seperti class turunan.
Dalam hal ini obkjek memiliki beberapa bentuk, tergantung ia menunjuk kemana. Dalam hal ini suatu
objek atau class dan perubahan perilakunya adalah dari kelas dasar ke kelas turunan, tidak bisa objek
kelas turunan menunjuk ke kelas dasar. Polimorfisme dimungkinkan karena adanya mekanisme ikatan
dinamis, ikatan ini adalah ikatan yang terjadi ketika program dijalankan (run-time), ikatan yang terjadi
pada saat compiling disebut ikatan dinamis. Ikatan dinamis hanya akan terjadi antara suatu objek dinamis
dengan metode yang dinamis juga, dalam hal ini metode virtual (maya)
Pada dasarnya ada 2 tipe polymorphism, yaitu:
a.
Static atau trivial
merupakan, function overloading (penggunaan kembali nama fungi yang sama tapi dgn argumen yang
berbeda) yang terbagi dalam 3 signature yaitu:
-
Jenis Array
-
Letak Array
-
Type Array
Contoh function overloading :
-
void tambah (int a, int b);
-
void tambah(float d, float c);
b.
Dynamic atau true
Merupakan function overriding (sebuah fungsi dalam class turunan yang memiliki nama,
return type argumen function yang sama dengan fungsi dalam class induk). Menggunakan
virtual method.
Contoh Program:
/*disimpan nama Hewan.java*/
class Hewan {
String nama, jenis, bersuara;
Hewan(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
this.nama=nama;
this.jenis=jenis;
this.bersuara=bersuara;
}
public String toString(){
return "Ini adalah "+jenis+"\nNamanya "+nama+"\n"+bersuara;
}
public void bersuara(){
}
}
/*disimpan nama Polimorfisme.java*/
import java.util.*;
class Polimorfisme{
public static void main(String args[]){
Hewan[] hewannya = {
new Anjing("Broni", "Herder", "Hug Hug Hug......"),
new Kucing("Kiti", "Persia", "Meong.. Meong... "),
new Ayam("Toki", "Buras", "kuk kruyu. ")
};
Hewan pilihHewan;
Random pilih = new Random();
for (int i = 0; i<5 ; i++){
pilihHewan = hewannya[pilih.nextInt(hewannya.length)];
System.out.println("\nPilihan Anda:\n" + pilihHewan);
}
}
}
/*disimpan nama Ayam.java*/
class Ayam extends Hewan{
private String nama,jenis,bersuara;
Ayam(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowAyam(){
System.out.println("Nama Ayam : "+nama);
System.out.println("Jenis Ayam : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("kuk kruyu. ");
}
}
/*disimpan nama Kucing.java*/
class Kucing extends Hewan
{
private String nama,jenis,bersuara;
Kucing(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowKucing(){
System.out.println("Nama Kucig : "+nama);
System.out.println("Jenis Kucing : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("Meong.. Meong... ");
}
}
/*disimpan nama Anjing.java*/
class Anjing extends Hewan{
private String nama,jenis,bersuara;
Anjing(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowAnjing(){
System.out.println("Nama Anjing : "+nama);
System.out.println("Jenis Anjing : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("Hug Hug Hug...... ");
}
}
Download