Anda di halaman 1dari 14

Bab 2 (Basic Object-Oriented Concepts)

2.1 Implementasi Class

Pada bagian ini kita akan belajar bagaimana mengimplementasikan sebuah class menjadi
sebuah object. Sebagai contoh class kita gunakan class anak sepert berikut :

public class Anak {


private string nama;
public void setNama(string newNama ){
this.nama = newNama;
}
public string getNama(){
return nama;
}
}

Class anak memiliki sebuah attribut nama dengan type string dan memilik access
modifier private, karenanya dibutuhkan sebuah public method untuk memanggil attribut private
yang dikenal dengan GETTER dan SETTER methode. Void setName(string newNama)
merupakan sebuah method untuk memberikan attribute nama sebuah nilai baru yang sudah kita
masukkan pada parameter newNama, namun method ini tidak mengembalikan nilai karena
terdapat Void di depannya. String getNama() tidak memiliki parameter namun memiliki return
berupa attribut nama. Jadi keismpulannya method GETTER diawali dengan Void tidak
memberikan return value namun SETTER diawali dengan tipe data yang ingin dikembalikan,
seperti contoh diatas kita ingin mengembalikan attribut nama dengan tipe string maka diawal kita
sebutkan tipe datanya diikuti dengan nama method dan return nama.
Dari class di atas kita akan implementasikan menjadi sebuah object dan coba memanggil
method atau fungsi dari object yang telah kita buat. Buat sebuah class Anak dengan nama
Tangkas.

Nama Object

Anaka Tangkas = new Anak();

Class Reference Instantiates a new object

Maka kita akan memiliki sebuah object dengan nama Tangkas. Setelah object dibuat kita
akan mencoba untuk mengakses method yang dimilikinya pada contoh di atas class Anak
memiliki dua method yaitu getNama() dan setNama(). Cara memanggil method dari sebuh object
yaitu <nama_object><titik = . ><nama_method>

Tangkas.setNama(Tangkas);
Untuk lebih memperjelasnya kita akan membuat beberapa object dari
class Anak dan memanggil method yang dimilikinya.
Anaka anak1 = new Anak();
Anaka anak2 = new Anak();
anak1.setNama(Thadeo);
public class Anak {
anak2.setNama(Wisnu);
private string nama;
System.out.println(anak1.getName());
private int umur;
System.out.println(anak2.getName());
Maka outputnya :
public Anak(string namaAnak) {
this.nama = namaAnak;
}
Thadeo
public void setNama(string newNama ){
Wisnu
this.nama = newNama;
2.2 Constructor
}
Constructor merupakan sebuah method yang dipanggil saat object dibuat atau untuk
public string getNama(){
menginisialisasikan nilai saat object dibuat. Dalam penulisan constructor nama method harus
return
memiliki nama yang samanama;
dengan class, kita akan membuat sebuah constructor dari class Anak
} kita buat di atas.
yang sudah
public void setUmur(string newUmur ){
public Anak(string namaAnak)
this.umur = newUmur;{
}this.nama = namaAnak;
} Kita akan tambahkan constructor di atas pada class Anak dengan beberapa tambahan.
public string getUmur(){
return umur;
}
}
\

Kemudian kita akan coba membuat sebuah object dari class Anak yang sudah
dimodifikasi
public classdengan
Anak {menggunakan constructor.

private
Anak string=
anak1 nama;
new Anak("Thadeo");
private int umur;
Jadi dapat dilihat di pada kode di atas kita membuat object dengan menginisialisasikan
public Anak(){} // Constructor jika tak ada parameter
nama Thadeo secara langsung pada saat pembuatan object. Sekarang coba lihat pada class Anak
public Anak(string namaAnak) {
diatas juga memiliki attribut umur dan kita juga ingin memberikan nilai umur pada saat
this.nama = namaAnak;
} //Constroctur
pembuatan dengan
object? Caranya satumembuat
adalah paramtersebuah constructor tambahan dengan parameter

public Anak(string
yang di inginkan, namaAnak,
pada sebuah intmemiliki
class dapat newUmur) { dari satu constructor sesui kebutuhan
lebih
this.nama = namaAnak;
hal ini dikenal dengan polymorphism yang akan kita bahas pada bab selanjutnya. Kita akan
this.umur = newUmur;
modifikasi kembali dan menambahkan dua lagi constructor.
} //Constroctur dengan dua paramter

public void setNama(string newNama ){

this.nama = newNama;}

public string getNama(){

return nama;}

public void setUmur(string newUmur ){

this.umur = newUmur;}

public string getUmur(){

return umur;}

}
Contoh pengguna constructor sebagai berikut
Anaka anak1 = new Anak();//Constructor tanpa parameter
Anaka anak2 = new Anak(Thadeo); //Constructor dengan 1 parameter
Anaka anak3 = new Anak(Thadeo,21); //Constructor dengan 2 parameter

2.3 Static Member


Static member merupakan attribut dan method yang dimiliki satu instance dan dimiliki
oleh semua class dan pemanggilannya tanpa harus membuat object terlebih dahulu. Kita
analogikan pada class Anak, pada class ini kita ingin menambahkan satu attribut yang dimiliki
untuk setiap object sama contohnya umur_Imunisasi. Nantinya setiap object yang dibuat akan
memiliki umur_imunisasi yang sama walaupun nanti di ubah, sema object akan tetap memiliki
umurImunisasi yang sama. Jadi kesimpulannya static member yaitu satu nilai atau value untuk
semua object. Menggunakan static member dapat dilakukan dengan sintaks
<class_reference>.<member_name>.
Kita akan tambahkan static member pada class Anak dengan type data int dan nama
umur_imunisais.

private static int umurImunisasi;

Dengan static member dan access modifier private kita perlu membuat sebuah setter dan
getter method untuk memanggil dan memberikan nilai pada attribut umur_Imunisasi.

public static void setUmurImunisasi(int newUmurImunisasi) {


this.umurImunisasi = newUmurImunisasi;
}
public static int UmurImunisasi () {
return umurImunisasi;
}
Contoh penggunaan static method yang ditambahkan pada class Anak.
Anak anak1 = new Anak("Wisnu");
anak1.setUmurImunisasi(6);
Karena static method yang kita buat bersifat private dan untuk pemberian nilai harus
melalui object dan jika ingin secara langsung mengubah nilai static member kita bisa ganti
private mejadi public papda class dan jadinya akan seperti berikut
Public static int umurImunisasi;
Dan cara pemanggilannya menjadi:
Anak.umurImunisasi = 6;

2.4 Program Dengan Multiple Class


Memprogram dengan multiple class atau lebihb dari satu class artinya menggunakan
sebuah class pada class yang lain. Misalnya class A kita panggil atau gunakan pada implementasi
class B. Kita akan menggunakan kembali class Anak yang sudah dibuat sebelumnya dan
digunakan pada class OrangTua yang selanjutnya akan kita buat. Berikut contoh sederhana
penggunaan mutiple class.
Class Anak :

public class Anak {

public class
private
OrangTua
string nama;
{

private string namaOrtu;


int umur;
2.5 Asdas
private
public Anak(){}
Anak anak; // Penggunaan Multiple class
2.6 Dasdas
2.7 public OrangTua(){}
Anak(string namaAnak) {this.nama = namaAnak; }

public OrangTua
Anak(string
(string
namaAnak,
newNama,
int newUmur)
Anak newAnak)
{ {
this.namaOrtu = newNama;
this.nama = namaAnak;

this.anak
this.umur =
= newAnak;
newUmur;
}

public void setNamaOrtu(string


setNama(string newNama
newNama
){this.nama
){ = newNama;}

this.namaOrtu
public string = newNama;}
getNama(){ return nama;}

public string
void setUmur(string
getNamaOrtu(){
newUmur ){this.umur = newUmur;}

Class OrangTua; returngetUmur(){return


public string namaOrtu;} umur;}

} public void setAnak(Anak newAnak){

this.anak = newAnak;}

public Anak getAnak(){

return anak;}

}
Pada class OrangTua bisa kita liat penggunaan class Anak pada class OrangTua dan juga
dimasukkan pada parameter constructor sebagai inisialisasi saat pembuatan object class
OrangTua. Berikut contoh penggunaan class diatas dalam pembuatan object.

Anak anak1 = new Anak(Tangkas,20);


OrangTua orangTua1 = new OrangTua(Ari Satria, anak1);

Pada sintak di atas bisa dilihat object anak1 di parsing pada constructor object orangTua1
sehingga menginisialisasikan nilai attribut anak pada orang tua dengan object anak1.

2.5 Interface

Interface merupakan sebuah class yang berisi deklarasi method abstract yang tidak ditulis
secara utuh atau lengkap. Deklarasi method pada interface mirip dengan method pada class
abstract. Variable pada interface bersifat static dan final sedangkan method bersifat public dan
abstract. Interface dapat digunalan dengan keyword Implements setelah nama class yang artinya
class yang mengimplement sebuah interface harus melengkapi seluruh method yang ada pada
interface tersebut. Contohnya disini kita akan membuat sebuah interface dengan nama
DaftarAnak dan memiliki beberapa method diantaranta tambah(), hapus(), dan tampil().

public interface DaftarAnak {


public void tambah(Anak newAnak);
public void hapus(string name);
public void tampil();
}

Setelah kita membuat sebuah interface dengan nama Daftar Anak, kita akan
menggunakan interface tersebut pada class kita sehinga class kita harus menggunakan seluruh
method yang sudah di deklarasikan pada interface, kita kan membuat sebeuah class dengan nama
AnakSD2 dengan implementasi interface DaftarAnak sebagai berikut:

public class AnakSD2 implements DaftarAnak{


public void tambah(Anak newAnak){ sintak tambah }
public void hapus(string name){ sintak hapus }
public void tampil(){ sintak tampil }

//metod yang lainnya


}

Seperti sintak di atas seluruh method pada interface harus di implementasikan atau
dilengkapi jika tidak program akan mengembalikan error. Sebuah class dapae mengimplementasi
lebih dari satu interface contohnya :

public class AnakSD2 implements DaftarAnak, DaftarOrangTua{}

2.6 Abstract Class


Class abstract digunakan untuk mendefinisikan sebuah class yang hanya mendeklarasikan
sebagian atau belum lengkap tanpa mengimplementasikan secara detail fungsi-fungsi dari kelas
abstrak yang ada. Penggunaan class abstract menggunakan keyword extends seperti class-class
yang lainnya berbeda dengan interface yang menggunakan keyword implements. Perintah
abstract diletakkan sebelum nama Class dan nama Method. Semua abstract method yang ada
dalam abstract class wajib diimplementasi/dilengkapi oleh semua class turunan (sub class) yang
bukan abstract. Berikut contoh pembuatan class abstract:

public abstract class DaftarAnak {


public abstract void tambah();
public abstract void hapus();
public abstract void tampil();
}
Selanjutnya kita buat implementasi atau cara penggunaan abstract class DaftarAnak.

public class AnakSD2 extends DaftarAnak{


public void tambah(Anak newAnak){ sintak tambah }
public void hapus(string name){ sintak hapus }
public void tampil(){ sintak tampil }

//metod yang lainnya


}

Class AnakSD2 merupakan turunan yang mengextends method abstract dari class abstract
DaftarAnaka. Class abstract tidak bisa dibuat menjadi sebuah object, hanya class yang semua
methodnya sudah diimplementasikan dan dilengkapi dapat di buat sebuah object. Berikut contoh
penggunaannya:

public class Test {

public static void main(String[] args) {

AnakSD2 daftar = new AnakSD2();

daftar.tambah();

daftar.tampil();

}
2.7 Membandingkan Object
Membandingkan 2 buah object biasanya digunakan equal method mebandingkan dua
buah variabel akan lebih mudah, namun jika membandingkan dua buah object akan menjadi
sedikit lebih rumit. Jadi untuk membandingkan dua buah object kita harus membuat sebuah
special method, sebagai contoh kita akan membandingkan dua buah object dari class Anak
sebagai berikut :

public boolean equals (Object anObject) {

Anak anak = (Anak) anObject;


return anak.nama.equals(nama) && anak.umur.equals(umur);
}
Method diatas di tambahkan di dalam class Anak, setelah ditambahkan berikut contoh
penggunaannya.

Anak anak1 = new Anak("Angga",12);


Anak anak2 = new Anak("Angga",12);

if (anak1.equals(anak2)) {
System.out.println("anak1 sama dengan anak2");
} else {
System.out.println("anak1 berbeda dengan anak2");
}

2.8 Notation for Describing Object-Oriented Systems


Mendokumentasikan sebuah sistem atau program sangatlah penting. Dalam kegiatan
dokumentasi Object Oriented System biasanya digunakan UML atau Unified Modeling
Language. UML (Unified Modelling Language) sendiri adalah sebuah bahasa yang menjadi
standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistematau
program. UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan
sekumpulan bentuk khusus untuk menggambarkan berbagai diagram program. UML diagram
dapat dibagi menjadi 3 bagian yaitu

1 Structure Diagram menunjukkan arsitektur statis dari sistem terlepas dari waktu.
2 Behaviour Diagram yang menggambarkan perilaku sistem atau proses bisnis.
3 Interaction Diagram yang menunjukkan metode, interaksi dan kegiatan dari obyek.
Strukture diagram terbagi menjadi beberapa bagian diantaranya :
1 Class diagram
Digaram yang memperlihatkan class, attribut, method dan relasi tiap class
2 Composite strukture diagram
Diagram yang menunjukan struktur internal classifier, termasuk poin interaksinya ke
bagian lain dari sistem.
3 Component diagram
Diagram ini memperlihatkan detail dari sebuah komponen.
4 Deployment diagram
Diagram yang menggambarkan penugasan executable file pada komponen komputer.
5 Object diagram
Object diagram merupakan sebuah gambaran tentang objek-objek dalam sebuah sistem
pada suatu waktu.
6 Package diagram
Diagram yang mengelompokkan class kedalam sebuah paket dan paket dapat dimasukkan
ke paket yang berbeda.

Gambar 1. Tipe Structure Diagram

Behaviour diagram terbagi menjadi beberapa bagian diantaranya:


1. Activity diagram
Diagram ini mirip dengan flowchart yang menyediakan analis dengan kemampuan untuk
memodelkan proses dalam suatu sistem informasi
2. Use case diagram
Diagram ini bekerja dengan cara mendeskripsikan tipe interaksi antara user sebuah sistem
dengan sistemnya sendiri melalui sebuah alur penggunaan sistem.
3. State machine diagram
Diagram ini digunakan untuk memodelkan perilaku dinamis satu kelas atau objek selama
masa hidupnya.

Gambar 2. Tipe Behaviour Diagram

Interaction diagram terbagi menjadi beberapa bagian diantaranya:


1. Sequence diagram
Sequence diagram menjelaskan interaksi objek yang disusun berdasarkan urutan waktu.
2. Timing diagram
Timing Diagram adalah bentuk lain dari interaction diagram, dimana focus utamanya
lebih ke waktu.
3. Communication diagram
Communication diagram menggambarkan interaksi antar objek seperti sequence diagram,
tetapi lebih menekankan pada peran masing-masing objek
4. Interaction overview diagram
Diagram yange menampilkan control yang sangat tinggi dan menampilkan interaksi antar
sequance diagram dan communication diagram.
Gambar 3. Tipe Interactio diagram

2.8.1. Class diagram

Class

diagram biasanya mengandung attribut-atribut, method, access modifier


dan hubungan tiap class. Sebagai contoh kita membangun sebuah aplikasi penilaian dosen, class
diagram akan berisi class dosen, fakultas, pangkat dan dan relasi atau hubungan tiap classnya
jika ada. Diagram berfungsi untuk menjelaskan tipe dari object sistem dan hubungannya dengan
object yang lain. Simbol menandakan private access, + menandakan public access dan #
menandakan protected access. Berikut contoh class diagram :

Gambar 4. Class Diagram

2.8.2. Use Case Diagram


Usecase diagram adalah diagram usecase yang digunakan untuk menggambarkan secara
ringkas siapa yang menggunakan sistem dan apa saja yang bisa dilakukannya. Diagram
usecase tidak menjelaskan secara detail tentang penggunaan usecase, namun hanya memberi
gambaran singkat hubungan antara usecase, aktor, dan sistem.

Gambar 5. Contoh use case mesin ATM

2.8.3. Sequence Diagram


Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan
mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan
serangkaian pesan yang dipertukarkan oleh obyek obyek yang melakukan suatu tugas atau
aksi tertentu
Gambar 6. Contoh sequence diagram

Anda mungkin juga menyukai