Salah satu konsep terpenting dalam pemrograman berorientasi objek adalah konsep pewarisan, di mana kita menciptakan kelas baru dari satu atau lebih kelas yang sudah ada. Kosekuensinya adalah terjadi pewarisan field/method tertentu dari kelas yang sudah ada sebelumnya (superclass/baseclass) kepada kelas yang baru (subclass).
Oleh karena itu kelas yang baru/kelas turunan akan sangat mirip dengan kelas induknya sehingga jika kita ingin kelas turunan berbeda dengan induknya, Kita harus menambahkan field atau method baru pada kelas ini.
Contoh dalam JAVA :
public class silinder
{ // ini akan diwariskan ke turunanya
protected int radius;
protected int tinggi;
// konstruktor
public silinder (int r , int h)
{
radius=r;
tinggi=h;
}
private double getVolume ()
{
return Math.PI*radius*radius*tinggi;
}
}
public class kapsul extends silinder
{
int cembungan; // bagian dari alas dan tutup yang melengkung keluar
public kapsul (int r int h, int c)
{
super(r.h) ;
cembungan=c;
}
private float getVolume()
{
//detail penghitungan volume kapsul
}
- POLIMORPHISME
Adalah kemampuan sebuah variable dari suatu tipe/kelas untuk digunakan sebagai rujukan/acuan objek dari tipe yang berbeda, dan secara otomatis dapat memanggil method yang spesifik untuk tiap tipe itu.
Contoh dalam JAVA :
Program.Binatang.java
public class Binatang
{
Binatang (String jenis)
{
this.jenis=jenis;
}
protected void suara ()
{
}
public String toString()
{
return “seekor”+ jenis;
}
private String jenis;
}
Program Burung.java
public class Burung extends Binatang
{
Burung(String nama)
{
super(“Burung”);
this.nama=nama;
}
public void suara()
{
System.out.println(“berkicau”);
}
public String toString()
{
return super.toString()+” “+nama;
}
private String nama;
}
Program Kambing.java
public class Kambing extends Binatang
{
Kambing(String nama)
{
super(“Kambing”);
this.nama=nama;
}
public void suara()
{
System.out.println(“mengembik”);
}
public String toString()
{
return super.toString()+” “+nama;
}
private String nama;
}
Program Kucing.java
public class Kucing extends Binatang
{
Kucing(String nama)
{
Super(“Kucing”);
This.nama=nama;
}
public void suara()
{
System.out.println(“mengeong”);
}
public String toString()
{
return super.toString()+” “+nama;
}
private String nama;
}
Program Anjing.java
public class Anjing extends Binatang
{
Anjing(String nama)
{
Uper(“Anjing”);
This.nama=nama;
}
public void suara()
{
System.out.println(“menggonggong”);
}
public String toString()
{
Return super.toString()+” “+nama;
}
private String nama;
}
Program Coba Polimorpic.java
import java.util.Random;
public class CobaPolimorpic
{
public static void main(String[] args)
{
Binatang [] peliharaanku={new Burung(“kutilang”),
New Kucing(“Angora”),
New Kambing(“etawa”),
New Anjing(“bulldog”) };
Binatang kesayangan;
Random pilihan=new Random();
// memilih secara accak
Kesayangan=peliharaanku[pilihan.nextInt(peliharaanku.length)];
System.out.println(“binatang kesayangan anda:”+kesayangan);
System.out.println(“suaranya:”);
Kesayangan.suara();
}
}
Hasil run program:
Binatang kesayamgan anda:seekor burung kutilang
Suaranya : berkicau
Penjelasan program:
Variabel random merupakan objek dari kelas Random, yang diimport
dari paket java.util. Fungsi variable ini adalah untuk mengambil bilangan acak, yaitu dengan memanggil method nextInt(i) dengan i adalah bilangan bulat. Method ini akan mengembalikan bilangan dari 0 sampai i-1.
Pada program diatas kita menampilkan informasi dari objek kesayangan dengan dengan menggunakan method println(). Ini secara implicit akan memanggil method toString.
- OVERRIDING (KONSTRUKTOR)
Adalah bagian dari kelas yang digunakan untuk menciptakan/menginstansiasi objek. Jika kita tidak m,endefinisikamn konstruktor untuk kelas yang kita buat, compiler ajan akan mrnggunakan konstruktor default, yang tidak melakukan apapun (misalnya menginisialisasi nilai field) ketika kita kita menginstansiasi objek.
Kostruktor mirip dengan method (memnerima parameter, memiliki blok, dapaaat di-overload) namun ia memilki cirri khusus, yaitu:
- Namanya harus sama dengan nama kelas
- Ia tidak mengembalikan nilai/tipe tertentu, bahkan void tertentu sekalipun.
Contoh dalam JAVA :
public class User{
private String nama;
private String passwd;
User( ) { // konstruktor 1
nama=passwd=null;
}
User(String nama) // konstruktor 2
{
this.nama=nama;
}
User (String nama, String passwd) // konstruktor 3
{
this (nama);
this.passwd=passwd;
}
public void logiin()
{
System.out.println(“selamat atang “+nama+” \n” +”passwd anda : “+passwd);
}
public void logout( )
{
System.out.println(“ sampai jumpa”);
}
}
- OVERLOADING
Dalam Java kita diperbolehkan untuk melakukan deklarasi dan definisi ulang suatu method yang sudah ada (sudah dideklarasikan dan didefinisikan). Hal ini dapat dilakukan dengan syarat sebagai berikut :
- Jummlah parameter tidak sama atau sama tetappi dengan susunan tipe parameter yang berbeda.
- Tipe nilai kembalian harus sama.
Syarat pertama memungkinkan compiler untuk menentukan dengan pasti method mana yang di panggil oleh objek. Mari kita lihat bagaimana kita akan melakukan overloading method gesere pada kelas Point.
Contoh dalam JAVA :
public class point3
{
private int x;
private int y;
private int z;
public point3( int x, int y, int z)
{
this.x=x;
this.y=y;
this.z=z;
}
public void Geser ( int dx, int dy, int dz) // geser titik pada ruang
{
x+dx;
y+dy;
z+dz;
}
public void Geser ( int dx) // overload 1, hanya geser pada sumbu x
{
x+=dx;
}
Public void Geser ( int dx, int dy) // overload 2, geser pada sumbu xy
{
x+=dx;
y+dy;
}
public int getx( )
{
return x;
}
public int getY()
{
return x;
}
public int geteY()
{
return y;
}
public int getZ( )
{
return z;
}
}
0 komentar:
Posting Komentar