Download - Modul PBO
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 1 Universitas Muhammadiyah Cirebon
Modul-1
Judul : Instalasi Java
Prosedur Pelaksanaan :
1. Siapkan JDK yang telah disediakan, lalu installah seperti biasa, usahakan agar direktori tempat
JDK ini mudah diakses, misalkan kita letakkan pada c:\ Java
2. Setelah terinstal lakukan setting classpath jika anda ingin menggunakan editor text seperti notepad,
fungsi dari setting classpath ini agar program java yang anda buat dapat dijalankan dimana saja di
seluruh partisi hardisk. Cara setting class path ini sebagai berikut
a. Cari direktori bin yang ada terdapat pada direktori tempat Java anda terinstall
b. Lalu catat alamat tempat diletakkan nya folder bin tersebut
c. Setelah itu klik kanan pada MyComputer pilih properties, lalu klik pada tab advance
d. Setelah itu pilih Environtment Variabel
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 2 Universitas Muhammadiyah Cirebon
e. Lalu pada variable PATH pilih edit karena kita akan menambahkan classpath yang baru, maka
akan muncul jendela berikut
f. Tambahkan alamat terletaknya folder bin dalam hasil instalasi java.pada kolom Variable
Value. Setelah itu tekan OK.
3. Setelah di setting classpath restart komputer anda agar terjadi perubahan yang diinginkan
4. untuk mengecek apakah JDK yang anda install sudah terpasang dengan baik adalah dengan
menggunakan command prompt ketikan C:\> java, atau C:\> javac, jika melihat tulisan sebagai
berikut itu berarti JDK anda sudah terinstall dengan baik
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 3 Universitas Muhammadiyah Cirebon
5. sedangkan jika kita menggunakan IDE ( Integrated Development Environment) kita tinggal
menginstall nya setelah JDK terinstall, ada beberapa IDE yang bisa di pakai antara lain JBuilder
buatan Borland, Eclipse, NetBeans, dll
contoh tampilan IDE NetBeans
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 4 Universitas Muhammadiyah Cirebon
Modul-2
Judul : Membuat Class Sederhana
Teori :Seperti kita ketahui bahwa Java adalah bahasa yang murni 100% Object-
Oriented. Sehinggga mau tidak mau kita juga harus belajar tentang object-oriented programming, dan
kita juga harus belajar berfikir objek untuk mudah memahami bahasa Java.
Berbeda dengan teknik pemrograman secara struktural. Object-Oriented Programming adalah
suatu cara dalam memprogram, dimana kita melihat suatu program sebagai suatu benda hidup,
sehingga sebuah program komputer tidak bersifat pasif, tetapi ia akan terlihat „hidup‟. Hal ini
didasarkan pada paradigma dalam dunia nyata. Yaitu memandang data seperti memandang benda-
benda dalam kehidupan nyata, memiliki fleksibilitas dalam pendefinisian data, dll.
Ada tiga karakteristik utama dari sebuah pemrograman yang berorientasi Object, yaitu :
Abtraction
Encapsulation
Inheritance
Polymorphism
Sebelum kita masuk ke karakteristik OOP kita akan bahas sedikit beberapa konsep dasar dalam OOP
Class
Class adalah blueprint atau prototype dari objek-objek. kita misalkan sebagai berikut :
Class adalah blueprint / rancang bangun yang nantinya akan dibuat sebuah / beberapa object.
Class mengizinkan anda dalam mendeklarasikan tipe data baru
A Class is “ a mechanisme used to provide a description of one more similar objects that have
been abstracted from a real world things or concepts”.
Contoh lain dari analogi sebuah class dengan object adalah sebagai berikut :
Misalkan Ujang dari Class Mahasiswa
Dalam Java kita tidak dapat mendefinisikan objek secara langsung, melainkan kita bekerja
dengan kelas dari sebuah objek.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 5 Universitas Muhammadiyah Cirebon
Sebuah class dalam Java dideklarasikan sebagai berikut :
[atribut_akses] class [Identifier] [super] [interface] [body]
Sebuah class harus mempunyai kata kunci class. Kata kunci ini dapat didahului oleh atribut_akses
yang bersifat opsional. Kata kunci class harus diikuti nama class berupa identifier. Baru kemudian
dapat diikuti dengan nama-nama dari superclass dan/ atau super interface. Baru kemudian diikuti
dengan block { } yang merupakan body dari class.
Contoh nama dari sebuah class :
public class Persegi
{
private int panjang;
private int lebar;
public Persegi()
{
}
}
“ ingat nama class harus sama dengan nama file “
Access Specifier
Access Spesifier Untuk Variable : Jenis variable Lingkup pengaksesan Daur hidup
Variabel instant Tunduk terhadap kondisi berikut :
1. private – hanya metode
dalam class yang dapatm
mengakses
2. public – sembarang class
dapat mengakses.
3. friendly – kelas atau
sembarang class dalam paket
4. protected – sembarang
subclass dari class dapat
mengakses
Saat instance diciptakan
hingga tidak ada lagi
referensi terhadap
instance.
Variabel class Tunduk terhadap lingkup yang sama
dengan variable instance
Saat kelas dimuat hingga
tidak ada lagi referensi
terhadap class tersebut.
Variabel lokal Kode didalam blok yang sama Saat kode blok masih
aktif.
Access Specifier untuk method :
Access
Specifier
Lingkup pengaksesan Pemakaian
Public Metode dapat diakses sembarang
class
Antarmuka eksternal class
anda
Private Metode dapat diakses oleh metode
dalam class yang sama
Metode untuk pemakaian
internal class (tidak
berhubungan dengan
pamakai class)
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 6 Universitas Muhammadiyah Cirebon
Tidak secara
eksplicit
disebutkan
(friendly)
Metode dapat diakses oleh metode
didalam class atau metode dalam
class lain yang berada pada paket
yang sama.
Metode yang anda
inginkan dapat diakses
oleh kelas yang berkaitan
Protected Metode dapat diakses oleh metode
dalam subclass dari class tersebut
Metode yang ingin diakses
oleh subclass dari class
tersebut.
Abstraction
Abstraction : cara kita melihat suatu sistem dalam bentuk yang lebih sederhana, yaitu sebagai
kumpulan subsistem (object) yang saling berinteraksi.
Object
Objek, adalah entiti yang memiliki keadaan, Behaviour dan identitas yang tugasnya dirumuskan
dalam suatu lingkup masalah dengan naik. Inilah instance yang sebenarnya dari sebuah class. Ini
juga dikenal sebagai instance.
Object adalah representasi nyata dari sebuah class.
Object is “a real world thing or concept that can be defined by descriptive attributes and behavior “
Kita dapat menyatakan sesuatu yang ada di sekitar kita sebagai suatu objek, dari yang nyata, seperti
Komputer, pohon, hewan, bangunan, dll. Hingga yang abstrak, seperti hutang, penjualan barang,
dll.
Dalam Java kita tidak dapat mendefinisikan objek secara langsung, melainkan kita bekerja dengan
kelas dari sebuah objek. kita dapat meng-instance sebuah class menjadi object dengan kata kunci
new.
Contoh :
public class hitungPersegi
{
public static void main(String[] args) {
// membuat objek
Persegi p = new persegi() ;
}
}
Perhatikan perbedaan antara class dan obyek yang dicontohkan dalam dunia nyata
Class Motor Object Motor A Object Motor B
Variabel
Instance
Nomor Plat E 1234 GB E 4569 GH
Warna Hitam Merah
Pabrikan Yamaha Honda
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 7 Universitas Muhammadiyah Cirebon
Kecepatan 40 km/ jam 50 km/jam
Method
Instance
Method Akslelerasi
Method Rem
Method standing up
Attribut / Field
menyatakan informasi yang dibawa kelas dan menjadi parameter dari objek dari kelas yang
bersangkutan. Misal ada kelas bangun geometri kubus, maka parameter bagi objek kubus itu
adalah panjang. Maka kita akan menulis field itu dalam java dengan format sebagai berikut :
Atribut_akses tipe_data Nama_field;
Maka kita tulis sebagai berikut :
private int panjang;
Dalam Java, istilah variable dipakai untuk menyatakan field, local-variable, parameter, dan
komponen array.
Istilah field sendiri dipakai untuk menyatakan variable yang merupakan bagian langsung dari
sebuah class atau interface
Method
Sebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal sebagai fungsi
atau prosedur.
Secara sederhana method dapat dikatakan sebagai operasi yang dapat dilakukan oleh object dari
class. Operasi ini bisa berupa menerima dan menampilkan data, memanipulasi field, atau
mempengaruhi objek lain.
Berikut ini adalah format penulisan dalam mendeklarasikan method dalam body kelas.
Atribut_akses tipe_kembalian Nama_Method(arg1,arg2,...argn)
{
// body of method
}
Berikut ini adalah karakteristik dari sebuah method
1. Dapat mengembalikan satu nilai atau tidak sama sekali
2. Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter samasekali.
Parameter bisa juga disebut sebagai argumen dari fungsi
3. Setelah method telah selesai dieksekusi, dia akan kembali pada method yangmemanggilnya
1. Membuat Class mahasiswa
public class mahasiswa
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 8 Universitas Muhammadiyah Cirebon
{
private int nim;
private String nama;
prvate String alamat;
private String email;
public String getNama()
{
return nama;
}
public int getNim()
{
return nim;
}
public void setNama(String nama)
{
this.nama = nama;
}
public void setNim(int nim)
{
this.nim = nim;
}
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 9 Universitas Muhammadiyah Cirebon
2. Membuat Class mainMahasiswa public class mainMahasiswa
{
public static void main(String[] args)
{
Mahasiswa mhs1 = new Mahasiswa();
Mahasiswa mhs2 = new Mahasiswa();
mhs1.setNama("Joni");
mhs1.setNim("00123456");
mhs1.setEmail("[email protected]");
mhs1.setAlamat("Cirebon");
mhs2.setNim("00123457");
mhs2.setAlamat("Kutaraja");
mhs2.setEmail("[email protected]");
mhs2.setNim("ayu");
//Menampilkan Data
System.out.println("Nama : "+mhs1.getNama());
System.out.println("NIM : "+mhs1.getNim());
System.out.println("Email : "+mhs1.getEmail());
System.out.println("Alamat: "+mhs1.getAlamat());
}
}
3. Membuat Class Persegi Panjang public class PersegiPanjang
{
private int panjang;
private int lebar;
public PersegiPanjang(int panjang, int lebar)
{
this.panjang = panjang;
this.lebar = lebar;
}
public int getLebar()
{
return lebar;
}
public void setLebar(int lebar)
{
this.lebar = lebar;
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 10 Universitas Muhammadiyah Cirebon
public int getPanjang()
{
return panjang;
}
public void setPanjang(int panjang)
{
this.panjang = panjang;
}
public int Luas()
{
int Luas;
Luas = panjang * lebar;
return Luas;
}
}
4. Membuat Class mainPersegiPanjang public class mainPersegiPanjang
{
public static void main(String[] args)
{
PersegiPanjang kotak = new PersegiPanjang();
kotak.setLebar(10);
kotak.setPanjang(15);
//Menampilkan Luas Persegi Panjang
System.out.println("Luas : "+kotak.getLuas());
}
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 11 Universitas Muhammadiyah Cirebon
Modul-3
Judul : Membuat Class (Overloading Constructor, Overloading Method)
Teori :
Overloading Constructor adalah Membuat 2 Constructor atau lebih yang memiliki beberapa parameter
dalam sebuah class, seperti kita tahu bahwa construtor digunakan sebagai inisialisasi sebuah class,
dengan adanya overloading constructor kita dapat membuat beberapa objek yang serupa tapi tak sama
Contoh :
Pada class Mahasiswa yang kemarin telah kita buat kita tidak melihat adanya construtor, akan tetapi
pada saat kita meng-instance objek mahasiswa kita mendeklarasikan new Mahasiswa();hal itu terjadi
karena java secara otomatis membuat sendiri construtornya secara default.
Lat 1. Class Mahasiswa public class mahasiswa
{
private String nim;
private String nama;
private String alamat;
private String email;
private static int jumlah;
public Mahasiswa()
{
jumlah++;
}
public Mahasiswa(String nim)
{
this.nim = nim;
jumlah++;
}
public String getAlamat()
{
return alamat;
}
public void setAlamat(String alamat)
{
this.alamat = alamat;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getNama()
{
return nama;
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 12 Universitas Muhammadiyah Cirebon
public void setNama(String nama)
{
this.nama = nama;
}
public String getNim()
{
return nim;
}
public void setNim(String nim)
{
this.nim = nim;
}
public static int getJumlah()
{
return jumlah;
}
public void getData()
{
System.out.println("Nama : "+nama);
System.out.println("Nim : "+nim);
System.out.println("Email : "+email);
System.out.println("Alamat : "+alamat);
}
public void getData(int NilaiUts, int NilaiUas)
{
System.out.println("Nama : "+nama);
System.out.println("Nim : "+nim);
System.out.println("Nilai UTS : "+NilaiUts);
System.out.println("Nilai UAS : "+NilaiUas);
System.out.println("Nilai Akhir : "+((0.4 * NilaiUts) + (0.6 *
NilaiUas)));
}
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 13 Universitas Muhammadiyah Cirebon
public class mainMahasiswa
{
public static void main(String[] args)
{
Mahasiswa mhs1 = new Mahasiswa();
Mahasiswa mhs2 = new Mahasiswa();
Mahasiswa mhs3 = new Mahasiswa("0012399");
mhs1.setNama("Joni");
mhs1.setNim("00123456");
mhs1.setEmail("[email protected]");
mhs1.setAlamat("Cirebon");
mhs2.setNim("00123457");
mhs2.setAlamat("Kutaraja");
mhs2.setEmail("[email protected]");
mhs2.setNim("ayu");
//Menampilkan Data
System.out.println("Nama : "+mhs3.getNama());
System.out.println("NIM : "+mhs3.getNim());
System.out.println("Email : "+mhs3.getEmail());
System.out.println("Alamat: "+mhs3.getAlamat());
//Menampilkan Jumlah Data
System.out.println("Jumlah Mahasiswa : "+Mahasiswa.getJumlah());
//Menampilkan Data Mhs1
mhs1.getData();
System.out.println("");
//Menampilkan Data Mhs2
mhs2.getData(70, 90);
}
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 14 Universitas Muhammadiyah Cirebon
Modul-4
Judul : Inheritance (Penurunan Sifat / Pewarisan) & Polymorfisme
Teori : Inheritance dan Polymorfisme adalah kedua sifat yang dimiliki dalam Konsep OOP. Dalam
inheritance, method overriding berbeda dengan method overloading. Kalau method
overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun
signature atau parameter yang diperlukan dalam subclass, kalau method overloading adalah
mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature yang berbeda
dalam definisi class yang sama.
Inheritance is “The Concepts of creating classes that are specialization of the other class”.
A Super Class is “An class that is higher in the inheritance structure than another class”.
A Sub Class is “An class that is the descendant of another class”.
Example :
Class Mahasiswa is A Sub Class of the class person
Class Person is A Super Class from class Mahasiswa
Aturan-aturan dalam penurunan class
a. Sebuah Super Class mengandung attribut dan method yang bersifat umum untuk semua Sub
Class
b. Sebuah Sub Class menurunkan semua attribut dan method dari super class
c. Sebuah Sub Class memungkinkan untuk memiliki attribut atau method tersendiri
d. Sebuah Sub Class Memungkinkan untuk me-override atau memodifikasi attribut atau method
turunannya.
e.
Latihan 1 : abstract class Bentuk
{
protected int panjang;
protected int lebar;
public String getBentuk()
{
return "Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk
{
public BujurSangkar(int panjang1, int lebar1)
{
this.panjang = panjang1;
this.lebar = lebar1;
}
@Override
public String getBentuk()
{
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 15 Universitas Muhammadiyah Cirebon
return "Bujur Sangkar";
}
@Override
public int hitungLuas()
{
return panjang * lebar;
}
}
class segitiga extends Bentuk
{
public segitiga(int panjang2, int lebar2)
{
this.panjang = panjang2;
this.lebar = lebar2;
}
@Override
public String getBentuk()
{
return "Segitiga";
}
@Override
public int hitungLuas()
{
return (panjang * lebar )/2;
}
}
Latihan 2 : public class Hewan
{
private String tipe;
public Hewan(String tipe)
{
this.tipe = tipe;
}
public String toString()
{
return "Ini adalah "+tipe;
}
public void bersuara()
{
}
}
public class Anjing extends Hewan
{
private String nama;
private String jenis;
public Anjing(String nama)
{
super("Anjing");
this.nama = nama;
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 16 Universitas Muhammadiyah Cirebon
jenis = "tidak diketahui";
}
public Anjing(String nama, String jenis)
{
super("Anjing");
this.nama = nama;
this.jenis = jenis;
}
public void bersuara()
{
System.out.println("Guk guk guk");
}
public String toString()
{
return super.toString()+"\nIni adalah "+jenis+" bernama "+nama;
}
}
public class Ayam extends Hewan
{
private String nama;
private String jenis;
public Ayam(String nama)
{
super("Ayam");
this.nama = nama;
this.jenis = "Tidak diketahui";
}
public Ayam(String nama, String jenis)
{
super("Ayam");
this.nama = nama;
this.jenis = jenis;
}
public String toString()
{
return super.toString()+"\nIni adalah "+jenis+" bernama "+nama;
}
public void bersuara()
{
System.out.println("Kukuruyuk petok petok");
}
}
public class Kucing extends Hewan
{
private String nama;
private String jenis;
public Kucing(String tipe, String nama)
{
super("Kucing");
this.nama = nama;
this.jenis = "Tidak Diketahui";
}
public Kucing(String tipe, String nama, String jenis)
{
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 17 Universitas Muhammadiyah Cirebon
super("Kucing");
this.nama = nama;
this.jenis = jenis;
}
@Override
public void bersuara()
{
System.out.println("Meong...Meong...");
}
@Override
public String toString()
{
return super.toString()+"\nIni adalah "+jenis+" bernama "+nama;
}
}
public class polymorfisme
{
public static void main(String[] args)
{
Hewan[] hewannya = {new Anjing("Broni","Herder"),
new Kucing("Kiti","Persia"),
new Ayam("Toki", "Buras")};
Hewan pilihHewan;
Random pilih = new Random();
for(int i = 0; i < 5; i++)
{
pilihHewan = hewannya[pilih.nextInt(hewannya.length)];
System.out.println("\nPilihan Anda:\n" + pilihHewan);
pilihHewan.bersuara();
}
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 18 Universitas Muhammadiyah Cirebon
Modul-5
Judul : UML
Teori : Dalam suatu proses pengembangan software, analisa dan rancangan telah merupakan
terminologi yang sangat tua. Pada saat masalah ditelusuri dan spesifikasi dinegoisasikan, dapat
dikatakan kita berada pada tahap rancangan. Merancang adalah menemukan suatu cara untuk
menyelesaikan masalah, salah satu tool / model untuk merancang pengembangan software yang
berbasis object oriented adalah UML.
Konsep Objek
Obyek dalam „software analysis & design‟ adalah sesuatu berupa konsep (concept), benda (thing), dan
sesuatu yang membedakannya dengan lingkungannya. Secara sederhana obyek adalah mobil, manusia,
alarm dan lainlainnya. Tapi obyek dapat pula merupakan sesuatu yang abstrak yang hidup didalam
sistem seperti tabel, database, event, system messages. Obyek dikenali dari keadaannya dan juga
operasinya. Sebagai contoh sebuah mobil dikenali dari warnanya, bentuknya, sedangkan manusia dari
suaranya. Ciriciri ini yang akan membedakan obyek tersebut dari obyek lainnya. Alasan mengapa saat
ini pendekatan dalam pengembangan software dengan object oriented, pertama adalah scalability
dimana obyek lebih mudah dipakai untuk menggambarkan sistem yang besar dan komplek. Kedua
dynamic modeling, adalah dapat dipakai untuk permodelan sistem dinamis dan realtime.
Keuntungan permodelan berorientasi objek yaitu :
1. Titik berat pengembangan perangkat lunak ada di tahap analisis tetapi mudah di bagian
implementasi karena model-model yang dihasilkan mudah diadaptasi ke dalam program.
2. Mengorganisasikan system berdasarkan objek dan bukan fungsi menghasilkan model yang lebih
stabil dari perubahan yang terjadi kemudian dan pada tahap implementasi menghasilkan
program yang lebih modular.
3. Merupakan proses pengembangan yang berkesinambungan. Model-model yang dihasilkan pada
tahap analisis digunakan pada tahap perancangan dan implementasi. Tahap perancangan dan
implementasi mengkonsentrasikan pada memperbaiki model dan tidak mentransformasi model-
model tersebut ke dalam diagram lain yang berbeda notasi. Oleh karena itu, model-model yang
dihasilkan cukup konsisten, error, dan diskontinuitas dapat model dapat diminimasi.
Teknik Dasar OOA/D (Object-Oriented Analysis/Design)
Dalam dunia pemodelan, metodologi implementasi obyek walaupun terikat kaidah-kaidah standar,
namun teknik pemilihan obyek tidak terlepas pada subyektifitas software analyst & designer. Beberapa
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 19 Universitas Muhammadiyah Cirebon
obyek akan diabaikan dan beberapa obyek menjadi perhatian untuk diimplementasikan di dalam
sistem. Hal ini sah-sah saja karena kenyataan bahwa suatu permasalahan sudah tentu memiliki lebih
dari satu solusi. Ada 3 (tiga) teknik/konsep dasar dalam OOA/D, yaitu pemodulan (encapsulation),
penurunan (inheritance) dan polymorphism.
a. Pemodulan (Encapsulation)
Pada dunia nyata, seorang ibu rumah tangga menanak nasi dengan menggunakan rice cooker,
ibu tersebut menggunakannya hanya dengan menekan tombol. Tanpa harus tahu bagaimana
proses itu sebenarnya terjadi. Disini terdapat penyembunyian informasi milik rice cooker,
sehingga tidak perlu diketahui seorang ibu. Dengan demikian menanak nasi oleh si ibu menjadi
sesuatu yang menjadi dasar bagi konsep information hiding.
b. Penurunan (Inheritance)
Obyek-obyek memiliki banyak persamaan, namun ada sedikit perbedan. Contoh dengan
beberapa buah mobil yang mempunyai kegunaan yang berbeda-beda. Ada mobil bak terbuka
seperti truk, bak tertutup seperti sedan dan minibus. Walaupun demikian obyek-obyek ini
memiliki kesamaan yaitu teridentifikasi sebagai obyek mobil, obyek ini dapat dikatakan sebagai
obyek induk (parent). Sedangkan minibus dikatakan sebagai obyek anak (child), hal ini juga
berarti semua operasi yang berlaku pada mobil berlaku juga pada minibus.
c. Polymorphism
Pada obyek mobil, walaupun minibus dan truk merupakan jenis obyek mobil yang sama, namun
memiliki juga perbedaan. Misalnya suara truk lebih keras dari pada minibus, hal ini juga
berlaku pada obyek anak (child) melakukan metoda yang sama dengan algoritma berbeda dari
obyek induknya. Hal ini yang disebut polymorphism, teknik atau konsep dasar lainnya adalah
ruang lingkup / pembatasan. Artinya setiap obyek mempunyai ruang lingkup kelas, atribut, dan
metoda yang dibatasi.
Perbandingan Antara Object Oriented dengan Struktural
Object Oriented Struktural
1. Systems decomposed into collections of
data objects;
1. Systems decomposed into functions;
2. function + data in one place 2. functions and data modelled separately
3. System components more independent =>
more resilient to requirements and
maintenance changes
3. System components are more dependent
on each other => requirements and
maintenance changes more difficult
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 20 Universitas Muhammadiyah Cirebon
4. Inheritance and Polymorphisme are
possible => reuse; extension and tailoring
of software / designs is possible
4. Inheritance and polymorphisme not
possible => limited reuse possible
5. Closely mirror how humans decompose
and complex
5. System component do not map closely to
real world entities => difficult to manage
complexity
Diagram Dalam UML
Ada beberapa diagram yang digunakan pada UML yaitu :
use case diagram
conceptual Diagram
class diagram
object diagram
state chart diagram
activity diagram
sequence diagram
collaboration diagram
component diagram
deployment diagram
Relasi dalam UML
Berikut ini relasi yang biasa digunakan dalam UML
Dependency
Adalah hubungan antara 2 buah benda (things) yang mana sebuah benda berubah akan
mengakibatkan benda lainnya berubah pula
Association
Adalah hubungan antara benda struktural yang terhubung diantara objek Kesatuan obyek yang
terhubung merupakan hubungan khusus, yang menggambarkan sebuah hubungan struktural
diantara seluruh atau sebagian.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 21 Universitas Muhammadiyah Cirebon
Generalization
Generalization adalah hubungan yang menggambarkan hubungan antara class induk dan class
anak/antara super class dan sub class
Use Case Diagram
Sebuah use case menggambarkan suatu urutan interaksi antara satu atau lebih aktor dan sistem. Dalam
fase requirements, model use case mengambarkan sistem sebagai sebuah kotak hitam dan interaksi
antara aktor dan sistem dalam suatu bentuk naratif, yang terdiri dari input user dan respon-respon
sistem. Setiap use case menggambarkan perilaku sejumlah aspek sistem, tanpa mengurangi struktur
internalnya. Selama pembuatan model use case secara pararel juga harus ditetapkan obyek-obyek yang
terlibat dalam setiap use case.
Sebuah Use Case menggambarkan suatu urutan interaksi antara satu atau lebih aktor dan
sistem.
Menekankan pada “apa” yang diperbuat sistem, bukan “bagaimana”.
Model elements : Use Case dan Actor.
Use Case menggambarkan kebutuhan sistem dari sudut pandang di luar sistem.
Use Cases hanya menetapkan apa yang seharusnya dikerjakan oleh sistem, yaitu kebutuhan
fungsional sistem.
Use Cases adalah interaksi atau dialog antara sistem dan actor, termasuk pertukaran pesan
dan tindakan yang dilakukan oleh sistem.
Actor
Actor menggambarkan segala pengguna software aplikasi (user). Actor memberikan suatu gambaran
jelas tentang apa yang harus dikerjakan software aplikasi. Sebagai contoh sebuah actor dapat
memberikan input kedalam dan menerima informasi dari software aplikasi, perlu dicatat bahwa sebuah
actor berinteraksi dengan use case, tetapi tidak memiliki kontrol atas use case. Sebuah actor mungkin
seorang manusia, satu device, hardware atau sistem informasi lainnya.
Langkah pertama untuk analisa kebutuhan adalah mencari sesuatu yang berinteraksi dengan sistem
Anda.
Dalam Use Cases, sesuatu diluar sistem yang berinteraksi dengan sistem disebut actor.
Actor class digunakan untuk memodelkan dan menyatakan peran untuk “pemakai” dari sistem,
termasuk manusia dan sistem lain.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 22 Universitas Muhammadiyah Cirebon
Actor disimbolkan sebagai berikut :
Sistem Boundaries
Sistem boundaries adalah batasan sistem terhadap lingkungan luar, pada use case, sistem boundaries
digunakan untuk memisahkan antara sistem dengan actor karena hanya actor lah yang berada di luar
sistem
Pada use case sistem boundaries digambarkan dengan kotak
System
Use Case
Sebuah use case dimulai dengan masukan/input dari seorang aktor. Use case merupakan suatu
urutan lengkap kejadian-kejadian yang diajukan oleh seorang aktor, dan spesifikasi interaksi antara
aktor dengan sistem. Use case yang sederhana hanya melibatkan satu interaksi/hubungan dengan
sebuah aktor, dan use case yang lebih kompleks melibatkan beberapa interaksi dengan aktor. Use cases
yang lebih kompleks juga melibatkan lebih dari satu aktor.
Use case menjelaskan urutan kegiatan yang dilakukan actor dan sistem untuk mencapai suatu
tujuan tertentu. Walaupun menjelaskan kegiatan, namun use case hanya menjelaskan apa yang
dilakukan oleh actor dan sistem bukan bagaimana actor dan sistem melakukan kegiatan tersebut.
Untuk menggambarkannya dalam use case model biasanya digunakan association relationship
yang memiliki stereotype include, extend atau generalization relationship. Hubungan include
menggambarkan bahwa suatu use case seluruhnya meliputi fungsionalitas dari use case lainnya.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 23 Universitas Muhammadiyah Cirebon
Hubungan extend antar use case berarti bahwa satu use case merupakan tambahan fungsionalitas dari
use case yang lain jika kondisi atau syarat tertentu terpenuhi.
Use Case digambarkan sebagai berikut :
UseCase
Contoh gambar diagram use case
Relasi dalam Use Case
1. Association antara actor dan use case
a. Ujung panah pada association antara Use Case dan actor mengindikasikan siapa/apa yang
meminta interkasi dan bukannya yang mengindikasikan aliran data.
b. Sebaiknya gunakan garis tanpa panah untuk association antara Use Case dan actor.
c. Associaton antara Use Case dan actor yang menggunakan panah terbuka untuk
mengindikasikan bila actor berinteraksi secara pasif dengan sistem anda.
2. Association antar use case
a. Include
Ketika sebuah Use Case memerlukan /membutuhkan pemakaian fungsionalitas lain di
dalam sistem, maka hubungan antara Use case tersebut dapat dikatakan sebagai include
relationship. Untuk mengidentifikasi include relationship maka dalam penulisannya adalah
“<<include>>”.
Termasuk di dalam Use Case lain (required/diharuskan)
Pemanggilan Use Case oleh Use Case lain
Contonya adalah pemanggilan sebuah fungsi program
Gambarkan association <<include>> secara horizontal
Tanda panah terbuka harus terarah ke sub Use Case
Tidak boleh actor dihubungkan pada Use Case <<include>>
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 24 Universitas Muhammadiyah Cirebon
b. Extends
Extend relationship pada Use Case adalah suatu hubungan sebab akibat. Jika fungsi induk
mempunyai extend relationship maka dapat diartikan bahwa fungsi Use Case induk tersebut
dapat dilakukan jika fungsi extend dilakukan terlebih dahulu. Bentuk penulisan extend
relationship adalah “<<extend>>”.
Perluasan dari Use Case lain jika kondisi atau syarat terpenuhi
Kurangi penggunaan association Extend ini, terlalu banyak penggunaan association ini
membuat diagram sulit dipahami
Tanda panah terbuka harus terarah ke parent/base Use Case
Gambarkan association extend secara vertikal (picture extending Use Case below than
base/parent Use case)
Tidak boleh actor dihubungkan pada Use Case <<extend>>
3. Generalization antar use case
Dibuat ketika ada sebuah keadaan yang lain/perlakuan khusus
Inheriting Use Case di bawah parent/base Use Case
Activity Diagram
Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang,
bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka
berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada
beberapa eksekusi.
Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan
sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena
itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar
subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level
atas secara umum.
Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan proses
yang berjalan, sementara use case menggambarkan bagaimana aktor menggunakan sistem untuk
melakukan aktivitas.
Simbol simbol pada activity diagram hampir mirip dengan flowchart, berikut daftar simbol
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 25 Universitas Muhammadiyah Cirebon
Simbol Keterangan
Init state (inisialisasi awal)
Control Flow
State1
State (proses)
*
*
*
**
*
Transisition
Decision
Final State
Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk
pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence
diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).
Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah
yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa
yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan
output apa yang dihasilkan.
Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis
berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan
menjadi operasi/metoda dari class. Activation bar menunjukkan lamanya eksekusi sebuah proses,
biasanya diawali dengan diterimanya sebuah message.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 26 Universitas Muhammadiyah Cirebon
Berikut daftar simbol pada sequence diagram
Simbol Keterangan
Object1
Object Timeline
Aktivasi
Message
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 27 Universitas Muhammadiyah Cirebon
Modul-6
Judul : MVC (Model – View – Controller)
Materi : Arsitektur Model-View-Controller adalah sebuah pola yang terbukti membangun proyek
secara lebih efektif. Hal itu dilakukan dengan memilah komponen antara Model, View dan Controller
pada bagian – bagian dalam proyek.
Aplikasi apapun, bagian dalam kode yang sering mengalami perubahan adalah bagian user interface.
User interface adalah bagian yang paling terlihat oleh user dan bagaimana ia berinteraksi dengan
aplikasi, membuatnya menjadi titik fokus pengubahan berdasar kemudahan penggunaan.
Business-logic yang rumit pada user-interface membuat pengubahan pada user interface menjadi lebih
kompleks dan mudah terjadi kesalahan. Perubahan pada satu bagian memiliki potensi keterkaitan
dengan keseluruhan aplikasi.
Pola MVC menyediakan sebuah solosi terhadap permasalahan tersebut dengan membagi aplikasi
menjadi bagian – bagian tersendiri, Model, View dan Controller, memisahkan antar bagian tersebut dan
membuat tata interaksi diantaranya.
Diagram di atas menunjukkan 3 komponen yang terdapat dalam pola MVC dan interaksi yang terjadi.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 28 Universitas Muhammadiyah Cirebon
Model
Pola MVC memiliki layer yang disebut dengan Model yang merepresentasikan data yang digunakan
oleh aplikasi sebagaimana proses bisnis yang diasosiasikan terhadapnya. Dengan memilahnya sebagai
bagian terpisah, seperti penampungan data, persistence, serta proses manipulasi, terpisah dari bagian
lain aplikasi.
Terdapat beberapa kelebihan dalam pendekatan ini. Pertama, membuat detail dari data dan operasinya
dapat ditempatkan pada area yang ditentukan (Model) dibanding tersebar dalam keseluruhan lingkup
aplikasi. Hal ini memberikan keuntungan dalam proses maintenance aplikasi.
Kedua, dengan pemisahan total antara data dengan implementasi interface, komponen model dapat
digunakan kembali oleh aplikasi lain yang memiliki kegunaan yang hampir sama.
View
Layer ini mengandung keseluruhan detail dari implementasi user interface. Disini, komponen grafis
menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi.
Tidak ada layer lain yang berinteraksi dengan user, hanya View.
Penggunaan layer View memiliki beberapa kelebihan : Pertama, memudahkan pengabungan divisi
desain dalam development team. Divisi desain dapat berkonsentrasi pada style, look & feel, dan
sebagainya, dalam aplikasi tanpa harus memperhatikan lebih pada detail yang lain.
Dan juga, memiliki layer View yang terpisah memungkinkan ketersediaan multiple interface dalam
aplikasi. Jika inti dari aplikasi terletak pada bagian lain (dalam Model), multiple interfaces dapat
dibuat (Swing, Web, Console), secara keseluruhan memiliki tampilan yang berbeda namun
mengeksekusi komponen Model sesuai fungsionalitas yang diharapkan.
Controller
Terakhir, arsitektur MVC memiliki layer Controller. Layer ini menyediakan detail alur program dan
transisi layer, dan juga bertanggung jawab akan penampungan events yang dibuat oleh user dari View
dan melakukan update terhadap komponen Model menggunakan data yang dimasukkan oleh user.
Kelebihan dalam penggunaan layer Controller secara terpisah : Pertama, dengan menggunakan
komponen terpisah untuk menampung detail dari transisi layer, komponen view dapat didesain tanpa
harus memperhatikan bagian lain secara berlebih. Hal ini memudahkan team pengembang multiple
interface bekerja secara terpisah dari yang lain secara simultan. Interaksi antar komponen View
terabstraksi dalam Controller.
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 29 Universitas Muhammadiyah Cirebon
Kedua, dengan menggunakan layer terpisah yang melakukan update terhadap komponen Model, detail
tersebut dihapus dari layer presentasi. Layer presentasi kembali pada fungsi utamanya untuk
menampilkan data kepada user. Detail tentang bagaimana data dari user mengubah ketetapan aplikasi
disembunyikan oleh Controller. Hal ini memisahkan dengan jelas antara presentation logic dengan
business logic.
Tidak dapat disimpulkan bahwa pola MVC hadir dengan kelebihan – kelebihan tanpa ada efek
samping. Pembagian aplikasi dalam 3 bagian terpisah meningkatkan kompleksivitas. Pada aplikasi
kecil yang tidak membutuhkan loose coupling pada Model, hal ini dapat menjadi blok penghalang
dalam penggunaan pola ini. Bagaimanapun, yang terbaik adalah untuk meyakini bahwa sebuah aplikasi
umumnya dimulai dari aplikasi sederhana, dan berkembang menjadi sistem yang kompleks., sehingga
factor loose coupling harus selalu diutamakan dan diperhatikan.
Dalam java ada beberapa component swing yang menggunakan konsep mvc, diantaranya adalah
JTable, pada beberapa kasus penggunaan JTable ini terasa sulit karena kita harus belajar menggunakan
konsep MVC, tetapi jika sudah memahami konsep ini justru penggunaan JTable ini terasa lebih mudah.
Contoh : Menampilkan data Mahasiswa dalam JTable
1. Buat Domain Model
public class Mahasiswa
{
private String nim;
private String nama;
private String prodi;
public String getNama()
{
return nama;
}
public void setNama(String nama)
{
this.nama = nama;
}
public String getNim()
{
return nim;
}
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 30 Universitas Muhammadiyah Cirebon
public void setNim(String nim)
{
this.nim = nim;
}
public String getProdi()
{
return prodi;
}
public void setProdi(String prodi)
{
this.prodi = prodi;
}
}
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class tabelModelMahasiswa extends AbstractTableModel
{
public String[] colomName = {"NIM","Nama","Prodi"};
private String data[][];
public tabelModelMahasiswa(Vector v)
{
int jmlBaris = v.size();
data = new String[jmlBaris][];
for(int i = 0; i < jmlBaris; i++)
{
Mahasiswa mhs = (Mahasiswa)v.elementAt(i);
data[i] = new String[3];
data[i][0] = mhs.getNim();
data[i][1] = mhs.getNama();
data[i][2] = mhs.getProdi();
}
}
public int getRowCount()
{
return this.data.length;
}
public int getColumnCount()
{
return colomName.length;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
return data[rowIndex][columnIndex];
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 31 Universitas Muhammadiyah Cirebon
}
public String getColumnName(int columnIndex)
{
return colomName[columnIndex];
}
}
2. Buat Controller
import java.sql.*;
import java.util.Vector;
public class mahasiswaDb
{
Connection con;
Statement stmt;
ResultSet rs ;
public mahasiswaDb()
{
koneksi konek = new koneksi();
con = konek.getCon();
stmt = konek.getStmt();
}
public Vector getDataMahasiswa(String sql)
{
Vector v = new Vector();
rs = null;
try
{
rs = stmt.executeQuery(sql);
while(rs.next())
{
String nim = rs.getString("nim");
String nama = rs.getString("nama");
String prodi = rs.getString("prodi");
Mahasiswa mhs = new Mahasiswa();
mhs.setNim(nim);
mhs.setNama(nama);
mhs.setProdi(prodi);
v.addElement(mhs);
}
}
catch(SQLException e)
{
System.err.println("Error SQL : " + e.getMessage());
}
finally
{
try
Pemrograman Berorientasi Objek
didan@umc Teknik Informatika 32 Universitas Muhammadiyah Cirebon
{
if (stmt != null) stmt.close();
if (con != null) con.close();
}
catch (SQLException sqle)
{
sqle.getMessage();
}
}
return v;
}
}
3. Buat View Component
public class tampilMahasiswa
{
private tabelModelMahasiswa model;
private Container contentPane;
public void run()
{
JFrame frame = new JFrame();
mahasiswaDb mhs = new mahasiswaDb();
Vector mahas = mhs.getDataMahasiswa("SELECT * FROM mahasiswa");
model = new tabelModelMahasiswa(mahas);
JTable tabel = new JTable(model);
JScrollPane panel = new JScrollPane(tabel);
contentPane = frame.getContentPane();
contentPane.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(300, 400);
frame.setLocation(150, 50);
frame.setVisible(true);
}
public static void main(String[] args)
{
tampilMahasiswa tampil = new tampilMahasiswa();
tampil.run();
}
}