PEMROGRAMAN BERORIENTASI OBJEK
PEMROGRAMAN BERORIENTASI OBJEK
KONSEP PEMROGRAMAN
BERORIENTASI OBJEK
Zarnelly, S.Kom, M.Sc
Paradigma Pemrograman
Paradigma Pemrograman
PEMROGRAMAN PROSEDURAL
PEMROGRAMAN PROSEDURAL
Dalam pemrograman prosedural,
sebuah program akan dibagi menjadi
beberapa sub-program (modul) yang
akan melakukan tugas-tugas tertentu.
Modul bisa dibuat oleh user atau
diambil dari library program lainnya.
Dalam sebuah modul, bisa terdiri dari
satu atau lebih prosedur.
PEMROGRAMAN BERORIENTASI
PEMROGRAMAN BERORIENTASI
OBJEK
OBJEK
 Pemrograman yang didasarkan pada objek-objek, yaitu
suatu unit terkecil dari program yang mengandung
data dan fungsi yang bekerja atas objek tersebut.
 Pemrograman yang dibangun dengan cara membungkus
(enkapsulasi) komponennya menjadi kelompok data
dan fungsi yang dapat mewarisi atribut dan sifat dari
komponen lainnya, dan komponen-komponen tersebut
dapat berinteraksi satu sama lainnya.
OOP VS PROSEDURAL
OOP VS PROSEDURAL
Sistem
Akademik
Dosen Jadwal Kuliah
Mahasiswa
Kontrak
Kuliah
Konteks
Pengambilan
Kuliah
Penjadwalan Penilaian
Dekomposisi berdasarkan objek atau konsep Dekomposisi berdasarkan fungsi atau proses
Metodologi Berorientasi Objek Metodologi Berorientasi Fungsi
PERANGKAT LUNAK OBJEK
PERANGKAT LUNAK OBJEK
 Perangkat lunak yang dibangun dari kelas-
kelas dan objek-objek yang saling
berinteraksi satu sama lainnya.
• Kelas
Deskripsi statis dari sesuatu.
• Objek
Sesuatu yang diciptakan (instansiasi) dari
kelas.
KELAS DAN OBJEK
KELAS DAN OBJEK
 Sebuah kelas menentukan struktur
dan tingkah laku sebuah objek
 Kelas adalah cetak biru dari objek,
mendefinisikan atribut (state) dan
perilaku (behaviour/method) dari
objek
 Objek adalah instans dari kelas
KELAS DAN OBJEK
KELAS DAN OBJEK
 Contoh
Kelas Mahasiswa memiliki atribut
NIM, Nama, Alamat, dan memiliki
perilaku (behaviour/method) seperti
melakukan registrasi, perkuliahan,
ujian, praktikum, dll.
KELAS DAN OBJEK
KELAS DAN OBJEK
Ani, Budi, dan Gunawan adalah objek
(instans) dari kelas mahasiswa. Mereka
masing-masing memiliki atribut-atribut
nama, nim, alamat (yang nilainya
masing-masing berbeda). Mereka juga
memiliki behaviour yang sama yaitu
melakukan registrasi, perkuliahan,
ujian, praktikum.
FITUR PEMROGRAMAN BERORIENTASI
OBJEK
DESAIN KELAS DAN OBJEK
DESAIN KELAS DAN OBJEK
 Kelas adalah cetak-biru dari obyek.
Seperti halnya semua cetak-biru
dalam kehidupan sehari-hari, kelas
merupakan acuan bagaimana obyek
itu dibentuk, data apa saja yang
disimpan oleh obyek, dan operasi-
operasi apa saja yang dapat
dilakukan oleh obyek.
 Struktur dasar sebuah kelas pada
intinya ada 4 bagian, yaitu :
• deklarasi kelas;
• deklarasi dan inisialisasi atribut;
• pendefinisian method;
• komentar.
Pada pemrograman Java, pendeklarasian
kelas dilakukan dengan menggunakan
syntax sebagai berikut :
[modifier] class class_identifier
Contoh:
public class Barang {
………
}
 Deklarasi variabel dilakukan di dalam
kelas. Variabel yang didefinisikan di
kelas merupakan atribut dari kelas
tersebut
 Sintaks deklarasi variabel:
[modifiers] data_type identifier [ = value ] ;
 Method merepresentasikan operasi-operasi yang dapat
dilakukan oleh obyek. Dalam penulisan, yang
membedakan method dan variabel adalah : method
selalu diakhiri dengan ( ) atau (< nama argumen >).
Pendeklarasiannya juga berbeda, yaitu dengan
menambahkan blok { ... } dan mengisi blok tersebut
dengan baris-baris program. Bentuk umum penulisan
deklarasi method adalah sebagai berikut :
[modifiers] return_type method_identifier ([arguments]){
method_code_block;
}
PEMBUATAN KELAS
PEMBUATAN KELAS
 Diagram UML (Unified Modeling Language)
SegiEmpat
+ panjang: double
+ lebar: double
+ setPanjang(p: double)
+ setLebar(l: double)
+ hitungLuas(): double
+ hitungKeliling(): double
public class SegiEmpatc{
//deklarasi variabel (atribut)
public double panjang;
public double lebar;
//deklarasi method
public void setPanjang(double p){
panjang = p;
}
public void setLebar(double l){
lebar = l;
}
public double hitungLuas(){
return panjang*lebar;
}
public double
hitungKeliling(){
return 2*(panjang + lebar);
}}
package sg4c;
public class Main {
public static void main(String[] args) {
SegiEmpatc se1 = new SegiEmpatc(); //pembentukan objek
SegiEmpatc se2 = new SegiEmpatc(); // pembentukan objek
se1.setPanjang(10);
se1.setLebar(5);
se2.setPanjang(5.5);
se2.setLebar(2.3);
System.out.println("Luas segi empat 1 ="+se1.hitungLuas());
System.out.println("Keliling segi empat 2 ="+se2.hitungKeliling());
}
}
KELAS DENGAN METHOD MAIN
KELAS DENGAN METHOD MAIN
SegiEmpat
+ panjang: double
+ lebar: double
+ setPanjang(p: double)
+ setLebar(l: double)
+ hitungLuas(): double
+ hitungKeliling(): double
+ m
ain(args: String[])
public class SegiEmpat{
public double panjang;
public double lebar;
public void setPanjang(double p){
panjang = p;
}
public void setLebar(double l){
lebar = l;
}
public double hitungLuas(){
return panjang*lebar;
}
public double hitungKeliling(){
return 2*(panjang + lebar);
}
public static void main(String[] args){
SegiEmpat se1;
se1 = new SegiEmpat(); //pembentukan objek
SegiEmpat se2 = new SegiEmpat(); // pembentukan objek
se1.setPanjang(10);
se1.setLebar(5);
se2.setPanjang(5.5);
se2.setLebar(2.3);
System.out.println("Luas segi empat 1 ="+se1.hitungLuas());
System.out.println(“Keliling segi empat 2 ="+se2.hitungKeliling());
}
}
KELAS DENGAN KONSTRUKTOR
KELAS DENGAN KONSTRUKTOR
SegiEmpat
+ panjang: double
+ lebar: double
+ SegiEm
pat()
+ SegiEm
pat(p: double, l: double)
+ setPanjang(p: double)
+ setLebar(l: double)
+ hitungLuas(): double
+ hitungKeliling(): double
+ m
ain(args: String[])
SegiEmpat
+ panjang: double
+ lebar: double
+ setPanjang(p: double)
+ setLebar(l: double)
+ hitungLuas(): double
+ hitungKeliling(): double
+ m
ain(args: String[])
Package SG42
public class SegiEmpat{
public double panjang;
public double lebar;
//deklarasi konstruktor
public SegiEmpat(){
}
public SegiEmpat(double p, double l){
panjang = p;
lebar = l;
}
public void setPanjang(double p){
panjang = p;
}
public void setLebar(double l){
lebar = l;
}
public double hitungLuas(){
return panjang*lebar;
}
public double hitungKeliling(){
return 2*(panjang + lebar);
}

public static void main(String[] args){
SegiEmpat se1;
se1 = new SegiEmpat(); //pembentukan objek
se1.setPanjang(10);
se1.setLebar(5);
SegiEmpat se2 = new SegiEmpat(5.5,2.3); // pembentukan objek
SegiEmpat se3 = new SegiEmpat(7,8);
System.out.println("Luas segi empat 1 ="+se1.hitungLuas());
System.out.println(“Keliling segi empat 2
="+se2.hitungKeliling());
System.out.println("Luas segi empat 3 ="+se3.hitungLuas());
}
}
Menghitung Rata-Rata 3
Menghitung Rata-Rata 3
bilangan
bilangan
 Buat program menggunakan
Constructor untuk menghitung rata-
rata 3 bilangan,
 Objek R1 = (1,2,3)
 Objek R2 = (4,5,6)
 Objek R3 = (7,8,9)
 Cetak Rata-rata setiap objek
FITUR PEMROGRAMAN
FITUR PEMROGRAMAN
BERORIENTASI OBJEK
BERORIENTASI OBJEK
 ABSTRAKSI
 ENKAPSULASI
 PEWARISAN
 POLYMORPHISM
I. ABTSRAKSI
I. ABTSRAKSI
 Abstraksi adalah suatu proses
mendaftarkan entitas-entitas (benda-
benda) yang akan berinteraksi dalam
suatu aplikasi
 Entitas-entitas tersebut nantinya
akan menjadi kelas, dan dari kelas
lahirlah objek
 Setelah entitas-entitas didaftarkan,
maka selanjutnya ditentukan sifat-
sifat (state/atribut) dan hal yang
dapat dilakukan oleh entitas tersebut
(behaviour/method)
 Misalnya dalam sistem kepegawaian,
dimana didalamnya terdapat banyak
entitas di antaranya adalah pegawai.
Didalam entitas pegawai terdapat
atribut-atribut yang akan
membedakan satu pegawai dengan
pegawai lainnya, misalkan NIP,
Nama, Alamat, Tanggal Lahir, dll.
 Dalam aplikasi yang akan dibuat, entitas-
entitas tersebut akan menjadi kelas-kelas.
Di dalam kelas-kelas inilah didefinisikan
atribut-atribut dan method-method
 Kelas adalah blue print dari objek. Dari
kelas lahirlah objek
 Kelas tidak memiliki data, tapi objeklah
yang menyimpan data
2. Enkapsulasi
2. Enkapsulasi
 Enkapsulasi adalah suatu cara untuk
menyembunyikan implementasi detil
(berupa atribut atau method) dari
suatu kelas.
 Dalam OOP, kebutuhan akan
enkapsulasi muncul karena adanya
sharing data antar method
2. Enkapsulasi
2. Enkapsulasi
Contoh
3.PEWARISAN (INHERITANCE)
3.PEWARISAN (INHERITANCE)
 Salah satu fitur yang paling kuat dalam OOP adalah
penggunaan kode kembali (code reuse). Sekali sebuah
prosedur dibuat, maka kita bisa menggunakannya
berulang kali
 Dalam OOP, kemampuan yang dimiliki tidak hanya itu.
Kita juga bisa mendefinisikan hubungan antar kelas yang
tidak hanya dimanfaatkan untuk code reuse, tapi juga
dari segi pendesainannya yang jauh lebih baik, yaitu
dengan cara mengelola kelas-kelas dan faktor kemiripan
di antara kelas-kelas tersebut.
 Fitur pewarisan (inheritance)
mengijinkan sebuah kelas, yang
disebut superclass, untuk
menurunkan atribut-atribut dan
method-methodnya kepada kelas
lainnya yang disebut subclass (child)
 Terdapat beberapa karakteristik dari subclass:
- subclass adalah bentuk khusus dari sebuah
superclass
- dalam sebuah subclass terdapat atribut dan
method yang diturunkan dari superclass
- subclass bisa memiliki fitur tambahan yang
berbeda dari fitur-fitur yang diturunkan dari
superclass-nya
CONTOH PEWARISAN
CONTOH PEWARISAN
JENIS-JENIS PEWARISAN
JENIS-JENIS PEWARISAN
 Single inheritance, yaitu hanya
terdapat satu superclass
 Multiple inheritance, yaitu terdapat
lebih dari satu superclass. Bahasa
Java tidak mengakomodasi multiple
inheritance
4.POLYMORPHISM
4.POLYMORPHISM
 Polymorphisme artinya sesuatu yang
memiliki banyak bentuk
 Sebagai contoh, objek wanita memiliki
beberapa peran:
- bagi suami, ia adalah seorang istri
- bagi anak, ia adalah seorang ibu
- di tempat kerja, ia adalah seorang
karyawati
 Dalam OOP, polymorphism adalah sebuah
fitur yang memungkinkan kita untuk
memberikan arti atau penggunaan yang
berbeda bagi sebuah entitas dalam
konteks yang berbeda-beda.
 Entitas tersebut bisa berupa variabel,
method, atau sebuah objek

Lanjutan-Konsep-OOPLanjutan-Konsep-OOP.ppt

  • 1.
    PEMROGRAMAN BERORIENTASI OBJEK PEMROGRAMANBERORIENTASI OBJEK KONSEP PEMROGRAMAN BERORIENTASI OBJEK Zarnelly, S.Kom, M.Sc
  • 2.
  • 3.
    PEMROGRAMAN PROSEDURAL PEMROGRAMAN PROSEDURAL Dalampemrograman prosedural, sebuah program akan dibagi menjadi beberapa sub-program (modul) yang akan melakukan tugas-tugas tertentu. Modul bisa dibuat oleh user atau diambil dari library program lainnya. Dalam sebuah modul, bisa terdiri dari satu atau lebih prosedur.
  • 4.
    PEMROGRAMAN BERORIENTASI PEMROGRAMAN BERORIENTASI OBJEK OBJEK Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecil dari program yang mengandung data dan fungsi yang bekerja atas objek tersebut.  Pemrograman yang dibangun dengan cara membungkus (enkapsulasi) komponennya menjadi kelompok data dan fungsi yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut dapat berinteraksi satu sama lainnya.
  • 5.
    OOP VS PROSEDURAL OOPVS PROSEDURAL Sistem Akademik Dosen Jadwal Kuliah Mahasiswa Kontrak Kuliah Konteks Pengambilan Kuliah Penjadwalan Penilaian Dekomposisi berdasarkan objek atau konsep Dekomposisi berdasarkan fungsi atau proses Metodologi Berorientasi Objek Metodologi Berorientasi Fungsi
  • 6.
    PERANGKAT LUNAK OBJEK PERANGKATLUNAK OBJEK  Perangkat lunak yang dibangun dari kelas- kelas dan objek-objek yang saling berinteraksi satu sama lainnya. • Kelas Deskripsi statis dari sesuatu. • Objek Sesuatu yang diciptakan (instansiasi) dari kelas.
  • 7.
    KELAS DAN OBJEK KELASDAN OBJEK  Sebuah kelas menentukan struktur dan tingkah laku sebuah objek  Kelas adalah cetak biru dari objek, mendefinisikan atribut (state) dan perilaku (behaviour/method) dari objek  Objek adalah instans dari kelas
  • 8.
    KELAS DAN OBJEK KELASDAN OBJEK  Contoh Kelas Mahasiswa memiliki atribut NIM, Nama, Alamat, dan memiliki perilaku (behaviour/method) seperti melakukan registrasi, perkuliahan, ujian, praktikum, dll.
  • 9.
    KELAS DAN OBJEK KELASDAN OBJEK Ani, Budi, dan Gunawan adalah objek (instans) dari kelas mahasiswa. Mereka masing-masing memiliki atribut-atribut nama, nim, alamat (yang nilainya masing-masing berbeda). Mereka juga memiliki behaviour yang sama yaitu melakukan registrasi, perkuliahan, ujian, praktikum.
  • 10.
  • 11.
    DESAIN KELAS DANOBJEK DESAIN KELAS DAN OBJEK  Kelas adalah cetak-biru dari obyek. Seperti halnya semua cetak-biru dalam kehidupan sehari-hari, kelas merupakan acuan bagaimana obyek itu dibentuk, data apa saja yang disimpan oleh obyek, dan operasi- operasi apa saja yang dapat dilakukan oleh obyek.
  • 12.
     Struktur dasarsebuah kelas pada intinya ada 4 bagian, yaitu : • deklarasi kelas; • deklarasi dan inisialisasi atribut; • pendefinisian method; • komentar.
  • 13.
    Pada pemrograman Java,pendeklarasian kelas dilakukan dengan menggunakan syntax sebagai berikut : [modifier] class class_identifier Contoh: public class Barang { ……… }
  • 14.
     Deklarasi variabeldilakukan di dalam kelas. Variabel yang didefinisikan di kelas merupakan atribut dari kelas tersebut  Sintaks deklarasi variabel: [modifiers] data_type identifier [ = value ] ;
  • 15.
     Method merepresentasikanoperasi-operasi yang dapat dilakukan oleh obyek. Dalam penulisan, yang membedakan method dan variabel adalah : method selalu diakhiri dengan ( ) atau (< nama argumen >). Pendeklarasiannya juga berbeda, yaitu dengan menambahkan blok { ... } dan mengisi blok tersebut dengan baris-baris program. Bentuk umum penulisan deklarasi method adalah sebagai berikut : [modifiers] return_type method_identifier ([arguments]){ method_code_block; }
  • 16.
    PEMBUATAN KELAS PEMBUATAN KELAS Diagram UML (Unified Modeling Language) SegiEmpat + panjang: double + lebar: double + setPanjang(p: double) + setLebar(l: double) + hitungLuas(): double + hitungKeliling(): double
  • 17.
    public class SegiEmpatc{ //deklarasivariabel (atribut) public double panjang; public double lebar; //deklarasi method public void setPanjang(double p){ panjang = p; } public void setLebar(double l){ lebar = l; }
  • 18.
    public double hitungLuas(){ returnpanjang*lebar; } public double hitungKeliling(){ return 2*(panjang + lebar); }}
  • 19.
    package sg4c; public classMain { public static void main(String[] args) { SegiEmpatc se1 = new SegiEmpatc(); //pembentukan objek SegiEmpatc se2 = new SegiEmpatc(); // pembentukan objek se1.setPanjang(10); se1.setLebar(5); se2.setPanjang(5.5); se2.setLebar(2.3); System.out.println("Luas segi empat 1 ="+se1.hitungLuas()); System.out.println("Keliling segi empat 2 ="+se2.hitungKeliling()); } }
  • 20.
    KELAS DENGAN METHODMAIN KELAS DENGAN METHOD MAIN SegiEmpat + panjang: double + lebar: double + setPanjang(p: double) + setLebar(l: double) + hitungLuas(): double + hitungKeliling(): double + m ain(args: String[])
  • 21.
    public class SegiEmpat{ publicdouble panjang; public double lebar; public void setPanjang(double p){ panjang = p; } public void setLebar(double l){ lebar = l; } public double hitungLuas(){ return panjang*lebar; } public double hitungKeliling(){ return 2*(panjang + lebar); } public static void main(String[] args){ SegiEmpat se1; se1 = new SegiEmpat(); //pembentukan objek SegiEmpat se2 = new SegiEmpat(); // pembentukan objek se1.setPanjang(10); se1.setLebar(5); se2.setPanjang(5.5); se2.setLebar(2.3); System.out.println("Luas segi empat 1 ="+se1.hitungLuas()); System.out.println(“Keliling segi empat 2 ="+se2.hitungKeliling()); } }
  • 22.
    KELAS DENGAN KONSTRUKTOR KELASDENGAN KONSTRUKTOR SegiEmpat + panjang: double + lebar: double + SegiEm pat() + SegiEm pat(p: double, l: double) + setPanjang(p: double) + setLebar(l: double) + hitungLuas(): double + hitungKeliling(): double + m ain(args: String[]) SegiEmpat + panjang: double + lebar: double + setPanjang(p: double) + setLebar(l: double) + hitungLuas(): double + hitungKeliling(): double + m ain(args: String[])
  • 23.
    Package SG42 public classSegiEmpat{ public double panjang; public double lebar; //deklarasi konstruktor public SegiEmpat(){ } public SegiEmpat(double p, double l){ panjang = p; lebar = l; }
  • 24.
    public void setPanjang(doublep){ panjang = p; } public void setLebar(double l){ lebar = l; } public double hitungLuas(){ return panjang*lebar; } public double hitungKeliling(){ return 2*(panjang + lebar); } 
  • 25.
    public static voidmain(String[] args){ SegiEmpat se1; se1 = new SegiEmpat(); //pembentukan objek se1.setPanjang(10); se1.setLebar(5); SegiEmpat se2 = new SegiEmpat(5.5,2.3); // pembentukan objek SegiEmpat se3 = new SegiEmpat(7,8); System.out.println("Luas segi empat 1 ="+se1.hitungLuas()); System.out.println(“Keliling segi empat 2 ="+se2.hitungKeliling()); System.out.println("Luas segi empat 3 ="+se3.hitungLuas()); } }
  • 26.
    Menghitung Rata-Rata 3 MenghitungRata-Rata 3 bilangan bilangan  Buat program menggunakan Constructor untuk menghitung rata- rata 3 bilangan,  Objek R1 = (1,2,3)  Objek R2 = (4,5,6)  Objek R3 = (7,8,9)  Cetak Rata-rata setiap objek
  • 27.
    FITUR PEMROGRAMAN FITUR PEMROGRAMAN BERORIENTASIOBJEK BERORIENTASI OBJEK  ABSTRAKSI  ENKAPSULASI  PEWARISAN  POLYMORPHISM
  • 28.
    I. ABTSRAKSI I. ABTSRAKSI Abstraksi adalah suatu proses mendaftarkan entitas-entitas (benda- benda) yang akan berinteraksi dalam suatu aplikasi  Entitas-entitas tersebut nantinya akan menjadi kelas, dan dari kelas lahirlah objek
  • 29.
     Setelah entitas-entitasdidaftarkan, maka selanjutnya ditentukan sifat- sifat (state/atribut) dan hal yang dapat dilakukan oleh entitas tersebut (behaviour/method)
  • 30.
     Misalnya dalamsistem kepegawaian, dimana didalamnya terdapat banyak entitas di antaranya adalah pegawai. Didalam entitas pegawai terdapat atribut-atribut yang akan membedakan satu pegawai dengan pegawai lainnya, misalkan NIP, Nama, Alamat, Tanggal Lahir, dll.
  • 31.
     Dalam aplikasiyang akan dibuat, entitas- entitas tersebut akan menjadi kelas-kelas. Di dalam kelas-kelas inilah didefinisikan atribut-atribut dan method-method  Kelas adalah blue print dari objek. Dari kelas lahirlah objek  Kelas tidak memiliki data, tapi objeklah yang menyimpan data
  • 32.
    2. Enkapsulasi 2. Enkapsulasi Enkapsulasi adalah suatu cara untuk menyembunyikan implementasi detil (berupa atribut atau method) dari suatu kelas.  Dalam OOP, kebutuhan akan enkapsulasi muncul karena adanya sharing data antar method
  • 33.
  • 34.
    3.PEWARISAN (INHERITANCE) 3.PEWARISAN (INHERITANCE) Salah satu fitur yang paling kuat dalam OOP adalah penggunaan kode kembali (code reuse). Sekali sebuah prosedur dibuat, maka kita bisa menggunakannya berulang kali  Dalam OOP, kemampuan yang dimiliki tidak hanya itu. Kita juga bisa mendefinisikan hubungan antar kelas yang tidak hanya dimanfaatkan untuk code reuse, tapi juga dari segi pendesainannya yang jauh lebih baik, yaitu dengan cara mengelola kelas-kelas dan faktor kemiripan di antara kelas-kelas tersebut.
  • 35.
     Fitur pewarisan(inheritance) mengijinkan sebuah kelas, yang disebut superclass, untuk menurunkan atribut-atribut dan method-methodnya kepada kelas lainnya yang disebut subclass (child)
  • 36.
     Terdapat beberapakarakteristik dari subclass: - subclass adalah bentuk khusus dari sebuah superclass - dalam sebuah subclass terdapat atribut dan method yang diturunkan dari superclass - subclass bisa memiliki fitur tambahan yang berbeda dari fitur-fitur yang diturunkan dari superclass-nya
  • 37.
  • 38.
    JENIS-JENIS PEWARISAN JENIS-JENIS PEWARISAN Single inheritance, yaitu hanya terdapat satu superclass  Multiple inheritance, yaitu terdapat lebih dari satu superclass. Bahasa Java tidak mengakomodasi multiple inheritance
  • 40.
    4.POLYMORPHISM 4.POLYMORPHISM  Polymorphisme artinyasesuatu yang memiliki banyak bentuk  Sebagai contoh, objek wanita memiliki beberapa peran: - bagi suami, ia adalah seorang istri - bagi anak, ia adalah seorang ibu - di tempat kerja, ia adalah seorang karyawati
  • 41.
     Dalam OOP,polymorphism adalah sebuah fitur yang memungkinkan kita untuk memberikan arti atau penggunaan yang berbeda bagi sebuah entitas dalam konteks yang berbeda-beda.  Entitas tersebut bisa berupa variabel, method, atau sebuah objek