Transcript PBO Class
OOP dengan Java
• Implementasi Kelas, Method, dll
Property dan Method
• Di OOP:
– Data menjadi property
– Prosedur untuk data menjadi method
– Data + Prosedur menjadi kelas
Deklarasi Kelas
• Deklarasi kelas memiliki sintaks seperti
berikut:
class NamaKelas {
/*0 atau lebih property*/
/*0 atau lebih method*/
}
Property
• Deklarasi/definisi property:
– Tipedata namaproperty;
• Tipe data adalah tipe data primitif atau
kelas
int x;
Point p;
Method
• Deklarasi method sama seperti
prosedur di C:
public class ClassXXX{
tipekembalian method(tipe
parameter) {
/*isi method*/
return hasil; /*jika kembalian
tidak void*/
}
}
Class Design
• Ketika akan mendesain suatu klas,
pikirkan :
– Hal yang diketahui objek
– Hal yang dikerjakan objek
Class Design
• Hal yang diketahui objek disebut
dengan instance variable
• Hal yang dilakukan objek disebut
dengan method
Latihan
Class Design
• Apakah perbedaan antara class dan
objek? Class bukan objek, tetapi
dipergunakan untuk membangun objek
Class Design
• Menulis class
Class Dog{
int size;
String breed;
String name;
void bark(){
System.out.println(“Ruff! Ruff!”);
}
}
Class Design
• Class Tester
Class DogTestDrive{
public static void main(String[] args){
Dog d = new Dog();
d.size = 40;
d.bark();
}
Variables
• Ada dua jenis variable
– Primitive
– Reference
• Deklarasi variable
– Variable harus punya type
– Variable harus punya nama
int count;
Variable
• Variable bisa dianalogikan seperti
suatu gelas/kontainer, yang berfungsi
menyimpan sesuatu
Variable
Variable
• Jangan mengisi
variable melebihi
kapasitasnya!
int x = 24;
byte b = x;
// won’t work
Reference variable
• Tidak ada yang namanya object variable
• Yang ada hanya object reference variable
• Object reference variable berisi bit yang
merepresentasikan suatu cara untuk
mengakses suatu object
• Untuk lebih mudahnya, reference variable
bisa dianalogikan dengan suatu remote
control
• Primitive variable
byte b = 7;
• Reference variable
Dog d = new Dog();
3 tahap dalam object declaration,
creation & assignment
1. Deklarasi reference variable
Dog d = new Dog();
2. Create Object
Dog d = new Dog();
3. Link Object & reference
Dog d = new Dog();
• Ingat : suatu class mendeskripsikan apa yang
objek ketahui dan apa yang objek lakukan
• Objek dapat berperilaku berbeda walaupun
menjalankan method yang sama kalau
memiliki state yang berbeda
void play(){
soundPlayer.playSoung(title);
}
Song t2 = new Song();
t2.setArtist(“Travis”);
t2.setTitle(“Sing”);
Song s3 = new Song();
s3.setArtist(“Davis”);
s3.setTitle(“My Way”);
t2.play();
s3.play();
Class Dog{
int size;
String name;
void bark(){
if(size >60){
System.out.println(“Woof! Woof!”);
} else if (size > 14){
System.out.println(“Ruff! Ruff!”);
} else {
System.out.println(“Yip! Yip!”);
}
}
Method parameter
• Seperti halnya dengan bahasa pemrograman
lainnya, di Java kita juga bisa mengirim
suatu nilai pada method
Dog d = new Dog();
d.bark(3);
void bark(int numOfBarks){
while (numOfBarks<0){
System.out.println(“ruff”);
numOfBarks = numOfBarks -1;
}
}
• Kita juga dapat memperoleh nilai
balikan dari suatu method
t.takeTwo(12,24);
int takeTwo(int x, int y){
return x + y;
}
atau bisa juga
int foo = 7;
int bar = 5;
t.takeTwo(foo, bar);
Java adalah pass-by-value
•
Deklarasi sebuah variable dan beri nilai 7
•
Deklarasi sebuah method dengan int
parameter yang namanya z
•
Panggil method tsb, lewatkan variable x
sebagai argumen, bit di x dicopykan ke z
•
Ubah nilai z didalam method, nilai x
tidak ikut berubah. Argumen yang
dilewatkan ke parameter z adalah copy
dari x
Getter dan Setter
Class ElectricGuitar{
String brand
int numOfPickups;
boolean rockStarUseIt;
String getBrand(){
return brand;
}
Void setBrand(String aBrand){
brand = aBrand;
}
Enkapsulasi
• Dengan .(dot) operator, kita bisa mengakses
suatu variable
theCat.height = 27;
• Kemudian ada yg melakukan
theCat.height = 0;
// tidak boleh terjadi!
• Hal tersebut bisa diatasi dengan enkapsulasi
• Enkapsulasi adalah suatu cara untuk
menyembunyikan/membatasi akses suatu
variable
Enkapsulasi
Dibuatkan suatu setter & getter method
public void setHeight(int ht){
if(ht>9){
height = ht;
}
}
Dengan method diatas, maka height tidak
akan bernilai kurang dari 9
Enkapsulasi
• Buat instance variable private
• Sedangkan getter dan setter public
Deklarasi dan inisialisasi
instance variable
• Instance variable selalu mempunyai default
value.
• Jika kita tidak secara eksplisit memberi nilai
tertentu pada instance variable, maka akan
bernilai
–
–
–
–
integer
floating point
booleans
reference
0
0.0
false
null
Class PoorDog
class PoorDog{
private int size;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
Class PoorDog
class PoorDogTestDrive {
public static void main(String[] args){
PoorDog one = new PoorDog();
System.out.println("Dog size is " + one.getSize());
System.out.println("Dog name is " + one.getName());
}
}
Perbedaan antara instance
variable dan local variable
• Instance variable dideklarasikan
didalam class tetapi tidak didalam
method
Class Horse{
private double Height;
private String breed;
// more code
}
Perbedaan antara instance
variable dan local variable
• Local variable dideklarasikan didalam
method
class AddThing{
int a;
int b = 12;
public int add(){
int total = a + b;
return total;
}
Perbedaan antara instance
variable dan local variable
• Local variable harus diinisialisasi
sebelum dipakai
class Foo {
public void go(){
int x;
int z = x + 3;
}
}
PR
Pewarisan/Inheritance
• Suatu kelas dapat diciptakan berdasarkan kelas lain.
• Kelas baru ini mempunyai sifat-sifat yang sama
dengan kelas pembentuknya, ditambah sifat-sifat
khusus lainnya.
• Dengan pewarisan kita dapat menciptakan kelas baru
yang mempunyai sifat sama dengan kelas lain tanpa
harus menulis ulang bagian-bagian yang sama.
• Pewarisan merupakan unsur penting dalam
pemrograman berorientasi objek dan merupakan blok
bangunan dasar pertama penggunaan kode ulang
(code reuse).
Pembatasan Inheritance
• Data dan fungsi yang dapat diwariskan hanya
yang bersifat public dan protected.
• Untuk data dan fungsi private tetap tidak dapat
diwariskan. Hal ini disebabkan sifat private
yang hanya dapat diakses dari dalam kelas
saja.
Sifat Inheritance
• Sifat pewarisan ini menyebabkan kelas-kelas
dalam pemrograman berorientasi objek
membentuk hirarki kelas mulai dari kelas
dasar, kelas turunan pertama, kelas turunan
kedua dan seterusnya. Sebagai gambaran
misalnya ada hirarki kelas unggas.
Contoh
Penjelasan (1)
• Sebagai kelas dasar adalah Unggas.
• Salah satu sifat Unggas adalah bertelur dan
bersayap.
• Kelas turunan pertama adalah Ayam, Burung
dan Bebek.
• Tiga kelas turunan ini mewarisi sifat kelas
dasar Unggas yaitu bertelur dan bersayap.
• Selain mewarisi sifat kelas dasar, masingmasing kelas turunan mempunyai sifat khusus,
Ayam berkokok, Burung terbang dan Bebek
berenang.
Penjelasan (2)
• Kelas Ayam punya kelas turunan yaitu Ayam
Kampung dan Ayam Hutan.
• Dua kelas ini mewarisi sifat kelas Ayam yang
berkokok. Tetapi dua kelas ini juga punya sifat
yang berbeda, yaitu :
– Ayam Kampung berkokok panjang halus
– Ayam hutan berkokok pendek dan kasar.
Hirarki Program
• Jika hirarki kelas Unggas diimplementasikan
dalam bentuk program, maka secara sederhana
dapat ditulis sebagai berikut:
Penjelasan Program
• Dapat dilihat, bahwa kelas Ayam dan kelas Bebek
dapat menjalankan fungsi Bertelur() yang ada dalam
kelas Unggas meskipun fungsi ini bukan merupakan
anggota kelas Ayam dan kelas Bebek.
• Kelas AyamKampung dapat menjalankan fungsi
Berkokok() yang ada dalam kelas Ayam walaupun
dua fungsi tersebut bukan merupakan anggota kelas
AyamKampung.
• Sifat-sifat di atas yang disebut dengan pewarisan
(inheritance).
P.R
worksAtHospitals & makesHouseCalls boolean
Animal Kingdom
• instance variables :
–
–
–
–
–
picture
food
hanger
boundaries
location
• method
–
–
–
–
makeNoise()
eat()
sleep
roam()
Animal
picture
food
hunger
boundaries
location
makeNoise()
eat()
sleep()
roam()
Lion
Hippo
Wolf
Tiger
Dog
Cat
Apakah semua binatang makan dengan cara yang sama?
Apakah semua binatang mengeluarkan suara yang sama?
Animal
picture
food
hunger
boundaries
location
makeNoise()
eat()
sleep()
roam()
override 2 method ini
Animal
picture
food
hunger
boundaries
location
makeNoise()
eat()
sleep()
roam()
Lion
Wolf
makeNoise()
eat()
Hippo
makeNoise()
eat()
makeNoise()
eat()
Tiger
makeNoise()
eat()
Dog
makeNoise()
eat()
Cat
makeNoise()
eat()
Animal
picture
food
hunger
boundaries
location
makeNoise()
eat()
sleep()
roam()
Feline
roam()
Canine
Cat
roam()
Hippo
makeNoise()
eat()
makeNoise()
eat()
Lion
makeNoise()
eat()
Tiger
makeNoise()
eat()
Dog
makeNoise()
eat()
Wolf
makeNoise()
eat()
Method apa yang akan dipanggil?
Wolf w = new Wolf();
w.makeNoise();
w.roam();
w.eat();
w.sleep();
Animal
makeNoise()
eat()
sleep()
roam()
Canine
roam()
ketika sebuah method
dipanggil, kita memanggil
method yang paling
spesifik, atau yang paling
bawah yang menang
Wolf
makeNoise()
eat()
3 tahap dalam object declaration,
creation & assignment
1. Deklarasi reference variable
Dog d = new Dog();
2. Create Object
Dog d = new Dog();
3. Link Object & reference
Dog d = new Dog();