materi minggu-8-14
Post on 03-Jan-2016
49 Views
Preview:
DESCRIPTION
TRANSCRIPT
Materi Kuliah Minggu 8-14
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
1
Pewarisan: Inheritance
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
2
Apa yang Disebut Pewarisan ?
3
Apa yang Disebut Pewarisan ?
• Kemampuan sebuah kelas untuk mewariskan seluruh atau sebagian atribut dan methodnya ke kelas lain, sehingga atribut dan method tersebut dikenal oleh kelas yang menerima pewarisan tanpa harus menuliskannya.
Atribut panjang dan lebardikenali oleh kelas Balok
Method setPanjang(), setLebar()dan Luas() dikenali oleh kelas
Balok
4
Apa yang Disebut Pewarisan ? ( lanjutan )
• Kelas yang mewariskan disebut kelas induk, super class, atau base class.
• Kelas yang menerima pewarisan disebut kelas anak, kelas turunan, atau subclass.
• Merupakan implementasi dari relasi antar kelas generalization-specialization atau “is-a”.
5
Bentuk-bentuk Pewarisan• Pewarisan Tunggal (Single
Inheritance)Kelas anak menerima pewarisan dari satu kelas induk.
• Pewarisan Majemuk (Multiple Inheritance)Kelas anak menerima pewarisan dari beberapa kelas induk.
Kelas Induk Kelas Anak
Kelas Induk-1 Kelas Induk-n
Kelas Anak
. . .
6
class KelasAnak extends KelasInduk {// Atribut kelas anak// Method kelas anak
}
Pewarisan dalam Java• Dinyatakan dengan menggunakan kata kunci (keyword)
extends:
• Semua atribut dan method dengan access modifier non-private akan diwariskan dari kelas induk ke kelas anak.
• Method yang diwariskan dapat didefinisikan ulang di kelas anak (override).
7
Pewarisan dalam Java ( lanjutan )
• Hanya memperbolehkan pewarisan tunggal.
• Pewarisan majemuk harus dinyatakan sebagai pewarisan tunggal yang ditulis secara berjenjang.
Pewarisan majemuk asal
Pewarisan majemuk setelah “transformasi”
8
Pewarisan dalam Java ( lanjutan )
• Untuk memanggil konstruktor kelas induk dari kelas anak digunakan notasi super(), dan harus ditulis di baris pertama pada konstruktor kelas anak.
• Untuk memanggil method kelas induk dari kelas anak digunakan notasi super.namaMethod().
public Balok() {super();tinggi = 0;
}
public double getGaji() {double pokok = super.getGaji();return (pokok+lembur);
}9
Pewarisan dalam Java ( lanjutan )
• Supaya suatu kelas tidak dapat diwariskan ke kelas lainnya, gunakan modifier final saat mendeklarasikan kelas tersebut.
• Supaya method yang diwariskan tidak dapat di-override di kelas anak, gunakan juga modifier final.
final class NamaKelas {...
}
public final double getGaji() {return (gaji);
}
Kode Program
Kode Program
10
Contoh Program Pewarisan
• Contoh 1
– SegiEmpat.java– Balok.java– Driver.java
SegiEmpat
#double panjang#double lebar
+void setPanjang(double p)+void setLebar(double l)+double Luas()
Balok
#double tinggi
+void setTinggi(double t)+double Volume()
11
Contoh Program Pewarisan ( lanjutan )
• Contoh 2– Pegawai.java– Staf.java– Manajer.java– Driver.java
Pegawai
#String nama#double gaji
+Pegawai(String n, double g)+String getNama()+double getGaji()
Employee
#double lembur
+Staf(String n, double g)+void setLembur(double l)+double getGaji()
Manajer
#double tunjangan#double bonus+Manajer(String n, double g)+void setTunjangan(double t)+void setBonus(double b)+double getGaji()
12
Kapan Pewarisan ?
• Ada beberapa atribut dan method yang sama yang digunakan oleh beberapa kelas berbeda (reduksi penulisan kode).
• Ada satu atau beberapa kelas yang sudah pernah dibuat yang dibutuhkan oleh aplikasi (reusability).
• Ada perubahan kebutuhan fungsional atau featureaplikasi dimana sebagian atau seluruh perubahan tersebut tercakup di satu atau beberapa kelas yang sudah ada (extend).
13
14
Kelas Abstrak
• Kelas-kelas yang daripadanya tidak dapat diciptakan/instansiasi objek.
• Dideklarasikan dengan menggunakan kata kunci (modifier) abstract.
• Digunakan apabila kelas induk yang menjadi sumber pewarisan tidak ingin diolah.
abstract class NamaKelas {...
}
15
Contoh Penggunaan Kelas AbstrakKode Program• Person.java• Employee.java• Student.java• CobaKelasAbstrak.java
Person {abstract}
-String name
+Person(String n)+String getName()+String getDescription()
Employee
-double salary
+Employee(String n, double s)+double getSalary()+String getDescription()
Student
-String major
+Student(String n, String m)+String getMajor()+String getDescription()
16
Interface
• Prototype kelas yang berisi definisi konstanta dan deklarasi method (hanya nama method tanpa definisi kode programnya).
interface Perusahaan {// KonstantaString KOTA = “Bandung”;
// Deklarasi methodvoid setNama(String n);void setAlamat(String a);String getNama();String getAlamat();
}
17
Interface ( lanjutan )
• Dalam sebuah interface:– Semua konstanta (atribut) adalah public, static
dan final.– Semua method adalah abstract dan public.– Tidak boleh ada deklarasi konstruktor.
• Interface digunakan untuk menyatakan spefisikasi fungsional beberapa kelas secara umum.
Interface
• Dapat dikatakan sebagai bentuk lain agar dapat menerapkan multiple-inheritance
• Namun sebenarnya interface digunakan untuk mendefinisikan suatu fungsionalitas yang dimiliki secara umum oleh beberapa kelas yang tidak terkait dalam hirarki pewarisan
• Misalkan: untuk mobil dan mesin cuci terdapat mekanisme yang sama yaitu on() dan off()
18
Interface dalam Java ( lanjutan )
• Pendefinisian sebuah interface dilakukan seperti sebuah kelas dengan menggunakan katakunci interface
• Sebuah kelas dapat menggunakan interface dengan menggunakan kata kunci implements (sebuah kelas dapat mengimplements lebih dari satu interface )
public interface StartStop {public void start();public void stop();
}
public class Mobil implements StartStop {/* wajib menuliskan.mengimplementasikan void start() dan stop() */
}19
20
Interface ( lanjutan )
• Definisi method dilakukan di kelas yang menjadi implementasi dari interface.class Telkom implements Perusahaan {// Deklarasi atributprivate String nama, alamat;
// Definisi methodpublic void setNama(String n) {
nama = n;}...
}
21
Interface ( lanjutan )
• Sebuah kelas dapat menerima pewarisan dari beberapa interface (multiple inheritance).
Interface-1<<interface>>
Interface-2<<interface>>
Kelas
class Kelas implements Interface1, Interface2 {
// Atribut
// Metdod
}
Interface• Diagram berikut menandakan bahwa
Kelas Mobil dan Kelas MesinCuci menggunakan interface StartStop sehingga wajib untuk mengimplementasikan method yang ada dalam interface StartStop
• Kata kunci implements digunakan untuk menyatakan sebuah kelas menggunakan/implements sebuah interface (dalam java)
22
<<interface>>StartStop
+ void Start()+ void Stop
Mobil
.......
.........
Mesin Cuci
......
.........
23
Contoh Interface
• Interface– StartStop.java
• Kelas implementasi– UseStartStop.java
24
25
Ketentuan
• Kelas Pegawai adalah kelas abstrak
• Gaji pokok ditentukan berdasarkan golongan:– Golongan = ’A’, gaji pokok = 3.000.000– Golongan = ’B’, gaji pokok = 2.000.000– Golongan = ’C’, gaji pokok = 1.000.000
• Uang lembur dihitung dari jam lembur x 30.000
• Seorang pegawai dianggap lembur jika jam kerja > 8
• Gaji Bersih = Gaji Pokok + Uang Lembur
26
Contoh Tampilan Output
getDetail() di kelas Pegawai
getDetail() di kelas Manager
getDetail() di kelas Staf
Interface vs Class Abstrak
27
Polymorphism
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
28
Apa yang Disebut Polimorfisme ?
29
Apa yang Disebut Polimorfisme ?
• The ability of objects belonging to different types to respond to method calls of the same name, each one according to an appropriate type-specific behavior[Wikipedia].
• The ability of a variable entity or data structure element, at run time, to become attached to objects of different types [Meyer].
• A concept where a single name may denote objects of different classes that are related by some common base class [Booch].
30
Apa yang Disebut Polimorfisme ? ( lanjutan )
• Kemampuan suatu objek untuk digunakan di banyak tujuan berbeda dengan nama yang sama.
• Kemampuan objek dalam memberikan respon yang berbeda terhadap message yang mempunyai nama yang sama.
• Disebut juga:– dynamic binding– late binding– run-time binding
31
Gambaran Polimorfisme// Program Utamaclass TesPoligon {Poligon p = new Poligon();...
SegiEmpat s = new SegiEmpat();SegiTiga t = new SegiTiga();Lingkaran l = new Lingkaran();
p = s; // ok krn instan kelas anak juga instan kelas induk...
}
Poligon
SegiEmpat SegiTiga Lingkaran
variabel p menunjukobjek yang diciptakan dari
kelas Poligon variabel s menunjuk objekyang diciptakan dari kelas
SegiEmpat
variabel p diubah sehinggamenunjuk objek dari kelas
SegiEmpat32
Gambaran Polimorfisme ( lanjutan )
Poligon
SegiEmpat
p
s
Poligon p = new Poligon();
SegiEmpat s = new SegiEmpat();
Sebelum:
Poligon
SegiEmpat
p
s
p = s;
Sesudah:
33
Gambaran Polimorfisme ( lanjutan )
class SegiEmpat {. . .public String display() {return ("Segi Empat"+ "\no Panjang : " + getPanjang()+ "\no Lebar : " + getLebar()+ "\no Luas : " + Luas()+ "\no Keliling : " + Keliling());
}}
class Lingkaran {. . .public String display() {
return (“Lingkaran"+ "\no jari-jari: " + getRadius()+ "\no Luas : " + Luas()+ "\no Keliling : " + Keliling());
}}
class TesPoligon {public static void main(String args[]){
// Deklarasi arrayPoligon[] p = new Poligon[2];
// Add array poligonp[0] = new SegiEmpat(17, 8);p[1] = new Lingkaran(10);
// Display informasifor (int i=0; i<p.length; i++) {System.out.println(p[i].display());
}}
}
Method display () yang dieksekusi ditentukan berdasarkan rujukan ke
masing-masing objeknya
34
Contoh Polimorfisme
• Array yang berisi bangun geometri berbeda-bedaKelas induk:– Poligon.Java
Kelas anak:– SegiEmpat.java– SegiTiga.java– Lingkaran.java
Program utama:– TesPoligon.java
Poligon
SegiEmpat SegiTiga Lingkaran
35
Contoh Polimorfisme ( lanjutan )
Hasil eksekusi method displayInfo() yang dipunyai
masing-masing objek
36
Bentuk-bentuk Polimorfisme
• Overloading– Constructor– Method
• OverridingPendefinisian ulang method yang diturunkan kelas induk oleh kelas anak.
37
Bentuk-bentuk Polimorfisme ( lanjutan )
• Parameter Coercien
void f(double x) {…
}
f((byte) 1);f((short) 2);f('a');f(3);f(4L);f(5.6F);
This f can be called with any type of parameter Java is willing to coerce to type double
38
Bentuk-bentuk Polimorfisme ( lanjutan )
• Sub-type Polymorphismclass Car {void brake() { … }
}
class ManualCar extends Car {void clutch() { … }
}
void g(Car z) {z.brake();
}
void f(Car x, ManualCar y) {g(x);g(y);
}
A subtype of Car is ManualCar
Function g has an unlimited number of types-one for every class we define that is a subtype of Car
That’s subtype polymorphism
39
PACKAGE
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
40
41
Pengantar
• Many times when we get a chance to work on a small project, one thing we intend to do is to put all java files into one single directory. It is quick, easy and harmless.
• However if our small project gets bigger, and the number of files is increasing, putting all these files into the same directory would be a nightmare for us.
• In java we can avoid this sort of problem by using Packages.
42
Apa yang Disebut Package ?
Paket A Paket B Paket C Paket D
You Package Pro Package
43
Apa yang Disebut Package ?
• A package is a grouping of related classes and interfaces providing access protection and name space management.
• Packages are nothing more than the way we organize files into different directories according to their functionality, usability as well as category they should belong to.
44
Apa yang Disebut Package ? ( lanjutan )
nama package
file-file yang mewakili kelas-kelas yang “dipaketkan”
45
Apa yang Disebut Package ? ( lanjutan )
• Packaging help us to avoid class name collision when we use the same class name as that of others.
• Packaging also help us to make types easier to find and use class names, and to control access.
46
Membuat Package
• Buat directory yang merepresentasikan tempat package yang akan dibuat.
47
// Deklarasi packagepackage namapaket;
// Deklarasi kelaspublic class namakelas {...
}
Membuat Package ( lanjutan )
• Buat kelas (atau interface) yang akan menjadiisi package dengan susunan:
48
package namapaket;
Membuat Package ( lanjutan )
Deklarasi Package
• Menggunakan kata kunci package yang ditulis di baris pertamapada file sumber (.java).
Contoh:package MyPackage;package MyPackage.Poligon;
• Hanya boleh ada satu pernyataan package pada setiap file sumber.
49
Membuat Package ( lanjutan )
Deklarasi Kelas
• Dinyatakan secara public supaya bisa diakses oleh semua kelas yang berada didalam dan diluar package yang dibuat.
• Jika ada beberapa kelas pada file sumber, hanya boleh ada satu kelas yang dinyatakan secara public, yaitu kelas yang namanya sama dengan nama file sumber.
50
SET CLASSPATH = .; D:\Lecture\PBO 2007\Minggu 11\Program;
Membuat Package ( lanjutan )
• Atur variabel lingkungan CLASSPATH sehinggamenunjuk directory tempat dimana package disimpan:
– Melalui Control Panel– Melalui perintah set path di command line
• Kompilasi kelas (atau interface) yang menjadiisi package.
51
MyPackage.Poligon.SegiEmpat S;S = new MyPackage.Poligon.SegiEmpat(17, 8);
import MyPackage.Poligon.*;import MyPackage.Poligon.SegiEmpat;
Membuat Package ( lanjutan )
• Gunakan package kelas (atau interface) yang sudahdikompilasi melalui:
– Pernyataan import
– Nama qualified dari kelas (atau interface)
52
Contoh Penggunaan Package
• Diagram Kelas:
SegiEmpat SegiTiga Lingkaran
Balok Silinder
<<MyPackage.Poligon>>
53
Contoh Penggunaan Package ( lanjutan )
• Nama package:– MyPackage.Poligon
• Kelas yang menjadi isi package:– SegiEmpat.java– SegiTiga.java– Lingkaran.java– Balok.java– Silinder.java
• Kelas yang menggunakan package:– TestPackage.java
Persistance
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
54
PersistencePersistence is theproperty of an object tbrougb which its existence transcends time (i.e. tbe objectcontinues to exist after its creator ceases to exist) and/or space (i. e. the objects location moves fromthe address space in wbich it was created).
55
Pengantar
• Sebuah objek dalam program di-generate pada saat program dieksekusi (objek ini menempati suatu lokasi tertentu pada memori dengan ukuran yang bervariasi)
• Beberapa teori menyatakan bahwa objek ini memiliki waktu hidup (live-time) dimana dalam pembangunan sebuah kelas dikenal istilah konstruktor dan destruktor
56
Persistence Spectrum
• Atkinson:– Traditional programming
• Transient result in expression evaluation• Local variabel in procedure activation• Global variabel, heap items (dynamic allocation)
– Data Base Technology• Data that exist between program execution• Data that exist between various program• Data that outlives program
57
Ilustrasi Live-time Object
Instansiasi
Object used in program
Some-time Object Saved//Resurect
into/from Storage
Object destroyed
58
Persistence Object To File
Object
• Must be able to transform to binary (implements java.io.Serializable)
BinaryStream
• Using io.stream mechanism FileOutputStream
Write Object to File
• Using method writeObject() in ObjectOutputStream
59
Object in File
•Open file with FileInputStream class
ReadObject in File
•Using method readObject() in ObjectInputStream
Write Object to File
•Using method readObject() in ObjectInputStream
Implementasi
• Step by step:– Mendefinisikan agar kelas/objek yang akan
disimpan dalam file mengimplements java.io.Serializable
– Pastikan semua kelas/objek yang terlibat juga implements java.io.Serializable
60
61
import java.io.Serializable;
public class Teller implements Serializable{private String Nama, NIK;
public String getNama() {return Nama;}
public void setNama(String nama) {Nama = nama;}/*.....*/
Kode Untuk Menyimpan
62
public static void main(String[] args) {Teller t1=new Teller();t1.setNama("Teller1");t1.setNIK("123");Teller t2=new Teller();t2.setNama("Teller2");t2.setNIK("124");ArrayList<Teller> a1=new ArrayList<Teller>();a1.add(t1);a1.add(t2);try {FileOutputStream fos=newFileOutputStream("DataTeller.ser");ObjectOutputStream oos=new ObjectOutputStream(fos);oos.writeObject(a1);oos.close();fos.close();} catch (Exception e) {e.printStackTrace();}}
Kode Untuk Membaca
63
public static void main(String[] args) {FileInputStream fis;Teller t2;Bank B1;Rekening r1;ArrayList<Teller> a1=new ArrayList<Teller>();System.out.println("Baca File");
try {fis = new FileInputStream("DataTeller.ser");ObjectInputStream ois=new ObjectInputStream(fis);a1=(ArrayList<Teller>)ois.readObject();for (Teller t1:a1){t1.displayInfo();} } catch (Exception e) {e.printStackTrace();
}}
• Sebaiknya penulisan beberapa objek dikumpulkan terlebih dahulu dengan menggunakan sebuah Collection sehingga proses penyimpanan cukup 1 kali tulis saja
64
65
66
import java.util.ArrayList;import java.io.Serializable;
public class Nasabah implements Serializable{private String Nama, Alamat, Email;private ArrayList<Rekening> ListRekening=new
ArrayList<Rekening>();/* method-method terkait disembunyikan*/
import java.util.ArrayList;import java.io.*;
public class Rekening implements Serializable {private String NoRek;private double Saldo;private char JenisRek;private Nasabah Nasabahnya; /* method-method terkait disembunyikan*/
Persistance
• Keuntungan menggunakan mekanisme persistance dalam bentuk objek adalah kita dapat menyimpan seluruh elemen-elemen yang terkait dengan objek secara langsung.
• Misalkan pada contoh kelas Nasabah dimana terdapat kelas Rekening didalamnya maka data rekening juga akan ikut tersimpan
67
Generic Type
CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika
Institut Teknologi Telkom Bandung
68
69
IT SALARY
70
OOT: Gaji Orang IT
IndoSalaray Guide 2007:
71
OOT: Gaji Orang IT ( lanjutan )
2007 IT Salary and Skills Report
72
OOT: Gaji Orang IT ( lanjutan )
UK IT Salary Survey 2006-2007:
73
74
75
top related