Anda di halaman 1dari 76

PEMROGRAMAN

BERORIENTASI OBJEK
Pertemuan 10
PERANCANGAN KELAS (SOLID PATTERN)

Program Studi Informatika


Universitas Atma Jaya Yogyakarta

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


... hari ini …
 Kopling dan Kohesi
 Perancangan kelas dengan SOLID Pattern

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… sasaran …
Setelah mempelajari materi ini, mahasiswa
mampu
 Menyebutkan pattern perancangan kelas
SOLID
 Menerapkan prinsip perancangan kelas
tersebut dalam pemrograman.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… pendahuluan …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… pendahuluan…
 Perancangan kelas yang baik memberikan jaminan
kode program yang dihasilkan akan mudah untuk
dipelihara.
 Rancangan kelas yang baik dapat membuat
program menjadi lebih lentur (agile) untuk
dimodifikasi.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… pendahuluan…
 Hal ini perlu diperhatikan mengingat perubahan
program karena perubahan kebutuhan sangat
sering terjadi.
 Dibutuhkan pengetahuan tentang prinsip perancangan
yang baik untuk menghasilkan program yang baik
tersebut.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… pendahuluan…
 Ada beberapa pattern tertentu yang kerap
digunakan untuk merancang kelas.

 Penerapan pattern ini berdasarkan atas 2


komponen utama prinsip perancangan.
 Coupling
 Cohesion

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… cohesion …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion
 Satu unit kode seharusnya selalu bertanggung
jawab pada satu dan hanya satu tugas/layanan
(task/service)

 Cohesion dapat diterapkan pada kelas dan method

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion
 Setiap kelas seyogyanya hanya mengandung satu
konsep tunggal saja.
 “A class should concentrate on doing one thing and one
thing only”.

 Perhatikan kelas BankAccount

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion
mengapa ?


he k a
tid
s if
Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id
… prinsip perancangan kelas …
Cohesion

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion tabungan biasa

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion

tabungan deposito

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion tabungan biasa

tabungan deposito

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


.. so, ada 2
konsep dalam
… prinsip perancangan
satu kelas .. kelas …
Cohesion tabungan biasa

tabungan deposito

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Cohesion
 Kelas BankAccount tidak kohesif karena berisi
dua konsep yang berbeda: tabungan biasa dan
deposito.

 Solusi …. ?

 Tutorial 10.1

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.1 …
… pattern S O L I D …
… single responsibility principle

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id
… single responsibility principle …
 Berkaitan dengan sifat kohesif sebuah modul
(kelas/fungsi).

 Prinsip ini mengatakan ‘A class should have


only one reason to change’  (Single Reason to
Change Principle).

 Apabila didapati ada lebih dari satu konsep maka


kelas tersebut seharusnya dipecah menjadi lebih
dari satu kelas.
Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id
… single responsibility principle …
 Bagaimana penerapan dalam BankAccount ?

 Memecahkan kelas BankAccount menjadi 2 kelas,


misalkan: kelas SavingsAccount kelas
DepositAccount.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
… tutorial 10.1 …
 Membuat interface BankAccount
 Membuat kelas SavingsAccount
 Membuat kelas DepositAccount ….

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Perhatikan implementasi kelas SavingsAccount kelas
DepositAccount.
 Kelas SavingsAccount sudah berisi fungsi yang terkait dengan
tabungan.
 Kelas DepositAccount sudah berisi fungsi yang terkait dengan
deposito.

… tetapi …
 Kelas SavingsAccount dan kelas DepositAccount
terdapat fungsi-fungsi kosong.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Perhatikan implementasi kelas SavingsAccount kelas
DepositAccount.

 Lakukan tutorial 10.1

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Perhatikan implementasi kelas SavingsAccount kelas
DepositAccount.

 Lakukan tutorial 10.1

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Perhatikan implementasi kelas SavingsAccount kelas
DepositAccount.

 Lakukan tutorial 10.1

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Perhatikan implementasi kelas SavingsAccount kelas
DepositAccount.

 Lakukan tutorial 10.1

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Mengapa bisa terjadi?
 Kedua kelas harus mengimplementasikan interface yang
masih mengakomodasi dua konsep, yaitu konsep rekening
tabungan dan rekening deposito, sehingga terlihat interface
BankAccount merupakan sebuah interface yang kompleks
(fat interface).

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Mengapa bisa terjadi?
 Kedua kelas harus mengimplementasikan interface yang
masih mengakomodasi dua konsep, yaitu konsep rekening
tabungan dan rekening deposito, sehingga terlihat interface
BankAccount merupakan sebuah interface yang kompleks
(fat interface).

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Mengapa bisa terjadi?
 Kedua kelas harus mengimplementasikan interface yang
masih mengakomodasi dua konsep, yaitu konsep rekening
tabungan dan rekening deposito, sehingga terlihat interface
BankAccount merupakan sebuah interface yang kompleks
(fat interface).

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
 Mengapa bisa terjadi?
 Kedua kelas harus mengimplementasikan interface yang
masih mengakomodasi dua konsep, yaitu konsep rekening
tabungan dan rekening deposito, sehingga terlihat interface
BankAccount merupakan sebuah interface yang kompleks
(fat interface).

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… single responsibility principle …
… solusi … ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.2 …
… pattern S O L I D …
… interface segregation
principle…
Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id
… interface segregation principle …
 Prinsip perancangan yang digunakan untuk
mewujudkan kohesif dengan interface.
 Sebuah kelas tidak kohesif apabila memiliki atau
mengimplementasikan ‘fat’ interface (interface
yang memiliki fungsi beragam) .
 Pendekatan : mengubah sebuah ‘fat’ interface
menjadi beberapa interface yang lebih kohesif,
setiap interface melayani klien yang
membutuhkan atau mengimplementasikannya.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… interface segregation principle …
 Interface Segregation Principle mengatakan
“Clients should not be forced to depend upon
interfaces that they do not use.”
 interface harus dibuat minimal sesuai dengan
kebutuhan kelas.

 Bagaimana dengan interface BankAccount dalam


tutorial 10.1 ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… interface segregation principle …
… tutorial 10.2 …

 Ide dasar tutorial 10.2 adalah memecah interface


BankAccount (fat interface) menjadi interface
ISavingsAccount dan IDepositAccount (thin
interface)

 Kelas SavingsAccount dan DepositAccount


mengimplementasikan interface yang sesuai.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… interface segregation principle …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… interface segregation principle …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… interface segregation principle …
 Bagaimana kode untuk kedua kelas dan kedua
interface ? Apakah sudah memenuhi kaidah
cohesion ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… SRP dan ISP …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… coupling …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling
 Sangat mungkin sebuah kelas berkolaborasi dan
memberikan layanan kepada kelas lain.
 dalam arti sebuah kelas menggunakan method yang
dimiliki kelas lain.

 Apabila sebuah kelas memanggil method kelas


lain, berarti kedua kelas tersebut terikat (ter-
kopling) satu sama lain.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling
 Keterikatan antar kelas
 perubahan pada satu kelas akan pengaruh pada kelas
lain
 Yang baik : loose coupling,
 perubahan pada satu kelas tidak memiliki pengaruh
yang besar pada kelas lain

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Lihat Studi kasus kelas SavingsAccount dan kelas
Coins dalam tutorial. Andaikan ….
 2016 : digunakan uang Coin, maka
SavingsAccount masih dapat berfungsi dengan
baik.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 2016 : dibuat program sederhana untuk menyimpan
rekening ….
public class Coins {
private double value;

public Coins(double aValue) {


value = aValue;
}

public double getValue() {


return value;
}
}

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 2017 : digunakan uang Coin dan Notes (Kertas)

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …

201
2017 8
Coins, Notes
2016
Coins

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Program sederhana yang dibuat tahun 2016 masih bisa
berlaku … ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 2017 : digunakan uang Coin dan Notes (Kertas)
 2018 : diperkirakan akan muncul Cheque, jadi jenis
uang yang digunakan Coin, Notes dan Cheque

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …

201
2017 Coins,
8 Notes, Cheque
Coins, Notes
2016
Coins

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Program sederhana yang dibuat tahun 2016 masih bisa
berlaku … ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Solusi …..

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Lakukan perubahan (modification) pada interface
ISavingsAccount dan kelas SavingsAccount .

 Bagaimana perubahan … ?

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Jika ada penambahan jenis uang Notes ….

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Jika ada penambahan jenis uang Notes ….

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Jika ada penambahan jenis uang Cheque ….

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… prinsip perancangan kelas …
Coupling – Studi kasus
 Lakukan perubahan (modification) pada interface
ISavingsAccount dan kelas SavingsAccount .

 Jika ada 5 atau 6 … atau 100 jenis mata uang … ? Selalu


terjadi modifikasi ….

 Artinya … terjadi kopling yang tinggi …

 Solusi ideal …. ??? – Lakukan tutorial 10.4

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.4 …
… pattern S O L I D …
… open closed principle …
… liskov substitution
principle…
Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id
… dependency inversion principle …
 Prinsip ini menyatakan ..
High level modules should not depend upon low
level modules. Both should depend upon
abstractions.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
 Prinsip ini menyatakan ..
High level modules should not depend upon low
level modules. Both should depend upon
abstractions.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
 Prinsip ini menyatakan ..
High level modules should not depend upon low
level modules. Both should depend upon
abstractions.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
 Prinsip ini menyatakan ..
High level modules should not depend upon low
level modules. Both should depend upon
abstractions.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
 Penerapan prinsip ini adalah pembuatan interface ….
public interface ICurrency {
public double getValue();
}

 Semua jenis uang mengimplementasikan interface ini …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
Coupling – Studi kasus
public class Coins implements ICurrency {
private double value;
public Coins(double aValue) {
value = aValue;
}

public double getValue() {


return value;
}
}

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
Coupling – Studi kasus
public class Notes implements ICurrency {
private double value;
public Notes(double aValue) {
value = aValue;
}

public double getValue() {


return value;
}
}

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
Coupling – Studi kasus
public class Cheque implements ICurrency {
private double value;
public Cheque(double aValue) {
value = aValue;
}

public double getValue() {


return value;
}
}

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… dependency inversion principle …
Coupling – Studi kasus
public class SavingsAccount {
private String number;
private double balance;

public SavingsAccount (String num) { number = num;}


public void store(ICurrency coins) {
balance = balance + coins.getValue();
display();
}

public void display() {


System.out.println("Rekening No : " + number +
" saldo : " + balance);
}
}

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… liskov’s substitution principle …
Prinsip ini mengatakan
“Sebuah fungsi yang menggunakan referensi
sebuah kelas induk harus dapat digunakan juga
oleh objek yang berasal dari kelas turunan dari
kelas induk tersebut”

 Penggunaan … kelas induk atau interface dijadikan


referensi dalam fungsi pada high level modul.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… liskov’s substitution principle …
 Dalam kasus tutorial, kelas induk atau interface
(ICurrency) dijadikan referensi (atau tipe
parameter) dalam fungsi pada high level modul (fungsi
store di kelas SavingsAccount).

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… open closed principle …
 Sebuah kelas terbuka untuk perluasan (open for
extension) tetapi tertutup untuk modifikasi
(closed for modification).

 Sebuah fungsionalitas baru ditambahkan dengan


membuat kelas, method atau field baru, bukan
menggantikan kode yang sudah teruji

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… open closed principle …
 Perwujudan dengan menggunakan pewarisan
ataupun interface.

 Prinsip dasar yang digunakan untuk membuat


kode program menjadi extensible adalah adalah
menyediakan objek pada saat eksekusi (run time)
dan menggunakan polimorfisme untuk
menggunakan fungsionalitas tambahan tersebut.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… open closed principle …
… dalam studi kasus …
 Penambahan jenis uang (Coins, Notes atau
Cheque), maka kelas SavingsAccount harus tidak
mengalami modifikasi.

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… SRP dan ISP …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.4 – DIP …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.4 – LSP …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id


… tutorial 10.4 – OCP …

Jl. Babarsari 44 Yogyakarta 55281 Telp. +62-274-487711 Fax. +62-274-487748 www.uajy.ac.id

Anda mungkin juga menyukai