You are on page 1of 23

Inheritance & Interface

Pemrograman Berorientasi Obyek

Program Studi Ilmu Komputer


Fakultas MIPA
Universitas Lambung Mangkurat
Materi
• Karakteristik Pemrograman Berorientasi Obyek
• Inheritance
• Polymorphism
• Interface
Karakteristik Pemrograman Berorientasi
Obyek
• Enkapsulasi
• Mekanisme penyembunyian data dengan cara membatasi aksesnya
• setter & getter
• Inheritance
• Konsep yang memungkinkan suatu kelas mewariskan sifat dari kelas lainnya
• Abstraksi
• Menentukan antarmuka yang harus ada pada suatu kelas
• Polymorphism
• Satu nama namun memiliki banyak bentuk
Inheritance
• Pewarisan adalah hubungan antara kelas yang
lebih umum (superclass) dan kelas yang lebih
khusus (subclass)
• Subclass mewarisi data dan perilaku dari
superclass

• Keyword : extends
Latihan 3.1 (simpan dalam package konsep)
public class Pelajar { public class Mahasiswa extends Pelajar {
private String noInduk; private int jumlahSKS;

public String getNoInduk() {


public int getJumlahSKS() {
return noInduk;
return jumlahSKS;
}
}
public void setNoInduk(String noInduk) {
this.noInduk = noInduk; public void setJumlahSKS(int jumlahSKS) {
} this.jumlahSKS = jumlahSKS;
}
public void cetakNoInduk(){ }
System.out.println("No Induk anda : " + this.noInduk);
}
}
Latihan 3.1
public class MahasiswaAksi
{
public static void main(String[] args)
{
Mahasiswa ito = new Mahasiswa();
ito.setNoInduk("00523041");
ito.setJumlahSKS(20);
System.out.println("Ito adalah mahasiswa Ilmu Komputer ULM dengan NIM " + ito.getNoInduk());
System.out.println("Beban kuliah yang telah ditempuh sebanyak " + ito.getJumlahSKS() + " SKS");
}
}
Catatan pada Latihan 3.1
• Kelas Mahasiswa adalah turunan dari kelas
Pelajar
• Mahasiswa extends Pelajar
• Pelajar adalah superclass; Mahasiswa adalah subclass
• Obyek kelas Mahasiswa bisa menggunakan
semua method kelas Pelajar
• Kelas Mahasiswa secara default memiliki semua
atribut dan method yang dimiliki oleh kelas
Pelajar, tanpa harus diketik ulang
Latihan 3.2
• Buat 2 (dua) buah kelas (Alumni
dan Pelajar SMA) sehingga
bersesuaian dengan class
diagram berikut ini.
• Kemudian buat kelas lain untuk
membuat obyek/instance-nya
Ulangi Materi Inheritance
Polymorphism
• Satu nama, namun memiliki banyak bentuk
• Implementasi konsep polymorphism:
• Overloading:
• Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang
berbeda parameter (baik tipe, maupun jumlah)
• Overriding:
• Kemampuan subclass untuk menimpa method dari superclass, untuk method dengan
nama dan parameter yang sama
Latihan 3.3 : Overloading
public class PelajarOverloading { public void cetak(int umur){
private String noInduk; System.out.println("Umur anda : " + umur);
}
public void setNoInduk(String noInduk) {
this.noInduk = noInduk; public void cetak(String nama){
} System.out.println("Nama anda adalah : " + nama);
}
public void cetak(){
System.out.println("No Induk anda adalah : " + public void cetak(String noInduk, String nama){
this.noInduk); System.out.println("No Induk "+ nama +" adalah : "
} + noInduk);
}
}
Latihan 3.3
public class PelajarOverloadingAksi {
public static void main(String[] args)
{
PelajarOverloading susi = new PelajarOverloading();
susi.cetak();
susi.cetak("Susi Lo");
susi.cetak(19);
susi.cetak("080989999", "Susi Lo Wati");
}
}
Penjelasan Overloading
• Pada kelas PelajarOverloading, terdapat 4 (empat) buah method yang
namanya sama, namun memiliki jumlah dan/atau tipe data parameter
yang berbeda
• cetak()
• cetak(int umur)
• cetak(String nama)
• cetak(String noInduk, String nama)
• Hal tersebut tidak menyebabkan error pada program, karena bagi
Java keempat method tersebut berbeda (konsep Polymorphism -
Overloading)
Latihan 3.4
• Buat kelas yang berisikan konsep overloading
• Buat kelas anda sendiri
Latihan 3.5 : PelajarOverriding.java
public class PelajarOverriding extends Pelajar {
private int jumlahSKS;

public int getJumlahSKS() {


return jumlahSKS;
}

public void setJumlahSKS(int jumlahSKS) {


this.jumlahSKS = jumlahSKS;
}

public void cetakNoInduk() {


System.out.println("No Induk Mahasiswa ULM anda adalah " + getNoInduk());
}
}
Latihan 3.5
public class PelajarOverridingAksi {
public static void main(String[] args)
{
Pelajar andi = new Pelajar();
andi.setNoInduk("abcde");
andi.cetakNoInduk();

PelajarOverriding eko = new PelajarOverriding();


eko.setNoInduk("00523041");
eko.cetakNoInduk();
}
}
Penjelasan Overriding
• Konsep OOP yang memungkinkan kelas anak untuk menyediakan
implementasi yang berbeda untuk suatu method yang sudah
didefinisikan di kelas parent-nya
• Method yang di-override harus memiliki nama dan parameter yang sama
dengan kelas parent-nya
Interface
• Interface digunakan apabila kita ingin menentukan
apa yang harus dilakukan oleh suatu class tapi tidak
menentukan bagaimana cara untuk melakukannya
• Interface sebenarnya sama dengan class, tapi hanya
memiliki deklarasi method tanpa implementasi
Interface dan Implementation
Latihan 3.6 : InterfaceLampu.java
interface InterfaceLampu
{
public static final int KEADAAN_HIDUP=1;
public static final int KEADAAN_MATI=0;

public abstract void hidupkan();


public abstract void matikan();
}
public class Lampu implements InterfaceLampu
{ Lampu.java
int statusLampu;

public void hidupkan(){


if (statusLampu == KEADAAN_MATI){
statusLampu = KEADAAN_HIDUP;
System.out.println("Hidupkan Lampu! --> Lampu Hidup");
}else{
System.out.println("Hidupkan Lampu! --> Lampu Sudah Hidup Kok");
}
}
public void matikan(){
if (statusLampu == KEADAAN_HIDUP){
statusLampu = KEADAAN_MATI;
System.out.println("Matikan Lampu! --> Lampu Mati");
}else{
System.out.println("Matikan Lampu! --> Lampu Sudah Mati Kok");
}
}
}
LampuAksi.java
public class LampuAksi
{
public static void main(String[] args)
{
Lampu lampuKamar = new Lampu();
System.out.println("Status Lampu Saat Ini: Mati");

lampuKamar.hidupkan();
lampuKamar.matikan();
lampuKamar.matikan();
lampuKamar.hidupkan();
lampuKamar.hidupkan();
}
}
Latihan 3.7
• Buat program serupa tapi untuk InterfaceAC.java
• Masukkan method-method di bawah ke dalam
InterfaceAC.java dan lakukan implementasi pada kelas
AC.java
• matikanAC() dan hidupkanAC()
• turunkanSuhu() dan naikanSuhu()

You might also like