0% menganggap dokumen ini bermanfaat (0 suara)
42 tayangan141 halaman

Object Oriented Programming New OOP

Dokumen tersebut membahas tentang pemrograman berbasis objek (OOP) dengan menjelaskan definisi OOP, contoh-contoh penerapan OOP dalam kehidupan sehari-hari, karakteristik utama OOP seperti klas, objek, encapsulation, inheritance, dan polymorphism, serta contoh pembuatan klas sederhana dalam bahasa pemrograman.

Diunggah oleh

havid556
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)
42 tayangan141 halaman

Object Oriented Programming New OOP

Dokumen tersebut membahas tentang pemrograman berbasis objek (OOP) dengan menjelaskan definisi OOP, contoh-contoh penerapan OOP dalam kehidupan sehari-hari, karakteristik utama OOP seperti klas, objek, encapsulation, inheritance, dan polymorphism, serta contoh pembuatan klas sederhana dalam bahasa pemrograman.

Diunggah oleh

havid556
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/ 141

OBJECTORIENTED

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.

2
OOP Intrductions
Apa itu PBO?

Sudut pandang dan style pemrograman berhubungan dengan bagaimana


sebuah masalah diformulasikan dalam bahasa pemrograman
1. Functional Programming: Urutan fungsi secara
sekuensial (Scheme, Lisp)
2. Procedural Programming: Pemecahan
masalah berdasarkan prosedural kerja yg
terkumpul dalam unit pemrograman bernama
fungsi (C, Pascal)
3. Object-Oriented Programming: Koleksi object
yang saling berinteraksi . Class adalah unit
pemrograman (Java, C#, C++)
Bahasa Pemrograman?
•Komputer bekerja seperti switching dan hanya
mengenali 0 dan 1
•Manusia tidak (paham) berbicara dengan
bahasa 0 dan 1
•Perlu bahasa pemrograman yang dapat
menjadi perantara percakapan antara
komputer dan manusia
•Bahasa pemrograman diubah ke dalam bahasa
yang dipahami oleh komputer dengan
menggunakan interpreter atau kompiler
Compiler or Interpreter?
1. Compiler:
Mengkompilasi source code
menjadi bentuk file yang bisa
dieksekusi

2. Interpreter:
Mengkompilasi dan menjalankan
source code secara langsung
Tingkat Bahasa Pemrograman
1. Bahasa Pemrograman Tingkat Rendah
(Assembler)
2. Bahasa Pemrograman Tingkat Sedang
(C, Pascal, Fortran)
3. Bahasa Pemrograman Tingkat Tinggi
(Java, C++, C#)
Why Java?
•Simple and familiar object oriented
programming
•Architecture neutral (platform independent)
•Open Source
•First rank in TIOBE Index
•De-Facto standard programming language in
education
Java Family Suite

1. Java Standard Edition


(Java SE)
v For desktop, client/server
application

2. Java Enterprise Edition


(Java EE)
v For e-business, e-commerce
web based application

3. Java Micro Edition


(Java ME)
v For small devices, like palm,
handphone, etc
C Language (Compiler)

#include <stdio.h>
000101000011
001010000100
main() 010010010101
{ C Compiler 010101010010
printf(“Hallo”);
}

Machine language program


C Program (executable “.exe” file)
Java Language (Compiler + Interpreter)
javac java
(Java Compiler) (Java Interpreter)
Sejarah
• James JavaMike Sheridan, and Patrick Naughton
Gosling,
initiated the Java language project in June 1991
• The language was initially called Oak after an oak tree that
stood outside Gosling's office
• It went by the name Green later, and was later renamed
Java, from a list of random words
• Gosling aimed to implement a virtual machine and a
language that had a familiar C/C++ style of notation
• Sun Microsystems released the first public implementation
as Java 1.0 in 1995
• On May 8, 2007, Sun finished the process, making all of
Java's core code available under free software/open-source
distribution terms (GNU Public License)
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,

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

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

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

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

18
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

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

20
CONTOH PENGGUNAAN CLASS
Pemrograman Berbasis Objek

p ubli c c lass Test Str ing {


pu bli c sta tic voi d mai n(St rin g[] a rgs ) {
S trin g n ama =" Univ ers itas Komp ute r Ind ones ia" ;
S yste m.o ut.pr intl n (" ISI S TRIN G : "+ na ma );
S yste m.o ut.pr intl n (" Panja ng S : "+ na ma.l eng th ()) ;
yste m.o ut.pr intl n (" Upper Cas e : "+ na ma.t oUp perCa se () );
S yste m.o ut.pr intl n (" Lower Cas e : "+ na ma.t oLo werCa se () );
S yste m.o ut.pr intl n (" =UNIK OM : "+ na ma.e qua ls ("U NIKO M") );
}
}

ISI STRING : Universitas Komputer Indonesia


Panjang : 30
Upper Case : UNIVERSITAS KOMPUTER INDONESIA
Lower Case : universitas komputer indonesia
=UNIKOM : false

23
MEMBUAT CLASS SEDERHANA
Pemrograman Berbasis Objek

>>Sintak pembuatan class sederhana


class NamaKelas { Daftar Attribut
tipe_data nama_atribut ;
tipe_data nama_atribut ;
nama_kelas nama_object ; Daftar Method
(Procedure/Function
NamaKelas (parameter){
… // isi konstruktor /Constructor)
}
void nama_method (parameter){
… / / isi method berbentuk procedure
}
tipe_data nama_method_function (paramter ){
… // isi method berbentuk function
return ….;
}
}

24
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

¡Buatlah sebuah class bernama Titik yang digunakan untuk


menyimpan sebuah titik koordinat.
§ Setiap titik mempunyai atribut posisi Xdan attribut posisi Y.
§ Class ini harus dapat melakukan hal berikut :
§ Memberikan nilai default (X=0, Y=0) ketika X dan Ybelum 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

25
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

class T i t i k {
doubl e x ;
doubl e y ;
Titik (){
x=0;
y=0;
}
Titik (do uble x1,d oub le y1 ){
x=x1;
y=y1;
}
v oid tam pil () {
S yste m.o ut.pr intl n (" ("+x+ ","+ y+" )");
}
v oid pin dah (d oubl e x 1, do uble y1 ){
x =x1;
y=y1;
}
26
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

void pin dah (T itik t) {


x= t.x ;
y= t.y ;
}
v oid isi X (dou ble x1) {
x =x1;
}
v oid isi Y (dou ble y1) {
y =y1;
}
v oid isi XY (do uble x1 ,doub le y1){
x =x1;
y=y1;
}

27
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek

double j arakK e (do ubl e x1, dou ble y1){


d oubl e j arak ;
j arak =Ma th.po w (Ma th. pow (x -x1, 2)+ Math. pow (y -
y 1,2) ,0. 5);
r etur n j arak;
}
d oubl e j arakK e (Ti tik t2){
d oubl e j arak ;
j arak =Ma th.po w (Ma th. pow (x -t2 . x,2 )+ Mat h.po w (y -
t 2.y, 2), 0.5);
r etur n j arak;
}
}
Math.pow(x,y) = 𝑥 𝑦

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

29
MEMBUAT KELAS TESTER
Pemrograman Berbasis Objek

pub li c cl ass T it ik Teste r {


pub li c sta tic vo id main (Str ing[] a rgs) {
Titik t1, t2;
t1=new Ti tik ();/ / Ta npa par am eter x= 0, y=0
t2=new Titik (9,4);// x=9, y=4
System.out.print ("T1 : ");
t 1 . t a m p i l ( ) ;
System.out.print ("T2 : ");
t2. ta mpil ();
t1.pi nd ah (5, 1) ;
System. out.print (" Setelah pindah T1 : ");
t1. ta mp il ();
d o u b l e j a r a k ; jar
ak =t 1. jar ak Ke (t2) ; Syste
m. out.println (" Jarak dari T1 ke T 2 : "+j ar ak );
}
} T1 : (0.0,0.0)
T2 : (9.0,4.0)
Setelah pindah T1 : (5.0,1.0)
30
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)

33
CLASS CALCULATORTESTER
Pemrograman Berbasis Objek

public class CalculatorTester {


public static void main(String[] args ) {
Calculator c = new Calculator();
c.isiOperan1(7);
c.isiOperan2(5);
System.out.println (" Tambah : "+ c.tambah ());
System.out.println (" Kurang : "+ c.kurang ());
System.out.println ("Kali : "+ c.kali());
System.out.println (" Bagi : "+c.bagi());
System.out.println (" Pangkat : "+c.pangkat ());
}
} Tambah : 12.0
Kurang : 2.0
Kali : 35.0
Bagi : 1.4
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 Index=‘C’
§ setUTS(double x) : Mengisi nilai UTS § NA 45..56 Index=‘D’
§ setUAS(double x) : Mengisi nilai UAS § NA 0..45 Index=‘E’
§ getNA() : Mereturnkan nilai akhir >>Aturan Keterangan
berupa double § Index=‘A’ : Sangat Baik
§ getIndex() : Mereturnkan index berupa § Index=‘B’ : Baik
char § Index=‘C’ : Cukup
§ getKeterangan() : Mereturnkan § Index=‘D’ : Kurang
keterangan berupa String
§ Index=‘E’ : Sangat Kurang

20
CLASS NILAITESTER
Pemrograman Berbasis Objek

p ubli c c lass Nila iTe ster {


pub lic stat ic v oid main (Str ing [] ar gs) {
N ilai n= new N ilai ();
n .set Qui s (60) ;
n .set UTS (80);
n.setUAS(75);
S yste m.o ut.pr intl n (" Quis : "+ n. Quis );
S yste m.o ut.pr intl n (" UTS : "+ n. UTS);
S yste m.o ut.pr intl n (" UAS : "+ n. UAS);
S yste m.o ut.pr intl n (" NA S : "+ n. getN A () );
yste m.o ut.pr intl n (" Index : "+ n. getI nde x ());
S yste m.o ut.pr intl n (" Keter anga n : "+n. getK ete ranga n ()) ;
}
Quis : 60.0
}
UTS : 80.0
UAS : 75.0
NA : 73.5
Index : B
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.

38
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 acka ge mylib ;
c lass Ti tik {
doubl e x ;
doubl e y ;
}

39
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

40
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 ; // import 1 class
atau i
mport namapackage .*; // import seluruh isi package.
>>Contoh :
import mylib. Titik ;
Atau
import mylib .*;
>>Secara default, 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.

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

42
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

43
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).

44
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : Default/Package -Private


// Nama File : package1/Titik.java
package package1;
class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
}
Kedua kelas berada pada
// Nama File : package1/Tester.java package yang sama
package package1;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}

45
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : Default/Package -Private


// Nama File : package1/Titik.java
package package1;
class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
} Class Titik berada di package
bernama package1, Class
// Nama File : Tester.java
import package1.Titik; Tester tidak memiliki package
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}

46
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
}
Kedua kelas berada pada
// Nama File : package1/Tester.java package yang sama
package package1;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}

47
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek

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

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

49
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

50
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

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

52
CONTOH KASUS ACCESSMODIFIER
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 ubli c c lass Nila i {
p ubli c d ouble Qui s ;
p ubli c d ouble UTS ; p u
bli c d ouble UAS ; p ubl
i c d ouble get NA ( ){
r etur n 0 .20*Q uis+ 0.3 0*UTS +0.5 *UA S;
}
}

53
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai


p ubli c c lass Nila iTe ster {
p ubli c s tatic voi d m ain(S trin g[] args ) {
N ilai n= new N ilai ();
n.Quis =90;
n.UTS =70 ;
n.UAS =150;
S yste m.o ut.pr intl n (" NA : "+ n. get NA ()) ;
}
}

>>Jika aplikasi di atas dieksekusi maka menghasilkan nilai


akhir sebesar 114.0. Apakah ini legal???????. Hal ini terjadi
karena atribut UAS bersifat public sehingga bisa diisi secara
bebas dari luas class.

54
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek

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


tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
p ubli c c lass Nila i {
p riva te doubl e Qu is ;
p riva te doubl e UT S; p
riva te doubl e UA S; p u
bli c d ouble getNA ( ){
retur n 0 .20*Q uis+ 0.3 0*UTS +0.5 *UA S;
}
}

>>Apakah Cukup?
Tidak, dengan hanya mengubah public menjadi private, maka
pengisian nilai Quis, UTS dan UAS tidak bisa dilakukan. Solusinya
adalah dengan

55
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek

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


tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
p ubli c c lass Nila i {
p riva te doubl e Qu is;
p riva te doubl e UT S;
p riva te doubl e UA S;
p ubli c d ouble get NA ( ){
r etur n 0 .20*Q uis+ 0.3 0*UTS +0.5 *UA S;
}
}

>>Cukup? Tidak . Karena atribut Quis, UTS dan UAS tidak bisa
diakses dari mana pun.

56
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
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).

57
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek

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


public class Nilai {
private d o u b l e Quis;
private d o u b l e UTS;
private double UAS;
public void setQuis(double x){
Quis =x;
}
public void setUTS (double x){
Function
UTS=x;
}
setter
public void setUAS (double x){
UAS=x;
}

58
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek

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


public double getQuis (){
return Quis ;
}
public double getUTS(){
return UTS;
}
Function
public double getUAS(){ getter
return UAS;
}
public double getNA(){
return 0.20*Quis+0.30 *UTS+0.5*UAS;
}
}

59
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai berubah, karena pengisian


atribut dilakukan melalui function.
p ubli c c lass Nila iTe ster {
p ubli c s tatic voi d m ain(S trin g[] args ) {
N ilai n= new N ilai ();
n .set Qui s (90) ;
n .set UTS (70);
n.setUAS (150) ;
S yste m.o ut.pr intl n (" NA : "+ n. get NA ()) ;
}
}

>>Beres? Belum, ternyata walau pun atribut telah diberi akses


private, ternyata nilai atribut bisa diberi nilai yang tidak
seharusnya. Padahal nilai hanya boleh antara 0 s.d 100.

60
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
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 ubli c v oid s etQu is ( doubl e x) {
i f(x> =0 && x< =100 )
Q uis= x;
}
p ubli c v oid s etUT S (d ouble x){
i f(x> =0 && x< =100 )
U TS=x ;
}
p ubli c v oid s etUA S (d ouble x){
i f(x> =0 && x< =100 )
U AS=x ;
}

61
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek

>>Contoh pemanggilan class Nilai setelah ada validasi di


method getter
p ubli c c lass Nila iTe ster {
p ubli c s tatic voi d m ain(S trin g[] args ) {
N i l a i n = n e w N i l a i (); n .
set Qui s (90) ;
n .set UTS (70);
n.set UAS (150) ;
S yste m.o ut.pr intl n (" NA : "+ n. get NA ()) ;
}
}

¡Pada perintah n.setUAS(150), pengisian UAS menjadi 1 5 0


tidak dilakukan karena nilainya tidak valid.
¡Jika dieksekusi akan menghasilkan NA : 39.0 karena atribut
UAS bernilai 0

62
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

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

64
CLASS WAKTUTESTER
Pemrograman Berbasis Objek

public class WaktuTester {


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 ) {
W a k t u w = n e w W a k t u ();
S y s t e m . o u t . p r i n t l n ( " 1 . T o t a l M e n i t : " + w . g e t T o t a l M e n it ());
w . s e t J a m ( 1 0 );
S y s t e m . o u t . p r i n t l n ( " 2 . T o t a l M e n i t : " + w . g e t T o t a l M e n it ());
w . s e t M e n i t (57 );
S y s t e m . o u t . p r i n t l n ( " 3 . T o t a l M e n i t : " + w . g e t T o t a l M e n it ());
w . t a m p i l W a ktu ();
w . t a m b a h J a m (7 );
S y s t e m . o u t . p r i n t l n ( " 4 . J A M : " + w . g e t J a m ()+" M E N I T : "+ w . g e t M e n i t ( ) ) ;
w . t a m b a h M e nit (40 );
S y s t e m . o u t . p r i n t l n ( " 5 . J A M : " + w . g e t J a m ()+" M E N I T : "+ w . g e t M e n i t ( ) ) ;
}
}
1. Total Menit : 0
2. Total Menit : 600
3. Total Menit : 657
Waktu : 10:57
4. JAM : 17 MENIT : 57
5. JAM : 18 MENIT : 37 50
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.

67
Konsep Inheritance
Kelas A
(Kelas Dasar)

variabelInstanZ

metodeX() Dengan sendirinya


metodeY() KelasB mewarisi
semua metode
dan variabel instan
milik KelasA, yang
tidak bersifat
Kelas B
(Kelas Turunan)
private.

metodeW() Metode tambahan


INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

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

69
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
nama=n; dan dapat bersuara.
}
public String getNama(){
return nama;
}
public void bersuara(){
System.out.println(getNama()+" sedang bersuara.");
}
}

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

71
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.
72
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 Binatang
b.bersuara(); // diturunkan dari Binatang
b.bertelur(); // ditambahkan di Burung
b.terbang(); // ditambahkan di Burung
}
}
Hasil Run :
Pipit sedang bersuara.
Pipit sedang bertelur
Pipit sedang terbang
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.
58
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 Binatang
m.bersuara(); // diturunkan dari Binatang
m.berjalan(); // ditambahkan di Mamalia
m.melahirkan(); // ditambahkan di Mamalia
}
}
Hasil Run :
kuda sedang bersuara.
kuda sedang berjalan
kuda sedang melahirkan. 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].

76
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

77
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.
78
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 dari Binatang
k.bertelur(); // 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
79
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Kuda
package pewarisan;

public class Kuda extends Mamalia {


public void berjalan(){
System.out.println(getNama()+
" berjalan : Tuk tik tak tik tuk tik tak");
}
public void berlari(){
System.out.println(getNama()+" sedang berlari ");
}
}
Kuda adalah Mamalia yang dapat berjalan dan berlari.
Bedanya ketika kuda berjalan mengeluarkan suara “Tuk
tik tak tik tuk tik tak”, dan kelebihan lain dari kuda
adalah dapat berlari.
80
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 Mamalia
k.berjalan(); // override di Kuda
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
81
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek

>>Class Sapi
package pewarisan;

public class Sapi extends Mamalia {


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

Sapi adalah Mamalia (biasa) yang kalau bersuara


mengeluarkan suara “Moooooooooo”. Karena itu maka
method bersuara di class Sapi akan mengoverride fungsi
bersuara dari class Binatang.

82
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

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

84
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek

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

85
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 parameter
private int menit; 2. Constructor dengan parameter j
(jam) dan m (menit).
public Waktu(){
jam=0;
menit=0;
}
public Waktu(int j, int m){
jam=j;
menit=m;
}

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


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

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

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

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

91
(POLYMORPH)

O
81
POLYMORPH
Pemrograman Berbasis Objek

¡Polymorph ( mempunyai banyak bentuk).


¡Jenis-jenis polymorph bisa terjadi adalah :
§ Polymorph Ad Hoc
§ Polymorph Subtyping

93
Polymorphism
•Kemampuan untuk memperlakukan object
yang memiliki perilaku (bentuk) yang
berbeda
•Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggunakan
nama yang sama untuk beberapa method yang
berbeda parameter (tipe dan atau jumlah)
2. Overriding: Kemampuan subclass untuk menimpa
method dari superclass, yaitu dengan cara
menggunakan nama dan parameter yang sama
pada method
Polymorphism – Overloading
class Mobil { public class MobilKonstruktor{
String warna; public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, 2003);
int tahunProduksi;
mobilku.info();

public Mobil(String warna, int tahunProduksi){ Mobil mobilmu = new Mobil();


this.warna = warna; mobilmu.info();
}
this.tahunProduksi = tahunProduksi;
}
}

public Mobil(){
}

void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
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;
}
}

96
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

97
POLYMORPH
Pemrograman Berbasis Objek

Polymorph Subtyping terjadi sebuah referensi dari sebuah class


diakses dengan menggunakan referensi subclassnya.
Seluruh objek menggunakan
package pewarisan;
superclass. Tetapi tetap akan
public class PolySubtype {
mengeksekusi method masing-
public static void main(String[] args) {
Binatang elang,kakaktua,kuda,sapi; masing class.
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

98
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.
}
Moooo bersuara : Moooooooooo 80
Example :
class Doctor{
public void treatPatient(){
// treatPatient method

class Surgeon extends Doctor{


public void treatPatient(){
// treatPatient method
}
}

Class run{
public static void main (String args[]){
Doctor doctorObj = new Doctor()
// treatPatient method in class Doctor will be executed
doctorObj.treatPatient();

Surgeon surgeonObj = new Surgeon();


// treatPatient method in class Surgeon will be executed
surgeonObj.treatPatient();
}
}
public class Animal {
public void makeSound() {
System.out.println("the animal makes sounds");
}
}

public class Dog extends Animal{


@Override
public void makeSound() {
System.out.println("the dog barks");
}
}

public class Cat extends Animal {


@Override
public void makeSound() {
System.out.println("the cat meows");
}
}

public class PolymorphismExample {


public static void main(String[] args) {

Animal animal = new Animal();


animal.makeSound();
Dog dog = new Dog();
dog.makeSound(); the animal makes sounds
animal = new Cat(); the dog barks
animal.makeSound();
} the cat meows
}
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
memperdulikan bagaimana implementasinya.

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

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

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

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

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

}
}
>>Tampilan Output :
Januar Kirim email ke : [email protected]
Dengan Subjek : info test
Dengan Isi : isi email
NIP : 1234
Nama : Januar
Bagian : Keuangan

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

112
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 nama
public String getNama(){ method dan parameter
return nama;
} (tanpa isi method)
public String getNIP(){
return NIP;
}
public abstract void kirimEmail(String to, String subjek, String isi);
}

113
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 di
public String getBagian(){ subclass.
return bagian;
}
public void kirimEmail(String to, String subjek, String isi){
System.out.println("Kirim ke "+to+" dengan judul "+
subjek+" dengan isi : "+isi);
}
}

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

116
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
117
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Inter face Bidang2D


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

118
CONTOH INTERFACE
Pemrograman Berbasis Objek

>>Inter face Bidang2D


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

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

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

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

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

124
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
125
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.

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

127
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.println(nama+" sedang berjalan");
}
public void terbang(){
System.out.println(nama+" sedang terbang");
}
}

128
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

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

131
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
}
public final double kelilingLingkaran(double radius){
dirinya sendiri
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);
}
}
132
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);
}
}
133
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
2^8 : 256.0 110
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.

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

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

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

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

141

Anda mungkin juga menyukai