0% menganggap dokumen ini bermanfaat (0 suara)
102 tayangan13 halaman

Pertemuan 4 OOP Class Object

Modul ini membahas tentang konsep dasar pemrograman berorientasi objek (OOP) seperti class, object, method, dan constructor. Modul ini juga membandingkan OOP dengan pemrograman prosedural dan menjelaskan karakteristik OOP seperti abstraksi, enkapsulasi, pewarisan, dan polymorphism."

Diunggah oleh

Abu Shofa Bukkar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
102 tayangan13 halaman

Pertemuan 4 OOP Class Object

Modul ini membahas tentang konsep dasar pemrograman berorientasi objek (OOP) seperti class, object, method, dan constructor. Modul ini juga membandingkan OOP dengan pemrograman prosedural dan menjelaskan karakteristik OOP seperti abstraksi, enkapsulasi, pewarisan, dan polymorphism."

Diunggah oleh

Abu Shofa Bukkar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 13

Modul 2

Object Oriented Programming (OOP) I

Tujuan:
Apa itu OOP?
1. Mengerti konsep dasarnya. Merupakan teknik membuat suatu program
2. Bisa membandingkan pemrograman berdasarkan objek dan apa yang bisa dilakukan
objek tersebut.
berorientasi objek dengan prosedural.

3. Ngerti dan bisa implementasiin Class, Object-oriented program terdiri dari objek-objek yang
Object, Method, dan Constructor berinteraksi satu sama lain untuk menyelesaikan
sebuah tugas.
pada program sederhana.

Kenapa menggunakan OOP?


OOP Pemrograman prosedural
Kode-kode di-breakdown agar lebih mengatur program dalam barisan-barisan linier
mudah di-manage. Breakdown yang bekerja dari atas ke bawah. Kumpulan
berdasarkan objek-objek yang ada tahapan yang dijalankan setelah yang lain
pada program tersebut. berjalan.
Dianjurkan diimplementasikan untuk Baik untuk program kecil yang berisi sedikit code.
program dengan berbagai ukuran
karena lebih mudah untuk men- Tidak dianjurkan diimplementasikan pada
debug. program berukuran besar, karena susah untk di-
manage dan di-debug.

Apakah OOP punya karakteristik?


Abstraksi Ciri-ciri (atribut): punya
tangan, berat, tinggi, dll.. (kata
Menemukan hal-hal yang penting pada suatu
objek dan mengabaikan hal-hal yang sifatnya benda, atau kata sifat)
insidental.

Tentukan apa ciri-ciri (atribut) objek.


Fungsi (method) : makan,
Tentukan apa yang bisa dilakukan objek.
minum, berjalan, dll. (kata
kerja)

Contoh abstraksi pada manusia

18 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
Enkapsulasi

Pembungkusan data bersama method yang


dimiliki oleh objek sehingga rincian-rincian
implementasi internal suatu objek tidak dapat
dilihat dari pemakai/objek lain yang tidak
Pedal rem tidak bisa digunakan untuk
berhak.
mengakses system transmisi
Enkapsulasi ini melindungi proses dari
interferensi atau penyalahgunaan dari luar System transmisi mobil yang
sistem. menyembunyikan bagaimana
cara dia bekerja mengatur
Tongkat transmisi merupakan
percepatan. interface untuk mengatur
Fungsi:
system transmisi. Menaikkan
Modularitas percepatan, dsb.
Modularitas (modularity) berarti objek dapat
dikelola secara independen. Karena kode Data Hiding (Penyembunyian Data)
sumber bagian internal objek dikelola secara Mengacu pada perlindungan data
terpisah dari antarmuka, maka kita bebas internal objek. Objek disusun dari
melakukan modifikasi yang tidak menyebabkan antarmuka public dan bagian private
masalah pada bagian-bagian lain. Manfaat ini yang merupakan kombinasi data dan
mempermudah mendistribusikan objek-objek di method internal. Manfaat utamanya
sistem. adalah bagian internal dapat berubah
tanpa mempengaruhi bagian-bagian
program yang lain.

Pewarisan (Inheritance)

Proses penciptaan kelas baru (subclass/kelas turunan)


Televisi
dengan mewarisi karakteristik dari kelas yang udah
ada (superclass/kelas induk), ditambah karakteristik
unik kelas baru itu.Karakteristik unik bisa berupa
perluasan atau spesialisasi dari superclass.

Kelas turunan bisa mewarisi anggota-anggota suatu


kelas yang berupa, data dan method, dan bisa
terdapat data dan method tambahan yang baru.

OOP tidak selalu memiliki inheritance. Kita pakai


inheritance kalau superclass sudah mendefinisikan
perilaku yang kita butuhkan. Sehingga kita tinggal
buat subclass dari superclass yang udah punya Televisi Televisi Televisi
perilaku yang kita butuhin. layar datar
tabung plasma

Contoh inheritance

Modul Praktikum Pemrograman Berorientasi Objek


19
Common Laboratory 2009/2010
Reusability

kemampuan untuk menggunakan kembali kelas yang sudah ada. Karakteristik ini dimiliki oleh OOP,
sehingga kita tidak perlu membuat ulang definisi perilaku jika perilaku tersebut sudah ada di suatu
class lain.

Message Passing (Komunikasi antar objek)

Bagaimana cara objek


tersebut saling berkomunikasi
dan berinteraksi? Bagaimana
Lonely object is useless caranya?

Object needs each other

Message + info Object A berkomunikasi dengan Object B.


Object A meminta Object B melakukan sesuatu
Object B untuknya.
Object A
Object A kirim pesan disertai informasi ke Object B
FYI, info yang dikirim bersama message
adalah parameter message

Polymorphism

Polymorphism berasal dari bahasa Yunani yang


berarti banyak bentuk.

Konsep ini memungkinkan digunakannya suatu


A B
antarmuka (interface) yang sama untuk
Kedua mobil di atas sama-sama punya setir, pedal
memerintah suatu objek agar dapat
melakukan suatu aksi atau tindakan yang transmisi, rem, gas, dsb.
mungkin secara prinsip sama tapi secara proses
berbeda. Kita kendarai mobil A, tekan pedal gas kemudian mobil
A akan bergerak sangat cepat.
Seringkali Polymorphism disebut dalam istilah
“satu interface banyak aksi”. Mekanisme
Polymorphism dapat dilakukan dengan Sedangkan, ketika kita kendarai mobil B, tekan
dengan beberapa cara, seperti overloading pedal gas, yang terjadi adalah sebaliknya.
method, overloading constructor, maupun
overriding method. Semua akan dibahas pada Berarti, kedua mobil sama-sama punya pedal gas,
bab selanjutnya.
tapi memiliki hasil akhir yang berbeda

20 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
Java Modifier
Apa itu modifier Berlaku untuk
dan kenapa kita Kelompok Modifier Meliputi
butuh itu? Class Method Variabel

Access modifier √ √ √ public, protected,


Modifier merupakan
private, dan friendly
bentuk
(default/ tak ada
pengimplementasian
modifier).
konsep enkapsulasi.
Dengan adanya Final modifier √ √ √ final
modifier maka class,
interface, method, Static modifier √ √ static
dan variabel akan
terkena suatu Abstract modifier √ √ abstract
dampak tertentu.
Syncronized modifier √ synchronized

Native modifier √ native

Storage modifier √ transient dan volatile

Access Modifier :

Modifier Class dan Interface Method dan Variabel

Default (tak ada modifier ) Dikenali di paketnya Diwarisi subclass di paket yang sama
dengan superclassnya. Dapat diakses oleh
Friendly method-method di class-class yang sepaket.

Public Dikenali di manapun Diwarisi oleh semua subclassnya.


Dapat diakses dimanapun.

Protected Tidak dapat Diwarisi oleh semua subclassnya.


diterapkan
Dapat diakses oleh method-method di
class-class yang sepaket.

Private Tidak dapat Tidak diwarisi oleh subclassnya


diterapkan
Tidak dapat diakses oleh class lain.

Modul Praktikum Pemrograman Berorientasi Objek


21
Common Laboratory 2009/2010
Permitted Modifier:

Modifier Class Interface Method Variabel

Abstract Class dapat Optional untuk Tidak ada method body Tidak dapat diterapkan.
berisi method dituliskan di yang didefinisikan. Method
abstract. Class interface memerlukan class kongkret
tidak dapat karena yang merupakan subclass
diinstantiasi interface secara yang akan
inheren adalah mengimplementasikan
Tidak
abstract. method abstract.
mempunyai
constructor

Final Class tidak Tidak dapat Method tidak dapat Berperilaku sebagai
dapat diterapkan. ditimpa oleh method di konstanta
diturunkan. subclass-subclassnya

Static Tidak dapat Tidak dapat Mendefinisikan method Mendefinisikan variable milik
diterapkan. diterapkan. (milik) class. Dengan class. Dengan demikian, tidak
demikian tidak memerlukan instant object
memerlukan instant object untuk mengacunya. Variabel
untuk menjalankanya. ini dapat digunakan
Method ini tidak dapat bersama oleh semua instant
menjalankan method yang objek.
bukan static serta tidak
dapat mengacu variable
yang bukan static.

synchronized Tidak dapat Tidak dapat Eksekusi dari method Tidak dapat diterapkan
diterapkan. diterapkan. adalah secara mutual pada deklarasi. Diterapkan
exclusive diantara semua pada instruksi untuk
thread. Hanya satu thread menjaga haya satu thread
pada satu saat yang dapat yang mengacu variable pada
menjalankan method satu saat.

Native Tidak dapat Tidak dapat Tidak ada method body Tidak dapat diterapkan.
diterapkan. diterapkan. yang diperlukan karena
implementasi dilakukan
dengan bahasa lain.

Transient Tidak dapat Tidak dapat Tidak dapat diterapkan. Variable tidak akan
diterapkan. diterapkan. diserialisasi

Volatile Tidak dapat Tidak dapat Tidak dapat diterapkan. Variabel diubah secara
diterapkan. diterapkan. asinkron. Kompilator tidak
pernah melakukan optimasi
atasnya.

22 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
Bagaimana cara mendeklarasi modifier dalam java? Deklarasi modifier di class/interface
[Modifier] class/interface [nama class/interface]
[Modifier][TypeData][nama Atribut]; Deklarasi modifier di atribut
[Modifier]{[TypeData]}[nama method](parameter_1,parameter_2,parameter_n)
{}
Deklarasi modifier di method

Contoh :
public class Manusia {} Contoh modifier di class

private int tinggi; Contoh modifier di atribut

public int getTinggi(){} Contoh modifier di method

Class dan Object


Class
Class diagram manusia
Class adalah cetak biru (rancangan) atau
prototype atau template dari objek. Manusia

Kita bisa membuat banyak objek dari satu - nama : String


macam class. Class mendefiniskan sebuah tipe
dari objek. - umur : int

Di dalam class kita dapat mendeklarasikan + setNama : void


variabel dan menciptakan objek (instansiasi).
Sebuah class mempunyai anggota yang terdiri + getNama : String
dari atribut dan method.
+ setUmur : void
Atribut adalah semua field identitas yang kita
berikan pada suatu class, misal class manusia
+ getUmur : int
memiliki field atribut berupa nama dan umur.

Method dapat kita artikan sebagai semua


fungsi ataupun prosedur yang merupakan
perilaku (behaviour) dari suatu class.
Keterangan tanda :
- artinya memiliki access modifier private
Bagaimana mengaplikasikan class diagram di + artinya memiliki access modifier public
# artinya memiliki access modifier protected
atas dalam program?

Modul Praktikum Pemrograman Berorientasi Objek


23
Common Laboratory 2009/2010
Contoh implementasi di dalam program:
public class Manusia {

//definisi atribut

private String nama; Kesepakatan umum penamaan:


private int umur; 1) Nama Class – gunakan kata benda dan huruf pertama dari
tiap kata ditulis dengan huruf besar dan umumnya memiliki
access modifier public : Manusia.
//definisi method 2) Pada umumnya, atribut diberi access modifier private, dan
method diberi access modifier public. Hal ini diterapkan
public void setNama(String a){ untuk mendukung konsep OO yaitu enkapsulasi mengenai
data hiding. Jadi, kita tidak langsung menembak data/
nama=a; atribut pada kelas tersebut, tetapi kita memberikan suatu
antarmuka method yang akan mengakses data/ atribut
} yang disembunyikan tersebut.
3) Nama atribut - gunakan kata benda, dan diawali dengan
huruf kecil : nama, umur
public String getNama(){ 4) Nama Method – gunakan kata kerja; kecuali huruf yang
pertama, huruf awal tiap kata ditulis kapital : getNama(),
return nama;
getUmur()
} 5) Untuk method yang akan memberikan atau mengubah nilai
dari suatu atribut, nama method ditambah dengan kata
kunci ”set” : setUmur(int a), setNama(String a)
public void setUmur(int a){ 6) Untuk method yang akan mengambil nilai dari atribut,
nama method ditambah dengan kata kunci ”get” :
umur=a; getUmur(), getNama()
} 7) Konstanta - Semuanya ditulis dengan huruf besar; pemisah
antar kata menggunakan garis bawah: MAX_VALUE,
DECIMAL_DIGIT_NUMBER

public int getUmur(){

return umur;

24 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
Object
Object (objek) secara lugas dapat diarikan
sebagai instansiasi atau hasil ciptaan dari
mencetak
suatu class. Asumsikan cetakan kue adalah
class, maka kue yang dihasilkan dari cetakan
tersebut merupakan objek dari class cetakan
kue.

Dalam pengembangan OOP lebih lanjut, Objek mobil terdiri atas


sebuah objek dapat dimungkinkan terdiri atas
objek-objek lain.
mesin
atau, bisa jadi sebuah objek merupakan
turunan dari objek lain, sehingga mewarisi
sifat-sifat induknya dan memiliki sifat
tambahan
pintu
Keyword “new”
ban
“new” digunakan untuk melakukan instansiasi/
Kerangka mobil
membuat sebuah object baru.

Manusia objekManusia = new Manusia();

Membuat objek manusia

Contoh disamping merupakan contoh objek


Kendaraan Bermotor
yang merupakan turunan dari objek lain serta
memiliki sifat tambahan pada dirinya.

Coba jelaskan dengan kata-katamu sendiri


gambar di samping…!

Answer:

Modul Praktikum Pemrograman Berorientasi Objek


25
Common Laboratory 2009/2010
Method dan Constructor

Apa itu method?


Method biasa kita kenal sebagai function dan
public int jumlahAngka(int x, int y){
procedure. Dikatakan fungsi bila method
tersebut melakukan suatu proses dan int z = x+y;
mengembalikan suatu nilai (return value), dan
dikatakan prosedur bila method tersebut return z;
hanya melakukan suatu proses dan tidak
}
mengembalikan nilai (void).

Dalam OOP, method digunakan untuk


memodularisasi program melalui pemisahan
tugas dalam suatu class. Pemanggilan method
menspesifikasikan nama method dan
menyediakan informasi (parameter) yang
diperlukan untuk melaksanakan tugasnya.

Deklarasi method yang mengembalikan nilai (fungsi)


[modifier]Type-data namaMethod(parameter1,parameter2,…parameterN)
{
Deklarasi-deklarasi dan proses ;
return nilai-kembalian;
}

Deklarasi method yang tidak mengembalikan nilai (prosedur)

[modifier]void namaMethod(parameter1,parameter2,…parameterN)
{
Deklarasi-deklarasi dan proses ;
}

Ada dua cara melewatkan argumen ke method, yaitu:


Isi memori
Melewatkan secara Nilai (Pass by Value)
Digunakan untuk argumen yang mempunyai n= 4 Salinan isi memori
n=4
tipe data primitif (byte, short, int, long, float,
double, char, dan boolean). Prosesnya adalah menyalin isi
compiler hanya menyalin isi memori
(pengalokasian suatu variable), dan kemudian memori n=4
menyampaikan salinan tersebut kepada compiler
method. Isi memory ini merupakan data
“sesungguhnya” yang akan dioperasikan.
Karena hanya berupa salinan isi memory, method
maka perubahan yang terjadi pada variable
akibat proses di dalam method tidak akan
berpengaruh pada nilai variable asalnya.
n= 8

26 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
Melewatkan secara Referensi (Pass by Reference) public class TestPass {
int i,j;
public TestPass(int a,int b) {
Digunakan pada array dan objek. Prosesnya isi i =a;
memory pada variable array dan objek j = b;
merupakan penunjuk ke alamat memory yang }
mengandung data sesungguhnya yang akan
dioperasikan. Dengan kata lain, variable array //passing by value
public void calculate(int m,int n) {
atau objek menyimpan alamat memory bukan isi m = m*10;
memory. Akibatnya, setiap perubahan variable di n = n/2;
dalam method akan mempengaruhi nilai pada }
variable asalnya.
//passing by reference
public void calculate(TestPass e) {
Bagaimanakah keluaran dari program di bawah?
e.i = e.i*10;
e.j = e.j/2;
}
}

public class PassedByValue {


public static void main(String[] args) {
int x,y;
TestPass z;
z = new TestPass(50,100);

x = 10;
y = 20;

System.out.println("Nilai sebelum passed by value : ");


System.out.println("x = " + x);
System.out.println("y = " + y);

//passed by value
z.calculate(x,y);

System.out.println("Nilai sesudah passed by value : ");


System.out.println("x = " + x);
System.out.println("y = " + y);

System.out.println("Nilai sebelum passed by reference : ");


System.out.println("z.i = " + z.i);
System.out.println("z.j = " + z.j);

//passed by reference
z.calculate(z);

System.out.println("Nilai sesudah passed by reference : ");


System.out.println("z.i = " + z.i);
System.out.println("z.j = " + z.j);
}
}

Modul Praktikum Pemrograman Berorientasi Objek


27
Common Laboratory 2009/2010
Answer: Keterangan
Nilai sebelum passed by value :
x = 10 Pada saat pemanggilan method calculate() dengan
y = 20 metode pass by value, hanya nilai dari variable x dan y
Nilai sesudah passed by value : saja yang dilewatkan ke variable m dan n , sehingga
x = 10 perubahan pada variable m dan n tidak akan mengubah
y = 20
nilai dari variable x dan y.
Nilai sebelum passed by reference :
z.i = 50 Sedangkan pada saat pemanggilan method calculate()
z.j = 100
Nilai sesudah passed by reference : dengan metode pass by reference yang menerima
z.i = 500 parameter bertipe class Test. Pada waktu kita memanggil
z.j = 50 method calculate(), nilai dari variable z yang berupa
referensi ke obyek sesungguhnya dilewatkan ke variable
a, sehingga variable a menunjukkan ke obyek yang sama
dengan yang ditunjuk oleh variable z dan setiap
perubahan pada objek tersebut dengan menggunakan
variable a akan terlihat efeknya pada variable z yang
terdapat pada kode yang memanggil method tersebut.

Constructor
Tipe khusus method yang digunakan untuk
menginstansiai atau menciptakan sebuah objek.

Nama constructor = nama kelas. Deklarasi Constructor:


Constructor TIDAK BISA mengembalikan nilai.

Tanpa membuat constructor secara eksplisit-pun, [modifier] namaclass(parameter1){


Java akan menambahkan constructor default Body constructor;
secara implisit. Tetapi jika kita sudah }
[modifier] namaclass(parameter1,parameter2){
mendefinisikan minimal sebuah constructor, maka Body constructor;
Java tidak akan menambah constructor default. }
[modifier] namaclass(parameter1,parameter2,…,parameterN){
Body constructor;
Constructor default tidak punya parameter. }

Constructor bisa digunakan untuk membangun


suatu objek, langsung ngeset atribut-atributnya.
Construktor seperti ini harus memiliki parameter
masukkan untuk ngeset nilai atribut.

Access Modifier constructor selayaknya adalah


public, karena constructor akan diakses di luar
kelasnya.

Cara panggil constructor adalah dengan tambahin


keyword “new”. Keyword new dalam deklarasi ini
artinya kita mengalokasikan pada memory sekian
blok memory untuk menampung objek yang baru
kita buat.

28 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010
public class DemoManusia {
public static void main(String[] args) { //program utama
Manusia arrMns[] = new Manusia[3]; //buat array of object

Manusia objMns1 = new Manusia(); //constructor pertama

objMns1.setNama("Markonah");
objMns1.setUmur(76);

Manusia objMns2 = new Manusia("Mat Conan"); //constructor kedua


Manusia objMns3 = new Manusia("Bajuri", 45); //constructor ketiga

arrMns[0] = objMns1;
arrMns[1] = objMns2;
arrMns[2] = objMns3;

for(int i=0; i<3; i++) {


System.out.println("Nama : "+arrMns[i].getNama());
System.out.println("Umur : "+arrMns[i].getUmur());
System.out.println();
}
}

Hasil output adalah seperti ini:


Nama : Markonah Coba Anda analisis mengapa hasilnya seperti di samping ?
Umur : 76 Apakah program di atas constructornya eksplisit atau
implisit?
Nama : Mat Conan
Umur : 0 Answer:

Nama : Bajuri
Umur : 13

FYI, pada kode program di atas terdapat dua buah constructor dengan parameter berbeda. Program
akan secara otomatis memilih constructor sesuai dengan parameter masukan pada saat
pembuatan objek. Hal ini disebut overloading.

Modul Praktikum Pemrograman Berorientasi Objek


29
Common Laboratory 2009/2010
Keyword “this”

Apa itu? Kapan dipake?


Suatu besaran referensi khusus yang
Ketika nama atribut yang sama
digunakan di dalam method yang dirujuk
dengan nama variable lokal, maka
untuk objek yang sedang belaku. Nilai this,
gunakan lah this.namaAtribut untuk
sedang berjalan dipanggil.
merefer ke namaAtribut.

public class Lagu {


private String band;
private String judul;

public void IsiParam(String judul,String band) {


this.judul = judul;
this.band = band;
}

public void cetakKeLayar() {


if(judul==null && band==null) return;
System.out.println("Judul : " + judul +"\nBand : " + pencipta);
}
}

public class DemoLagu {


public static void main(String[] args) {
Lagu song = new Lagu();
song.IsiParam("Dance Beside","All American Reject ");
song.cetakKeLayar();
}
}

Hasil output adalah seperti ini:

Judul : Dance Beside


Pencipta: All American Reject Keterangan

Perhatikan pada method IsiParam() di atas. Di sana kita


mendeklarasikan nama variable yang menjadi
parameternya sama dengan nama variabel yang
merupakan atribut dari class lagu (judul dan band).
Dalam hal ini, kita perlu menggunakan keyword this
(keyword ini merefer ke objek itu sendiri) agar dapat
FYI, Keyword this juga dapat digunakan
mengakses property judul dan band di dalam method
untuk memanggil suatu konstruktor dari IsiParam() tersebut. Apa yang terjadi jika pada method
konstruktor lainnya. IsiParam() keyword this dihilangkan?

30 Modul Praktikum Pemrograman Berorientasi Objek


Common Laboratory 2009/2010

Anda mungkin juga menyukai