SlideShare a Scribd company logo
1 of 121
OBJECTORIENTED
PROGRAMMING (OOP)
Pemrograman Berbasis Objek
DEFINISI
Pemrograman Berorientasi Object
2
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 Berbasis Objek
CONTOH
Pemrograman Berorientasi Object
3
Contoh :
 Object : Manusia
 Attribut
 Method
: Nama, tinggi, umur, berat badan dll
: Makan, Minum, Berjalan, Bekerja
 Object : Windows
 Attribut
 Method
: Left, Top, Width, Height, BackgroundColor,
: OnClick, OnClose, OnDoubleClick
 Object : Keluarga
 Attribut
 Method
: ayah, Ibu, Anak[]
: TambahAnak,
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)
tertentu.
CONTOH
Pemrograman Berorientasi Object
4
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.
CONTOH
Pemrograman Berorientasi Object
5
Pemrograman Berbasis Objek
CLASSDAN OBJECT
Pemrograman Berorientasi Object
6
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 Berbasis Objek
FITUR-FITUR OOP
Pemrograman Berorientasi Object
7
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 OOPmendukung 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 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();
CLASSDAN OBJECT
Pemrograman Berorientasi Object
8
Mengakses
atribut/method
Pemrograman Berbasis Objek
CONTOHPENGGUNAAN CLASS
Pemrograman Berorientasi Object
9
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 Berbasis Objek
CONTOHPENGGUNAAN CLASS
Pemrograman Berorientasi Object
12
public class TestString {
public static void main(String[] args) {
String nama=" Universitas Komputer Indonesia";
System.out.println("ISI STRING
System.out.println(" Panjang S
ystem.out.println("Upper Case
System.out.println("Lower Case
System.out.println("=UNIKOM
: "+nama);
: "+nama.length());
: "+nama.toUpperCase());
: "+nama.toLowerCase());
: "+nama.equals("UNIKOM"));
}
}
ISI STRING :
Panjang :
Upper Case :
Universitas
30
UNIVERSITAS
Komputer
KOMPUTER
Indonesia
INDONESIA
Lower Case :
=UNIKOM :
universitas
false
komputer indonesia
Pemrograman Berbasis Objek
MEMBUATCLASS SEDERHANA
Pemrograman Berorientasi Object
13
>
>
Sintak pembuatan class sederhana
class NamaKelas{
tipe_data
tipe_data
nama_kelas
nama_atribut;
nama_atribut;
nama_object;
NamaKelas(parameter){
… // isi konstruktor
}
void nama_method(parameter){
… / /
}
tipe_data
isi method berbentuk procedure
nama_method_function(paramter){
… // isi method berbentuk function
return ….;
}
}
Daftar Attribut
Daftar Method
(Procedure/Function
/Constructor)
Pemrograman Berbasis Objek
CONTOHCLASS SEDERHANA
Pemrograman Berorientasi Object
14
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 Xdan Ybelum didefinisikan.
 Mengisi Nilai X
 Mengisi Nilai Y
 Mengisi Nilai Xdan Y(sekaligus)
 Menampilkan nilai Xdan Y
 Pindah ke Koordinat Lain (berdasarkan jarak atau ke titik tertentu)
 Menghitung Jarak Ke Titik Lain
Pemrograman Berbasis Objek
CONTOHCLASS SEDERHANA
Pemrograman Berorientasi Object
15
class
x1,double y1){
T i t i k {
double x;
double y;
Titik(){
x=0;
y=0;
}
Titik(double
x=x1;
y=y1;
}
void tampil(){
System.out.println("("+x+","+y+")");
}
void pindah(double x1, double y1){
x=x1;
y=y1;
}
Pemrograman Berbasis Objek
CONTOHCLASS SEDERHANA
Pemrograman Berorientasi Object
16
void pindah(Titik t){
x=t.x ;
y=t.y;
}
void isiX(double x1){
x=x1;
}
void isiY(double y1){
y=y1;
y1){
}
void isiXY(double x1,double
x=x1;
y=y1;
}
Pemrograman Berbasis Objek
double jarakKe(double x1, double y1){
double jarak;
jarak=Math.pow(Math.pow(x -x1,2)+Math.pow(y-
y1,2),0.5);
return jarak;
}
double jarakKe(Titik t2){
double jarak;
jarak=Math.pow(Math.pow(x -t2.x,2)+Math.pow(y -
t2.y,2),0.5);
return jarak;
}
}
CONTOHCLASS SEDERHANA
Pemrograman Berorientasi Object
17
Math.pow(x,y) = 𝑥𝑦
Pemrograman Berbasis Objek
MEMBUATKELAS TESTER
Pemrograman Berorientasi Object
18
Kelas tester digunakan sebagai class untuk melakukan uji
coba terhadap class yang telah dibuat.
Sebaiknya kelas tester dibuat terpisah dari file classnya.
Pemrograman Berbasis Objek
public class TitikTester {
public static void main(String[] args) {
t1,t2;
Titik();// Tanpa parameter x=0, y=0
Titik
t1=new
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.tampil();
t1.pindah(5,1);
pindah T1 : ");
System.out.print("Setelah
t1.tampil();
d o u b l e j a r a k ; jar
ak=t1.jarakKe(t2); Syste
m.out.println("Jarak dari T1 ke T2 : "+jarak);
}
}
MEMBUATKELAS TESTER
Pemrograman Berorientasi Object
19
T1 : (0.0,0.0)
T2 : (9.0,4.0)
Setelah pindah T1 : (5.0,1.0)
Jarak dari T1 ke T2 : 5.0
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
Membuat Class MObil
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();
}
}
Pemrograman Berbasis Objek
CLASS CALCULATOR
Pemrograman Berorientasi Object
22
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()
 kali()
 bagi()
: Mereturnkan nilai Operan1 – Operan2
: Mereturnkan nilai Operan1 * Operan2
: Mereturnkan nilai Operan1 / Operan2
 pangkat() : Mereturnkan nilai Operan1^Operan2
>
>
Kelas tersebut harus bisa dijalankan dengan menggunakan
Class CalculatorTester (di slide berikutnya)
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
System.out.println("Kurang
System.out.println("Kali
System.out.println("Bagi
System.out.println("Pangkat
: "+c.tambah());
: "+c.kurang());
: "+c.kali());
: "+c.bagi());
: "+c.pangkat());
}
}
Pemrograman Berorientasi Object 19
CLASS CALCULATORTESTER
Tambah
Kurang
Kali
Bagi
: 12.0
: 2.0
: 35.0
: 1.4
Pangkat : 16807.0
Pemrograman Berbasis Objek
>
>
Buatlah class Nilai
 Attribut :
 Quis bertipe double
 UTS bertipe double
 UAS bertipe double
 Method :
 setQuis(double x) : Mengisi nilai quis
 setUTS(double x) : Mengisi nilai UTS
 setUAS(double x) : Mengisi nilai UAS
 getNA() : Mereturnkan nilai akhir
berupa double
 getIndex() : Mereturnkan index berupa
char
 getKeterangan() : Mereturnkan
keterangan berupa String
Pemrograman Berorientasi
Object
20
CLASS NILAI
Rumus NilaiAkhir
NA = 20% QUIS + 30%*UTS
+ 50% * UAS
Aturan Index
 NA80..100 Index=‘A’
 NA 68..80
 NA 56..68
 NA 45..56
 NA 0..45
Index=‘B’
Index=‘C’
Index=‘D’
Index=‘E’
>
>
Aturan Keterangan
 Index=‘A’
 Index=‘B’
 Index=‘C’
 Index=‘D’
 Index=‘E’
: Sangat Baik
: Baik
: Cukup
: Kurang
: Sangat Kurang
Pemrograman Berbasis Objek
args) {
public class NilaiTester {
public static void main(String[]
Nilai n=new Nilai();
n.setQuis(60);
n.setUTS(80);
n.setUAS(75);
System.out.println(" Quis
System.out.println("UTS
System.out.println("UAS
System.out.println("NA S
ystem.out.println("Index
System.out.println(" Keterangan
: "+n.Quis);
: "+n.UTS);
: "+n.UAS);
: "+n.getNA());
: "+n.getIndex());
: "+n.getKeterangan());
}
}
Pemrograman Berorientasi Object 21
CLASS NILAITESTER
Quis
UTS
UAS
NA
Index
: 60.0
: 80.0
: 75.0
: 73.5
: B
Keterangan : Baik
22
PARTII
PACKAGE
O
Pemrograman Berbasis Objek
PACKAGE
Pemrograman Berorientasi Object
27
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 Berbasis Objek
MEMBUAT PACKAGE
Pemrograman Berorientasi Object
28
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.
package mylib ;
class Titik {
double x;
double y;
}
Pemrograman Berbasis Objek
ATURANPENAMAAN PACKAGE
Pemrograman Berorientasi Object
29
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
 Twitter
 Google maps
: package com.facebook.android
: package com.twitter.interop
: package com.google.android.maps
Pemrograman Berbasis Objek
IMPORT PACKAGE
Pemrograman Berorientasi Object
30
Impor t package berar ti anda ingin menggunakan member/isi
dari sebuah package.
Impor t suatu package dilakukan dengan keyword impor t.
namapackage. namaclass ; // import 1 class
namapackage .*; // import seluruh isi package.
mylib. Titik ;
import
atau i
mport
>
>
Contoh :
import
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.
Pemrograman Berbasis Objek
IMPORT PACKAGE
Pemrograman Berorientasi Object
31
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 Berbasis Objek
ACCESS MODIFIER
Pemrograman Berorientasi Object
32
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 Berbasis Objek
PENGATURANAKSESDI LEVEL KELAS
Pemrograman Berorientasi Object
33
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 Berbasis Objek
PENGATURANAKSESDI LEVELKELAS
Pemrograman Berorientasi Object
34
// Nama File : package1/Tester.java
package package1;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
>
>
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
package yang sama
Pemrograman Berbasis Objek
PENGATURANAKSESDI LEVELKELAS
Pemrograman Berorientasi Object
35
>
>
Akses : Default/Package -Private
// Nama File : package1/Titik.java
package package1;
class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
}
// Nama File : Tester.java
import package1.Titik;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
Class Titik berada di package
bernama package1, Class
Tester tidak memiliki package
Pemrograman Berbasis Objek
PENGATURANAKSESDI LEVELKELAS
Pemrograman Berorientasi Object
36
// Nama File : package1/Tester.java
package package1;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
>
>
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
package yang sama
Pemrograman Berbasis Objek
PENGATURANAKSESDI LEVELKELAS
Pemrograman Berorientasi Object
37
>
>
Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
}
// Nama File : Tester.java
import package1.Titik;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
Class Titik berada di package
bernama package1, Class
Tester tidak memiliki package
Pemrograman Berbasis Objek
PENGATURANAKSESDI LEVELMEMBER
Pemrograman Berorientasi Object
38
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 (classturunannya)
Pemrograman Berbasis Objek
PENGATURANAKSESDI LEVELMEMBER
Pemrograman Berorientasi Object
39
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 Berbasis Objek
>
>
Visibilitas member-member class Adari class lain.
PENGATURANAKSESDI LEVELMEMBER
Pemrograman Berorientasi Object
40
Modifier MemberA 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 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)
ACCESS MODIFIER
Pemrograman Berorientasi Object
41
Pemrograman Berbasis Objek
CONTOHKASUS ACCESSMODIFIER
Pemrograman Berorientasi Object
42
>
>
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.
public class Nilai {
public double Quis;
public double UTS; pu
blic double UAS; publ
ic double getNA(){
return 0.20*Quis+0.30*UTS+0.5*UAS;
}
}
Pemrograman Berbasis Objek
CONTOHKASUS ACCESSMODIFIER
Pemrograman Berorientasi Object
43
>
>
Contoh pemanggilan class Nilai
public class NilaiTester {
public static void main(String[] args ) {
Nilai n=new Nilai();
n.Quis=90;
n.UTS=70;
n.UAS=150;
System.out.println("NA : "+n.getNA());
}
}
>
>
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.
Pemrograman Berbasis Objek
CONTOHKASUS ACCESSMODIFIER
Pemrograman Berorientasi Object
44
>
>
Solusinya adalah dengan membuat atribut Quis, UTSdan UAS
tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
>
>
Apakah Cukup?
Tidak, dengan hanya mengubah public menjadi private, maka
pengisian nilai Quis, UTSdan UAStidak bisa dilakukan. Solusinya
adalah dengan
public class Nilai {
private double Quis;
private double UTS; p
rivate double UAS; pu
blic double getNA(){
return 0.20*Quis+0.30*UTS+0.5*UAS;
}
}
Pemrograman Berbasis Objek
CONTOHKASUS ACCESSMODIFIER
Pemrograman Berorientasi Object
45
>
>
Solusinya adalah dengan membuat atribut Quis, UTSdan UAS
tidak bisa diisi secara langsung (misalnya dengan private atau
protected.
public class Nilai {
private double Quis;
private double UTS;
private double UAS;
public double getNA(){
return 0.20*Quis+0.30*UTS+0.5*UAS;
}
}
>
>
Cukup? Tidak . Karena atribut Quis, UTSdan UAS tidak bisa
diakses dari mana pun.
Pemrograman Berbasis Objek
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
46
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 Berbasis Objek
>
>
Method setter dan getter untuk Quis, UTS, UAS.
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
47
public Nilai {
double
double
double
Quis;
UTS;
UAS;
class
private
private
private
public void setQuis(double x){
Quis=x;
}
public void setUTS(double x){
UTS=x;
}
public void setUAS(double x){
UAS=x;
}
Function
setter
Pemrograman Berbasis Objek
>
>
Method setter dan getter untuk Quis, UTS, UAS.
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
48
public double
return
getQuis(){
Quis;
}
public double
return
getUTS(){
UTS;
}
public double
return
getUAS(){
UAS;
}
public double
return
getNA(){
0.20*Quis+0.30
}
}
Function
getter
*UTS+0.5*UAS;
Pemrograman Berbasis Objek
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
49
>
>
Contoh pemanggilan class Nilai berubah, karena pengisian
atribut dilakukan melalui function.
public class NilaiTester {
public static void main(String[] args ) {
Nilai n=new Nilai();
n.setQuis(90);
n.setUTS(70);
n.setUAS(150);
System.out.println("NA : "+n.getNA());
}
}
>
>
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.
Pemrograman Berbasis Objek
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
50
Solusinya adalah dengan membuat validasi pada method
getter. Nilai atribut hanya akan berubah jika nilai yang diinput
valid.
Perubahan method getter.
public void setQuis(double x){
if(x>=0 && x<=100)
Quis=x;
}
public void setUTS(double x){
if(x>=0 && x<=100)
UTS=x;
}
public void setUAS(double x){
if(x>=0 && x<=100)
UAS=x;
}
Pemrograman Berbasis Objek
CONTOHKASUSACCESSMODIFIER
(METHOD SETTERDANGETTER)
Pemrograman Berorientasi Object
51
>
>
Contoh pemanggilan class Nilai setelah ada validasi di
method getter
Pada perintah n.setUAS(150), pengisian UAS menjadi 150
tidak dilakukan karena nilainya tidak valid.
Jika dieksekusi akan menghasilkan NA : 39.0 karena atribut
UAS bernilai 0
public class NilaiTester {
public static void main(String[] args ) {
N i l a i n = n e w N i l a i (); n.
setQuis(90);
n.setUTS(70);
n.setUAS(150);
System.out.println("NA : "+n.getNA());
}
}
Pemrograman Berbasis Objek
LATIHAN
Pemrograman Berorientasi Object
52
Buatlah suatu class bernama Waktu dengan spesifikasi class
adalah :
 Attribut
 menitWaktu bertipe integer. menitWaktu akan berisi jumlah menit sejak
jam 00.00.
 Method
 getJam()
 getMenit()
 setJam(int j)
: Mengambil bagian jam dari menitWaktu.
: Mengambil bagian menit dari menitWaktu.
: Menambahkan j*60 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 Berbasis Objek
LATIHAN
Pemrograman Berorientasi Object
53
 Method (lanjutan)
 tambahJam(int j)
 tambahMenit(int m)
 tambahWaktu(int j, int m)
 tampilWaktu()
: Menambahkan j*60 ke menitWaktu
: Menambahkan m ke menitWaktu
: Menambahkan j*60+m ke menitWaktu
: Menampilkan jam dan menit.
Pemrograman Berbasis Objek
public class WaktuTester {
public static void main(String[] args ) {
Waktu w=new Waktu ();
"+w.getTotalMen it ());
"+w.getTotalMen it ());
Total Menit :
Total Menit :
Total Menit : "+w.getTotalMen it ());
JAM : "+w.getJam ()+" MENIT : "+ w.getMenit ());
System.out .println ("1.
w.setJam ( 1 0 );
System.out .println ("2.
w.setMenit (57 );
System.out .println ("3.
w.tampilWa ktu ();
w.tambahJa m (7 );
System.out .println ("4.
w.tambahMe nit (40 );
System.out .println ("5. JAM : "+w.getJam ()+" MENIT : "+ w.getMenit ());
}
}
Pemrograman Berorientasi
Object
50
CLASS WAKTUTESTER
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
51
PART III
INHERITANCE
O
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
Pemrograman Berorientasi Object
56
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 Berbasis Objek
>
>
Contoh :
INHERITANCE (PEWARISAN)
Pemrograman Berorientasi Object
57
- (private)
+ (public)
# (protected)
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
Pemrograman Berorientasi Object
58
>
>
Class Binatang
package pewarisan;
public class Binatang {
private String nama;
public void setNama(String n){
nama=n;
}
public String getNama(){
return nama;
}
public void bersuara(){
System.out.println(getNama()+" sedang bersuara.");
}
}
Setiap Binatang
mempunyai kesamaan,
yaitu mempunyai nama
dan dapat bersuara.
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
• >
>
Class BinatangTester
package pewarisan;
public class BinatangTester {
public static void main(String[] args) { Binatang a;
a=new Binatang();
a.setNama("kuda"); a.bersuara();
}
}
Pemrograman Berorientasi Object
59
Tampilan hasil run :
kuda sedang bersuara.
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
Pemrograman Berorientasi Object
60
>
>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 Berbasis Objek
Oleh : Andri Heryandi,M.T. 57
INHERITANCE (PEWARISAN)
>
>
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();
b.bertelur();
b.terbang();
// diturunkan dari Binatang
// ditambahkan di Burung
// ditambahkan di Burung
}
}
Hasil Run :
Pipit sedang bersuara.
Pipit sedang bertelur
Pipit sedang terbang
Pemrograman Berbasis Objek
Pemrograman Berorientasi
Object
58
INHERITANCE (PEWARISAN)
>
>
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 Berbasis Objek
Oleh : Andri Heryandi,M.T. 59
INHERITANCE (PEWARISAN)
>
>
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();
m.berjalan();
m.melahirkan();
// diturunkan dari Binatang
// ditambahkan di Mamalia
// ditambahkan di Mamalia
}
}
Hasil Run :
kuda sedang bersuara.
kuda sedang berjalan
kuda sedang melahirkan.
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
64
Pemrograman Berorientasi
Object
>
>
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 Berbasis Objek
INHERITANCE (PEWARISAN)
• >
>
Class ElangTester
package pewarisan;
public class ElangTester {
public static void main(String[] args) { Elang e=new
Elang(); e.setNama("Elang");
65
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
Object
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
66
Pemrograman Berorientasi
Object
>
>
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 Berbasis Objek
INHERITANCE (PEWARISAN)
67
Pemrograman Berorientasi
Object
>
>
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();
k.terbang();
k.bersuara();
// diturunkan dari Burung
// diturunkan dari Burung
// 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 Berbasis Objek
INHERITANCE (PEWARISAN)
68
Pemrograman Berorientasi
Object
>
>
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.
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
69
Pemrograman Berorientasi Object
>
>
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();
k.berlari();
// override di Kuda
// 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 Berbasis Objek
INHERITANCE (PEWARISAN)
70
Pemrograman Berorientasi
Object
>
>
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.
Pemrograman Berbasis Objek
INHERITANCE (PEWARISAN)
• >
>
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();
• }
71
}
Hasil Run :
Si Mooo sedang berjalan
Si Mooo sedang melahirkan.
Si Mooo bersuara : Moooooooooo
Pemrograman Berorientasi
Object
Pemrograman Berbasis Objek
OVERRIDE CONSTRUCTOR
72
Pemrograman Berorientasi
Object
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
 Untuk method
: super(), atau super(daftar_parameter)
: super.namamethhod(daftar_parameter)
Pemrograman Berbasis Objek
Contoh :
 Class Waktu2 merupakan turunan dari class Waktu yang mempunyai
atribut baru bernama detik.
OVERRIDE CONSTRUCTOR
73
Pemrograman Berorientasi
Object
Pemrograman Berbasis Objek
OVERRIDE CONSTRUCTOR
74
Pemrograman Berorientasi
Object
>
>
Class Waktu
package pewarisan;
public class Waktu {
private int jam;
private int menit;
public Waktu(){
jam=0;
menit=0;
}
public Waktu(int j, int m){
jam=j;
menit=m;
}
Class Waktu mempunyai 2 buah
constructor yaitu :
1. Constructor tanpa parameter
2. Constructor dengan parameter j
(jam) dan m (menit).
Pemrograman Berbasis Objek
OVERRIDE CONSTRUCTOR
75
>
>
Class Waktu
public void setJam(int jam){
this.jam=jam;
}
public int getJam(){
return jam;
}
public void setMenit(int menit){
this.menit=menit;
}
public String getWaktu(){
return jam+":"+menit;
}
}
Perhatikan pada method setJam.
Method ini memiliki parameter input
bernama jam. Class waktu juga
mempunyai atribut bernama jam.
Untuk membedakan jam dari
parameter dan jam milik atribut class,
gunakan keyword this.
Keyword this menyatakan “milik class
ini”.
Pernyataan “this.jam=jam” berarti
atribut jam milik class ini diisi dengan
jam dari parameter.
Begitu pula untuk method setMenit.
Pemrograman Berorientasi
Object
Pemrograman Berbasis Objek
OVERRIDE CONSTRUCTOR
76
Pemrograman Berorientasi
Object
>
>
Class WaktuTester
package pewarisan;
public class WaktuTester {
public static void main(String[] args) {
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());
}
}
Hasil Run :
W1 : 0:0
W2 : 5:7
Pemrograman Berbasis Objek
OVERRIDE CONSTRUCTOR
77
Pemrograman Berorientasi
Object
>
>
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 Berbasis Objek
OVERRIDE CONSTRUCTOR
78
Pemrograman Berorientasi
Object
>
>
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 Berbasis Objek
OVERRIDE CONSTRUCTOR
79
Pemrograman Berorientasi
Object
>
>
Class Waktu2
package pewarisan;
public class Waktu2Tester {
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());
}
}
Hasil Run :
W1 : 0:0:0
W2 : 10:12:20
Pemrograman Berbasis Objek
POLYMORPH
80
Pemrograman Berorientasi
Object
Polymorph ( mempunyai banyak bentuk).
Jenis-jenis polymorph bisa terjadi adalah :
 Polymorph Ad Hoc
 Polymorph Subtyping
Pemrograman Berbasis Objek
POLYMORPH
81
Pemrograman Berorientasi
Object
Polymorph Ad Hoc terjadi ketika memiliki sebuah method yang
akan mempunyai operasi yang berbeda ketika dipanggil dengan
tipe parameter yang berbeda.
package pewarisan;
public class Polymorph {
public int tambah(int x, int y){
return x+y;
}
public String tambah(String x, String y){
return x+" "+y;
}
}
Class Polymorph
mempunyai 2 buah method
yang namanya sama yaitu
“tambah”, tetapi dibedakan
dengan parameternya.
Pemrograman Berbasis Objek
POLYMORPH
82
Pemrograman Berorientasi
Object
>
>
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 Berbasis Objek
POLYMORPH
83
Pemrograman Berorientasi
Object
Polymorph Subtyping terjadi sebuah referensi dari sebuah class
diakses dengan menggunakan referensi subclassnya.
package pewarisan;
public class PolySubtype {
public static void main(String[] args) {
Binatang 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();
kuda.bersuara();
sapi.bersuara();
}
}
Hasil Run :
Elang sedang bersuara.
Kakaktua sedang bersuara.
Si Pony sedang bersuara.
Si Mooo bersuara : Moooooooooo
Seluruh objek menggunakan
superclass. Tetapi tetap akan
mengeksekusi method masing-
masing class.
Pemrograman Berbasis Objek
Contoh Lain :
Pemrograman Berorientasi
Object
80
POLYMORPH
package pewarisan;
public class PolySubtype2 {
static void bicara(Binatang b){
b.bersuara();
}
public static void main(String[] args) {
Elang e=new Elang();e.setNama("Hunter");
Kakaktua k=new Kakaktua();k.setNama("Oces");
Kuda kd=new Kuda();kd.setNama("Blacky");
Sapi s=new Sapi();s.setNama("Moooo");
bicara(e);
bicara(k);
bicara(kd);
bicara(s);
}
}
Hasil Run :
Hunter sedang bersuara.
Oces sedang bersuara.
Blacky sedang bersuara.
Moooo bersuara : Moooooooooo
Method bicara membutuhkan
parameter dengan class
Binatang.
Pemanggilan
method Bicara
menggunakan
parameter
subclass dari
Binatang.
81
PARTIV
(ABSTRACT)
O
Pemrograman Berbasis Objek
ABSTRACT
Pemrograman Berorientasi Object
86
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.
Pemrograman Berbasis Objek
CLASS ABSTRACT
Pemrograman Berorientasi Object
87
>
>
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 Berbasis Objek
CLASS ABSTRACT
Pemrograman Berorientasi Object
88
>
>
Contoh ClassAbstract
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 Berbasis Objek
CLASS ABSTRACT
Pemrograman Berorientasi Object
89
>
>
Contoh ClassTester
public class PegawaiTester {
public static void main(String[] args) {
Pegawai p=new Pegawai("Januar","1234");
p.kirimEmail("a@test.com","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 Berbasis Objek
CLASS ABSTRACT
Pemrograman Berorientasi Object
90
>
>
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 Berbasis Objek
CLASS ABSTRACT
Pemrograman Berorientasi Object
91
>
>
Test kelas turunan
public class StaffTester {
public static void main(String[] args) {
Staff s=new Staff("Januar","1234","Keuangan");
s.kirimEmail("a@test.com", "info test", "isi email");
System.out.println("NIP : "+s.getNIP()+"n"+
"Nama : "+s.getNama()+"n"+
"Bagian : "+s.getBagian());
}
}
>
>
Tampilan Output :
Januar Kirim email ke : a@test.com
Dengan Subjek : info test
Dengan Isi : isi email
NIP : 1234
Nama : Januar
Bagian : Keuangan
Pemrograman Berbasis Objek
METHOD ABSTRACT
Pemrograman Berorientasi Object
92
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 Berbasis Objek
METHOD ABSTRACT
Pemrograman Berorientasi Object
93
>
>
Class Pegawai
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 abstract void kirimEmail(String to, String subjek, String isi);
}
Hanya mendeklarasikan nama
method dan parameter
(tanpa isi method)
Pemrograman Berbasis Objek
METHOD ABSTRACT
Pemrograman Berorientasi Object
94
>
>
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;
}
public String getBagian(){
return bagian;
}
public void kirimEmail(String to, String subjek, String isi){
System.out.println("Kirim ke "+to+" dengan judul "+
subjek+" dengan isi : "+isi);
}
}
Isi method dikembangkandi
subclass.
06
91
PARTIV
(INTERF
ACE)
O
Pemrograman Berbasis Objek
INTERFACE
Pemrograman Berorientasi Object
96
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 Berbasis Objek
CONTOHKASUS INTERFACE
Pemrograman Berorientasi Object
97
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
: panjang, lebar
: panjang *lebar
: 2 * (panjang + lebar)
: sisi
: sisi * sisi
: 4 * sisi
 Attribut
 Luas
 Keliling
 Bujursangkar
 Attribut
 Luas
 Keliling
 Lingkaran
 Attribut
 Luas
 Keliling
: radius
: pi * radius * radius
: 2 * pi * radius
Pemrograman Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
98
>
>
Inter face Bidang2D
public interface Bidang2D {
double getKeliling();
double getLuas();
}
Pemrograman Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
99
>
>
Inter face Bidang2D
public interface Bidang2D {
double getKeliling();
double getLuas();
}
Pemrograman Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
100
>
>
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 Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
101
>
>
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 Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
102
>
>
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 Berbasis Objek
Pemrograman Berorientasi
Object
99
CONTOH INTERFACE
>
>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 Berbasis Objek
CONTOH INTERFACE
Pemrograman Berorientasi Object
>
>
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
104
Pemrograman Berbasis Objek
105
CONTOHINTERFACE
(POLYMORPH)
Pemrograman Berorientasi Object
>
>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 Berbasis Objek
106
IMPLEMENTASI MULTIPLEINTERFACE
Pemrograman Berorientasi Object
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 Berbasis Objek
107
IMPLEMENTASI MULTIPLEINTERFACE
Pemrograman Berorientasi Object
>
>
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 Berbasis Objek
IMPLEMENTASI MULTIPLEINTERFACE
Pemrograman Berorientasi Object
>
>
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");
}
}
108
Pemrograman Berbasis Objek
109
IMPLEMENTASI MULTIPLEINTERFACE
Pemrograman Berorientasi Object
>
>
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
06
106
PARTIV
(FINAL)
O
Pemrograman Berbasis Objek
111
FINAL
Pemrograman Berorientasi Object
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 Berbasis Objek
FINAL ATRIBUT/METHOD
Pemrograman Berorientasi Object
>
>
Class MyMath
public class MyMath {
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);
}
}
Atribut dari class
MyMath tidak bisa
diubah dari mana pun
termasuk dari class
dirinya sendiri
Method dari class
MyMath tidak bisa
dioverride di subclass
walau pun classnya
boleh di-extends
(diturunkan)
112
Pemrograman Berbasis Objek
FINAL CLASS
Pemrograman Berorientasi Object
>
>
Class MyMath
public final class MyMath {
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));
Class MyMath tidak bisa
di-extends ke subclass.
}
public final double pangkat(double x, double y){
return Math.pow(x, y);
}
}
113
Pemrograman Berbasis Objek
Pemrograman Berorientasi
Object
110
FINAL ATRIBUT/METHOD
>
>
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
06
111
PARTIV
(ST
ATIC)
O
Pemrograman Berbasis Objek
116
STATIC
Pemrograman Berorientasi Object
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 Berbasis Objek
117
STATIC
Pemrograman Berorientasi Object
>
>
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 Berbasis Objek
STATIC
Pemrograman Berorientasi Object
>
>
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);
}
}
118
Pemrograman Berbasis Objek
119
STATIC
Pemrograman Berorientasi Object
>
>
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 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
Variable yang menjadi dideklarasikan di dalam kelas
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.
JENIS– JENIS VARIABLE
Pemrograman Berorientasi Object
JANGAN
TERTUKAR!!!!!!
120
Pemrograman Berbasis Objek
JENIS– JENIS VARIABLE
Pemrograman Berorientasi Object
>
>
Contoh Class :
public class MyVar {
public static int myStatic;
public int myInstance;
private String myName;
public void test(){
int i;
i=0;
for(int j=1;j<=10;j++){
i+=2;
}
myInstance=i;
}
}
Variable Static
Variable Instance
Variable Local
121

More Related Content

Similar to Object-Oriented-Programming-New-OOP.pptx

Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2rahmi wahyuni
 
Class dan object
Class dan objectClass dan object
Class dan objectHardini_HD
 
10 pemrograman berorientasi objek di php
10 pemrograman berorientasi objek di php10 pemrograman berorientasi objek di php
10 pemrograman berorientasi objek di phpJamil Jamil
 
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028iis dahlia
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOsetyadi_s
 
Modul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan ObjectModul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan Objectrahmantoyuri
 
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdfFadhilahMargiPertiwi
 
Materi VISUAL BASIC 2010 dffffffffffopppoo
Materi VISUAL BASIC 2010 dffffffffffopppooMateri VISUAL BASIC 2010 dffffffffffopppoo
Materi VISUAL BASIC 2010 dffffffffffopppooRikyFirmansyah9
 
Modul xiii dan xiv algo
Modul xiii dan xiv algoModul xiii dan xiv algo
Modul xiii dan xiv algoSTMIK AKAKOM
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekWahyu Widodo
 

Similar to Object-Oriented-Programming-New-OOP.pptx (20)

Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2
 
Class dan object
Class dan objectClass dan object
Class dan object
 
Delphi
DelphiDelphi
Delphi
 
10 pemrograman berorientasi objek di php
10 pemrograman berorientasi objek di php10 pemrograman berorientasi objek di php
10 pemrograman berorientasi objek di php
 
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
 
mf488_10_092649.ppt
mf488_10_092649.pptmf488_10_092649.ppt
mf488_10_092649.ppt
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBO
 
Muhammad Firdaus
Muhammad FirdausMuhammad Firdaus
Muhammad Firdaus
 
Blog.yuna
Blog.yuna Blog.yuna
Blog.yuna
 
Tugas 5 rekayasa web
Tugas 5   rekayasa webTugas 5   rekayasa web
Tugas 5 rekayasa web
 
Modul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan ObjectModul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan Object
 
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
 
Materi VISUAL BASIC 2010 dffffffffffopppoo
Materi VISUAL BASIC 2010 dffffffffffopppooMateri VISUAL BASIC 2010 dffffffffffopppoo
Materi VISUAL BASIC 2010 dffffffffffopppoo
 
Modul xiii dan xiv algo
Modul xiii dan xiv algoModul xiii dan xiv algo
Modul xiii dan xiv algo
 
Bab8.array
Bab8.array Bab8.array
Bab8.array
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi Objek
 
Krisnha vb614
Krisnha vb614Krisnha vb614
Krisnha vb614
 
Tutorial borland c tea.
Tutorial borland c tea.Tutorial borland c tea.
Tutorial borland c tea.
 
Modul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & ObjekModul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & Objek
 

Recently uploaded

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfirwanabidin08
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxIrfanAudah1
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CAbdiera
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7IwanSumantri7
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptxHR MUSLIM
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxdpp11tya
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)MustahalMustahal
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptxMiftahunnajahTVIBS
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxsukmakarim1998
 
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi SelatanSosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatanssuser963292
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxLK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxPurmiasih
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAAndiCoc
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxRizkyPratiwi19
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BAbdiera
 
Aksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxAksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxsdn3jatiblora
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxadimulianta1
 

Recently uploaded (20)

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptx
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi SelatanSosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxLK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
 
Aksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxAksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptx
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptx
 

Object-Oriented-Programming-New-OOP.pptx

  • 2. Pemrograman Berbasis Objek DEFINISI Pemrograman Berorientasi Object 2 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.
  • 3. Pemrograman Berbasis Objek CONTOH Pemrograman Berorientasi Object 3 Contoh :  Object : Manusia  Attribut  Method : Nama, tinggi, umur, berat badan dll : Makan, Minum, Berjalan, Bekerja  Object : Windows  Attribut  Method : Left, Top, Width, Height, BackgroundColor, : OnClick, OnClose, OnDoubleClick  Object : Keluarga  Attribut  Method : ayah, Ibu, Anak[] : TambahAnak,
  • 4. 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) tertentu. CONTOH Pemrograman Berorientasi Object 4
  • 5. 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. CONTOH Pemrograman Berorientasi Object 5
  • 6. Pemrograman Berbasis Objek CLASSDAN OBJECT Pemrograman Berorientasi Object 6 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)
  • 7. Pemrograman Berbasis Objek FITUR-FITUR OOP Pemrograman Berorientasi Object 7 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 OOPmendukung 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.
  • 8. 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(); CLASSDAN OBJECT Pemrograman Berorientasi Object 8 Mengakses atribut/method
  • 9. Pemrograman Berbasis Objek CONTOHPENGGUNAAN CLASS Pemrograman Berorientasi Object 9 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.
  • 10.
  • 11.
  • 12. Pemrograman Berbasis Objek CONTOHPENGGUNAAN CLASS Pemrograman Berorientasi Object 12 public class TestString { public static void main(String[] args) { String nama=" Universitas Komputer Indonesia"; System.out.println("ISI STRING System.out.println(" Panjang S ystem.out.println("Upper Case System.out.println("Lower Case System.out.println("=UNIKOM : "+nama); : "+nama.length()); : "+nama.toUpperCase()); : "+nama.toLowerCase()); : "+nama.equals("UNIKOM")); } } ISI STRING : Panjang : Upper Case : Universitas 30 UNIVERSITAS Komputer KOMPUTER Indonesia INDONESIA Lower Case : =UNIKOM : universitas false komputer indonesia
  • 13. Pemrograman Berbasis Objek MEMBUATCLASS SEDERHANA Pemrograman Berorientasi Object 13 > > Sintak pembuatan class sederhana class NamaKelas{ tipe_data tipe_data nama_kelas nama_atribut; nama_atribut; nama_object; NamaKelas(parameter){ … // isi konstruktor } void nama_method(parameter){ … / / } tipe_data isi method berbentuk procedure nama_method_function(paramter){ … // isi method berbentuk function return ….; } } Daftar Attribut Daftar Method (Procedure/Function /Constructor)
  • 14. Pemrograman Berbasis Objek CONTOHCLASS SEDERHANA Pemrograman Berorientasi Object 14 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 Xdan Ybelum didefinisikan.  Mengisi Nilai X  Mengisi Nilai Y  Mengisi Nilai Xdan Y(sekaligus)  Menampilkan nilai Xdan Y  Pindah ke Koordinat Lain (berdasarkan jarak atau ke titik tertentu)  Menghitung Jarak Ke Titik Lain
  • 15. Pemrograman Berbasis Objek CONTOHCLASS SEDERHANA Pemrograman Berorientasi Object 15 class x1,double y1){ T i t i k { double x; double y; Titik(){ x=0; y=0; } Titik(double x=x1; y=y1; } void tampil(){ System.out.println("("+x+","+y+")"); } void pindah(double x1, double y1){ x=x1; y=y1; }
  • 16. Pemrograman Berbasis Objek CONTOHCLASS SEDERHANA Pemrograman Berorientasi Object 16 void pindah(Titik t){ x=t.x ; y=t.y; } void isiX(double x1){ x=x1; } void isiY(double y1){ y=y1; y1){ } void isiXY(double x1,double x=x1; y=y1; }
  • 17. Pemrograman Berbasis Objek double jarakKe(double x1, double y1){ double jarak; jarak=Math.pow(Math.pow(x -x1,2)+Math.pow(y- y1,2),0.5); return jarak; } double jarakKe(Titik t2){ double jarak; jarak=Math.pow(Math.pow(x -t2.x,2)+Math.pow(y - t2.y,2),0.5); return jarak; } } CONTOHCLASS SEDERHANA Pemrograman Berorientasi Object 17 Math.pow(x,y) = 𝑥𝑦
  • 18. Pemrograman Berbasis Objek MEMBUATKELAS TESTER Pemrograman Berorientasi Object 18 Kelas tester digunakan sebagai class untuk melakukan uji coba terhadap class yang telah dibuat. Sebaiknya kelas tester dibuat terpisah dari file classnya.
  • 19. Pemrograman Berbasis Objek public class TitikTester { public static void main(String[] args) { t1,t2; Titik();// Tanpa parameter x=0, y=0 Titik t1=new 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.tampil(); t1.pindah(5,1); pindah T1 : "); System.out.print("Setelah t1.tampil(); d o u b l e j a r a k ; jar ak=t1.jarakKe(t2); Syste m.out.println("Jarak dari T1 ke T2 : "+jarak); } } MEMBUATKELAS TESTER Pemrograman Berorientasi Object 19 T1 : (0.0,0.0) T2 : (9.0,4.0) Setelah pindah T1 : (5.0,1.0) Jarak dari T1 ke T2 : 5.0
  • 20. 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 Membuat Class MObil
  • 21. 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(); } }
  • 22. Pemrograman Berbasis Objek CLASS CALCULATOR Pemrograman Berorientasi Object 22 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()  kali()  bagi() : Mereturnkan nilai Operan1 – Operan2 : Mereturnkan nilai Operan1 * Operan2 : Mereturnkan nilai Operan1 / Operan2  pangkat() : Mereturnkan nilai Operan1^Operan2 > > Kelas tersebut harus bisa dijalankan dengan menggunakan Class CalculatorTester (di slide berikutnya)
  • 23. 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 System.out.println("Kurang System.out.println("Kali System.out.println("Bagi System.out.println("Pangkat : "+c.tambah()); : "+c.kurang()); : "+c.kali()); : "+c.bagi()); : "+c.pangkat()); } } Pemrograman Berorientasi Object 19 CLASS CALCULATORTESTER Tambah Kurang Kali Bagi : 12.0 : 2.0 : 35.0 : 1.4 Pangkat : 16807.0
  • 24. Pemrograman Berbasis Objek > > Buatlah class Nilai  Attribut :  Quis bertipe double  UTS bertipe double  UAS bertipe double  Method :  setQuis(double x) : Mengisi nilai quis  setUTS(double x) : Mengisi nilai UTS  setUAS(double x) : Mengisi nilai UAS  getNA() : Mereturnkan nilai akhir berupa double  getIndex() : Mereturnkan index berupa char  getKeterangan() : Mereturnkan keterangan berupa String Pemrograman Berorientasi Object 20 CLASS NILAI Rumus NilaiAkhir NA = 20% QUIS + 30%*UTS + 50% * UAS Aturan Index  NA80..100 Index=‘A’  NA 68..80  NA 56..68  NA 45..56  NA 0..45 Index=‘B’ Index=‘C’ Index=‘D’ Index=‘E’ > > Aturan Keterangan  Index=‘A’  Index=‘B’  Index=‘C’  Index=‘D’  Index=‘E’ : Sangat Baik : Baik : Cukup : Kurang : Sangat Kurang
  • 25. Pemrograman Berbasis Objek args) { public class NilaiTester { public static void main(String[] Nilai n=new Nilai(); n.setQuis(60); n.setUTS(80); n.setUAS(75); System.out.println(" Quis System.out.println("UTS System.out.println("UAS System.out.println("NA S ystem.out.println("Index System.out.println(" Keterangan : "+n.Quis); : "+n.UTS); : "+n.UAS); : "+n.getNA()); : "+n.getIndex()); : "+n.getKeterangan()); } } Pemrograman Berorientasi Object 21 CLASS NILAITESTER Quis UTS UAS NA Index : 60.0 : 80.0 : 75.0 : 73.5 : B Keterangan : Baik
  • 27. Pemrograman Berbasis Objek PACKAGE Pemrograman Berorientasi Object 27 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.
  • 28. Pemrograman Berbasis Objek MEMBUAT PACKAGE Pemrograman Berorientasi Object 28 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. package mylib ; class Titik { double x; double y; }
  • 29. Pemrograman Berbasis Objek ATURANPENAMAAN PACKAGE Pemrograman Berorientasi Object 29 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  Twitter  Google maps : package com.facebook.android : package com.twitter.interop : package com.google.android.maps
  • 30. Pemrograman Berbasis Objek IMPORT PACKAGE Pemrograman Berorientasi Object 30 Impor t package berar ti anda ingin menggunakan member/isi dari sebuah package. Impor t suatu package dilakukan dengan keyword impor t. namapackage. namaclass ; // import 1 class namapackage .*; // import seluruh isi package. mylib. Titik ; import atau i mport > > Contoh : import 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.
  • 31. Pemrograman Berbasis Objek IMPORT PACKAGE Pemrograman Berorientasi Object 31 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();
  • 32. Pemrograman Berbasis Objek ACCESS MODIFIER Pemrograman Berorientasi Object 32 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
  • 33. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVEL KELAS Pemrograman Berorientasi Object 33 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).
  • 34. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELKELAS Pemrograman Berorientasi Object 34 // Nama File : package1/Tester.java package package1; class Tester { public static void main(String[] args) { Titik t1=new Titik(); } } > > 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 package yang sama
  • 35. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELKELAS Pemrograman Berorientasi Object 35 > > Akses : Default/Package -Private // Nama File : package1/Titik.java package package1; class Titik { public Titik(){ System.out.println("Titik di package 1"); } } // Nama File : Tester.java import package1.Titik; class Tester { public static void main(String[] args) { Titik t1=new Titik(); } } Class Titik berada di package bernama package1, Class Tester tidak memiliki package
  • 36. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELKELAS Pemrograman Berorientasi Object 36 // Nama File : package1/Tester.java package package1; class Tester { public static void main(String[] args) { Titik t1=new Titik(); } } > > 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 package yang sama
  • 37. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELKELAS Pemrograman Berorientasi Object 37 > > Akses : public // Nama File : package1/Titik.java package package1; public class Titik { public Titik(){ System.out.println("Titik di package 1"); } } // Nama File : Tester.java import package1.Titik; class Tester { public static void main(String[] args) { Titik t1=new Titik(); } } Class Titik berada di package bernama package1, Class Tester tidak memiliki package
  • 38. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELMEMBER Pemrograman Berorientasi Object 38 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 (classturunannya)
  • 39. Pemrograman Berbasis Objek PENGATURANAKSESDI LEVELMEMBER Pemrograman Berorientasi Object 39 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
  • 40. Pemrograman Berbasis Objek > > Visibilitas member-member class Adari class lain. PENGATURANAKSESDI LEVELMEMBER Pemrograman Berorientasi Object 40 Modifier MemberA 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
  • 41. 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) ACCESS MODIFIER Pemrograman Berorientasi Object 41
  • 42. Pemrograman Berbasis Objek CONTOHKASUS ACCESSMODIFIER Pemrograman Berorientasi Object 42 > > 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. public class Nilai { public double Quis; public double UTS; pu blic double UAS; publ ic double getNA(){ return 0.20*Quis+0.30*UTS+0.5*UAS; } }
  • 43. Pemrograman Berbasis Objek CONTOHKASUS ACCESSMODIFIER Pemrograman Berorientasi Object 43 > > Contoh pemanggilan class Nilai public class NilaiTester { public static void main(String[] args ) { Nilai n=new Nilai(); n.Quis=90; n.UTS=70; n.UAS=150; System.out.println("NA : "+n.getNA()); } } > > 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.
  • 44. Pemrograman Berbasis Objek CONTOHKASUS ACCESSMODIFIER Pemrograman Berorientasi Object 44 > > Solusinya adalah dengan membuat atribut Quis, UTSdan UAS tidak bisa diisi secara langsung (misalnya dengan private atau protected. > > Apakah Cukup? Tidak, dengan hanya mengubah public menjadi private, maka pengisian nilai Quis, UTSdan UAStidak bisa dilakukan. Solusinya adalah dengan public class Nilai { private double Quis; private double UTS; p rivate double UAS; pu blic double getNA(){ return 0.20*Quis+0.30*UTS+0.5*UAS; } }
  • 45. Pemrograman Berbasis Objek CONTOHKASUS ACCESSMODIFIER Pemrograman Berorientasi Object 45 > > Solusinya adalah dengan membuat atribut Quis, UTSdan UAS tidak bisa diisi secara langsung (misalnya dengan private atau protected. public class Nilai { private double Quis; private double UTS; private double UAS; public double getNA(){ return 0.20*Quis+0.30*UTS+0.5*UAS; } } > > Cukup? Tidak . Karena atribut Quis, UTSdan UAS tidak bisa diakses dari mana pun.
  • 46. Pemrograman Berbasis Objek CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 46 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).
  • 47. Pemrograman Berbasis Objek > > Method setter dan getter untuk Quis, UTS, UAS. CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 47 public Nilai { double double double Quis; UTS; UAS; class private private private public void setQuis(double x){ Quis=x; } public void setUTS(double x){ UTS=x; } public void setUAS(double x){ UAS=x; } Function setter
  • 48. Pemrograman Berbasis Objek > > Method setter dan getter untuk Quis, UTS, UAS. CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 48 public double return getQuis(){ Quis; } public double return getUTS(){ UTS; } public double return getUAS(){ UAS; } public double return getNA(){ 0.20*Quis+0.30 } } Function getter *UTS+0.5*UAS;
  • 49. Pemrograman Berbasis Objek CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 49 > > Contoh pemanggilan class Nilai berubah, karena pengisian atribut dilakukan melalui function. public class NilaiTester { public static void main(String[] args ) { Nilai n=new Nilai(); n.setQuis(90); n.setUTS(70); n.setUAS(150); System.out.println("NA : "+n.getNA()); } } > > 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.
  • 50. Pemrograman Berbasis Objek CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 50 Solusinya adalah dengan membuat validasi pada method getter. Nilai atribut hanya akan berubah jika nilai yang diinput valid. Perubahan method getter. public void setQuis(double x){ if(x>=0 && x<=100) Quis=x; } public void setUTS(double x){ if(x>=0 && x<=100) UTS=x; } public void setUAS(double x){ if(x>=0 && x<=100) UAS=x; }
  • 51. Pemrograman Berbasis Objek CONTOHKASUSACCESSMODIFIER (METHOD SETTERDANGETTER) Pemrograman Berorientasi Object 51 > > Contoh pemanggilan class Nilai setelah ada validasi di method getter Pada perintah n.setUAS(150), pengisian UAS menjadi 150 tidak dilakukan karena nilainya tidak valid. Jika dieksekusi akan menghasilkan NA : 39.0 karena atribut UAS bernilai 0 public class NilaiTester { public static void main(String[] args ) { N i l a i n = n e w N i l a i (); n. setQuis(90); n.setUTS(70); n.setUAS(150); System.out.println("NA : "+n.getNA()); } }
  • 52. Pemrograman Berbasis Objek LATIHAN Pemrograman Berorientasi Object 52 Buatlah suatu class bernama Waktu dengan spesifikasi class adalah :  Attribut  menitWaktu bertipe integer. menitWaktu akan berisi jumlah menit sejak jam 00.00.  Method  getJam()  getMenit()  setJam(int j) : Mengambil bagian jam dari menitWaktu. : Mengambil bagian menit dari menitWaktu. : Menambahkan j*60 menit ke menitWaktu tanpa mempengaruhi bagian menitnya.  setMenit(int m) : Menambahkan m menit ke menitWaktu tanpa mempengaruhi bagian jamnya.  getTotalMenit() : Mengambil nilai dari menitWaktu
  • 53. Pemrograman Berbasis Objek LATIHAN Pemrograman Berorientasi Object 53  Method (lanjutan)  tambahJam(int j)  tambahMenit(int m)  tambahWaktu(int j, int m)  tampilWaktu() : Menambahkan j*60 ke menitWaktu : Menambahkan m ke menitWaktu : Menambahkan j*60+m ke menitWaktu : Menampilkan jam dan menit.
  • 54. Pemrograman Berbasis Objek public class WaktuTester { public static void main(String[] args ) { Waktu w=new Waktu (); "+w.getTotalMen it ()); "+w.getTotalMen it ()); Total Menit : Total Menit : Total Menit : "+w.getTotalMen it ()); JAM : "+w.getJam ()+" MENIT : "+ w.getMenit ()); System.out .println ("1. w.setJam ( 1 0 ); System.out .println ("2. w.setMenit (57 ); System.out .println ("3. w.tampilWa ktu (); w.tambahJa m (7 ); System.out .println ("4. w.tambahMe nit (40 ); System.out .println ("5. JAM : "+w.getJam ()+" MENIT : "+ w.getMenit ()); } } Pemrograman Berorientasi Object 50 CLASS WAKTUTESTER 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
  • 56. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) Pemrograman Berorientasi Object 56 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.
  • 57. Pemrograman Berbasis Objek > > Contoh : INHERITANCE (PEWARISAN) Pemrograman Berorientasi Object 57 - (private) + (public) # (protected)
  • 58. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) Pemrograman Berorientasi Object 58 > > Class Binatang package pewarisan; public class Binatang { private String nama; public void setNama(String n){ nama=n; } public String getNama(){ return nama; } public void bersuara(){ System.out.println(getNama()+" sedang bersuara."); } } Setiap Binatang mempunyai kesamaan, yaitu mempunyai nama dan dapat bersuara.
  • 59. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) • > > Class BinatangTester package pewarisan; public class BinatangTester { public static void main(String[] args) { Binatang a; a=new Binatang(); a.setNama("kuda"); a.bersuara(); } } Pemrograman Berorientasi Object 59 Tampilan hasil run : kuda sedang bersuara.
  • 60. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) Pemrograman Berorientasi Object 60 > >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.
  • 61. Pemrograman Berbasis Objek Oleh : Andri Heryandi,M.T. 57 INHERITANCE (PEWARISAN) > > 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(); b.bertelur(); b.terbang(); // diturunkan dari Binatang // ditambahkan di Burung // ditambahkan di Burung } } Hasil Run : Pipit sedang bersuara. Pipit sedang bertelur Pipit sedang terbang
  • 62. Pemrograman Berbasis Objek Pemrograman Berorientasi Object 58 INHERITANCE (PEWARISAN) > > 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.
  • 63. Pemrograman Berbasis Objek Oleh : Andri Heryandi,M.T. 59 INHERITANCE (PEWARISAN) > > 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(); m.berjalan(); m.melahirkan(); // diturunkan dari Binatang // ditambahkan di Mamalia // ditambahkan di Mamalia } } Hasil Run : kuda sedang bersuara. kuda sedang berjalan kuda sedang melahirkan.
  • 64. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 64 Pemrograman Berorientasi Object > > 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].
  • 65. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) • > > Class ElangTester package pewarisan; public class ElangTester { public static void main(String[] args) { Elang e=new Elang(); e.setNama("Elang"); 65 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 Object
  • 66. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 66 Pemrograman Berorientasi Object > > 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.
  • 67. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 67 Pemrograman Berorientasi Object > > 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(); k.terbang(); k.bersuara(); // diturunkan dari Burung // diturunkan dari Burung // 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
  • 68. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 68 Pemrograman Berorientasi Object > > 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.
  • 69. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 69 Pemrograman Berorientasi Object > > 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(); k.berlari(); // override di Kuda // 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
  • 70. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) 70 Pemrograman Berorientasi Object > > 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.
  • 71. Pemrograman Berbasis Objek INHERITANCE (PEWARISAN) • > > 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(); • } 71 } Hasil Run : Si Mooo sedang berjalan Si Mooo sedang melahirkan. Si Mooo bersuara : Moooooooooo Pemrograman Berorientasi Object
  • 72. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 72 Pemrograman Berorientasi Object 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  Untuk method : super(), atau super(daftar_parameter) : super.namamethhod(daftar_parameter)
  • 73. Pemrograman Berbasis Objek Contoh :  Class Waktu2 merupakan turunan dari class Waktu yang mempunyai atribut baru bernama detik. OVERRIDE CONSTRUCTOR 73 Pemrograman Berorientasi Object
  • 74. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 74 Pemrograman Berorientasi Object > > Class Waktu package pewarisan; public class Waktu { private int jam; private int menit; public Waktu(){ jam=0; menit=0; } public Waktu(int j, int m){ jam=j; menit=m; } Class Waktu mempunyai 2 buah constructor yaitu : 1. Constructor tanpa parameter 2. Constructor dengan parameter j (jam) dan m (menit).
  • 75. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 75 > > Class Waktu public void setJam(int jam){ this.jam=jam; } public int getJam(){ return jam; } public void setMenit(int menit){ this.menit=menit; } public String getWaktu(){ return jam+":"+menit; } } Perhatikan pada method setJam. Method ini memiliki parameter input bernama jam. Class waktu juga mempunyai atribut bernama jam. Untuk membedakan jam dari parameter dan jam milik atribut class, gunakan keyword this. Keyword this menyatakan “milik class ini”. Pernyataan “this.jam=jam” berarti atribut jam milik class ini diisi dengan jam dari parameter. Begitu pula untuk method setMenit. Pemrograman Berorientasi Object
  • 76. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 76 Pemrograman Berorientasi Object > > Class WaktuTester package pewarisan; public class WaktuTester { public static void main(String[] args) { 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()); } } Hasil Run : W1 : 0:0 W2 : 5:7
  • 77. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 77 Pemrograman Berorientasi Object > > 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; }
  • 78. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 78 Pemrograman Berorientasi Object > > 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; } }
  • 79. Pemrograman Berbasis Objek OVERRIDE CONSTRUCTOR 79 Pemrograman Berorientasi Object > > Class Waktu2 package pewarisan; public class Waktu2Tester { 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()); } } Hasil Run : W1 : 0:0:0 W2 : 10:12:20
  • 80. Pemrograman Berbasis Objek POLYMORPH 80 Pemrograman Berorientasi Object Polymorph ( mempunyai banyak bentuk). Jenis-jenis polymorph bisa terjadi adalah :  Polymorph Ad Hoc  Polymorph Subtyping
  • 81. Pemrograman Berbasis Objek POLYMORPH 81 Pemrograman Berorientasi Object Polymorph Ad Hoc terjadi ketika memiliki sebuah method yang akan mempunyai operasi yang berbeda ketika dipanggil dengan tipe parameter yang berbeda. package pewarisan; public class Polymorph { public int tambah(int x, int y){ return x+y; } public String tambah(String x, String y){ return x+" "+y; } } Class Polymorph mempunyai 2 buah method yang namanya sama yaitu “tambah”, tetapi dibedakan dengan parameternya.
  • 82. Pemrograman Berbasis Objek POLYMORPH 82 Pemrograman Berorientasi Object > > 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
  • 83. Pemrograman Berbasis Objek POLYMORPH 83 Pemrograman Berorientasi Object Polymorph Subtyping terjadi sebuah referensi dari sebuah class diakses dengan menggunakan referensi subclassnya. package pewarisan; public class PolySubtype { public static void main(String[] args) { Binatang 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(); kuda.bersuara(); sapi.bersuara(); } } Hasil Run : Elang sedang bersuara. Kakaktua sedang bersuara. Si Pony sedang bersuara. Si Mooo bersuara : Moooooooooo Seluruh objek menggunakan superclass. Tetapi tetap akan mengeksekusi method masing- masing class.
  • 84. Pemrograman Berbasis Objek Contoh Lain : Pemrograman Berorientasi Object 80 POLYMORPH package pewarisan; public class PolySubtype2 { static void bicara(Binatang b){ b.bersuara(); } public static void main(String[] args) { Elang e=new Elang();e.setNama("Hunter"); Kakaktua k=new Kakaktua();k.setNama("Oces"); Kuda kd=new Kuda();kd.setNama("Blacky"); Sapi s=new Sapi();s.setNama("Moooo"); bicara(e); bicara(k); bicara(kd); bicara(s); } } Hasil Run : Hunter sedang bersuara. Oces sedang bersuara. Blacky sedang bersuara. Moooo bersuara : Moooooooooo Method bicara membutuhkan parameter dengan class Binatang. Pemanggilan method Bicara menggunakan parameter subclass dari Binatang.
  • 86. Pemrograman Berbasis Objek ABSTRACT Pemrograman Berorientasi Object 86 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.
  • 87. Pemrograman Berbasis Objek CLASS ABSTRACT Pemrograman Berorientasi Object 87 > > 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); } }
  • 88. Pemrograman Berbasis Objek CLASS ABSTRACT Pemrograman Berorientasi Object 88 > > Contoh ClassAbstract 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); } }
  • 89. Pemrograman Berbasis Objek CLASS ABSTRACT Pemrograman Berorientasi Object 89 > > Contoh ClassTester public class PegawaiTester { public static void main(String[] args) { Pegawai p=new Pegawai("Januar","1234"); p.kirimEmail("a@test.com","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)
  • 90. Pemrograman Berbasis Objek CLASS ABSTRACT Pemrograman Berorientasi Object 90 > > 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; } }
  • 91. Pemrograman Berbasis Objek CLASS ABSTRACT Pemrograman Berorientasi Object 91 > > Test kelas turunan public class StaffTester { public static void main(String[] args) { Staff s=new Staff("Januar","1234","Keuangan"); s.kirimEmail("a@test.com", "info test", "isi email"); System.out.println("NIP : "+s.getNIP()+"n"+ "Nama : "+s.getNama()+"n"+ "Bagian : "+s.getBagian()); } } > > Tampilan Output : Januar Kirim email ke : a@test.com Dengan Subjek : info test Dengan Isi : isi email NIP : 1234 Nama : Januar Bagian : Keuangan
  • 92. Pemrograman Berbasis Objek METHOD ABSTRACT Pemrograman Berorientasi Object 92 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.
  • 93. Pemrograman Berbasis Objek METHOD ABSTRACT Pemrograman Berorientasi Object 93 > > Class Pegawai 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 abstract void kirimEmail(String to, String subjek, String isi); } Hanya mendeklarasikan nama method dan parameter (tanpa isi method)
  • 94. Pemrograman Berbasis Objek METHOD ABSTRACT Pemrograman Berorientasi Object 94 > > 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; } public String getBagian(){ return bagian; } public void kirimEmail(String to, String subjek, String isi){ System.out.println("Kirim ke "+to+" dengan judul "+ subjek+" dengan isi : "+isi); } } Isi method dikembangkandi subclass.
  • 96. Pemrograman Berbasis Objek INTERFACE Pemrograman Berorientasi Object 96 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.
  • 97. Pemrograman Berbasis Objek CONTOHKASUS INTERFACE Pemrograman Berorientasi Object 97 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 : panjang, lebar : panjang *lebar : 2 * (panjang + lebar) : sisi : sisi * sisi : 4 * sisi  Attribut  Luas  Keliling  Bujursangkar  Attribut  Luas  Keliling  Lingkaran  Attribut  Luas  Keliling : radius : pi * radius * radius : 2 * pi * radius
  • 98. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object 98 > > Inter face Bidang2D public interface Bidang2D { double getKeliling(); double getLuas(); }
  • 99. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object 99 > > Inter face Bidang2D public interface Bidang2D { double getKeliling(); double getLuas(); }
  • 100. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object 100 > > 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; } }
  • 101. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object 101 > > 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; } }
  • 102. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object 102 > > 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; } }
  • 103. Pemrograman Berbasis Objek Pemrograman Berorientasi Object 99 CONTOH INTERFACE > >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()); } }
  • 104. Pemrograman Berbasis Objek CONTOH INTERFACE Pemrograman Berorientasi Object > > 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 104
  • 105. Pemrograman Berbasis Objek 105 CONTOHINTERFACE (POLYMORPH) Pemrograman Berorientasi Object > >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
  • 106. Pemrograman Berbasis Objek 106 IMPLEMENTASI MULTIPLEINTERFACE Pemrograman Berorientasi Object 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.
  • 107. Pemrograman Berbasis Objek 107 IMPLEMENTASI MULTIPLEINTERFACE Pemrograman Berorientasi Object > > Inter face Mobil public interface Mobil { void berjalan(); // dan method-method lainnya } > > Inter face Helikopter public interface Helikopter { void terbang(); // dan method-method lainnya }
  • 108. Pemrograman Berbasis Objek IMPLEMENTASI MULTIPLEINTERFACE Pemrograman Berorientasi Object > > 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"); } } 108
  • 109. Pemrograman Berbasis Objek 109 IMPLEMENTASI MULTIPLEINTERFACE Pemrograman Berorientasi Object > > 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
  • 111. Pemrograman Berbasis Objek 111 FINAL Pemrograman Berorientasi Object 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.
  • 112. Pemrograman Berbasis Objek FINAL ATRIBUT/METHOD Pemrograman Berorientasi Object > > Class MyMath public class MyMath { 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); } } Atribut dari class MyMath tidak bisa diubah dari mana pun termasuk dari class dirinya sendiri Method dari class MyMath tidak bisa dioverride di subclass walau pun classnya boleh di-extends (diturunkan) 112
  • 113. Pemrograman Berbasis Objek FINAL CLASS Pemrograman Berorientasi Object > > Class MyMath public final class MyMath { 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)); Class MyMath tidak bisa di-extends ke subclass. } public final double pangkat(double x, double y){ return Math.pow(x, y); } } 113
  • 114. Pemrograman Berbasis Objek Pemrograman Berorientasi Object 110 FINAL ATRIBUT/METHOD > > 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
  • 116. Pemrograman Berbasis Objek 116 STATIC Pemrograman Berorientasi Object 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.
  • 117. Pemrograman Berbasis Objek 117 STATIC Pemrograman Berorientasi Object > > 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()
  • 118. Pemrograman Berbasis Objek STATIC Pemrograman Berorientasi Object > > 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); } } 118
  • 119. Pemrograman Berbasis Objek 119 STATIC Pemrograman Berorientasi Object > > 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
  • 120. 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 Variable yang menjadi dideklarasikan di dalam kelas 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. JENIS– JENIS VARIABLE Pemrograman Berorientasi Object JANGAN TERTUKAR!!!!!! 120
  • 121. Pemrograman Berbasis Objek JENIS– JENIS VARIABLE Pemrograman Berorientasi Object > > Contoh Class : public class MyVar { public static int myStatic; public int myInstance; private String myName; public void test(){ int i; i=0; for(int j=1;j<=10;j++){ i+=2; } myInstance=i; } } Variable Static Variable Instance Variable Local 121