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
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.
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
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.
Parameter
Dalam Java, objek juga dapat berperan sebagai parameter dari sebuah method.
Untuk lebih lengkapnya lihat contoh
Argumen
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
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
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
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
class Persegi{
double panjang;
double lebar;
*Pada contoh diatas this digunakan untuk menunjuk instance member pada kelas Persegi
.(Penggunaan this tidak dianjurkan untuk mengakses class member. )
Question Bab IV
Essay
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 :
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
2. IS-A
//class Kertas
class Kertas{
//class KertasTerbuang
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{
super(nPage,writer);
}
Spesialisasi & Generalisasi
Keuntungan inheritance
Essay
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:
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;
}
};
void crawl() {
std::cout << "I'm crawling as a reptile." << std::endl;
}
};
};
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
class Bapak {
protected:
void gender() {
std::cout << "Saya laki-laki" << std::endl;
}
};
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
class Bapak {
protected:
void nama() {
std::cout << "Nama saya Indri " << std::endl;
}
};
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
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: