Minggu, 26 Maret 2023

PBO Bagian 9

                                              Polimorfis




1. Konsep Prosedur Polymorphism dengan Overloading dan Overriding dalam Program Aplikasi Berbasis OOP

Polymorphism berasal dari bahasa yunani yang berarti banyak bentuk. Pada program aplikasi berbasis OOP, konsep ini menggunakan sustu interface yang sama untuk memerintah object agar melakukan aksi atau tindakan yang mungkin secara prinsip sama, tetapi secara proses berbeda. Pada bahasa C++, konsep ini sering disebut dengan method overloading. Namun, hal ini tidak dijumpai pada bahasa Python. Penyebab utamanya adalah bahasa Python sebagai bahasa pemrograman yang bersifat dynamic typing sehingga tidak memerlukan deklarasi tipe.


a. Overloading 
Method Overloading (static polymorphism) identik dengan method dengan nama yang sama dengan method lain pada suatu class, tetapi dengan parameter yang berbeda. Pada method overloading perbedaan parameter meliputi jumlah parameter tipe data dari parameter, dan urutan dari tipe data parameter. Tujuan dibuatnya overloading, yaitu memudahkan penggunaan method dengan fungsi yang hampir sama. Implementasi overloading pada Java adalah sebagai berikut.

class Pertambahan{

public void tambah100(){
int a 5, b-10;

System.out.println("Hasil Pertambahann dari metode tambahl ke-1- +(a+b));
}
//Metod tambah1 di overloading dengan 2 parameter (int x, int y)

public void tambahl (int x, int y){ System.out.println("Hasil Pertambahann dari metod tambahl ke-2 = "+(x+y));
}
public static void main(String[] args){

Pertambahan pp:

pp= new Pertambahan();

pp.tambah10)://memanggil metod tambah1 ke-1

pp.tambah1(5,5);//memanggil metod tambahl ke-2
}
}

Berdasarkan contoh tersebut, metod tambahl pada kelas pertambahan akan di overloading sehingga ada perbedaan parameter antara metod tambah1() dengan metod tambah1 (int x, int y). Overloading dikategorikan menjadi dua jenis, yaitu sebagai berikut.

1) Overloading Method
Mendefinisikan dua atau lebih method dalam class yang sama dalam java dapat menggunakan nama yang sama, tetapi parameter yang dideklarasikan harus berbeda (jumlah atau tipe parameternya). Jika jumlah parameternya sama maka tipe harus berbeda semua, tetapi jika jumlah parameternya berbeda-beda maka tipenya sama. Metode overloading dapat terjadi pada objec yang sama, tetapi nilai argumennya berbeda-beda. Ketika overloaded method dipanggil, java akan mencari kesamaan antara argumen yang digunakan untuk memanggil method dan parameter dari method. Akan tetapi, kesamaan yang digunakan ini tidak mutlak, karena pada java adanya otomatisasi konversi tipe yang berbeda. Adapun jenis-jenis overloading method adalah sebagai berikut.

a) Jumlah parameter beda, tipe beda.
b) Jumlah parameter sama, tipe beda.
c) Jumlah parameter beda, tipe sama.

2) Overloading Constructor
Selain diterapkan pada method. Overloading juga diterapkan pada construvtor. Bedanya, Overloading constructor terjadi pada object yang berbeda-beda dan nilai argumen berbeda sehingga method bisa lebih dari satu.
 
b. Overriding 
Overriding identik dengan method subclass yang sama dengan method superclass, parameternya sama, tetapi pernyataan atau implementasinya berbeda. Aturan dari nding method pada Java, antara lain sebagai berikut.

1. Parameter yang terdapat pada overriding method di subclass parameter yang terdapat pada parent class.
2.  Aturan hak akses, hak akses overriding method di subclass tidak boleh lebih ketat dbandingkan dengan hak akses method pada parent class.

Secara mendasar, overloading digunakan untuk mendefinisikan dua atau lebih method dalam kelas yang sama, menggunakan nama yang sama, tetapi parameter yang dideklarasikan harus berbeda (jumlah atau tipe parameternya). 

Implementasi dari overriding pada Java dengan nama superclass-nya adalah Nama dan subclass-nya adalah Siapa' adalah sebagai berikut.

class Nama{

public void Sapa(){ 
System.out.println("Naufal Fadhil");
}
public static void main(String[] args) {

Siapa ss;

Nama nn;

ss = new Siapa();

nn = new Nama();

ss.Sapa();//memanggil method Sapa() pada class Siapa
nn.Sapa();//memanggil method Sapa() pada class Nama
}
}
class Siapa extends Nama{

//Method Sapa() pada class Nama di override
 public void Sapa(){
 System.out.println("Laili Nabila");
}
}

Pada program tersebut terlihat bahwa metode sapa() pada superclass(class Nama) di override di subclass (class siapa). Parameter pada kedua class tersebut sama, yaitu kosong (tidak memiliki parameter), tetapi perbedaanya terletak pada implementasi mencetak kalimat yang berbeda.


Tidak ada komentar:

Posting Komentar