LAPORAN RESMI
PRAKTIKUM PEMROGRAMAN BERORIENTASI
OBJEK
MODUL III
“ABTRAKSI PEMROGRAMAN BERORIENTASI
OBYEK”
Disusun Oleh :
TGL. PRAKTIKUM
NAMA
NRP
KELAS
DOSEN
: 06 November 2014
: NABILA SANI FADDIA
: 11.04.111.00045
:A
: Yonathan Fery H. S.T., M.IT.,
Disetujui :......./........../............../Bangkalan
ASISTEN DOSEN
(Doffy Oktaviano Mukit)
12.04.1.1.1.00039
LABORATORIUM COMMON COMPUTING
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2014
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
Pemrograman Berorientasi Obyek merupakan paradigma pemrograman yang
berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini
dibungkus dalam kelas-kelas atau objek-objek. Model data berorientasi objek
dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah
program, dan digunakan luas dalam teknik piranti lunak skala besar. Konsep
dasar dari Pemrograman Berorientasi Objek.
1.2 TUJUAN PRAKTIKUM
1. Mahasiswa dapat memahami Karakteristik Abstraksi PBO
2. Mahasiswa dapat memahami Konsep Inheritance PBO
3. Mahasiswa dapat memahami Konsep Polymorfisme PBO
BAB II
DASAR TEORI
2.1 Abstraksi PBO
Abstraksi, merupakan pengenalan secara umum, ringkasan atau high
level terhadap sebuah obyek, tanpa memerlukan pengetahuan secara
detail. Contoh obyek yang bersifat abstrak : Hewan mengabstraksi
beragam jenis hewan seperti ayam, anjing, kucing, dll. Sehingga kita
bisa menyebut ketiga obyek tersebut adalah hewan, dikarenakan
memiliki kelakuan sebagai hewan, seperti: bisa berjalan, bisa berbunyi.
Ataupun kita bisa menyebut Mobil dimana ada beragam jenis mobil
Sedan, Truk, Bus, dimana ketiga obyek tersebut adalah mobil
dikarenakan mempunyai mesin, bisa berjalan, bisa mengangkut orang
atau barang, dll.
Dalam pemodelan UML Class diagram abstraksi obyek dapat digambarkan
sebagai berikut:
Dari model Class diagram diatas dapat diuraikan Car sebagai Superclass
memiliki berbagai atrbut yang dapat diwariskan kepada obyek Subclass
berbagai jenis Car seperti halnya mobil Manual dan Matic. Selain
mewarisi atribut, mobil Manual dan Matic harus memiliki fungsional
dasar yang harus ada untuk dikatakan sebagai Car yaitu bisa start, stop,
accelerate dan breakdown. Namun dikarenakan tiap obyek turunan Subclass
memiliki ciri dan kerja yang spesifik dan berbeda antara satu dengan
yang lainnya maka kedua obyek Manual dan Car bisa menentukan
bagaimana cara kerjanya masing-masing.
Karena itu dalam konsep OOP, karakteristik abstraksi obyek didukung
melalui penerapan konsep utama OOP yaitu inheritance dan
polimorfisme. Melalui inheritance digunakan untuk mewariskan berbagai
atribut dan fungsional dasar, sedangkan melalui polimorfisme digunakan
untuk dapat melakukan modifikasi dan pengembangan dari fungsional
yang sudah ditetapkan.
Untuk realisasi dari abstraksi obyek sendiri, dapat digunakan dua metode
yaitu:
Abstrak
Interface
Obyek abstract terdiri atas methode abstract sebagai jalur pengaksesan
yang akan diimplementasikan oleh berbagai obyek turunannya, selain itu
obyek abstract dapat dibekali dengan beragam konten properti atribut dan
methode yang dapat diwariskan, dikembangkan dan dimodifikasi oleh obyek
turunannya. Dengan konsep tersebut obyek abstract didukung secara penuh
Inheritance dan Polymorfisme obyek. Berikut aturan dari obyek Abstract:
1. Dapat memiliki keseluruhan property dan mewariskannya kepada
obyek turunannya
2. Abstract methode merupakan kontrak yang harus dipenuhi oleh obyek
turunan
3. Tidak dapat dibangun instance dari Superclass, sehingga Superclass
hanya sebagai prototype. Implementasi melalui instance hanya bisa
dilakukan pada subclass.
4. Obyek turunan subclass ditujukan sebagai obyek implementator untuk
melakukan perubahan cara kerja dan pengembangan obyek.
Sistematika penulisan kelas Superclass abstract :
< modifier> abstract class < Class_name>
Sedangkan obyek turunan subclass :
< modifier> class < Class_name> extends < Superclass>
2.2 Inheritance
Inheritance merupakan pewarisan atribut dan method pada sebuah class yang
diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan
mewarisi state (variabel-variabel) dan behaviour (method-method) dari
superclass-nya. Subclass kemudian dapat menambahkan state dan
behaviour baru yang spesifik dan dapat pula memodifikasi (override)
state dan behaviour yang diturunkan oleh superclass-nya.
Keuntungan dari inheritance adalah :
1. Subclass mewarisi semua property yang terdapat didalam Superclass
2. Subclass menyediakan state/behaviour yang spesifik yang
membedakannya dengan superclass, hal ini akan memungkinkan
programmer Java untuk menggunakan ulang source code dari
superclass yang telah ada.
3. Pewarisan yang mengikat sesuai kontrak menggunakan abstract class
Keywords inheritance yang perlu diperhatikan :
Extends : Keyword ini harus kita tambahkan pada definisi class
yang menjadi subclass yang menunjukkan sebagai obyek pewaris.
Super : Keyword ini digunakan oleh subclass untuk mengakses
properti yang telah disediakan oleh superclass.
Sistematika penulisan kelas Superclass abstract :
<modifier> class <Class_name> extends <Superclass>
2.3 Polymorfisme
Polymorfisme merupakan konsep OOP yang ditujukan untuk melakukan
perubahan pada methode implementator di subclass terhadap methode
yang telah diwariskan dari superclass.
Melalui konsep ini maka polymorfisme juga terkait dengan inheritance,
dimana pengembangan obyek dapat dilakukan dengan dinamis dengan
tetap dapat menggunakan ulang properti yang telah diwariskan. Kata kunci
dari polymorfisme adalah @override, yang menggunakan notifikasi @
sebagai penanda bahwa methode yang dituliskan setelahnya dalah sebuah
methode warisan yang dilakukan perubahan fungsi kerjanya.
Sistematika penulisan kelas Superclass abstract :
@override
< modifier> < methode_name>
2.4 Implementas abstrak class
Berikut contoh penerapan abstract class sebagai superclass, class Car:
Sedangkan subclass turunan yang menerapkan inheritance dan polymorfisme
class Manual :
class matic :
Bentuk yang lain dari abstraksi adalah Interface, dimana Interface
merupakan abstraksi dengan bentuk yang lebih sederhana. Berikut ketentuan
Interface:
1. Interface hanya digunakan sebagai pengantar atau penghubung sebuah
obyek, sehingga bukan obyek itu sendiri. Karena itu interface tidak
memiliki propertilengkap namun hanya kontrak methode.
2. Interface diimplementasikan melalui berbagai kelas implementator,
yang terikat harus memiliki kontrak methode sebagaimana telah
ditentukan interface.
Contoh Interface:
Sedangkan kelas implementator:
BAB III
TUGAS PENDAHULUAN
3.1 Pertanyaan
1. Apa yang dimaksud dengan karakteristik abstraksi obyek…?
2. Apa yang dimaksud dengan Interface…?
3. Apa yang dimaksud dengan inheritance…?
4. Apa yang dimaksud dengan polymorfisme…?
3.2 Jawab
1. Karakteristik Abstraksi obyek : kareketristik yang digunakan untuk
mewariskan berbagai atribut dan fungsional dasar, melalui
polimorfisme yang digunakan untuk dapat melakukan modifikasi dan
pengembangan dari fungsional yang sudah ditetapkan.
2. Interface adalah jenis khusus dari blok yang hanya berisi method
signature(atau constant). Interface mendefinisikan sebuah (signature) dari
sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah
cara standar dan umum dalam menetapkan sifat-sifat dari class-class.
3. Inheritance (pewarisan) adalah keuntungan besar dalam pemrograman
berbasis object karena suatu sifat atau method didefinisikan dalam
superclass, sifat ini secara otomatis diwariskan dari semua subclasses.
Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat
digunakan oleh semua subclass. Subclass hanya perlu
mengimplementasikan perbedaannya sendiri dan induknya.
4. Polimorfisme adalah proses kebanyakrupaan, artinya kita dapat
mengimplementasikan sesuatu hal yang berbeda melalui satu cara yang
sama. untuk mengerti hal ini saya akan berikan ilustrasi nya : misalnya
terdapat 5 orang penyanyi(didalam program dianggap sebagai 5 buah
objek), kemudian kelimanya kita perintahkan untuk bernyanyi, maka hasil
atau implementasinya tentu akan berbeda sesuai dengan karakteristik suara
dari masing-masing penyanyi tersebut. Dalam OOP, hal ini disebut dengan
istilah polimorfisme.
BAB IV
IMPLEMENTASI
4.1 Pertanyaan
1. Dari ilustrasi berikut buatlah konsep abstraksinya:
Dalam kehidupan kampus terdapat obyek-obyek Civitas yang berinteraksi
yaitu diantaranya: Dosen, Mahasiswa dan Staff.
Civitas memiliki atribut umum:
Nama
Nid
Prodi
Sedangkan mereka memiliki fungsi dan perilaku yang berbeda:
Pekerjaan
Jam
Class diagram :
2. Jelaskan bagaimana proses penggunaan dari abstraksi obyek dari program
yang anda kembangkan !
4.2 Jawab
1. Class Civitas
public abstract class Civitas {
String nama;
String nid;
String prodi;
public Civitas(String nama, String nid, String prodi) {
this.nama = nama;
this.nid = nid;
this.prodi = prodi;
}
public String getNama() {
return nama;
}
public String getNid() {
return nid;
}
public String getProdi() {
return prodi;
}
public abstract void masukKerja();
public abstract void pekerjaan();
}
Class Dosen
public class Dosen extends Civitas {
String bidangMinat;
String riset;
public Dosen(String bidangMinat, String riset, String nama, String nid, String prodi) {
super(nama, nid, prodi);
this.bidangMinat = bidangMinat;
this.riset = riset;
}
public String getBidangMinat() {
return bidangMinat;
}
public String getRiset() {
return riset;
}
@Override
public void masukKerja() {
System.out.println("Pukul 10.00 WIB");
}
@Override
public void pekerjaan() {
System.out.println("Dosen");
}
}
Class Mahasiswa
public class Mahasiswa extends Civitas {
String bidangMinat;
public Mahasiswa(String bidangMinat, String nama, String nid, String prodi) {
super(nama, nid, prodi);
this.bidangMinat = bidangMinat;
}
public String getBidangMinat() {
return bidangMinat;
}
@Override
public void masukKerja() {
System.out.println("Pukul 08.00 WIB");
}
@Override
public void pekerjaan() {
System.out.println("Mahasiswa");
}
}
Class Staff
public class Staff extends Civitas {
String fungsional;
public Staff(String fungsional, String nama, String nid, String prodi) {
super(nama, nid, prodi);
this.fungsional = fungsional;
}
public String getFungsional() {
return fungsional;
}
@Override
public void masukKerja() {
System.out.println("Pukul 07.30 WIB");
}
@Override
public void pekerjaan() {
System.out.println("Staff ");
}
}
Class Main
public class Main {
public static void main(String[] args) {
System.out.println("==========Dosen==========");
Dosen ti = new Dosen("Sistem Informasi", "Riset Ilmiah",
"Tika Setyawati", "10036725860023", "Teknik Informatika");
System.out.println("Nama : " + ti.getNama() + "\nNID : " + ti.getNid()
+ "\nProdi : " + ti.getProdi() + "\nBidang Minat : "
+ ti.getBidangMinat() + "\nRiset : " + ti.getRiset());
System.out.print("Masuk kerja : ");
ti.masukKerja();
System.out.print("Pekerjaan : ");
ti.pekerjaan();
System.out.println("\n========Mahasiswa========");
Mahasiswa baru = new Mahasiswa("Digital Multimedia", "Santy Sartika",
"130411100021", "Teknik Informatika");
System.out.println("Nama : " + baru.getNama() + "\nNID : " + baru.getNid()
+ "\nProdi : " + baru.getProdi() + "\nBidang Minat : "
+ baru.getBidangMinat());
System.out.print("Masuk kuliah : ");
baru.masukKerja();
System.out.print("Pekerjaan : ");
baru.pekerjaan();
System.out.println("\n==========Staff==========");
Staff utm = new Staff("Administrasi", "Andi Sulton",
"1009673458002", "Teknik Informatika");
System.out.println("Nama : " + utm.getNama() + "\nNID : " + utm.getNid()
+ "\nProdi : " + utm.getProdi() + "\nFungsional : "
+ utm.getFungsional());
System.out.print("Masuk kerja : ");
utm.masukKerja();
System.out.print("Pekerjaan : ");
utm.pekerjaan();
}
}
Running
2. Pada program abstraksi tersebut, ada 5 kelas yang dibuat antara lain :
Civitas (Sebagai superclass), Dosen, Mahasiswa, Staff (Sebagai Subclass)
dan main untuk pengaksesan beberapa class tersebut.
a. Class Civitas
Pada class Civitas, memiliki kata kunci abstract. Hal ini
dimaksudkan agar semua yang ada dalam kelas Civitas dapat
diturunkan ke class turunannya.
Civitas memiliki atribut umum yaitu : nama, nid dan prodi.
Constructor digunakan untuk menginisialisasi nilai awal pada
atribut-atribut yang dimiliki oleh suatu objek.
Getter pada kelas ini digunakan untuk mengambil nilai
kedalam atribut yang digunakan untuk kelas turunannya.
public abstract void masukKerja();
public abstract void pekerjaan();
Method abstact yang digunakan untuk membedakan antara
objek yang satu dengan objek yang lain. Method tersebut diisi
pada kelas turunannya dan akan diisi sesuai dengan fungsi dan
perilakunya sendiri.
b. Class Dosen
public class Dosen extends Civitas {
Terdapat kata kunci Extend untuk menjelaskan bahwa class
dosen adalah class turunan dari Class Civitas.
Memiliki atribut bidang minat dan riset
Costructor pada dosen fungsinya juga sama seperti pada class
Civitas. super(nama, nid, prodi);
kata kunci super
tersebut digunakan untuk menunjukkan bahwa Class Dosen
juga memiliki atribut yang sama seperti Civitas.
Getter digunakan untuk mengambil nilai.
@Override
public void masukKerja() {
System.out.println("Pukul 10.00 WIB");
}
@Override
public void pekerjaan() {
System.out.println("Dosen");
}
Pada kelas ini mempunyai method yang diturunkan dari kelas Civitas
yang ditandai dengan “@Override” namun memiliki perilaku yang
berbeda-beda jika dibandingkan dengan class turunan yang lain.
Superclass memiliki beberapa atribut dan method yang nantinya akan
diwariskan kepada subclassnya. Untuk dapat mewariskan sifat-sifatnya,
maka pada class Civitas ditulis Abstract.
Pada subclass, juga memliki beberapa atribut dan method yang
membedakannya dengan subclass yang lain. Pada program tersebut,
method yang dituliskan antara class Dosen, Mahasiswa dan Staff tersebut
memiliki perbedaan satu sama lain.
Kemudian pada Class Main, agar class-class yang dibuat sebelumnya
beserta method dan
atributnya
dapat
diakses, maka dilakukan
pemanggilan dan beberapa modifikasi pada tampilan. Sehingga tampilan
atau outputnya seperti gambar dibawah ini.
BAB V
PENUTUP
5.1 Kesimpulan
Sebelum menulis class Anda, pertama pertimbangkan dimana Anda akan
menggunakan class dan bagaimana class tersebut akan digunakan.
Pertimbangkan pula nama yang tepat dan tuliskan seluruh informasi atau
properti yang ingin Anda isi pada class. Jangan sampai terlupa untuk
menuliskan secara urut method yang akan Anda gunakan dalam class.
5.2 Saran
Pada praktikum kali ini saya rasa sudah cukup baik. Namun,ada beberapa hal
yang perlu diperhatikan,diantaranya yaitu cara menjelaskan atau
penyampaian materinya masih terlalu cepat.Dan penjelasan dari pemateri
(asdos) kurang terperinci.