You are on page 1of 32

Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 1


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 2


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 3


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 4


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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 : Saat instance diciptakan
1. private – hanya metode hingga tidak ada lagi
dalam class yang dapatm referensi terhadap
mengakses instance.
2. public – sembarang class
dapat mengakses.
3. friendly – kelas atau
sembarang class dalam paket
4. protected – sembarang
subclass dari class dapat
mengakses
Variabel class Tunduk terhadap lingkup yang sama Saat kelas dimuat hingga
dengan variable instance tidak ada lagi referensi
terhadap class tersebut.
Variabel lokal Kode didalam blok yang sama Saat kode blok masih
aktif.

Access Specifier untuk method :

Access Lingkup pengaksesan Pemakaian


Specifier
Public Metode dapat diakses sembarang Antarmuka eksternal class
class anda
Private Metode dapat diakses oleh metode Metode untuk pemakaian
dalam class yang sama internal class (tidak
berhubungan dengan
pamakai class)

didan@umc Teknik Informatika 5


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

Tidak secara Metode dapat diakses oleh metode Metode yang anda
eksplicit didalam class atau metode dalam inginkan dapat diakses
disebutkan class lain yang berada pada paket oleh kelas yang berkaitan
(friendly) yang sama.
Protected Metode dapat diakses oleh metode Metode yang ingin diakses
dalam subclass dari class tersebut 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


Nomor Plat E 1234 GB E 4569 GH
Variabel Warna Hitam Merah
Instance Pabrikan Yamaha Honda

didan@umc Teknik Informatika 6


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

Kecepatan 40 km/ jam 50 km/jam


Method Akslelerasi
Method Method Rem
Instance 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

didan@umc Teknik Informatika 7


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

{
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;
}
}

didan@umc Teknik Informatika 8


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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("Joni@yahoo.com");
mhs1.setAlamat("Cirebon");

mhs2.setNim("00123457");
mhs2.setAlamat("Kutaraja");
mhs2.setEmail("ayu@ayu.com");
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;
}

didan@umc Teknik Informatika 9


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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());
}
}

didan@umc Teknik Informatika 10


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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;
}

didan@umc Teknik Informatika 11


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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)));
}
}

didan@umc Teknik Informatika 12


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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("Joni@yahoo.com");
mhs1.setAlamat("Cirebon");

mhs2.setNim("00123457");
mhs2.setAlamat("Kutaraja");
mhs2.setEmail("ayu@ayu.com");
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);
}
}

didan@umc Teknik Informatika 13


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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()
{

didan@umc Teknik Informatika 14


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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;

didan@umc Teknik Informatika 15


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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)


{

didan@umc Teknik Informatika 16


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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();
}
}

didan@umc Teknik Informatika 17


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 18


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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 1. Systems decomposed into functions;
data objects;
2. function + data in one place 2. functions and data modelled separately
3. System components more independent => 3. System components are more dependent
more resilient to requirements and on each other => requirements and
maintenance changes maintenance changes more difficult

didan@umc Teknik Informatika 19


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

4. Inheritance and Polymorphisme are 4. Inheritance and polymorphisme not


possible => reuse; extension and tailoring possible => limited reuse possible
of software / designs is possible
5. Closely mirror how humans decompose 5. System component do not map closely to
and complex 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.

didan@umc Teknik Informatika 20


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 21


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 22


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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>>

didan@umc Teknik Informatika 23


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 24


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 25


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

Berikut daftar simbol pada sequence diagram

Simbol Keterangan

Object Timeline

Object1

Aktivasi

Message

didan@umc Teknik Informatika 26


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 27


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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.

didan@umc Teknik Informatika 28


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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;
}

didan@umc Teknik Informatika 29


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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];

didan@umc Teknik Informatika 30


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

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

didan@umc Teknik Informatika 31


Universitas Muhammadiyah Cirebon
Pemrograman Berorientasi Objek

{
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();
}
}

didan@umc Teknik Informatika 32


Universitas Muhammadiyah Cirebon

You might also like