0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan121 halaman

Object Oriented Programming New Oop 230808025423 Fcf3dedc

Diunggah oleh

elektrokotabanjar
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 PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan121 halaman

Object Oriented Programming New Oop 230808025423 Fcf3dedc

Diunggah oleh

elektrokotabanjar
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 PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 121

OBJECT ORIENTED

PROGRAMMING (OOP)
DEFINISI
Pemrograman Berbasis Objek

 Object Oriented Programming (OOP) / Pemrograman Berbasis


Objek (PBO) adalah konsep pemrograman yang menerapkan
konsep objek , dimana objek terdiri dari atribut (informasi-
informasi mengenai objek) dan method ( prosedur/proses)
yang bisa dilakukan oleh objek tersebut.
 Software/Perangkat lunak terdiri dari objek-objek yang
saling
berinteraksi.

Pemrograman Berorientasi Object


2
CONTOH
Pemrograman Berbasis Objek

 Contoh :
 Object : Manusia
 Attribut : Nama, tinggi, umur, berat badan dll
 Method : Makan, Minum, Berjalan, Bekerja
 Object : Windows
 Attribut : Left, Top, Width, Height, BackgroundColor,
 Method : OnClick, OnClose, OnDoubleClick
 Object : Keluarga
 Attribut : ayah, Ibu, Anak[]
 Method : TambahAnak,

Pemrograman Berorientasi Object


3
CONTOH
Pemrograman Berbasis Objek

 Perhatikan mesin ATM


 Sebuah mesin ATM terdiri dari
elemen-elemen berikut :
 Display Screen (Layar)
 Screen Button (Tombol)
 Receipt Printer
 Card Reader
 Speaker
 Cash Dispenser
 Deposit Slot
 Keypad
 Di dalam konsep OOP, setiap
setiap elemen tersebut
berinteraksi dengan
mengirimkan pesan (message)
ter tentu.

Pemrograman Berorientasi Object


4
CONTOH
Pemrograman Berbasis Objek

 Interaksi ketika penekanan


tombol Ambil Uang Rp.
200.000
 Speaker mengeluarkan bunyi
beep.
 CashDispenser
mengeluarkan
uang 200.000
 Jika uang diambil, maka Receipt
Printer mencetak faktur,
 Jika uang tidak diambil, Uang
dimasukkan kembali ke Cash
Dispenser,
 Layar kembali ke menu
Utama.
Pemrograman Berorientasi Object
5
CLASS DAN OBJECT
Pemrograman Berbasis Objek

 Class
Class adalah cetak biru/prototipe/pendefinisian dari suatu benda.
Didalam class-lah attribut dan method suatu object didefinisikan.
Contoh : Manusia, Window
 Object
Object adalah bentuk instance/nyata/real/hidup dari sebuah class.
Contoh :
 Shelly:Manusia (Object Shelly mempunyai Class Manusia)
 Form1:Window (Object Form1 mempunyai class Window)

Pemrograman Berorientasi Object


6
FITUR-FITUR OOP
Pemrograman Berbasis Objek

 Encapsulation
Penggabungan antara data (attribut) dengan prosedure
(method) yang mengolahnya.
 Inheritance
Penurunan sifat (attribut dan method) dari Class Parent
(SuperClass) ke Class Child ( SubClass). Ini menandakan
bahwa OOP mendukung konsep code reuse dimana data-data
yang ada di class parent bisa di kenal di kelas child.
 Polymorphism
Sebuah kemampuan dari sebuah objek untuk bekerja dalam
berbagai bentuk . Penggunaan umum polymorphism biasanya
digunakan ketika sebuah reference dari class parent
digunakan untuk mengacu ke class child.

Pemrograman Berorientasi Object


7
CLASS DAN OBJECT
Pemrograman Berbasis Objek

 Setiap object pasti memiliki class (sebagai templatenya)


 Setiap object harus diinstansiasi/dihidupkan terlebih dahulu
sebelum digunakan. Instansiasi sebuah objek dapat dilakukan
dengan keyword new. Contoh berikut :
NamaClass NamaObject;
NamaObject=new NamaClass(parameter_konstruktornya);
>>Untuk mengakses attribut atau method suatu object, gunakan
tanda titik setelah nama objeknya.
Kucing catty=new Kucing("Catty");
catty.warna="putih";
catty.jalan(); Mengakses
atribut/method

Pemrograman Berorientasi Object


8
CONTOH PENGGUNAAN CLASS
Pemrograman Berbasis Objek

 String di java sebenarnya adalah sebuah Class.


 Method-method yang ada di class String
 charAt(index) : Mereturnkan huruf pada posisi ke-index. Index 0
menunjukkan huruf pertama.
 equals(string_lain) : Mereturnkan true jika isi string sama dengan isi
string_lain (case sensitive).
 equalsIgnoreCase(string_lain) : Mereturnkan true jika isi string sama
dengan string lain dengan mode perbandingan case insensitive.
 length() : Mereturnkan berapa banyak huruf dalam string.
 toUpperCase() : Mereturnkan string yang berisi bentuk kapital dari
stringnya.
 toLowerCase() : Mereturnkan string yang berisi bentuk huruf kecil
dari stringnya.

Pemrograman Berorientasi Object


9
CONTOH PENGGUNAAN CLASS
Pemrograman Berbasis Objek

p u b l i c c l a s s T e s t S t r i n g {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g
[ ] a r g s ) {
S
S t
y r
s i
t n
e gm .n oa um ta .="p Ur ni in vt el rn s: i "t +a ns a Km oa m);
p
u
( t
" e
I r
S II S
n Td Ro In Ne Gs iSay"s;t e m : " + n a m a . l e n g t h ( )
. o u t . p r i n t l n (" P a n j ) ;
a n g S y s t e m . o u t . p r i : " + n a m a . t o U p p e r C
n t l n ( " U p p e r C a s e S y a s e ( ) ) ;
} s t e m . o u t . p r i n t l n ( " : " + n a m a . t o L o w e r C
a s e ( ) ) ;
} L o w e r C a s e S y s t e m . o
: " + n a m a . e q u a l s ( "
u t . p r i n t l n ( " = U N I K O U N I K O M " ) ) ;
M ISI STRING : Universitas Komputer Indonesia
Panjang 30
: UNIVERSITAS KOMPUTER INDONESIA
Upper Case :
Lower Case : universitas komputer indonesia
=UNIKOM false
:
Pemrograman Berorientasi Object
12
MEMBUAT CLASS SEDERHANA
Pemrograman Berbasis Objek

>>Sintak pembuatan class


sederhana Daftar Attribut
c l at si sp Ne a_ md a n
K ae ml aa _s a{ t
a t a t i r i b u t ; n
p e _ d a t a m a _ a t r Daftar Method
a n a m a i b u t ; n a (Procedure/Functio
_ a
N k me al Ka es l ma as _( op ba jr ea m e
t e r ) { c t ; n
… / / isi k o n s t r u k t /Constructor)
o r
} … / / isi m e t h o d b e r b e n t u k p
v o i d n a
} r mo a
c _e md eu tr he o d
( i
t p pa er _a m e t e r ) {
d a …t /a / isi n a mm ea t_ hm oe dt bh eo rd b_ ef nu tn uc t i
k f u n oc nt (i po an r ra em tt ue rr n){… . ;
}
}
Pemrograman Berorientasi Object
13
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

 Buatlah sebuah class bernama Titik yang digunakan untuk


menyimpan sebuah titik koordinat.
 Setiap titik mempunyai atribut posisi X dan attribut posisi Y.
 Class ini harus dapat melakukan hal berikut :
 Memberikan nilai default (X=0, Y=0) ketika X dan Y belum didefinisikan.
 Mengisi Nilai X
 Mengisi Nilai Y
 Mengisi Nilai X dan Y (sekaligus)
 Menampilkan nilai X dan Y
 Pindah ke Koordinat Lain (berdasarkan jarak atau ke titik tertentu)
 Menghitung Jarak Ke Titik Lain

Pemrograman Berorientasi Object


14
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

c l a T i t i k {
s s d o u b l
e x ; d o
u b l e
y ; T i t
i k (){
x = 0
; y x 1 , d o u b l
= e y 1 ) {
0 ;
}
T vi ot ii dk t( ad m p i l ( ) {
o u b l eS y s t e m . o u t . p r i n t l n ( "
x (= "x + x + " , " + y + " ) " ) ;
} 1 ;
v o i d py i= ny d a h ( d o u b l e x 1 ,
1 o
d ; u b l e y 1 ) { x = x 1 ;
}y = y 1 ;
} Pemrograman Berorientasi Object
15
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

v o p i n d a h ( T i
i d t i k t ) { x=
t.x ;
y= t.y ;
}
v o i d i s i X ( d o u
b l e x 1 ) {
x = x 1 ;
}
v
} o i d i s i Y ( d o
u
v b
o l
i e
d yi 1s )i {X Y ( d o u b l e y
y x= 1y ,1 d; o u b l e x = 1 )
x 1 ; {
y = y 1 ;
}

Pemrograman Berorientasi Object


16
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

d o u b j a r a k K e ( d o u b l e x 1 ,
l e d o u b l e y 1 ) { d o u b l e j
a r a k ;
y 1 , 2 ) , 0 . 5j )a ;r a k = M a t h . p o w ( M a t
h e
r . tp u
o r
w n
(x j- ax r1 a, k2 ;) + M a t h
} . p o w (y -
d o u b l e j a r a k K e ( T
i t i k t2){ d o u
b l e j a r a k ;
j a r a k = M a t h . p o w (
M a t h . p o w (x -
t 2 . x , 2 ) + M a
t h . p o w (y -
t 2 . y , 2 ) , 0 . 5 ) ;
r e t u r n j a r a k ; Math.pow(x,y) = 𝑥 𝑦
}
}

Pemrograman Berorientasi Object


17
MEMBUAT KELAS TESTER
Pemrograman Berbasis Objek

 Kelas tester digunakan sebagai class untuk melakukan uji


coba terhadap class yang telah dibuat.
 Sebaiknya kelas tester dibuat terpisah dari file classnya.

Pemrograman Berorientasi Object


18
MEMBUAT KELAS TESTER
Pemrograman Berbasis Objek

p u b l i c c l a s s T i t i k T e s t e r {
p u b l i c s t a t i c v o i d m a i n ( S t
r i n Tg i[ t] ta 1r ,g ts 2) ;{
i k t T i t i k ( ) ; / / T a n p a p a r a m
1 = n e
T ti et ri kx (= 90 ,, xy == 90 ,
e y
S w stt e 4 m) .; o/ u/ t . p y = 4
2 i
r = n t ( " T 1 t 1 . : " ) ;
e a
t w m p i l ( ) ; S y : " )
s t e m . o u t . p r i ;
n t ( " T 2 t 2 . t a
m
S py is l
t (e )m ;. o u t . p r i n p i n T 1 :
t 1(". Sp ei tn ed la ah h( 5
t ,1 . t d a h " ) ;
1
a o
d )
m u;
p b
i l e ( j) a; r a k ; j a
r a k = t 1 . j a r a k K e (
t 2 ) ; S y s t e m . o u d a r i T1 ke T 2 : " + j a
} t . p r i n t l n (" J a r a r a k );
} k T1 : (0.0,0.0)
T2 : (9.0,4.0)
Setelah pindah T1 : (5.0,1.0)
Pemrograman Berorientasi Object
19
Jarak dari T1 ke T2 : 5.0
Membuat Class MObil

Program berikut mengimplementasikan class Mobil


Class Mobil memiliki atribut :
aktifitas (parkir atau jalan-jalan), warna, kecepatan
Class Mobil memiliki method :
– cekKecepatan jika kecepatan=0, maka aktifitas=parkir
– cetakAtribut mencetak semua nilai atribut
class Mobil {
String aktifitas;
String warna;
int kecepatan;

void cekKecepatan() {
if (kecepatan==0)
aktifitas="parkir";
}
void cetakAtribut() {
System.out.println("Aktifitas = "+aktifitas);
System.out.println("warna = "+warna);
System.out.println("Kecepatan = "+kecepatan);
}
public static void main(String [] args) {
Mobil mobilku = new Mobil();
mobilku.kecepatan=0;
mobilku.warna="merah";
mobilku.cekKecepatan();
mobilku.cetakAtribut();
}
}
CLASS CALCULATOR
Pemrograman Berbasis Objek

 Buatlah class Calculator


 Attribut :
 Operan1 bertipe double
 Operan2 bertipe double
 Method :
 isiOperan1(double x) : Mengisi atribut operan1 dengan nilai x
 isiOperan2(double x) : Mengisi atribut operan2 dengan nilai x
 tambah() : Mereturnkan nilai Operan1 + Operan2
 kurang() : Mereturnkan nilai Operan1 – Operan2
 kali() : Mereturnkan nilai Operan1 * Operan2
 bagi() : Mereturnkan nilai Operan1 / Operan2
 pangkat() : Mereturnkan nilai Operan1^Operan2
>>Kelas tersebut harus bisa dijalankan dengan menggunakan
Class CalculatorTester (di slide berikutnya)

Pemrograman Berorientasi Object


22
CLASS CALCULATORTESTER
Pemrograman Berbasis Objek

p u b c l a s s C a l c u l a t o r T e s t e r {
l i c p u b l i c s t a t i c v o i d m a i n ( S t
r i n g [ ] a r g s ) {
C a l c u l a t o r c = n e w C a l
c.isiOperan1(7);
c u l a t o r ( ) ;
c.isiOperan2(5);
S y s t e m . o u t . p r i n t : " + c . t a m b a
l n (" T a m b a h S y s t e m h ( ) ) ;
. o u t . p r i n t l n (" K u : " + c . k u r a n
g ( ) ) ;
r a n g S y s t e m . o u t .
: " + c . k a l i (
p r i n t l n ( " K a l i
) ) ;
} Sy s t e m . o u t . p r i n t
Tambah : 12.0 : " + c . b a g i (
} l n (" B a g i ) ) ;
S y s t e m . o u t . p :r i2.0
n t : " + c . p a n g k
Kurang
l n (" P a n g k a t : 35.0 a t ());
Kali : 1.4
Pemrograman Berorientasi Object Bagi
Pangkat : 16807.0 19
CLASS NILAI
Pemrograman Berbasis Objek

>>Buatlah class Nilai  Rumus NilaiAkhir


 Attribut : NA = 20% QUIS + 30%*UTS
 Quis bertipe double + 50% * UAS
 UTS bertipe double  Aturan Index
 UAS bertipe double  NA 80..100 Index=‘A’
 Method :  NA 68..80 Index=‘B’
 setQuis(double x) : Mengisi nilai quis  NA 56..68
 setUTS(double x) : Mengisi nilai UTS  NA 45..56 Index=‘C’
 setUAS(double x) : Mengisi nilai UAS  NA 0..45
 getNA() : Mereturnkan nilai Index=‘D’
>>Aturan Keterangan
akhir berupa double  Index=‘A’ : Sangat Baik
 getIndex() : Mereturnkan index berupa  Index=‘B’ Index=‘E’
: Baik
char  Index=‘C’ : Cukup
 getKeterangan() : Mereturnkan  Index=‘D’ : Kurang
keterangan berupa String
 Index=‘E’ : Sangat Kurang

Pemrograman Berorientasi 20
Object
CLASS NILAITESTER
Pemrograman Berbasis Objek

p u b l i c c l a s s N i l a i T e s t
e r { a r g
p u b l i c s t a t i c v o i d m a s ) {
i n ( S t r i n g [ ]
N i l a i n = n e w N
i l a i (); n . s e t
Q u i s ( 6 0 ) ; : " + n . Q u i s );
n . s e t U T S (80); : " + n . U T S );
n.setUAS(75); : " + n . U A S );
S y s t e m . o u t . p r i : " + n . g e t N A
n t l n (" Quis ( ) ) ;
S
S y
y ss tt ee mm .. oo uu tt .. pp r
r ii n
n t l n : " + n . g e t I n d e x
t
("l Kn e( t" eU rT aS n Sg ya sn t e ());
}
m . o u t . p r i n t l n ( "Quis :
n .60.0
: " +g e t K e t e r
}
U A S S y s t e m . o u t . UTS a: n80.0
a n g( ) ) ;
p r i n t l n ( " N A S y s UAS : 75.0
t e m . o u t . p r i n t l n NA : 73.5
( " I n d e x Inde : B
Pemrograman Berorientasi Object x
Keterangan : Baik 21
PART II
PACKAGE

O
22
PACKAGE
Pemrograman Berbasis Objek

 Package adalah sekumpulan class/inter face/enumerasi yang


berelasi.
 Package menyediakan mekanisme untuk mengatur class dan
inter face dalam jumlah banyak dan menghindari konflik pada
penamaan
 2 buah class yang mempunyai nama yang sama (tetapi isinya
beda) dapat digunakan sekaligus jika berada di masing-
masing package.
 Jika anda membuat class tanpa dimasukkan ke dalam
package, maka secara default akan dianggap sebagai
unnamed package (package tanpa nama). Package
tanpa
nama tidak bisa diimpor t oleh class dari package yang
mempunyai nama.
Pemrograman Berorientasi Object
27
MEMBUAT PACKAGE
Pemrograman Berbasis Objek

 Jika anda ingin sebuah class berada dalam suatu package,


maka didalam file classnya tambahkan baris berikut
package < namapackage >
 Penamaan package sebaiknya menggunakan huruf kecil
semua.
 Nama package harus disesuaikan dengan nama folder tempat
menyimpan class tersebut.
p a c k a g e
mylib ; c l a
s s T i t i k {
d o u b l
e x ; d o
u b l e
y ;
}
Pemrograman Berorientasi Object
28
ATURAN PENAMAAN PACKAGE
Pemrograman Berbasis Objek

 Nama package sebaiknya ditulis dengan huruf kecil.


 Nama package harus sama dengan nama folder.
 Suatu file kode sumber hanya boleh menuliskan 1 statement
package.
 Perusahaan besar pengembang software biasanya
memberikan nama class sesuai dengan nama domainnya.
Contoh :
 Facebook : package com.facebook.android
 Twitter : package com.twitter.interop
 Google maps : package com.google.android.maps

Pemrograman Berorientasi Object


29
IMPORT PACKAGE
Pemrograman Berbasis Objek

 Impor t package berar ti anda ingin menggunakan member/isi


dari sebuah package.
 Impor t suatu package dilakukan dengan keyword impor t.
import namapackage. namaclass / / i m p o r t 1
atau ; c l a s s
i namapackage .* / / i m p s e l u isi p a c k a
mport ; o r t r u h g e .

>>Contoh : mylib. Titik


import ;
Atau mylib .*
>>Secara ;
importdefault, jika anda tidak mengimpor t satu package -pun
maka sebenarnya anda mengimpor t package java.lang.* yang
contoh class yang ada di dalamnya adalah class String dan Math.
Inilah yang membuat anda tidak usah impor t package apa pun
ketika akan menggunakan class String atau Math.

Pemrograman Berorientasi Object


30
IMPORT PACKAGE
Pemrograman Berbasis Objek

 Jika aplikasi yang anda buat menggunakan 2 buah class yang


namanya sama tetapi berpada package yang berbeda maka
sebagai pembeda anda harus menuliskan nama packagenya.
 Contoh berikut akan menampilkan cara pembuatan 2 objek yang
mempunyai nama class yang sama.

package1.Titik t1=new package1.Titik();


package2.Titik t2=new package2.Titik();

Pemrograman Berorientasi Object


31
ACCESS MODIFIER
Pemrograman Berbasis Objek

 Pengaturan akses terbagi menjadi 2 level,


 Di level kelas
Pengaturan akses di level kelas terdiri dari 2 cara yaitu
1. Tanpa menuliskan keyword apa pun (default/package-private)
2. Menuliskan keyword public
 Di level member
Pengaturan akses di level member terdiri dari 4 cara yaitu :
1. Tanpa menulis keyword apa pun (default/package-private)
2. Menuliskan keyword public
3. Menuliskan keyword private
4. Menuliskan keyword protected

Pemrograman Berorientasi Object


32
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

 Pengaturan akses di level kelas hanya memiliki 2


kemungkinan yaitu :
 Default/Package-Private :
Jika sebuah class dibuat dengan menggunakan akses ini maka class
tersebut hanya akan dikenal di class-class pada package yang sama saja.
 Public
Jika sebuah class dibuat dengan menggunakan akses public maka class
tersebut dapat dikenal di mana pun, baik dari dalam package yang sama
atau dari luar package (world).

Pemrograman Berorientasi Object


33
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : Default/Package -Private


// Nama File : package1/Titik.java
package package1;
class Titik {
public
Titik(){
Sy
st
em
// Nama File : package1/Tester.java
.o package yang sama
package package1;
ut
class Tester { .p
public static
ri void main(String[] args) {
nt Titik t1=new Titik();
} ln
} ("
Ti
ti
k
Pemrograman Berorientasi Object
34
di
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : Default/Package -Private


// Nama File : package1/Titik.java
package package1;
class Titik {
public
Titik(){
Sy
} st Class Titik berada di package
em bernama package1, Class
// Nama File : Tester.java
.o
import package1.Titik;
ut
Tester tidak memiliki package
class Tester { .p
public static
ri void main(String[] args) {
nt Titik t1=new Titik();
} ln
} ("
Ti
ti
k
Pemrograman Berorientasi Object
35
di
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public
Titik(){
Syste
m.out
.prin
// Nama File : package1/Tester.java
tln(" package yang sama
package package1;
Titik
class Tester { di
public static
packa void main(String[] args) {
geTitik t1=new Titik();
} 1");
} }
}
Kedua kelas berada pada
Pemrograman Berorientasi Object
36
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public
Titik(){
Syste
} m.out Class Titik berada di package
.prin bernama package1, Class
// Nama File : Tester.java
tln("
import package1.Titik;
Titik
Tester tidak memiliki package
class Tester { di
public static
packa void main(String[] args) {
geTitik t1=new Titik();
} 1");
} }

Pemrograman Berorientasi Object


37
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek

 Pengaturan akses di level member memiliki 4 kemungkinan


yaitu :
 Public
Jika member memiliki access modifier ini, maka member ini bisa diakses dari
mana saja (world) yaitu dari class sendiri atau dari class-class lain (walaupun
berada di package yang berbeda). Member ini dikenal di subclassnya
 Protected
Jika member memiliki access modifier ini, maka member ini bisa diakses dari
class sendiri atau dari class-class lain yang se-package. Member ini bisa diakses
di subclassnya (class turunannya)
 Default/Package-Private :
Jika member memiliki access modifier ini, maka member ini hanya bisa diakses
dari class sendiri dan dari class-class pada package yang sama. Member ini
tidak dikenal di subclassnya (class turunan).
 Private
Jika member memiliki access modifier ini, maka member ini bisa diakses dari
class sendiri saja. Member ini tidak bisa diakses dari class lain walaupun se-
package ataupun dari subclassnya (class turunannya)

Pemrograman Berorientasi Object


38
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek

Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y T
tanpa modifier Y Y T T
private Y T T T

Keterangan :
Y : Bisa diakses
T : Tidak bisa diakses

Pemrograman Berorientasi Object


39
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek

>>Visibilitas member-member class A dari class lain.


Modifier Member A A A1 B A2 C
public Y Y Y Y Y
protected Y Y Y Y T
tanpa modifier Y Y Y T T
private Y T T T T
Pemrograman Berorientasi Object
40
ACCESS MODIFIER
Pemrograman Berbasis Objek

Alasannya adalah
 Membatasi hak akses. Ini dilakukan agar sebuah member
tidak sembarangan dibaca atau diisi
 Menyembunyikan informasi. Pengguna class tidak harus tahu
apa yang ada/terjadi di dalam class (Information Hiding)

Pemrograman Berorientasi Object


41
CONTOH KASUS ACCESS MODIFIER
Pemrograman Berbasis Objek

>> Buatlah sebuah class bernama Nilai yang akan menampung


nilai Quis, UTS, UAS. Nilai yang dapat diterima adalah antara
0 sampai 100. Setiap nilai dapat diubah nilainya. Class ini
harus dapat diakses dari class mana pun.
p u b l i c c l a s s N i l a i {
p u b l i c d o u b l e Q u i s ;
p u b l i c d o u b l e U T
S ; p u b l i c d o u b
l e U A S ; p u b l i c
d o u b l e g e t N A ( )
{
r e t u r n 0 . 2 0
* Q u i s + 0 . 3
0 * U T S + 0 . 5
* U A S ;
}
}
Pemrograman Berorientasi Object
42
CONTOH KASUS ACCESS MODIFIER
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai


p u b l i c c l a s s N i l a i T e s t e r {
p u b l i c s t a t i c v o i d m a i n ( S t
r i n g [ ] args ) { N i l a i n =
n e w N i l a i ();
n . Q u i s = 9 0 ;
n . U T S =
7 0 ; n .
U A S = 1 5
0 ;
S y s t e m . o u
t . p r i n
t l n ( " N
A : " + n .
g e t N A (
) ) ;
}
}
Pemrograman Berorientasi Object
43
>>Jika aplikasi di atas
CONTOH KASUS ACCESS MODIFIER
Pemrograman Berbasis Objek

>>Solusinya adalah dengan membuat atribut Quis, UTS dan UAS


tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
p u b l i cc l a s s N i l a i {
p ri v a t e d o u b l e
Q ui s ; p r i v a t e
d ou b l e U T S ; p r
i va t e d o u b l e U A
S ; p u b l i c d o u b
l eg e t N A ( ) {
r e t u r n 0 .
2 0 * Q u i s + 0
>>Apakah Cukup?. 3 0 * U T S + 0
. 5 * U A S ;
Tidak, dengan
} hanya mengubah public menjadi private, maka
}pengisian nilai Quis, UTS dan UAS tidak bisa dilakukan. Solusinya
adalah dengan

Pemrograman Berorientasi Object


44
CONTOH KASUS ACCESS MODIFIER
Pemrograman Berbasis Objek

>>Solusinya adalah dengan membuat atribut Quis, UTS dan UAS


tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
p u b l i c c l a s s N i l a i {
p r i v a t e d o u b l
e Q u i s ; p r i v a
t e d o u b l e U T
S ;
p r i v a t e d o u b l
e U A S ;
p u b l i c d o u b l e
g e t N A ( ) {
r e t u r n 0 . 2 0 * Q u i s + 0 . 3 0 * U T S + 0 . 5 * U A S ;
}
}

>>Cukup? TidakPemrograman
. Karena atribut Quis, UTS dan UAS tidak bisa
Berorientasi Object
45
diakses dari mana pun.
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

 Karena atribut Quis, UTS, dan UAS mempunyai akses private,


maka class harus menyediakan suatu cara agar bisa
mengakses (mengisi/membaca) nilai atribut tersebut.
 Solusinya adalah method setter dan getter.
 Method getter adalah method yang digunakan sebagai perantara
untuk mengambil nilai atribut yang tidak bisa diakses (karena private
atau protected). Method getter biasanya berupa function yang
mereturnkan tipe data sesuai atribut yang diambil.
 Method setter adalah method yang digunakan sebagai perantara
untuk mengisi nilai atribut yang tidak bisa diakses (karena private
atau protected). Method setter biasanya berupa procedure (void
function) yang mempunyai parameter input yang bertipe data sama
dengan tipe data atributnya.
 Method setter dan getter seharusnya mempunyai access
modifier public ( karena harus bisa diakses oleh semua
class).
Pemrograman Berorientasi Object
46
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

>>Method setter dan getter untuk Quis, UTS, UAS.


p u b c l a sN i l a
l i c s p r ii d{ o u Q u i
v a t e b l e s ;
p r i v d o u U T S
a t e p v bo li ed s; e U t Q u i s ( d
r i v a Qo duu ib o slu=e A xxS ;);{
t e p u b l e
}
b u
p l b
i l
c i c v o i d s e t U T S Function
( d o u b l e x ) { U T
S = x ;
setter
}
p u b l i c v o i d s e t U A S
( d o u b l e x ) {
U A S = x ;
} Pemrograman Berorientasi Object
47
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

>>Method setter dan getter untuk Quis, UTS, UAS.


p u b d o u g e t Q u i
l i c b l e s ( ) { Q u
} r e t ui s ;
p u b l ri nc d g e t U T
o u b l e S (){ U T
r e t u
Function
} S ;
p u b l ri nc d g e t U A
getter
o u b l e S (){ U A
} r e t uS ;
p u b l ri nc d g e t N A (){
o u b l e * U T S + 0 . 5 *
0 . 2 0 * Q u i
U A S ;
} r e t u s + 0 . 3 0
} r n

Pemrograman Berorientasi Object


48
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai berubah, karena pengisian


atribut dilakukan melalui function.
p u b l i c c l a s s N i l a i T e s t e r {
p u b l i c s t a t i c v o i d m a i n ( S t
r i n g [ ] args ) { N i l a i n =
n e w N i l a i ();
n . s e t Q u i s ( 9
0 ) ; n . s e t
U T S (70);
n . s e t U A S
( 1 5 0 ) ;
S y s t e m . o u t . p
r i n t l n ( "
N A : " + n . g
e t N A ( ) ) ;
}
}
Pemrograman Berorientasi Object
>>Beres? Belum, ternyata walau pun atribut telah diberi akses 49
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

 Solusinya adalah dengan membuat validasi pada method


getter. Nilai atribut hanya akan berubah jika nilai yang diinput
valid.
 Perubahan method getter.
p u b l i c v o i d s e t Q u i s
( d o u b l e x ) { i f (
x > = 0 & & x < = 1 0 0 )
Q u i s = x ;
}
p u b l i c v o i d s e t U T S (
d o u b l e x ) { i f
( x > = 0 & & x < = 1 0
0 )
U T S = x ;
}
p u b l i c v o i d s e t U A S (
d o u b l e x ) { i f
Pemrograman Berorientasi Object
( x > = 0 & & x < = 1 0 50
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai setelah ada validasi di


method getter
p u b l i c c l a s s N i l a i T e s t e r {
p u b l i c s t a t i c v o i d m a i n ( S t
r i n g [ ] args ) { N i l a i n = n
e w N i l a i (); n . s e t Q u i s
( 9 0 ) ;
n . s e t U T S (70); n
. s e t U A S
( 1 5 0 ) ;
S y s t e m . o u t . p
r i n t l n ( "
 Pada perintahN n.setUAS(150),
A : " + n . g pengisian UAS menjadi 1 5 0
e t N A ( ) ) ;
}
tidak dilakukan karena nilainya tidak valid.
 Jika dieksekusi akan menghasilkan NA : 39.0 karena atribut
}
UAS bernilai 0

Pemrograman Berorientasi Object


51
LATIHAN
Pemrograman Berbasis Objek

 Buatlah suatu class bernama Waktu dengan spesifikasi class


adalah :
 Attribut
 menitWaktu bertipe integer. menitWaktu akan berisi jumlah menit sejak
jam 00.00.
 Method
 getJam() : Mengambil bagian jam dari menitWaktu.
 getMenit() : Mengambil bagian menit dari menitWaktu.
 setJam(int j) : Menambahkan j * 6 0 menit ke menitWaktu tanpa
mempengaruhi bagian menitnya.
 setMenit(int m) : Menambahkan m menit ke menitWaktu
tanpa
mempengaruhi bagian jamnya.
 getTotalMenit() : Mengambil nilai dari menitWaktu

Pemrograman Berorientasi Object


52
LATIHAN
Pemrograman Berbasis Objek

 Method (lanjutan)
 tambahJam(int j) : Menambahkan j * 6 0 ke menitWaktu
 tambahMenit(int m) : Menambahkan m ke menitWaktu
 tambahWaktu(int j, int m) : Menambahkan j *60+ m ke menitWaktu
 tampilWaktu() : Menampilkan jam dan menit.

Pemrograman Berorientasi Object


53
CLASS WAKTUTESTER
Pemrograman Berbasis Objek

p u b l i c class W a k t u T e s t e r {
public s t a t i c v o i d m a i n ( S t r i n
g [ ] args ) {
Waktu
S w o=u tn .ep w
ystem. Waktu
rin t l n ( ();
" T o t a l " + w . g e t T o t a l M e n it
1 . w . s e t J a m ( 1 0 ); Menit : ());
System.out .println ( " " + w . g e t T o t a l M e n it
2 . w . s e t M e n i t (57 ); T o t a l ());
System.out .println ( " " + w . g e t T o t a l M e n it
3 . w . t a m p i l W a ktu (); Menit : T o t ());
w . t a m b a h J a m (7 );
System.out .println ( " a
J l
A MMenit
" + w: . g e t J a m () : "+ w . g e t M e n i t ( )
4 . w . t a m b a h M e nit (40 : +" MENIT ) ;
); J A M " + w . g e t J a m () : "+ w . g e t M e n i t ( )
} System.out .println ( " : +" MENIT ) ;
} 5 .
1. Total Menit : 0
2. Total Menit : 600
3. Total Menit : 657
Waktu : 10:57
4. JAM : 17 MENIT : 57
Pemrograman Berorientasi 5. JAM : 18 MENIT : 37 50
Object
PART III
INHERITANCE

O
51
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

 Inheritance adalah salah satu fitur utama dari OOP.


 Inheritance adalah proses dimana sebuah class mendapatkan
proper ti (atribut + method) dari class lain.
 Dengan inheritance, sebuah class dapat dikembangkan
menjadi class baru yang lebih lengkap/baik.
 Class yang diturunkan disebut sebagai superclass ( base
class
atau parent class) dan class yang menjadi turunan disebut
sebagai subclass(derived class , extended class , atau child
class).
 Inheritance dilakukan dengan keyword extends .
 Class paling atas adalah class bernama Object.

Pemrograman Berorientasi Object


56
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Contoh :
- (private)
+ (public)
# (protected)

Pemrograman Berorientasi Object


57
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class
Binatang
Setiap Binatang
package pewarisan;
public class Binatang { mempunyai kesamaan,
private String nama;
public void setNama(String n){
yaitu mempunyai
nama=n; nama dan dapat
}
public String getNama(){
bersuara.
return nama;
}
public void bersuara(){
System.out.println(getNama()+" sedang bersuara.");
}
}

Pemrograman Berorientasi Object


58
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

• >>Class BinatangTester
package pewarisan;

public class BinatangTester {


public static void main(String[] args) { Binatang a;
a=new Binatang();
a.setNama("kuda"); a.bersuara();
}
}
Tampilan hasil run :
kuda sedang bersuara.

Pemrograman Berorientasi Object


59
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>> Class Burung


package pewarisan;

public class Burung extends Binatang {


public void bertelur()
{ System.out.println(getNama()+" sedang
bertelur");
}
public void terbang()
{ System.out.println(getNama()+" sedang
terbang");
}
Burung adalah Binatang (mempunyai nama dan
}
bersuara) yang dapat bertelur dan terbang.
Method bertelur dan terbang adalah method
tambahan
yang dapat dilakukan oleh class Burung.
Pemrograman Berorientasi Object
60
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class BurungTester
package pewarisan;

public class BurungTester {


public static void main(String[] args) {
Burung b;
b=new Burung();
b.setNama("Pipit");// diturunkan dari
b.bersuara();
Binatang // diturunkan dari Binatang
b.bertelur(); // ditambahkan di Burung
b.terbang(); // ditambahkan di Burung
}
}
Hasil Run :
Pipit sedang bersuara.
Pipit sedang bertelur
Pipit sedang terbang
Oleh : Andri Heryandi, M.T. 57
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Mamalia
package pewarisan;

public class Mamalia extends Binatang {


public void melahirkan(){
System.out.println(getNama()+" sedang melahirkan.");
}
public void berjalan(){
System.out.println(getNama()+" sedang berjalan");
}
}

Mamalia adalah Binatang (mempunyai nama dan


bersuara) yang dapat melahirkan dan berjalan.
Method melahirkan dan berjalan adalah method
tambahan yang dapat dilakukan oleh class
Mamalia.
Pemrograman Berorientasi 58
Object
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class MamaliaTester
package pewarisan;

public class MamaliaTester {


public static void main(String[] args) {
Mamalia m;
m=new Mamalia();
m.setNama("kuda"); // diturunkan dari
m.bersuara();
Binatang // diturunkan dari Binatang
m.berjalan(); // ditambahkan di Mamalia
m.melahirkan(); // ditambahkan di Mamalia
}
}
Hasil Run :
kuda sedang bersuara.
kuda sedang berjalan
kuda sedang melahirkan.
Oleh : Andri Heryandi, M.T. 59
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Elang
package pewarisan;

public class Elang


extends Burung {

Elang adalah Burung. Asumsikan bahwa Elang tidak


mempunyai perbedaan dari burung secara umum
(general) [hanya punya nama dan bersuara].

Pemrograman Berorientasi 64
Object
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

• >>Class ElangTester
package pewarisan;

public class ElangTester {


public static void main(String[] args) { Elang e=new
Elang(); e.setNama("Elang");
e.bersuara(); // Diturunkan dari Binatang
e.bertelur(); // Diturunkan dari Burung
e.terbang(); // Diturunkan dari Burung
}
}
Hasil Run :
Elang sedang bersuara.
Elang sedang bertelur
Elang sedang terbang

Pemrograman Berorientasi 65
Object
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Kakaktua
package pewarisan;

public class Kakaktua extends Burung {


public void bersuara(String s)
{ System.out.println(getNama()+" bersuara :
"+s);
}
}

Kakaktua adalah Burung. Tetapi cara bersuara burung


kakaktua dapat meniru ucapan manusia. Oleh karena itu
method bersuara yang diturunkan dari superclassnya
harus dioverride(diganti) sehingga menghasilkan
operasi/perilaku yang berbeda dari superclassnya.
Pemrograman Berorientasi 66
Object
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class KakaktuaTester
package pewarisan;

public class KakaktuaTester {


public static void main(String[] args) {
Kakaktua k=new Kakaktua();
k.setNama("Kakaktua"); // diturunkan
k.bertelur();
dari Binatang // diturunkan dari Burung
k.terbang(); // diturunkan dari Burung
k.bersuara(); // diturunkan dari Binatang
k.bersuara("Selamat Datang ");// override di Kakaktua
}
} Hasil Run :
Kakaktua sedang bertelur
Kakaktua sedang terbang
Kakaktua sedang bersuara.
Kakaktua bersuara :
Selamat Datang
Pemrograman Berorientasi 67
Object
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Kuda
package pewarisan;

public class Kuda


extends Mamalia {
public
void
berjalan()
{
Sys
tem
} .ou
Kuda adalah t.p Mamalia yang dapat berjalan dan berlari.
Bedanyarin ketika kuda berjalan mengeluarkan suara “Tuk
tln
tik tak tik (getuk tik tak”, dan kelebihan lain dari kuda
tNa
adalah dapat ma(
berlari.
)+
Pemrograman Berorientasi 68
Object "
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class KudaTester
package pewarisan;

public class KudaTester {


public static void main(String[] args) {
Kuda k=new Kuda();
k.setNama("Si Hitam");// diturunkan dari Binatang
k.bersuara(); // diturunkan dari
Binatang k.melahirkan(); // diturunkan dari
k.berjalan(); // override di Kuda
Mamalia
k.berlari(); // tambahan di Kuda
}
} Hasil Run :
Si Hitam sedang bersuara.
Si Hitam sedang melahirkan.
Si Hitam berjalan : Tuk tik tak tik tuk tik tak
Si Hitam sedang berlari
Pemrograman Berorientasi Object 69
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Sapi
package
pewarisan;

public class Sapi


extends Mamalia {
public
void
bersuara(
Sapi
){ adalah Mamalia (biasa) yang kalau bersuara
mengeluarkan
Syste
m.out
suara “Moooooooooo”. Karena itu maka
method .prin bersuara di class Sapi akan mengoverride fungsi
bersuara
tln(gdari class Binatang.
etNam
a()+"
bersu
ara :
PemrogramanMoooo
Berorientasi 70
Object ooooo
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

• >>Class SapiTester
•package pewarisan;

•public class SapiTester {


• public static void main(String[] args) { Sapi
s=new Sapi();
• s.setNama("Si Mooo"); s.berjalan();
s.melahirkan(); s.bersuara();
• }
}
Hasil Run :
Si Mooo sedang berjalan
Si Mooo sedang melahirkan.
Si Mooo bersuara : Moooooooooo

Pemrograman Berorientasi 71
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

 Constructor tidak diturunkan ke subclass, tetapi constructor


dapat dipanggil dari subclass dengan menggunakan keyword
super.
 Keyword super tidak hanya digunakan untuk memanggil
constuctor tetapi dapat juga digunakan untuk memanggil
method yang ada di superclass.
 Cara pemanggilannya
 Untuk constructor : super(), atau super(daftar_parameter)
 Untuk method : super.namamethhod(daftar_parameter)

Pemrograman Berorientasi 72
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

 Contoh :
 Class Waktu2 merupakan turunan dari class Waktu yang mempunyai
atribut baru bernama detik.

Pemrograman Berorientasi 73
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class Waktu
package pewarisan; Class Waktu mempunyai 2 buah
public class Waktu {
constructor yaitu :
private int jam; 1. Constructor tanpa
private int menit; parameter
2. Constructor dengan parameter
public Waktu(){
jam=0;
j (jam) dan m (menit).
menit=0;
}
public Waktu(int j, int m){
jam=j;
menit=m;
}

Pemrograman Berorientasi 74
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class Waktu
public void setJam(int jam){ Perhatikan pada method setJam.
this.jam=jam; Method ini memiliki parameter input
}
bernama jam. Class waktu juga
public int getJam(){
return jam;
mempunyai atribut bernama jam.
} Untuk membedakan jam dari
public void setMenit(int menit){ parameter dan jam milik atribut class,
this.menit=menit; gunakan keyword this.
} Keyword this menyatakan “milik class
public String getWaktu() ini”.
{ return
jam+":"+menit;
Pernyataan “this.jam=jam” berarti
} }
atribut jam milik class ini diisi dengan
jam dari parameter.

Begitu pula untuk method setMenit.


Pemrograman Berorientasi 75
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class WaktuTester
package pewarisan; Hasil Run :
W1 : 0:0
public class WaktuTester {
public static void main(String[] args) { W2 : 5:7
Waktu w1, w2;
w1=new Waktu(); // memanggil constructor tanpa parameter
System.out.println("W1 : "+w1.getWaktu());
w2=new Waktu(5,7);// memanggil constructor dengan parameter
System.out.println("W2 : "+w2.getWaktu());
}
}

Pemrograman Berorientasi 76
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class Waktu2
package pewarisan;

public class Waktu2 extends Waktu {


private int detik;
public Waktu2(){
super();// memanggil constructor class super tanpa parameter
detik=0;
}
public Waktu2(int j, int m, int d){
super(j,m); // memanggil construktor class super yang menggunakan
parameter
detik=d;
}

Pemrograman Berorientasi 77
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class Waktu2Tester
public void setDetik(int detik){
this.detik=detik;
}
public int getDetik(){
return this.detik; // sama saja
dengan return detik;
}
public String getWaktu(){
return super.getWaktu()
+":"+detik;
// atau return getJam()
+":"+getMenit()+":"+detik;
}
}

Pemrograman Berorientasi 78
Object
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

>>Class
Waktu2
Hasil Run :
package pewarisan; W1 : 0:0:0
public class Waktu2Tester {
W2 : 10:12:20
public static void main(String[] args) {
Waktu2 w1,w2;
w1=new Waktu2();
System.out.println("W1 : "+w1.getWaktu());
w2=new Waktu2(10,12,20);
System.out.println("W2 : "+w2.getWaktu());
}
}

Pemrograman Berorientasi 79
Object
POLYMORPH
Pemrograman Berbasis Objek

 Polymorph ( mempunyai banyak bentuk).


 Jenis-jenis polymorph bisa terjadi adalah :
 Polymorph Ad Hoc
 Polymorph Subtyping

Pemrograman Berorientasi 80
Object
POLYMORPH
Pemrograman Berbasis Objek

Polymorph Ad Hoc terjadi ketika memiliki sebuah method yang


akan mempunyai operasi yang berbeda ketika dipanggil dengan
tipe parameter yang berbeda.
package pewarisan; Class Polymorph
mempunyai 2 buah method
public class Polymorph {
public int tambah(int x, int y){
yang namanya sama yaitu
return x+y; “tambah”, tetapi dibedakan
} dengan parameternya.
public String tambah(String x, String y){
return x+" "+y;
}
}

Pemrograman Berorientasi 81
Object
POLYMORPH
Pemrograman Berbasis Objek

>>Class PolymorphTester
package pewarisan;

public class PolymorphTester {

public static void main(String[] args) {


Polymorph p=new Polymorph();
System.out.println("2 + 3 = "+p.tambah(2, 3));
System.out.println("\"2\" + \"3\" = "+p.tambah("2", "3"));
}
} Hasil Run :
2 + 3 = 5
"2" + "3" = 2 3

Pemrograman Berorientasi 82
Object
POLYMORPH
Pemrograman Berbasis Objek

Polymorph Subtyping terjadi sebuah referensi dari sebuah class


diakses dengan menggunakan referensi subclassnya.
package pewarisan; Seluruh objek menggunakan
superclass. Tetapi tetap akan
public class PolySubtype {
mengeksekusi method masing-
public static void main(String[] args) {
Binatang
masing class.
elang,kakaktua,kuda,sapi;
elang=new Elang();elang.setNama("Elang");
kakaktua=new Kakaktua();kakaktua.setNama("Kakaktua");
kuda=new Kuda();kuda.setNama("Si Pony");
sapi=new Sapi();sapi.setNama("Si Mooo");
elang.bersuara();
kakaktua.bersuara(); Hasil Run :
kuda.bersuara(); Elang sedang bersuara.
sapi.bersuara(); Kakaktua sedang bersuara.
} Si Pony sedang bersuara.
} Si Mooo bersuara :
Moooooooooo
Pemrograman Berorientasi 83
Object
POLYMORPH
Pemrograman Berbasis Objek

Contoh Lain :

package pewarisan; Method bicara membutuhkan


public class PolySubtype2 { parameter dengan class
static void bicara(Binatang b){
Binatang.
b.bersuara();
}
public static void main(String[] args) {
Elang e=new Elang();e.setNama("Hunter");
Pemanggilan Kakaktua k=new Kakaktua();k.setNama("Oces");
method Bicara Kuda kd=new Kuda();kd.setNama("Blacky");
menggunakan Sapi s=new Sapi();s.setNama("Moooo");
parameter bicara(e);
subclass dari bicara(k); Hasil Run :
Binatang. bicara(kd); Hunter sedang bersuara.
bicara(s); Oces sedang bersuara.
} Blacky sedang bersuara.
}
Pemrograman Berorientasi
Moooo bersuara : Moooooooooo 80
Object
PART IV
(ABSTRACT)

O
81
ABSTRACT
Pemrograman Berbasis Objek

 Class abstract adalah class yang tidak dapat diinstansiasikan .


 Semua member dari class tetap ada tetapi tidak bisa
diinstansikan .
 Jika class abstract ingin diinstansiasikan , maka harus
diturunkan terlebih dahulu ke subclassnya.
 Abstract dapat digunakan pada level Class atau
Method.
 Untuk menyatakan sebuah class adalah class abstract,
tambahkah keyword abstract ketika mendefinisikan
class.
 Class abstract dikembangkan dengan keyword
extends.
 Abstract terjadi ketika seorang pendesain sistem baru
memikirkan rencana method yang ada tetapi belum terlalu
Pemrograman Berorientasi Object
memperdulikan bagaimana implementasinya. 86
CLASS ABSTRACT
Pemrograman Berbasis Objek

>>Contoh Class biasa


public class Pegawai {
private String NIP;
private String nama;
public Pegawai(String nama, String NIP){
this.nama=nama;
this.NIP=NIP;
}
public String getNama(){
return nama;
}
public String getNIP(){
return NIP;
}
public void kirimEmail(String to, String subjek, String isi)
{ System.out.println(getNama()+" Kirim email ke : "+to+"\
n"+
"Dengan Subjek : "+subjek+"\n"+
"Dengan Isi

: "+isi);
Pemrograman Berorientasi Object
} 87
}
CLASS ABSTRACT
Pemrograman Berbasis Objek

>>Contoh Class Abstract


public abstract class Pegawai {
private String NIP;
private String nama;
public Pegawai(String nama, String NIP){
this.nama=nama;
this.NIP=NIP;
}
public String getNama(){
return nama;
}
public String getNIP(){
return NIP;
}
public void kirimEmail(String to, String subjek, String isi)
{ System.out.println(getNama()+" Kirim email ke : "+to+"\
n"+
"Dengan Subjek : "+subjek+"\n"+
"Dengan Isi

: "+isi);
Pemrograman Berorientasi Object
} 88
}
CLASS ABSTRACT
Pemrograman Berbasis Objek

>>Contoh Class Tester


public class PegawaiTester {

public static void main(String[] args)


{ Pegawai p=new
Pegawai("Januar","1234");
p.kirimEmail("[email protected]","judul","isi email");
}

>>Jika di-run akan menghasilkan error:

Exception in thread "main" java.lang.Error: Unresolved


compilation problem:
Cannot instantiate the type Pegawai

at PegawaiTester.main(PegawaiTester.java:5)

Pemrograman Berorientasi Object


89
CLASS ABSTRACT
Pemrograman Berbasis Objek

>>Menurunkan Class Abstract

public class Staff extends Pegawai {


private String bagian;
public Staff(String nama, String NIP, String bagian){
super(nama,NIP);
setBagian(bagian);
}
public void setBagian(String namabagian){
bagian=namabagian;
}
public String getBagian(){
return bagian;
}
}

Pemrograman Berorientasi Object


90
CLASS ABSTRACT
Pemrograman Berbasis Objek

>>Test kelas turunan


public class StaffTester {
public static void main(String[] args) {
Staff s=new Staff("Januar","1234","Keuangan");
s.kirimEmail("[email protected]", "info test", "isi email");
System.out.println("NIP : "+s.getNIP()+"\
n"+
"Nama :
"+s.getNama()+"\n"+
"Bagian : "+s.getBagian());

}
}
Januar Kirim email ke :
>>Tampilan Output :
[email protected] Dengan Subjek : info
test
Dengan Isi : isi
email NIP : 1234
Nama : Januar
Bagian : Keuangan
Pemrograman Berorientasi Object
91
METHOD ABSTRACT
Pemrograman Berbasis Objek

 Method abstract adalah suatu metode di dalam class abstract


yang belum ditentukan isinya (hanya nama method dan
parameternya saja).
 Method abstract harus diimplementasikan (ditulis isi
methodnya) di subclassnya.

Pemrograman Berorientasi Object


92
METHOD ABSTRACT
Pemrograman Berbasis Objek

>>Class Pegawai
public abstract class Pegawai {
private String NIP;
private String nama;
public Pegawai(String nama, String NIP){
this.nama=nama;
this.NIP=NIP;
} Hanya mendeklarasikan
public String getNama(){ nama method dan parameter
return nama;
} (tanpa isi method)
public String getNIP(){
return NIP;
}
public abstract void kirimEmail(String to, String subjek, String isi);
}

Pemrograman Berorientasi Object


93
METHOD ABSTRACT
Pemrograman Berbasis Objek

>>Isi method abstract dikembangkan di sub class


public class Staff extends Pegawai {
private String bagian;
public Staff(String nama, String NIP, String bagian){
super(nama,NIP);
setBagian(bagian);
}
public void setBagian(String namabagian){
bagian=namabagian;
} Isi method dikembangkan
public String getBagian(){ di subclass.
return bagian;
}
public void kirimEmail(String to, String subjek, String isi){
System.out.println("Kirim ke "+to+" dengan judul "+
subjek+" dengan isi : "+isi);
}
}

Pemrograman Berorientasi Object


94
PART IV
(INTERFACE) 06

O
91
INTERFACE
Pemrograman Berbasis Objek

 Inter face adalah sekumpulan method abstract.


 Inter face adalah kontrak interaksi objek dengan dunia luar.
 Class dapat mengembangkan sebuah inter face dengan cara
mengimplementasikannya .
 Cara menuliskan inter face mirip dengan cara menuliskan
class, tetapi inter face bukanlah class.
 Perbedaan inter face dengan class:
 Interface dikembangkan dengan keyword implements
 Class dikembangkan/diturunkan dengan keyword extends
 Semua method yang ada di interface WAJIB diimplementasikan
di
class yang mengimplementasikannya.
 Setiap method yang ada di interface harus diimplementasikan,
sedangkan pada class tidak semua method harus dioverride.
Pemrograman Berorientasi Object
96
CONTOH KASUS INTERFACE
Pemrograman Berbasis Objek

 Kita ingin membuat sebuah aplikasi untuk menghitung luas dan


keliling dari berbagai bidang 2 Dimensi. Di setiap bidang 2 Dimensi
pasti memiliki 2 method yang sama yaitu getLuas dan getKeliling .
Tetapi implementasi/isi dari kedua method ter sebut berbeda - beda
untuk setiap jenis bidangnya .
 Persegipanjang
 Attribut : panjang, lebar
 Luas : panjang *lebar
 Keliling : 2 * (panjang + lebar)
 Bujursangkar
 Attribut : sisi
 Luas : sisi * sisi
 Keliling : 4 * sisi
 Lingkaran
 Attribut : radius
 Luas : pi * radius * radius
 Keliling : 2 * pi * radius
Pemrograman Berorientasi Object
97
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Inter face Bidang2D


public interface Bidang2D {
double
getKeliling();
double getLuas();
}

Pemrograman Berorientasi Object


98
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Inter face Bidang2D


public interface Bidang2D {
double
getKeliling();
double getLuas();
}

Pemrograman Berorientasi Object


99
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Mengimplementasikan Inter face Bidang2D sebagai


Persegipanjang
public class Persegipanjang implements Bidang2D {
public double panjang;
public double lebar;
public double getKeliling()
{ return
2*(panjang+lebar);
}
public double getLuas()
{ return
panjang*lebar;
}
}
Pemrograman Berorientasi Object
100
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Mengimplementasikan Inter face Bidang2D


sebagai Bujursangkar
public class Bujursangkar implements Bidang2D {
public double sisi;
public double getKeliling(){
return 4*sisi;
}
public double getLuas(){
return sisi*sisi;
}
}

Pemrograman Berorientasi Object


101
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Mengimplementasikan Inter face Bidang2D sebagai


Lingkaran

public class Lingkaran implements Bidang2D {


public double radius;
public double getKeliling()
{ return
2*Math.PI*radius;
}
public double getLuas(){
return Math.PI*radius*radius;
}
}

Pemrograman Berorientasi Object


102
CONTOH INTERFACE
Pemrograman Berbasis Objek

>> Class Tester : Bidang2DTester


public class Bidang2DTester {
public static void main(String[] s)
{ Lingkaran l=new Lingkaran();
Bujursangkar b=new Bujursangkar();
Persegipanjang p=new Persegipanjang();
l.radius=10;
System.out.println("Lingkaran dengan radius "+l.radius);
System.out.println("Luas : "+l.getLuas()+" Keliling : "+
l.getKeliling());
b.sisi=15;
System.out.println("Bujursangkar dengan sisi "+b.sisi);
System.out.println("Luas : "+b.getLuas()+" Keliling : "+
b.getKeliling());
p.panjang=5;
p.lebar=6;
System.out.println("Persegi dengan panjang : "+p.panjang+
" lebar : "+p.lebar);
System.out.println("Luas : "+p.getLuas()+" Keliling : "+
p.getKeliling());
}
} Pemrograman Berorientasi 99
Object
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Hasil run Bidang2DTester :


Lingkaran dengan radius 10.0
Luas : 314.1592653589793 Keliling : 62.83185307179586
Bujursangkar dengan sisi 15.0
Luas : 225.0 Keliling : 60.0
Persegi dengan panjang : 5.0
lebar : 6.0
Luas : 30.0 Keliling : 22.0

Pemrograman Berorientasi Object 104


CONTOH INTERFACE
(POLYMORPH)
Pemrograman Berbasis Objek

>> Class Tester : Bidang2DTesterPoly


public class Bidang2DTesterPoly {
public static void main(String[] args) {
Bidang2D bidang;
Lingkaran l=new Lingkaran();l.radius=10;
Bujursangkar b=new Bujursangkar();b.sisi=15;
bidang=l; // bidang2d sebagai lingkaran
System.out.println("Luas : "+bidang.getLuas()+"
Keliling : "+
bidang.getKeliling());
bidang=b; // bidang2d sebagai bujursangkar
System.out.println("Luas : "+bidang.getLuas()+" Keliling : "+
bidang.getKeliling());
}
} Hasil Run:
Luas : 314.1592653589793
Keliling : 62.83185307179586
Luas : 225.0 Keliling : 60.0
Pemrograman Berorientasi Object 105
IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek

 Di Java, sebuah kelas hanya boleh menjadi turunan dari 1


superclass. Tidak ada multiple-inheritance di java. Tapi Java
memperbolehkan sebuah class mengimplementasikan lebih
dari inter face.
 Contoh :
 Class Mobil mempunyai method berjalan();
 Class Helikopter mempunyai method Terbang();
 Class Mobikopter (gabungan mobil dan helikopter) seharusnya
memiliki kedua method tersebut.

Pemrograman Berorientasi Object 106


IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek

>>Inter face Mobil


public interface Mobil {
void berjalan();
// dan method-method lainnya
}
>>Inter face Helikopter
public interface Helikopter {
void terbang();
// dan method-method lainnya
}

Pemrograman Berorientasi Object 107


IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek

>>Class Mobikopter
public class Mobikopter implements Mobil, Helikopter{
private String nama;
Mobikopter(String nama){
this.nama=nama;
}
public void berjalan(){
System.out.print
ln(nama+" sedang
berjalan");
}
public void terbang(){
System.out.print
ln(nama+" sedang
terbang");
}
}

Pemrograman Berorientasi Object 108


IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek

>>Class MobikopterTester
public class MobilkopterTester {
public static void main(String[] args)
{ Mobikopter m=new
Mobikopter("Moko"); m.berjalan();
m.terbang();
}
}

Hasil Run:
Moko sedang berjalan
Moko sedang terbang

Pemrograman Berorientasi Object 109


PART IV
(FINAL) 06

O
106
FINAL
Pemrograman Berbasis Objek

 Keyword final digunakan untuk menyatakan bahwa sebuah


class/atribut/method tidak boleh lagi diubah-ubah (termasuk
di subclassnya).
 Keyword final dapat digunakan dalam
 Atribut
Jika atribut suatu class beri keyword final, maka atribut tersebut akan
berperan sebagai konstanta (dimana nilainya tidak boleh diubah-ubah lagi).
 Method
Jika sebuah method yang ada di suatu class diberi keyword final, maka
method tersebut tidak bisa dioverride di subclassnya.
 Class
Jika sebuah class diberi keyword final maka class tersebut tidak bisa
lagi
diturunkan.

Pemrograman Berorientasi Object 111


FINAL ATRIBUT/METHOD
Pemrograman Berbasis Objek

>>Class MyMath Atribut dari class


public class MyMath { MyMath tidak bisa
public final double PI=3.1416;// empat digit pecahan
public final double luasLingkaran(double radius){ diubah dari mana pun
return PI*radius*radius; termasuk dari class
} dirinya sendiri
public final double kelilingLingkaran(double radius){
return 2*PI*radius;
}
public final double sin(double derajat){
return Math.sin(Math.toRadians(derajat)); Method dari class
}
public final double cos(double derajat){ MyMath tidak bisa
return Math.cos(Math.toRadians(derajat)); dioverride di subclass
}
public final double tan(double derajat){
walau pun classnya
return Math.tan(Math.toRadians(derajat)); boleh di-extends
} (diturunkan)
public final double pangkat(double x, double y){
return Math.pow(x, y);
}
}
Pemrograman Berorientasi Object 112
FINAL CLASS
Pemrograman Berbasis Objek

>>Class MyMath Class MyMath tidak bisa


public final class MyMath { di-extends ke subclass.
public final double PI=3.1416;// empat digit pecahan
public final double luasLingkaran(double radius){
return PI*radius*radius;
}
public final double kelilingLingkaran(double radius){
return 2*PI*radius;
}
public final double sin(double derajat){
return Math.sin(Math.toRadians(derajat));
}
public final double cos(double derajat){
return Math.cos(Math.toRadians(derajat));
}
public final double tan(double derajat){
return Math.tan(Math.toRadians(derajat));
}
public final double pangkat(double x, double y){
return Math.pow(x, y);
}
}
Pemrograman Berorientasi Object 113
FINAL ATRIBUT/METHOD
Pemrograman Berbasis Objek

>>Class MyMathTester
public class MyMathTester {
public static void main(String[] args) {
MyMath m=new MyMath();
System.out.println("PI : "+m.PI);
// m.PI=25.0; // pasti error
System.out.println("Luas Lingkaran : "+m.luasLingkaran(10));
System.out.println("Keliling Lingkaran : "+
m.kelilingLingkaran(10));
System.out.println("Sin(30) : "+m.sin(30));
System.out.println("Cos(30) : "+m.cos(30));
System.out.println("Tan(30) : "+m.tan(30));
System.out.println("2^8 : "+m.pangkat(2,8));
}
} Hasil Run:
PI : 3.1416
Luas Lingkaran : 314.16
Keliling Lingkaran : 62.832
Sin(30) : 0.49999999999999994
Cos(30) : 0.8660254037844387
Tan(30) : 0.5773502691896257
Pemrograman Berorientasi 2^8 : 256.0 110
Object
PART IV
(STATIC) 06

O
111
STATIC
Pemrograman Berbasis Objek

 Keyword static digunakan untuk menyatakan bahwa sebuah


member (atribut/method) akan ada/aktif secara independen
walaupun classnya tidak diinstansiasi.
 Contoh atribut/method static adalah atribut/method yang ada di
class Math. Kita tidak harus menginstansiasi class ini untuk
menjadi objek , tetapi kita bisa gunakan atribut/methodnya
(Math.PI, Math.sin(), Math.cos() dll).
 Atribut/Method static tidak dimiliki oleh object, tetapi oleh
classnya.
 Keyword static dapat digunakan dalam
 Atribut
Jika atribut suatu class beri keyword static, maka atribut tersebut akan dapat
diakses dari mana pun tanpa harus diinstansiasikan.
 Method
Jika sebuah method yang ada di suatu class diberi keyword static maka method
tersebut akan dapat diakses dari mana pun tanpa harus diinstansiasikan
classnya.

Pemrograman Berorientasi Object 116


STATIC
Pemrograman Berbasis Objek

>>Atribut/Method static dipanggil dengan menyebutkan nama


classnya diikuti dengan nama atribut/methodnya.
Contoh :
NamaClass.NamaAtribut
NamaClass.NamaMethod()

Contoh :
Math.PI
Math.sin()

Math.cos()

Pemrograman Berorientasi Object 117


STATIC
Pemrograman Berbasis Objek

>>Class MyMath
public final class MyMath {
public static final double PI=3.1416;
public static double luasLingkaran(double radius){
return PI*radius*radius;
}
public static double kelilingLingkaran(double radius){
return 2*PI*radius;
}
public static double sin(double derajat){
return Math.sin(Math.toRadians(derajat));
}
public static double cos(double derajat){
return Math.cos(Math.toRadians(derajat));
}
public static double tan(double derajat){
return Math.tan(Math.toRadians(derajat));
}
public static double pangkat(double x, double y){
return Math.pow(x, y);
}
}
Pemrograman Berorientasi Object 118
STATIC
Pemrograman Berbasis Objek

>>Contoh penggunaan Atribut/Method Static


public class MyMathTester {
public static void main(String[] args)
{ System.out.println("PI :
"+MyMath.PI);
System.out.println("Luas Lingkaran : "+MyMath.luasLingkaran(10));
System.out.println("Keliling Lingkaran : "+MyMath.kelilingLingkaran(10));
System.out.println("Sin(30) : "+MyMath.sin(30));
System.out.println("Cos(30) : "+MyMath.cos(30));
System.out.println("Tan(30) : "+MyMath.tan(30));
System.out.println("2^8 : "+MyMath.pangkat(2,8));
}
}
Hasil Run:
PI : 3.1416
Luas Lingkaran : 314.16
Keliling Lingkaran : 62.832
Sin(30) : 0.49999999999999994
Cos(30) : 0.8660254037844387
Tan(30) : 0.5773502691896257
2^8 : 256.0

Pemrograman Berorientasi Object 119


JENIS – JENIS VARIABLE
Pemrograman Berbasis Objek

 Jenis-jenis variable di Java terbagi 3 yaitu


 Variable local
Variable yang ada di dalam constructor atau
method. Hanya dikenal secara local di method
tempat variable tersebut dideklarasikan.
 Variable instance
JANGAN
Variable yang menjadi dideklarasikan di dalam kelas
TERTUKAR!!!!
tetapi berada di luar pendefinisian
method/constructor. Variable ini dimiliki oleh setiap !!
objek (menjadi atribut dari objek). Beda objek bisa
memiliki nilai variable yang berbeda.
 Variable class/static
Variable class/static adalah variable yang
dideklarasikan dengan keyword static. Variable ini
akan dapat diakses walaupun classnya tidak
diinstansiasikan.

Pemrograman Berorientasi Object 120


JENIS – JENIS VARIABLE
Pemrograman Berbasis Objek

>>Contoh Class :
public class MyVar {
public static int myStatic;
Variable Static
public int myInstance;
private String myName;
public void test(){ Variable Instance
int i;
i=0;
for(int j=1;j<=10;j++){ Variable Local
i+=2;
}
myInstance=i;
}
}

Pemrograman Berorientasi Object 121

Anda mungkin juga menyukai