Materi Minggu-8-14

75
Materi Kuliah Minggu 8-14 CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung 1

description

java

Transcript of Materi Minggu-8-14

Page 1: Materi Minggu-8-14

Materi Kuliah Minggu 8-14

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

1

Page 2: Materi Minggu-8-14

Pewarisan: Inheritance

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

2

Page 3: Materi Minggu-8-14

Apa yang Disebut Pewarisan ?

3

Page 4: Materi Minggu-8-14

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

Page 5: Materi Minggu-8-14

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

Page 6: Materi Minggu-8-14

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

Page 7: Materi Minggu-8-14

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

Page 8: Materi Minggu-8-14

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

Page 9: Materi Minggu-8-14

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

Page 10: Materi Minggu-8-14

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

Page 11: Materi Minggu-8-14

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

Page 12: Materi Minggu-8-14

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

Page 13: Materi Minggu-8-14

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

Page 14: Materi Minggu-8-14

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 {...

}

Page 15: Materi Minggu-8-14

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()

Page 16: Materi Minggu-8-14

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();

}

Page 17: Materi Minggu-8-14

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.

Page 18: Materi Minggu-8-14

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

Page 19: Materi Minggu-8-14

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

Page 20: Materi Minggu-8-14

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;}...

}

Page 21: Materi Minggu-8-14

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

}

Page 22: Materi Minggu-8-14

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

......

.........

Page 23: Materi Minggu-8-14

23

Contoh Interface

• Interface– StartStop.java

• Kelas implementasi– UseStartStop.java

Page 24: Materi Minggu-8-14

24

Page 25: Materi Minggu-8-14

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

Page 26: Materi Minggu-8-14

26

Contoh Tampilan Output

getDetail() di kelas Pegawai

getDetail() di kelas Manager

getDetail() di kelas Staf

Page 27: Materi Minggu-8-14

Interface vs Class Abstrak

27

Page 28: Materi Minggu-8-14

Polymorphism

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

28

Page 29: Materi Minggu-8-14

Apa yang Disebut Polimorfisme ?

29

Page 30: Materi Minggu-8-14

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

Page 31: Materi Minggu-8-14

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

Page 32: Materi Minggu-8-14

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

Page 33: Materi Minggu-8-14

Gambaran Polimorfisme ( lanjutan )

Poligon

SegiEmpat

p

s

Poligon p = new Poligon();

SegiEmpat s = new SegiEmpat();

Sebelum:

Poligon

SegiEmpat

p

s

p = s;

Sesudah:

33

Page 34: Materi Minggu-8-14

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

Page 35: Materi Minggu-8-14

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

Page 36: Materi Minggu-8-14

Contoh Polimorfisme ( lanjutan )

Hasil eksekusi method displayInfo() yang dipunyai

masing-masing objek

36

Page 37: Materi Minggu-8-14

Bentuk-bentuk Polimorfisme

• Overloading– Constructor– Method

• OverridingPendefinisian ulang method yang diturunkan kelas induk oleh kelas anak.

37

Page 38: Materi Minggu-8-14

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

Page 39: Materi Minggu-8-14

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

Page 40: Materi Minggu-8-14

PACKAGE

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

40

Page 41: Materi Minggu-8-14

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.

Page 42: Materi Minggu-8-14

42

Apa yang Disebut Package ?

Paket A Paket B Paket C Paket D

You Package Pro Package

Page 43: Materi Minggu-8-14

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.

Page 44: Materi Minggu-8-14

44

Apa yang Disebut Package ? ( lanjutan )

nama package

file-file yang mewakili kelas-kelas yang “dipaketkan”

Page 45: Materi Minggu-8-14

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.

Page 46: Materi Minggu-8-14

46

Membuat Package

• Buat directory yang merepresentasikan tempat package yang akan dibuat.

Page 47: Materi Minggu-8-14

47

// Deklarasi packagepackage namapaket;

// Deklarasi kelaspublic class namakelas {...

}

Membuat Package ( lanjutan )

• Buat kelas (atau interface) yang akan menjadiisi package dengan susunan:

Page 48: Materi Minggu-8-14

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.

Page 49: Materi Minggu-8-14

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.

Page 50: Materi Minggu-8-14

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.

Page 51: Materi Minggu-8-14

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)

Page 52: Materi Minggu-8-14

52

Contoh Penggunaan Package

• Diagram Kelas:

SegiEmpat SegiTiga Lingkaran

Balok Silinder

<<MyPackage.Poligon>>

Page 53: Materi Minggu-8-14

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

Page 54: Materi Minggu-8-14

Persistance

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

54

Page 55: Materi Minggu-8-14

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

Page 56: Materi Minggu-8-14

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

Page 57: Materi Minggu-8-14

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

Page 58: Materi Minggu-8-14

Ilustrasi Live-time Object

Instansiasi

Object used in program

Some-time Object Saved//Resurect

into/from Storage

Object destroyed

58

Page 59: Materi Minggu-8-14

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

Page 60: Materi Minggu-8-14

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

Page 61: Materi Minggu-8-14

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;}/*.....*/

Page 62: Materi Minggu-8-14

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();}}

Page 63: Materi Minggu-8-14

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();

}}

Page 64: Materi Minggu-8-14

• Sebaiknya penulisan beberapa objek dikumpulkan terlebih dahulu dengan menggunakan sebuah Collection sehingga proses penyimpanan cukup 1 kali tulis saja

64

Page 65: Materi Minggu-8-14

65

Page 66: Materi Minggu-8-14

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*/

Page 67: Materi Minggu-8-14

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

Page 68: Materi Minggu-8-14

Generic Type

CS 2223 Pemrograman Berorientasi ObjekProgram Studi Sarjana Teknik Informatika

Institut Teknologi Telkom Bandung

68

Page 69: Materi Minggu-8-14

69

IT SALARY

Page 70: Materi Minggu-8-14

70

OOT: Gaji Orang IT

IndoSalaray Guide 2007:

Page 71: Materi Minggu-8-14

71

OOT: Gaji Orang IT ( lanjutan )

2007 IT Salary and Skills Report

Page 72: Materi Minggu-8-14

72

OOT: Gaji Orang IT ( lanjutan )

UK IT Salary Survey 2006-2007:

Page 73: Materi Minggu-8-14

73

Page 74: Materi Minggu-8-14

74

Page 75: Materi Minggu-8-14

75