Anda di halaman 1dari 30

Bab I

Pengenalan Materi

 Object orientation
 Objek & kelas
 Konstruktor & Destruktor
 Enkapsulasi & information hiding à access method public & private.
 Inheritance (single, multiple, & repeated) à access method protected
 Overloading & overriding (constructor & method)
Bab II

Object Oriented Programming (OOP)

Pengenalan OOP
Merupakan teknik membuat suatu program berdasarkan objek dan apa yang bisa
dilakukan objek tersebut. OOP terdiri dari beberapa objek yang berinteraksi satu sama
lain untuk menyelesaikan sebuah tugas yang diminta.

Kenapa OOP
Kode-kode di-breakdown agar lebih mudah di-manage. Breakdown berdasarkan
objek-objek yang ada pada program tersebut. Dianjurkan diimplementasikan untuk
program dengan berbagai ukuran karena lebih mudah untuk men-debug.

Kenapa bukan Pemrograman Prosedural


Pemrogaman Prosedural program diatur dalam barisan-barisan linier yang bekerja
dari atas ke bawah. Kumpulan tahapan yang dijalankan setelah yang lain berjalan. Baik
untuk program kecil yang berisi sedikit code. Tidak dianjurkan diimplementasikan pada
program berukuran besar, karena susah untk dimanage dan di-debug.

Apa itu Objek ?


 Dapat diartikan sebagai instansiasi atau hasil ciptaan dari suatu class. Asumsikan
cetakan kue adalah class, maka kue yang dihasilkan dari cetakan tersebut
merupakan objek dari class cetakan kue.
 Merupakan entitas yang memiliki state, behavior, & identitiy (Booch, 2007).
o State : semua “sifat” / property yang dimiliki beserta nilai yang
melekat padanya.
o Behavior : bagaimana obyek beraksi dan berekreasi, dalam hal
perubahan property dan penyampaian pesan (message passing).
o Identity : property dari obyek yang membedakannya dengan obyek
lain.
 Dalam OOP objek dapat dimungkinkan terdiri atas beberapa objek lain.
 Bisa juga, objek merupakan turunan dari objek lain, sehingga mewarisi beberapa
sifat dari induknya atau juga mempunyai sifat tambahan sendiri.
Message Passing (Komunikasi Antar Objek)
 Bagaimana cara objek saling berkomunikasi dan berinteraksi ?
 Lonely Object is Useless
 Proses interaksi Objek :

Object A berkomunikasi dengan Object B.


Object A meminta Object B melakukab sesuatu untuknya.
Object A mengirim pesan disertai informasi ke Object B.
Tambahan : info yang dikirim bersama message adalah parameter message.

Apa itu Kelas


 Merupakan cetak biru atau prototype atau template dari object.
 Kita bisa membuat banyak object dari satu macam class.
 Didalam class kita dapat mendeklarasikan variable dan menciptakan class.
 Class mempunyai anggota yang terdiri atas atribut dan method.
 Kelas merupakan himpunan objek yang memiliki karakteristik (state, behavior)
yang sama.

Atribut
 Atribut adalah semua field Identitas yang kita berikan pada suatu class, missal
class manusia mempunyai atribut berupa nama dan umur.
 Atribut juga bisa diartikan sebagai segala sesuatu yang melekat pada Object.
 Dalam penerapan di program atribut adalah Variabel.
 Contoh atribut kelas Manusia adalah nama, umur.
 Contoh atribut kelas Lingkaran adalah jari-jari, diameter.

Method
 Method dapat diartikan sebagai semua fungsi atau procedure yang merupakan
perilaku dari class.
 Method kelas mempresentasikan bagaimana suatu hal diselesaikan dalam sebuah
object.
 Method merupakan suatu fungsi/ behavior, bagaimana suatu object melakukan
tindakan.
 Contoh method dari kelas Manusia adalah berjalan, berbicara.
 Contoh method dari kelas Lingkaran adalah mencari luas, keliling

Question Bab II

1. Dibawah ini bukan merupakan bagian dari siklus hidup object ?


a. Created
b. Intialized
c. Finalized
d. Unreacheable
e. Reacheable
2. Merupakan pernyataan yang paling tepat tentang Object ?
a. Object merupakan semua sifat yang melekat pada benda itu.
b. Object merupakan ciri pembeda antara satu object dengan object yang lain.
c. Object terdiri atas state, behavior, dan Identity.
d. Object hanya terdiri atas state dan behavior.
e. Suatu fungsi dari program akan menghasilkan object
3. Pernyataan yang salah mengenai kelas ?
a. Merupakan cetak biru atau prototype atau template dari object.
b. Didalam class kita dapat mendeklarasikan variable dan menciptakan class.
c. Class mempunyai anggota yang terdiri atas atribut dan method.
d. Kelas merupakan himpunan objek yang memiliki karakteristik (state, behavior)
yang sama.
e. Kelas merupakan bagian terkecil dari sebuah object.
4. Pernyataan yang salah mengenai method ?
a. Method dapat diartikan sebagai semua fungsi atau procedure yang merupakan
perilaku dari class.
b. Method kelas mempresentasikan bagaimana suatu hal diselesaikan dalam sebuah
object.
c. Method merupakan suatu fungsi/ behavior, bagaimana suatu object melakukan
tindakan.
d. Method dapat direalisasikan melalui fungsi/ procedure.
e. Method merupakan ciri pembeda antara satu object dengan object yang lain.
5. Pernyataan yang tepat mengenai OOP ?
a. Lebih ringkas dari pemrogaman procedural jika dilihat dari pengcodeanya.
b. Lebih cocok untuk diagunakan dalam pemrogaman berskla kecil.
c. Pilihan A benar.
d. Pilihan A dan B benar.
e. Hanya piihan B yang benar.
Essay

1. Jelaskan apa yang dimaksud dengan pemrogaman berorientasi Object (OOP) ?


2. Jelaskan perbedaan antara Teknik Pemrogaman Berorientasi Object dan Teknik
pemrograman Prosedural ?
3. Apa yang anda ketahui tentang Method dalam teknik pemrograman OOP ?
Bab III

Mapping Class Diagram ke Java

Diagram struktur menunjukkan struktur statis dari sistem yang dimodelkan.


berfokus pada elemen sistem, terlepas dari waktu. Struktur statis disampaikan dengan
menunjukkan jenis dan contohnya dalam sistem. Selain menunjukkan jenis sistem dan
contohnya, diagram struktur juga menunjukkan setidaknya beberapa hubungan antara dan
di antara unsur-unsur ini dan bahkan berpotensi menunjukkan struktur internal mereka.

Pada OOP diagram struktur/ diagram kelas memodelkan kelas dan hubungannya
dengan kelas lain. Element yang ada pada struktur diagram adalah Nama Kelas, State/
Atribut, dan Behavior/ Metode. Dalam penggambarannya class diagram boleh
diagambarkan secara tidak lengkap elemenya. Lihat contoh

Ketiga contoh diatas merupakan hal yang benar karena diagram kelas tidak
mengharuskan semua elemennya ada dalam diagram melainkan elemen-elemen yang
benar-benar di perlukan saat implementasi yang harusnya ada. Untuk contoh yang paling
kiri hanya terdiri atas Nama Class, yang paling kanan terdiri atas Nama Class, Atribut,
dan Method, untuk diagram yang tengah hanya terdiri atas Nama Class, dan Atribut.

Konversi diagram ke code


Object Oriented Programming (OOP) (2)
Object Sebagai

 Parameter
Dalam Java, objek juga dapat berperan sebagai parameter dari sebuah method.
Untuk lebih lengkapnya lihat contoh

 Argumen

Keanggotaan Objek sbg property/ state/ atribut

 Object (Instance Member)


Atribut yang merupakan anggota dari setiap object untuk pengaksesannya
diperlukan proses instanisasi, untuk lebih jelas lihat gambar.
 Kelas (class Member)
Atribut yang mana merupakan punya kelas itu sendiri, keyword yang digunakan
untuk pembuatan class member ini adalah “static”. Contoh dibawah

Member Method

 Instance Member
semua method yang ada pada suatu kelas merupakan instance member karena
method-method tersebut berlaku untuk object yang dibuat disuatu kelas.

 Class Member
Method dapat menjadi class member ketika ditambahkan keyword “static”
didepannya.
Konstruktor

 Prosedur khusus untuk membuat obyek.


 Konstruktor merupakan suatu fungsi dari anggota suatu kelas yang mempunyai
nama yang sama dengan kelas tempat fungsi itu berada. Konstruktor ini
digunakan untuk mengalokasikan ruang untuk suatu objek dan memberikan nilai
awal.
 Konstrutor tidak memiliki return type, dapat memiliki parameter bisa juga tidak.
 Dibeberapa bahasa pemrogaman memiliki konstruktor default(otomatis
ditambahkan oleh compiler)

Destruktor

 Merupakan suatu fungsi anggota yang dijalankan secara otomatis ketika suatu objek
akan terbebas dari memori karena lingkup keberadaannya telah menyelesaikan
tugasnya. Destruktor harus mempunyai nama yang sama dengan kelas.
 Beberapa bahasa pemrograman meniadakan destruktor & menyediakan “garbage
collector” untuk membebaskan objek yang sudah tidak digunakan dalam program.
 Nulling reference dapat digunakan untuk mencalonkan objek yang akan dibebaskan
dari memori.

Object Lifecycle

 Created : object terbentuk


 Initialized : object terinitialisasi
 In Use : Object sedang digunakan
 Unreacheable : Object tak ter jangkau
 Finalized : object selesai melakukan tugas dan sudah tak berguna
Overloading

 sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau lebih method
dengan nama yang sama, yang membedakan adalah parameternya.
 Pada method overloading perbedaan parameter mencakup :
1. Jumlah parameter
2. Tipe data dari parameter
3. Urutan dari tipe data parameter
 Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini
contoh Class yang melakukan Overloading.
Question Bab III

1. Berikut pernyataan yang benar tentang konstruktor pada OOP ?


a. Konstruktor merupakan implementasi dari suatu Identity.
b. Nama konstrutor harus sama dengan nama class.
c. Dalam konstruktor dapat terjadi Overloading.
d. Pilihan A, B, C benar.
e. Hanya pilihan B dan C yang benar.
2. Pernyataan yang kurang tepat tentang Destruktor pada OOP ?
a. Merupakan suatu fungsi anggota yang dijalankan secara otomatis ketika suatu
objek akan terbebas dari memori karena lingkup keberadaannya telah
menyelesaikan tugasnya. Destruktor harus mempunyai nama yang sama dengan
kelas.
b. Beberapa bahasa pemrograman meniadakan destruktor & menyediakan “garbage
collector” untuk membebaskan objek yang sudah tidak digunakan dalam program.
c. Nulling reference dapat digunakan untuk mencalonkan objek yang akan
dibebaskan dari memori.
d. Prosedur khusus untuk membuat obyek.
e. Semua Pilihan salah.
3. Overloading terjadi ketika ?
a. Nama method sama jumlah parameter berbeda.
b. Nama method sama tipe data parameter berbeda.
c. Nama method sama urutan tipe data parameter berbeda.
d. Nama method berbeda tipe data berbeda.
e. Pilihan A, B, C tepat.
4. Berikut pernyataan yang tepat mengenai class member ?
a. Memiliki keyword “static” didepannya.
b. Digunakan untuk membuat suatu obyek baru.
c. Merupakan jenis class yang berfungsi untuk menjembatani antara class lain.
d. Merupakan jenis class yang hanya terdiri atas atribut saja.
e. Semua jawaban diatas benar.
5. Dibawah ini bukan merupakan bagian dari siklus hidup object ?
a. Created
b. Intialized
c. Finalized
d. Unreacheable
e. Reacheable
Essay

1. Sebutkan dan jelaskan siklus hidup yang terjadi pada object !


2. Konversikan kelas diagram dibahawah ini ke pemrograman berorientasi object
dengan menggunakan bahasa pemrogaman java !

3. Dari soal nomor 2 buatlah contoh overloading menggunakan konstruktor-konstruktor


yang ada !
Bab IV

Enkapsulasi
Pengertian
Berikut merupakan pengertian enkapsulasi menurut Booch :
“The process of compartmentalizing the elements of an abstraction that constitute its
structure and behavior (Booch, et.al, 2007).”
Dari pengertian diatas dapat diambil kesimpulan bahwa enkapsulasi berarti
penggolongan elemen dari objek itu sendiri. Hal ini membuat objek tersebut hanya bisa
diakses dengan metode tertentu, ini dilakukan untuk menyembunyikan detail
implementasi objek.
Disini variabel dan method yang di enkapsulasi dengan mengubah hak
akses(variable/method).

Metode Selektor/Mutator
- Digunakan untuk mendapatkan (selektor) dan memanipulasi (mutator) satu atau beberapa
atribut.
- Kesepakatan secara umum, selektor menggunakan get sedangkan mutator menggunakan
kata set, untuk data bertipe boolean, get diganti dengan is.
Fungsi enkapsulasi :
- Modularitas
Modularitas disini memiliki arti objek dapat dikelola secara independen, kode bagian
internal objek dikelola terpisah dari antarmuka. Hal ini dilakukan agar kita dapat
melakukan modifikasi dan tidak menyebabkan masalah pada bagian lain.
- Data hiding
Digunakan untuk menyembunyikan data yang sensitif. Bagian objek yang ingin di “hide”
disembnyikan dengan memberikan akses “private”.

Contoh enkapsulasi :

class Akun{
private String namaAkun;
private double balanceAkun;
public withdraw();
public deposit();
public determine balance();
}
Data yang tidak diprivate dapat diakses diluar kelas

Jenis Modifier

Modifier Class dan Interface Method dan Variabel

Default (tak ada modifier ) Dikenali di paketnya Diwarisi subclass di paket


yang sama dengan
superclassnya. Dapat
diakses oleh method-method
di class-class yang sepaket

Public Dikenali di manapun Diwarisi oleh semua


subclassnya. Dapat diakses
dimanapun.

Protected Tidak dapat diterapkan Diwarisi oleh semua


subclassnya. Dapat diakses
oleh method-method di
class-class yang sepaket.

Private Tidak dapat diterapkan Tidak diwarisi oleh


subclassnya Tidak dapat
diakses oleh class lain.
Kata kunci “this”
Keyword this adalah suatu reference yang digunakan untuk menunjuk objek itu sendiri.
Keyword this ini sendiri diapakai ketika nama atribut sama dengan nama variable lokal.
Keyword this dapat digunakan untuk menunjuk instance member, method, dan
konstruktor milik objek sendiri.

Contoh penggunaan “this”

class Persegi{
double panjang;
double lebar;

Titik(double panjang,double lebar){


//this menunjuk pada instance member panjang
this.panjang = panjang;
//this menunjuk pada instance member lebar
this.lebar= lebar; }
}

*Pada contoh diatas this digunakan untuk menunjuk instance member pada kelas Persegi
.(Penggunaan this tidak dianjurkan untuk mengakses class member. )
Question Bab IV

1. Berikut adalah modifier dalam enkapsulasi kecuali :


a. private c. protected
b. public d. promising
2. Berikut statement untuk akses modifier private yang benar adalah:
a. Method dan atribut dapat diwariskan jika private digunakan
b. Method dapat diwariskan, sedangkan atribut tidak
c. Atribut dapat diwariskan, sedangkan method tidak
d. Method dan atribut tidak dapat diwariskan
3. Hal yang akan dienkapsulasi pada objek adalah
a. Method
b. variabel
c. Method dan variabel
d. Tidak ada yang dienkapsulasi
4. Untuk data bertipe boolean, mutator is diganti dengan get
a. True
b. False
5. “private” membuat method tidak dapat diakses dari dalam kelas
a. True
b. False

Essay

1. Sebutkan dan jelaskan fungsi enkapsulasi!


2. Jelaskan pengertian enkapsulasi!
3. Jelaskan kesepakatan umum penggunaan selektor dan mutator!
4. Isilah bagian yang kosong!
Bagian objek yang ingin di “hide” disembnyikan dengan memberikan akses “______”
5. Buatlah contoh implementasi enkapsulasi dalam bahasa pemrograman Java!
Bab V

Inheritance (Pewarisan)
Inheritance merupakan penurunan karakteristik dari kelas yang telah ada(kelas
induk/superclass). Tidak semua karakteristik dapat diturunkan oleh superclass.
Kharakteristik yang di “private” tidak akan diturunkan oleh superclass kepada
keturunannya (kelas turunan).

Kelas turunan dapat mewarisi anggota suatu kelas yang berupa data dan method.
Disini perlu diperhatikan bahwa kelas tidak harus memiliki inheritance. Inheritance
digunakan jika superclass memiliki hal yang dibutuhkan subclass.

Note :

- Parent disebut Superclass / base class


- Child disebut Subclass / derived class

Hirarki :

1. Part-of
Hirarki part-of merupakan hirarki uang dibentuk melalui hubungan agregat antar
objek. Kata kunci dari hirarki part-of ini adalah “bagian”. Contohnya adalah

- Persegi panjang merupakan “bagian” dari balok.


Persegi panjang merupakan “part-of” balok.

2. IS-A

Contoh dari inheritance IS-A :


- Ayam IS-A hewan
Ayam “adalah” manusia
- Bebek IS-A hewan
Bebek “adalah hewan
Inherintance merupakan perwujudan dari hirarki IS-A. Disini perlu diperhatikan
bahwa tidak semua atribut/method dapat diwariskan. Namun, hanya atribut / method
yang menggunakan akses “public” dan “protected” yang dapat diwariskan.

//class Kertas

class Kertas{

public String warna;

protected String pemilik;

//class KertasTerbuang

class KertasTerbuang extends Kertas {

Istilah dalam Hirarki

o Tiap kelas dinamakan node


o A(node paling atas) merupakan root
o D,E,F merupakan sibling dari super class B
o Leaf adalah node yang tidak punya keturunan
o Node diatas node lain disebut ancestor
Method Overriding

Method overriding merupakan sebuah mekanisme dimana metode yang ada di parrent
class dideklarasikan kembali oleh subclass. Method ini berguna untuk mendefinisikan
ulang metode yang ada pada super class. Aturan overriding di Java :

1. Parameter yang terdapat pada method overriding di subclass harus sama dengan
parameter yang ada pada super class.
2. Aturan hak akses method overriding di subclass tidak boleh lebih ketat di
bandingkan dengan hak akses method pada super class.

“super” keyword

Keyword “super” digunakan untuk mengakses konstruktor pada super class. Keyword ini
juga dapat digunakan untuk mengakses ke konstruktor yang telah di enkapsulasi.
Keyword “super” juga dapat digunakan untuk menurunkan behavior pada super class.

class Book{

public int nPage;

protected String writer;

Buku(int nPage,String writer){

this. nPage l = nPage;

this. writer = writer;

class BukuTulis extends Book{

BukuTulis(int nPage,String writer){

super(nPage,writer);

}
Spesialisasi & Generalisasi

Spesialiasi merupakan cara memandang kelas dengan pendekatan top-down,


sedangkan generalisasi merupakan pendekatan dengan bottom up. Spesialisasi
memungkinkan banyak sub-class memiliki perilaku yang spesifik daripada super-class,
sedangkan generalisasi menyebabkan sub-class memiliki super-class yang berperilaku
lebih umum (Generalisasi)

Inheritance perlu dilakukan jika :

- Perlu penambahan fitur (metode atau atribut).


- Membuat perilaku yang diturunkan dari superclass berbeda pada subclass.

Inheritance jangan dilakukan jika :

- mengubah semantik (maksud / tujuan) dari feature yang diturunkan.


- mengubah method signature dari super class.
- menghilangkan feature, atau mengabaikannya.
- mengubah kendali akses ketika meng-override.

Keuntungan inheritance

- Mengurangi redudansi kode.


- Subclass jadi lebih singkat
- Reusing tanpa modifying
- Bisa menggunakan ulang kelas tanpa memiliki source codenya
Question Bab V

1. Manakah statement yang benar dari pilihan berikut


a. A(node paling atas) dinamakan ancestor (walau hanya satu node)
b. Sibling adalah node yang punya parent sama
c. Leaf adalah node yang tidak punya keturunan
d. Sibling adalah node yang punya parent berbeda

2. Berikut adalah keuntungan inheritance, kecuali


a. Mengurangi redudansi kode.
b. Subclass jadi lebih singkat
c. Reusing tanpa modifying
d. Subclass jadi lebih panjang

3. Generalisasi memandang kelas secara top-down


a. True
b. False
4. Keyword “super” tidak dapat menurunkan behavior pada subclass
a. True
b. False
5. Kita tidak boleh mengubah kendali akses saat overriding
a. True
b. False

Essay

1. Jelaskan pengertian metode overriding!


2. Sebutkan hal-hal yang tidak dianjurkan jika ingin melakukan inheritance!
3. Jelaskan pengertian Inheritance!
4. Sebutkan alasan dilakukannya inheritance!
5. Jelaskan perbedaan “private” dan “protected”!
Bab VI

Multiple Inheritance

Multiple Inheritance yaitu suatu komdisi dimana suatu kelas menerima pewarisan
dari dua atau lebih kelas. Namun dalam hal ini, bahasa pemrograman tertentu seperti Java
telah menghilangkan fitur ini, tetapi C++ masih mendukung fitur tersebut. Contoh
diagram dari multiple inheritance:

Gambar. Diagram multiple inheritance

Namun multiple inheritance ini ternyata memiliki beberapa permasalahan, apa


kira-kira masalahnya? Masalah ini sering disebut Diamond’s Problem.

Diamond’s Problem

Apakah itu? Diamond’s problem terjadi apabila suatu kelas, misalkan kelas A dan
B, dimana kelas A mewarisi dari kelas bernama superkelas,(anak dari superkelas)
demikian juga untuk kelas B. Dan pada hal ini kelas A dan B memiliki metode dengan
nama yang sama(karena turunan kelas superkelas). Pada saat yang sama C ini memiliki 2
parents yaitu kelas A dan B. Saat kelas C ingin memanggil metode yang dimiliki di kelas
A dan B, ia akan kebingungan, metode kelas mana yang akan digunakan. Solusi dari
diamond’s problem yaitu kita tidak menggunakan multiple inheritance melainkan
menggunakan virtual inheritance(single inheritance ke kelas yang paling umum).
Contoh Diamond’s problem program multiple inheritance :

#include <iostream>

class LivingThing {
protected:
void breathe() {
std::cout << "I'm breathing as a living thing." <<
std::endl;
}
};

class Animal : protected LivingThing {


protected:
void breathe() {
std::cout << "I'm breathing as an animal." << std::endl;
}
};

class Reptile : protected LivingThing {


public:
void breathe() {
std::cout << "I'm breathing as a reptile." << std::endl;
}

void crawl() {
std::cout << "I'm crawling as a reptile." << std::endl;
}
};

class Snake : public Animal, public Reptile {

};

int main() {
Snake snake;

snake.breathe();
snake.crawl();

return 0;
}
Apabila kita compile source code diatas maka apa yang akan terjadi?
Yang terjadi yaitu
 “Member ‘breathe’ found in multiple base classes of different types”
 “Anggota/metode ‘breathe’ ditemukan di lebih dari satu class yang
berbeda”
 //kebingungan metode mana yang akan digunakan.
Question Bab VI

1. Apa itu multiple inheritance?


a. Subclass memiliki lebih dari satu superclass
b. Superclass memiliki lebih dari satu subclass
c. Subclass memiliki satu superclass
d. Superclass memiliki satu subclass

2. Periksa Kodingan dibawah ini:


class Ibu {
protected:
void gender() {
std::cout << "Saya perempuan" << std::endl;
}
};

class Bapak {
protected:
void gender() {
std::cout << "Saya laki-laki" << std::endl;
}
};

class Anak : protected Ibu, protected Bapak {


};

int main() {
Anak anak;

anak.gender();
return 0;
}
Apa yang akan terjadi bila di compile?
a. Compile error
b. Saya laki-laki
c. Saya perempuan
d. Saya laki-laki perempuan
3. Bahasa Pemrograman yang mendukung Multiple Inheritance?
a. C++
b. Java
c. C#
d. Assembly

4. Apa problem dari multiple inheritance?


a. Ketika subclass mewarisi dua atau lebih superclass dan ternyata
superclass memiliki metode yang sama. Ketika ingin memanggil metode
tersebut maka error compiled.
b. Karena dua atau lebih superclass yang diwarisi subclass tidak memiliki
metode yang sama.
c. Tidak tahu
d. Karena multiple inheritance fitur yang tidak didukung oleh Bahasa C++.
5. Periksa Kodingan dibawah ini:
class Ibu {
protected:
void gender() {
std::cout << "Saya perempuan" << std::endl;
}
};

class Bapak {
protected:
void nama() {
std::cout << "Nama saya Indri " << std::endl;
}
};

class Anak : protected Ibu, protected Bapak {


};

int main() {
Anak anak;

anak.gender();
anak.nama();
return 0;
}
Apa yang akan terjadi bila di compile?
a. Compile error
b. Saya perempuan
Nama saya Indri
c. Saya perempuan
d. Nama saya Indri
Essay

1. Apakah Java mendukung Multiple Inheritance? Sebutkan minimal 3 Bahasa


pemrograman yang mendukung Multiple Inheritance!
2. Apa itu Multiple Inheritance?
3. Buatlah hirarki diagram dari multiple inheritance!
Jawab
1. Java tidak mendukung multiple inheritance, Bahasa yang mendukung yaitu C++, Phyton,
LISP, Perl.
2. Ketika anak (subclass) memiliki/ mewarisi lebih dari satu parent(superclass)
3. Diagram bisa seperti dibawah ataupun yang serupa dan benar.
Bab VII

Kelas Abstrak
Kelas abstrak merupakan kelas yang didefiniskan dengan modifier abstract, dan tidak ada
instances yang dapat terbentuk dari kelas abstrak. Contoh source code kelas Abstrak:
abstract class Student{
protected final state int NUM_OF_TESTS = 3;
protected String name;
protected int [] test;
protected String courseGrade;
public Student(String studentName){
name = studentName;
test = new int[NUM_OF_TESTS];
coursegrade = “****”;
}
abstract public void computerCourseGrade();
public String getCourseGrade(){
return courseGrade;
}
public String getName(){
return name;
}
public int getTestScore(int testNumber){
return test[testNumber-1];
}
public void setName(String newName) {
name = newName;
}
public void setTestScore(int testNumber,int testScore){
test[testNumber-1] = testScore;
}
}
Pada source code diatas bila dilihat secara seksama terdapat suatu metode abstrak.
Karena pada dasarnya suatu kelas dinamakan abstrak apabila kelas itu terdiri dari metode
abstrak atau bisa dibilang tidak ada pengimplementasian dari metode abstrak yang
diwariskan. Lalu implementasi metodenya itu dilakukan pada subclassnya.
Kelas ataupum Metode abstrak didefinisikan dengan menambahkan keyword abstract.
Apa fungsi dari kelas abstrak ini? Fungsinya yaitu apabila kita ingin memilki sebuah
metode pada superclass tetapi implementasinya itu berbeda pada tiap subclassnya. Kelas
abstrak ini di desain untuk mengadaptasi perubahan. Representasi kelas abstrak pada
diagram UML:

Gambar Representasi kelas abstrak pada diagram UML


Interface
Interface mungkin sebagian orang berpikir pasti akan berurusan tentang UI dsb,
namun ternyata tidak demikian. Interface itu suatu fitur yang terdiri dari 100% kelas
abstrak. Interface digunakan untuk mengatasi keadaan multiple inheritance dimana sudah
kita ketahui mempunyai masalah. Dalam interface, hanya berisi metode-metoed saja tanpa
adanya atribut. Lalu apa perbedaan dari kelas abstrak dengan interface? Perbedaannya
yaitu:
Kelas Abstrak Interface
Method abstrak dan riil Method abstrak
Boleh memiliki atribut Hanya konstanta yang
diperbolehkan
Tidak dapat dibuat instannya Tidak dapat dibuat instannya
Digunakan untuk kelas yang Bukan merupakan kaidah IS-A
memiliki hubungan IS-A
Setiap kelas dapat membuat implementasi dari beberapa interface, dan sebuah interface
dapat mewarisi lebih dari sebuah interface.
Question Bab VI

1. Apakah ciri suatu class/ metode merupakan kelas/ smetode abstract?


a. Ada keyword “static” didepan suatu class ataupun metode
b. Ada keyword “abstract” didepan suatu class ataupun metode
c. Ada keyword “extends” didepan suatu class ataupun metode
d. Ada keyword “implements” didepan suatu class ataupun metode

Anda mungkin juga menyukai