PERTEMUAN 5 OOP Objektif : y
Praktikan mengetahui konsep OOP.
y
Praktikan dapat membuat program sederhana dengan konsep OOP.
Pemrograman Berbasis Objek - 2011
1
KONSEP OOP Dalam pemrograman berorientasi objek, fokus utama a dalah pada objek. Metodologi pengembangan sistem berorientasi objek mempunyai ti ga karakteristik utama, yaitu : y
Enkapsulasi(Pembungkusan)
y
Inheritansi
y
Polimorfisme
Pemrograman Berbasis Objek - 2011
2
ENKAPSULASI y
Enkapsulasi adalah pelindung program dan data yang sedang diolah.
y
Enkapsulasi mendefinisikan perilaku dan melindungi program dan data agar tidak diakses secara sembarangan oleh program lain. Dalam Java, dasar enkapsulasi adalah class.
Tipe akses class atau method : 1.
Public : dapat diakses oleh sembarang class.
2.
Private : hanya dapat diakses dari dalam objek class itu sendiri (tidak dapat diakses oleh class lain).
3.
Protected : hanya dapat diakses dari dalam objek class tersebut dan objek kelas turunannya.
Contoh : class Encapsulation { private int secret; //field tersembunyi public boolean setSecret(int secret) { if (secret < 1 || secret > 100) { return false; } this.secret = secret; return true; } public getSecret() { return secret; } } Pemrograman Berbasis Objek - 2011
3
INHERITANCE Pewarisan adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data atau atribut dan metode dari induknya langsung. Objek-objek yang berada di sekitar kita adalah objek-objek yang saling terhubung secara hirarkis. Misalnya :
Lingkaran dan Bujur Sangkar adalah turunan dari bentuk 2D dan Bentuk 2D adalah turunan dari Objek Gambar Lingkaran dan Bujur Sangkar mewarisi(inherit) sifat – sifat dari bentuk 2D, juga mewarisi sifat – sifat dari objek gambar Lingkaran dan Bujur Sangkar dapat dikatakan subclass dari bentuk 2D. Bentuk 3D adalah superclass dari Bola dan Piramida, dan seterusnya.
Pemrograman Berbasis Objek - 2011
4
Contoh Inheritance : class Box { double width; double height; double depth; Box() { } Box(double w, double h, double d) { width = w; height = h; depth = d; } void getVolume() { System.out.println("Volume is : " + width * height * depth); } } public class MatchBox extends Box { double weight; MatchBox() { } MatchBox(double w, double h, double d, double m) { super(w, h, d);
weight = m; } public static void main(String args[]) { MatchBox mb1 = new MatchBox(10, 10, 10, 10); mb1.getVolume(); System.out.println("width of MatchBox 1 is " + mb1.width); System.out.println("height of MatchBox 1 is " + mb1.height); System.out.println("depth of MatchBox 1 is " + mb1.depth); System.out.println("weight of MatchBox 1 is " + mb1.weight); } }
Pemrograman Berbasis Objek - 2011
5
Output : Volume is : 1000.0 width of MatchBox 1 is 10.0 height of MatchBox 1 is 10.0 depth of MatchBox 1 is 10.0 weight of MatchBox 1 is 10.0
Pemrograman Berbasis Objek - 2011
6
JENIS RELASI y
Asosiasi Hubungan / relasi antar dua object secara umum
y
Agregasi Agregasi merupakan hubungan antara satu object dengan object lainnya dimana object satu dengan object lainnya sebenarnya terpisah namun disatukan, sehingga tidak terjadi kebergantungan (Object lain bisa ada walau object penampungnya tidak ada).
y
Komposisi Serupa dengan agregasi hanya saja, terdapat ketergantungan dari salah satuobject.
Penerapan Relasi pada Java : 1.
Extennds (is-a) Class
Engineer extend Person()
{ ................. } 2.
Composition (has-a) Class
Engineer()
{ private
Person person;
} Pemrograman Berbasis Objek - 2011
7
POLYMORPHISME y
Arti harfiah dari polimorfisme adalah objek yang memiliki banyak bentuk.
y
Deklarasi method sama tetapi implementasi atau definisinya berbeda (Method atau perilaku yang sama tapi implementasinya atau caranya yang berbeda-beda inilah yang disebut dengan Polimorfisme).
Polymorphisme terdiri dari tiga jenis : 1.
Overloading
2.
Overridding
3.
Dynamic Method Binding
Pemrograman Berbasis Objek - 2011
8
OVERLOADING Kemampuan sebuah method untuk memiliki parameter yang berbeda. Contoh : public abstract
class Animal
// class is abstract
{ private String name; public Animal(String nm) // constructor method { name=nm; } public String getName() // regular method { return (name); } public abstract void speak(); // abstract method - note no {} }
Pemrograman Berbasis Objek - 2011
9
OVERRIDDING Kemampuan subClass untuk melakukan implementasi tersendiri dari sebuah method yang sudah didefini sikan di superClass. Contoh : public abstract class Animal
// class is abstract
{ private String name; public Animal(String nm) // constructor method { name=nm; } public String getName() // regular method { return (name); } public abstract void speak(); // abstract method - note no {} }
Pemrograman Berbasis Objek - 2011
10
DINAMIC METHOD BINDING Kemampuan superClass untuk menentukan method yang akan dijalankan pada subClass yangberbeda. Contoh : public class
AnimalReference
{ public static void main(String args[]) Animal ref // set up var for an Animal Cow aCow = new Cow("Bossy"); // makes specific objects Dog aDog = new Dog("Rover"); Snake aSnake = new Snake("Ernie"); // now reference each as an Animal ref = aCow; ref.speak(); ref = aDog; ref.speak(); ref = aSnake; ref.speak(); }
Pemrograman Berbasis Objek - 2011
11
Latihan Program Berikut ini adalah contoh program sederhana enkapsulasi. Ikutilah langkah-langkah berikut : Step 1 : Buka dan ketikan program pada teks editor notepad++ Anda. y
Simpan nama file pertama sama seperti nama classnya, yaitu : Vehicle.java Misal disimpan pada direktori D Æ folder “praktikan” Æ Vehicle.java
y
Ketikkan program berikut pada teks editor Anda. *Deklarasikan class ………………………………………………………………… {
*Deklarasikan variabel load dan maxLoad bertipe double bersifat public ………………………………………………………………… public Vehicle(double maxLoad) { maxLoad = maxLoad + load; } public double getLoad() { return load; } public double getMaxLoad() { return maxLoad; } }
Pemrograman Berbasis Objek - 2011
12
y
Ketikan file kedua dan simpan pada tempat yang sama dengan file pertama. Simpan file kedua dengan nama TestVehicle.java Berikut isi program file kedua. *Deklarasikan class ………………………………………………… { public static void main(String[] args) { System.out.println("Creating a vehicle with a 10,000kg maximum load."); Vehicle vehicle = new Vehicle(10000.0); System.out.println("Add box #1 (500kg)"); vehicle.load = vehicle.load + 500.0; System.out.println("Add box #2 (250kg)"); vehicle.load = vehicle.load + 250.0; System.out.println("Add box #3 (5000kg)"); vehicle.load = vehicle.load + 5000.0; System.out.println("Add box #4 (4000kg)"); vehicle.load = vehicle.load + 4000.0; System.out.println("Add box #4 (300kg)"); vehicle.load = vehicle.load + 300.0;
*Cetak Hasil …………………………………………("Vehicle load is = " +vehicle.getLoad() + "kg"); } }
Pemrograman Berbasis Objek - 2011
13
Step 2 : Ikuti langkah berikut untuk meng-compile program yang telah Anda buat. y
Buka command prompt Anda.
y
Masuk ke direktori dan folder tempat program tersebut disimpan. Misal program disimpan pada direktori D Æ folder “praktikan” Perintah masuk/pindah ke direktori D, ketik Î D: Perintah masuk ke folder “praktikan”, ketik Î cd<spasi>praktikan
y
Setelah masuk ke direktori dan folder yang dituju, untuk meng-compile program Anda ketikkan perintah : javac<spasi> TestVehicle.java Contoh : javac TestVehicle.java
Step 3 : Untuk menjalankan program yang telah Anda buat, ketikkan perintah : java<spasi>NamaFile Contoh : java TestVehicle
Pemrograman Berbasis Objek - 2011
14
Tampilan Output
Pemrograman Berbasis Objek - 2011
15
Koreksi Latihan Program y
Simpan nama file pertama sama seperti nama classnya, yaitu : Vehicle.java public class Vehicle { public double load, maxLoad; public Vehicle(double maxLoad) { maxLoad = maxLoad + load; } public double getLoad() { return load; } public double getMaxLoad() { return maxLoad; } }
Pemrograman Berbasis Objek - 2011
16
y
Ketikan file kedua dan simpan pada tempat yang sama dengan file pertama. Simpan file kedua dengan nama TestVehicle.java Berikut isi program file kedua.
public class TestVehicle { public static void main(String[] args) { System.out.println("Creating a vehicle with a 10,000kg maximum load."); Vehicle vehicle = new Vehicle(10000.0); System.out.println("Add box #1 (500kg)"); vehicle.load = vehicle.load + 500.0; System.out.println("Add box #2 (250kg)"); vehicle.load = vehicle.load + 250.0; System.out.println("Add box #3 (5000kg)"); vehicle.load = vehicle.load + 5000.0; System.out.println("Add box #4 (4000kg)"); vehicle.load = vehicle.load + 4000.0; System.out.println("Add box #4 (300kg)"); vehicle.load = vehicle.load + 300.0; System.out.println("Vehicle load is = " +vehicle.getLoad() + "kg"); } }
Pemrograman Berbasis Objek - 2011
17