Object Oriented Programming New OOP
Object Oriented Programming New OOP
PROGRAMMING (OOP)
DEFINISI
Pemrograman Berbasis Objek
2
OOP Intrductions
Apa itu PBO?
2. Interpreter:
Mengkompilasi dan menjalankan
source code secara langsung
Tingkat Bahasa Pemrograman
1. Bahasa Pemrograman Tingkat Rendah
(Assembler)
2. Bahasa Pemrograman Tingkat Sedang
(C, Pascal, Fortran)
3. Bahasa Pemrograman Tingkat Tinggi
(Java, C++, C#)
Why Java?
•Simple and familiar object oriented
programming
•Architecture neutral (platform independent)
•Open Source
•First rank in TIOBE Index
•De-Facto standard programming language in
education
Java Family Suite
#include <stdio.h>
000101000011
001010000100
main() 010010010101
{ C Compiler 010101010010
printf(“Hallo”);
}
¡Contoh :
§ Object : Manusia
§ Attribut : Nama, tinggi, umur, berat badan dll
§ Method : Makan, Minum, Berjalan, Bekerja
§ Object : Windows
§ Attribut : Left, Top, Width, Height, BackgroundColor,
§ Method : OnClick, OnClose, OnDoubleClick
§ Object : Keluarga
§ Attribut : ayah, Ibu, Anak[]
§ Method : TambahAnak,
14
CONTOH
Pemrograman Berbasis Objek
15
CONTOH
Pemrograman Berbasis Objek
16
CLASS DAN OBJECT
Pemrograman Berbasis Objek
¡Class
Class adalah cetak biru/prototipe/pendefinisian dari suatu benda.
Didalam class-lah attribut dan method suatu object didefinisikan.
Contoh : Manusia, Window
¡Object
Object adalah bentuk instance/nyata/real/hidup dari sebuah class.
Contoh :
§ Shelly:Manusia (Object Shelly mempunyai Class Manusia)
§ Form1:Window (Object Form1 mempunyai class Window)
17
FITUR-FITUR OOP
Pemrograman Berbasis Objek
¡Encapsulation
Penggabungan antara data (attribut) dengan prosedure
(method) yang mengolahnya.
¡Inheritance
Penurunan sifat (attribut dan method) dari Class Parent
(SuperClass) ke Class Child ( SubClass). Ini menandakan
bahwa OOP mendukung konsep code reuse dimana data-data
yang ada di class parent bisa di kenal di kelas child.
¡Polymorphism
Sebuah kemampuan dari sebuah objek untuk bekerja dalam
berbagai bentuk . Penggunaan umum polymorphism biasanya
digunakan ketika sebuah reference dari class parent
digunakan untuk mengacu ke class child.
18
CLASS DAN OBJECT
Pemrograman Berbasis Objek
19
CONTOH PENGGUNAAN CLASS
Pemrograman Berbasis Objek
20
CONTOH PENGGUNAAN CLASS
Pemrograman Berbasis Objek
23
MEMBUAT CLASS SEDERHANA
Pemrograman Berbasis Objek
24
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek
25
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek
class T i t i k {
doubl e x ;
doubl e y ;
Titik (){
x=0;
y=0;
}
Titik (do uble x1,d oub le y1 ){
x=x1;
y=y1;
}
v oid tam pil () {
S yste m.o ut.pr intl n (" ("+x+ ","+ y+" )");
}
v oid pin dah (d oubl e x 1, do uble y1 ){
x =x1;
y=y1;
}
26
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek
27
CONTOH CLASS SEDERHANA
Pemrograman Berbasis Objek
28
MEMBUAT KELAS TESTER
Pemrograman Berbasis Objek
29
MEMBUAT KELAS TESTER
Pemrograman Berbasis Objek
void cekKecepatan() {
if (kecepatan==0)
aktifitas="parkir";
}
void cetakAtribut() {
System.out.println("Aktifitas = "+aktifitas);
System.out.println("warna = "+warna);
System.out.println("Kecepatan = "+kecepatan);
}
public static void main(String [] args) {
Mobil mobilku = new Mobil();
mobilku.kecepatan=0;
mobilku.warna="merah";
mobilku.cekKecepatan();
mobilku.cetakAtribut();
}
}
CLASS CALCULATOR
Pemrograman Berbasis Objek
33
CLASS CALCULATORTESTER
Pemrograman Berbasis Objek
20
CLASS NILAITESTER
Pemrograman Berbasis Objek
O
22
PACKAGE
Pemrograman Berbasis Objek
38
MEMBUAT PACKAGE
Pemrograman Berbasis Objek
39
ATURAN PENAMAAN PACKAGE
Pemrograman Berbasis Objek
40
IMPORT PACKAGE
Pemrograman Berbasis Objek
41
IMPORT PACKAGE
Pemrograman Berbasis Objek
42
ACCESS MODIFIER
Pemrograman Berbasis Objek
43
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek
44
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek
45
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek
46
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek
>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
}
Kedua kelas berada pada
// Nama File : package1/Tester.java package yang sama
package package1;
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
47
PENGATURAN AKSES DI LEVEL KELAS
Pemrograman Berbasis Objek
>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public Titik(){
System.out.println("Titik di package 1");
}
} Class Titik berada di package
bernama package1, Class
// Nama File : Tester.java
import package1.Titik; Tester tidak memiliki package
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
48
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek
49
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y T
tanpa modifier Y Y T T
private Y T T T
Keterangan :
Y : Bisa diakses
T : Tidak bisa diakses
50
PENGATURAN AKSES DI LEVEL MEMBER
Pemrograman Berbasis Objek
51
ACCESS MODIFIER
Pemrograman Berbasis Objek
Alasannya adalah
¡Membatasi hak akses. Ini dilakukan agar sebuah member
tidak sembarangan dibaca atau diisi
¡Menyembunyikan informasi. Pengguna class tidak harus tahu
apa yang ada/terjadi di dalam class (Information Hiding)
52
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek
53
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek
54
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek
>>Apakah Cukup?
Tidak, dengan hanya mengubah public menjadi private, maka
pengisian nilai Quis, UTS dan UAS tidak bisa dilakukan. Solusinya
adalah dengan
55
CONTOH KASUS ACCESSMODIFIER
Pemrograman Berbasis Objek
>>Cukup? Tidak . Karena atribut Quis, UTS dan UAS tidak bisa
diakses dari mana pun.
56
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
57
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
58
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
59
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
60
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
61
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DANGETTER)
Pemrograman Berbasis Objek
62
LATIHAN
Pemrograman Berbasis Objek
63
LATIHAN
Pemrograman Berbasis Objek
§ Method (lanjutan)
§ tambahJam(int j) : Menambahkan j * 6 0 ke menitWaktu
§ tambahMenit(int m) : Menambahkan m ke menitWaktu
§ tambahWaktu(int j, int m) : Menambahkan j* 60+ m ke menitWaktu
§ tampilWaktu() : Menampilkan jam dan menit.
64
CLASS WAKTUTESTER
Pemrograman Berbasis Objek
O
51
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
67
Konsep Inheritance
Kelas A
(Kelas Dasar)
variabelInstanZ
>>Contoh :
- (private)
+ (public)
# (protected)
69
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
>>Class
Binatang
Setiap Binatang
package pewarisan;
public class Binatang { mempunyai kesamaan,
private String nama;
public void setNama(String n){
yaitu mempunyai nama
nama=n; dan dapat bersuara.
}
public String getNama(){
return nama;
}
public void bersuara(){
System.out.println(getNama()+" sedang bersuara.");
}
}
70
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
• >>Class BinatangTester
package pewarisan;
71
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
>>Class BurungTester
package pewarisan;
>>Class Mamalia
package pewarisan;
>>Class MamaliaTester
package pewarisan;
>>Class Elang
package pewarisan;
76
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
• >>Class ElangTester
package pewarisan;
77
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
>>Class Kakaktua
package pewarisan;
>>Class KakaktuaTester
package pewarisan;
>>Class Kuda
package pewarisan;
>>Class KudaTester
package pewarisan;
>>Class Sapi
package pewarisan;
82
INHERITANCE (PEWARISAN)
Pemrograman Berbasis Objek
• >>Class SapiTester
• package pewarisan;
83
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
84
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
¡Contoh :
§ Class Waktu2 merupakan turunan dari class Waktu yang mempunyai
atribut baru bernama detik.
85
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
>>Class Waktu
package pewarisan; Class Waktu mempunyai 2 buah
public class Waktu { constructor yaitu :
private int jam; 1. Constructor tanpa parameter
private int menit; 2. Constructor dengan parameter j
(jam) dan m (menit).
public Waktu(){
jam=0;
menit=0;
}
public Waktu(int j, int m){
jam=j;
menit=m;
}
86
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
>>Class Waktu
public void setJam(int jam){ Perhatikan pada method setJam.
this.jam=jam; Method ini memiliki parameter input
}
bernama jam. Class waktu juga
public int getJam(){
return jam; mempunyai atribut bernama jam.
} Untuk membedakan jam dari
public void setMenit(int menit){ parameter dan jam milik atribut class,
this.menit=menit; gunakan keyword this.
} Keyword this menyatakan “milik class
public String getWaktu(){ ini”.
return jam+":"+menit;
} Pernyataan “this.jam=jam” berarti
}
atribut jam milik class ini diisi dengan
jam dari parameter.
>>Class WaktuTester
package pewarisan; Hasil Run :
W1 : 0:0
public class WaktuTester {
public static void main(String[] args) { W2 : 5:7
Waktu w1, w2;
w1=new Waktu(); // memanggil constructor tanpa parameter
System.out.println("W1 : "+w1.getWaktu());
w2=new Waktu(5,7);// memanggil constructor dengan parameter
System.out.println("W2 : "+w2.getWaktu());
}
}
88
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
>>Class Waktu2
package pewarisan;
89
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
>>Class Waktu2Tester
public void setDetik(int detik){
this.detik=detik;
}
public int getDetik(){
return this.detik; // sama saja dengan return detik;
}
public String getWaktu(){
return super.getWaktu()+":"+detik;
// atau return getJam()+":"+getMenit()+":"+detik;
}
}
90
OVERRIDE CONSTRUCTOR
Pemrograman Berbasis Objek
>>Class
Waktu2
Hasil Run :
package pewarisan; W1 : 0:0:0
public class Waktu2Tester {
W2 : 10:12:20
public static void main(String[] args) {
Waktu2 w1,w2;
w1=new Waktu2();
System.out.println("W1 : "+w1.getWaktu());
w2=new Waktu2(10,12,20);
System.out.println("W2 : "+w2.getWaktu());
}
}
91
(POLYMORPH)
O
81
POLYMORPH
Pemrograman Berbasis Objek
93
Polymorphism
•Kemampuan untuk memperlakukan object
yang memiliki perilaku (bentuk) yang
berbeda
•Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggunakan
nama yang sama untuk beberapa method yang
berbeda parameter (tipe dan atau jumlah)
2. Overriding: Kemampuan subclass untuk menimpa
method dari superclass, yaitu dengan cara
menggunakan nama dan parameter yang sama
pada method
Polymorphism – Overloading
class Mobil { public class MobilKonstruktor{
String warna; public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, 2003);
int tahunProduksi;
mobilku.info();
public Mobil(){
}
void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
POLYMORPH
Pemrograman Berbasis Objek
96
POLYMORPH
Pemrograman Berbasis Objek
>>Class PolymorphTester
package pewarisan;
97
POLYMORPH
Pemrograman Berbasis Objek
98
POLYMORPH
Pemrograman Berbasis Objek
Contoh Lain :
Class run{
public static void main (String args[]){
Doctor doctorObj = new Doctor()
// treatPatient method in class Doctor will be executed
doctorObj.treatPatient();
O
81
ABSTRACT
Pemrograman Berbasis Objek
106
CLASS ABSTRACT
Pemrograman Berbasis Objek
107
CLASS ABSTRACT
Pemrograman Berbasis Objek
108
CLASS ABSTRACT
Pemrograman Berbasis Objek
at PegawaiTester.main(PegawaiTester.java:5)
109
CLASS ABSTRACT
Pemrograman Berbasis Objek
110
CLASS ABSTRACT
Pemrograman Berbasis Objek
}
}
>>Tampilan Output :
Januar Kirim email ke : [email protected]
Dengan Subjek : info test
Dengan Isi : isi email
NIP : 1234
Nama : Januar
Bagian : Keuangan
111
METHOD ABSTRACT
Pemrograman Berbasis Objek
112
METHOD ABSTRACT
Pemrograman Berbasis Objek
>>Class Pegawai
public abstract class Pegawai {
private String NIP;
private String nama;
public Pegawai(String nama, String NIP){
this.nama=nama;
this.NIP=NIP;
} Hanya mendeklarasikan nama
public String getNama(){ method dan parameter
return nama;
} (tanpa isi method)
public String getNIP(){
return NIP;
}
public abstract void kirimEmail(String to, String subjek, String isi);
}
113
METHOD ABSTRACT
Pemrograman Berbasis Objek
114
PART IV
(INTERFACE) 06
O
91
INTERFACE
Pemrograman Berbasis Objek
116
CONTOH KASUS INTERFACE
Pemrograman Berbasis Objek
118
CONTOH INTERFACE
Pemrograman Berbasis Objek
119
CONTOH INTERFACE
Pemrograman Berbasis Objek
120
CONTOH INTERFACE
Pemrograman Berbasis Objek
121
CONTOH INTERFACE
Pemrograman Berbasis Objek
122
CONTOH INTERFACE
Pemrograman Berbasis Objek
124
CONTOH INTERFACE
(POLYMORPH)
Pemrograman Berbasis Objek
126
IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek
127
IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek
>>Class Mobikopter
public class Mobikopter implements Mobil, Helikopter{
private String nama;
Mobikopter(String nama){
this.nama=nama;
}
public void berjalan(){
System.out.println(nama+" sedang berjalan");
}
public void terbang(){
System.out.println(nama+" sedang terbang");
}
}
128
IMPLEMENTASI MULTIPLE INTERFACE
Pemrograman Berbasis Objek
>>Class MobikopterTester
public class MobilkopterTester {
public static void main(String[] args) {
Mobikopter m=new Mobikopter("Moko");
m.berjalan();
m.terbang();
}
}
Hasil Run:
Moko sedang berjalan
Moko sedang terbang
129
PART IV
(FINAL) 06
O
106
FINAL
Pemrograman Berbasis Objek
131
FINAL ATRIBUT/METHOD
Pemrograman Berbasis Objek
>>Class MyMathTester
public class MyMathTester {
public static void main(String[] args) {
MyMath m=new MyMath();
System.out.println("PI : "+m.PI);
// m.PI=25.0; // pasti error
System.out.println("Luas Lingkaran : "+m.luasLingkaran(10));
System.out.println("Keliling Lingkaran : "+
m.kelilingLingkaran(10));
System.out.println("Sin(30) : "+m.sin(30));
System.out.println("Cos(30) : "+m.cos(30));
System.out.println("Tan(30) : "+m.tan(30));
System.out.println("2^8 : "+m.pangkat(2,8));
}
} Hasil Run:
PI : 3.1416
Luas Lingkaran : 314.16
Keliling Lingkaran : 62.832
Sin(30) : 0.49999999999999994
Cos(30) : 0.8660254037844387
Tan(30) : 0.5773502691896257
2^8 : 256.0 110
PART IV
(STATIC) 06
O
111
STATIC
Pemrograman Berbasis Objek
136
STATIC
Pemrograman Berbasis Objek
Contoh :
Math.PI
Math.sin()
Math.cos()
137
STATIC
Pemrograman Berbasis Objek
>>Class MyMath
public final class MyMath {
public static final double PI=3.1416;
public static double luasLingkaran(double radius){
return PI*radius*radius;
}
public static double kelilingLingkaran(double radius){
return 2*PI*radius;
}
public static double sin(double derajat){
return Math.sin(Math.toRadians(derajat));
}
public static double cos(double derajat){
return Math.cos(Math.toRadians(derajat));
}
public static double tan(double derajat){
return Math.tan(Math.toRadians(derajat));
}
public static double pangkat(double x, double y){
return Math.pow(x, y);
}
}
138
STATIC
Pemrograman Berbasis Objek
Hasil Run:
PI : 3.1416
Luas Lingkaran : 314.16
Keliling Lingkaran : 62.832
Sin(30) : 0.49999999999999994
Cos(30) : 0.8660254037844387
Tan(30) : 0.5773502691896257
2^8 : 256.0
139
JENIS – JENIS VARIABLE
Pemrograman Berbasis Objek
140
JENIS – JENIS VARIABLE
Pemrograman Berbasis Objek
>>Contoh Class :
public class MyVar {
public static int myStatic;
Variable Static
public int myInstance;
private String myName;
public void test(){ Variable Instance
int i;
i=0;
for(int j=1;j<=10;j++){ Variable Local
i+=2;
}
myInstance=i;
}
}
141