Anda di halaman 1dari 75

Materi Kuliah Minggu 8-14

CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung

Pewarisan: Inheritance
CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung

Apa yang Disebut Pewarisan ?

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 lebar dikenali 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.

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

Pewarisan dalam Java


Dinyatakan dengan menggunakan kata kunci (keyword) extends:

class KelasAnak extends KelasInduk { // Atribut kelas anak // Method kelas anak }
Semua atribut dan method dengan access modifier nonprivate 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 setelah transformasi Pewarisan majemuk asal


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.
public Balok() { super(); tinggi = 0; }

Untuk memanggil method kelas induk dari kelas anak digunakan notasi super.namaMethod().
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.
final class NamaKelas { ... }

Kode Program

Supaya method yang diwariskan tidak dapat di-override di kelas anak, gunakan juga modifier final.
public final double getGaji() { return (gaji); }

Kode Program
10

Contoh Program Pewarisan


Contoh 1
SegiEmpat #double panjang #double lebar +void setPanjang(double p) +void setLebar(double l) +double Luas() Balok #double tinggi

+void setTinggi(double t) +double Volume()

SegiEmpat.java Balok.java Driver.java


11

Contoh Program Pewarisan ( lanjutan )


Contoh 2
Pegawai #String nama #double gaji +Pegawai(String n, double g) +String getNama() +double getGaji()

Pegawai.java Staf.java Manajer.java Driver.java


Manajer #double tunjangan #double bonus +Manajer(String n, double g) +void setTunjangan(double t) +void setBonus(double b) +double getGaji()
12

Employee #double lembur +Staf(String n, double g) +void setLembur(double l) +double getGaji()

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 feature aplikasi dimana sebagian atau seluruh perubahan tersebut tercakup di satu atau beberapa kelas yang sudah ada (extend).
13

Kelas Abstrak
Kelas-kelas yang daripadanya tidak dapat diciptakan/instansiasi objek. Dideklarasikan dengan menggunakan kata kunci (modifier) abstract.
abstract class NamaKelas { ... }

Digunakan apabila kelas induk yang menjadi sumber pewarisan tidak ingin diolah.
14

Contoh Penggunaan Kelas Abstrak


Person {abstract} -String name +Person(String n) +String getName() +String getDescription()

Kode Program
Person.java Employee.java Student.java CobaKelasAbstrak.java

Employee -double salary +Employee(String n, double s) +double getSalary() +String getDescription()

Student -String major +Student(String n, String m) +String getMajor() +String getDescription()

15

Interface
Prototype kelas yang berisi definisi konstanta dan deklarasi method (hanya nama method tanpa definisi kode programnya).
interface Perusahaan { // Konstanta String KOTA = Bandung; // Deklarasi method void setNama(String n); void setAlamat(String a); String getNama(); String getAlamat(); }
16

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

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
public interface StartStop { public void start(); public void stop(); }

Sebuah kelas dapat menggunakan interface dengan menggunakan kata kunci implements (sebuah kelas dapat mengimplements lebih dari satu interface )
public class Mobil implements StartStop { /* wajib menuliskan.mengimplementasikan void start() dan stop() */ }
19

Interface ( lanjutan )
Definisi method dilakukan di kelas yang menjadi implementasi dari interface.
class Telkom implements Perusahaan { // Deklarasi atribut private String nama, alamat; // Definisi method public void setNama(String n) { nama = n; } ... }

20

Interface ( lanjutan )
Sebuah kelas dapat menerima pewarisan dari beberapa interface (multiple inheritance).
Interface-1 <<interface>> Interface-2 <<interface>>

class Kelas implements Interface1, Interface2 { // Atribut // Metdod }

Kelas

21

Interface
<<interface>> StartStop

+ void Start() + void Stop

Mobil ....... ......

Mesin Cuci

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

Contoh Interface
Interface
StartStop.java

Kelas implementasi
UseStartStop.java

23

24

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
25

Contoh Tampilan Output


getDetail() di kelas Pegawai

getDetail() di kelas Manager

getDetail() di kelas Staf

26

Interface vs Class Abstrak

27

Polymorphism
CS 2223 Pemrograman Berorientasi Objek Program 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
Poligon

// Program Utama class TesPoligon { Poligon p = new Poligon(); ...


Lingkaran

SegiEmpat

SegiTiga

SegiEmpat s = new SegiEmpat(); SegiTiga t = new SegiTiga(); Lingkaran l = new Lingkaran(); p = s; // ok krn instan kelas anak juga instan kelas induk ... variabel s menunjuk objek }
yang diciptakan dari kelas SegiEmpat

variabel p menunjuk objek yang diciptakan dari kelas Poligon

variabel p diubah sehingga menunjuk objek dari kelas SegiEmpat


32

Gambaran Polimorfisme ( lanjutan )


Sebelum:
Poligon p = new Poligon();
p Poligon

Sesudah:
p = s;
p Poligon

SegiEmpat s = new SegiEmpat();


s SegiEmpat s SegiEmpat

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 TesPoligon { public static void main(String args[]) { // Deklarasi array Poligon[] p = new Poligon[2]; // Add array poligon p[0] = new SegiEmpat(17, 8); p[1] = new Lingkaran(10); // Display informasi for (int i=0; i<p.length; i++) { System.out.println(p[i].display()); } } }

class Lingkaran { . . . public String display() { return (Lingkaran" + "\no jari-jari: " + getRadius() + "\no Luas : " + Luas() + "\no Keliling : " + Keliling()); } }

Method display () yang dieksekusi ditentukan berdasarkan rujukan ke masing-masing objeknya


34

Contoh Polimorfisme
Array yang berisi bangun geometri berbeda-beda
Kelas 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

Overriding
Pendefinisian 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 Polymorphism
class 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 Thats subtype polymorphism

39

PACKAGE
CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung

40

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.

41

Apa yang Disebut Package ?

Paket A

Paket B

Paket C

Paket D

You Package
42

Pro Package

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.

43

Apa yang Disebut Package ? ( lanjutan )

file-file yang mewakili kelas-kelas yang dipaketkan

nama package
44

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.

45

Membuat Package
Buat directory yang merepresentasikan tempat package yang akan dibuat.

46

Membuat Package ( lanjutan )


Buat kelas (atau interface) yang akan menjadi isi package dengan susunan:
// Deklarasi package package namapaket; // Deklarasi kelas public class namakelas { ... }

47

Membuat Package ( lanjutan )


Deklarasi Package Menggunakan kata kunci package yang ditulis di baris pertama pada file sumber (.java). package namapaket; Contoh: package MyPackage; package MyPackage.Poligon; Hanya boleh ada satu pernyataan package pada setiap file sumber.

48

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

Membuat Package ( lanjutan )


Atur variabel lingkungan CLASSPATH sehingga menunjuk directory tempat dimana package disimpan:
Melalui Control Panel Melalui perintah set path di command line
SET CLASSPATH = .; D:\Lecture\PBO 2007\Minggu 11\Program;

Kompilasi kelas (atau interface) yang menjadi isi package.


50

Membuat Package ( lanjutan )


Gunakan package kelas (atau interface) yang sudah dikompilasi melalui:
Pernyataan import import MyPackage.Poligon.*; import MyPackage.Poligon.SegiEmpat; Nama qualified dari kelas (atau interface) MyPackage.Poligon.SegiEmpat S; S = new MyPackage.Poligon.SegiEmpat(17, 8);
51

Contoh Penggunaan Package


Diagram Kelas:
<<MyPackage.Poligon>>

SegiEmpat

SegiTiga

Lingkaran

Balok

Silinder

52

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
53

Persistance
CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung

54

Persistence
Persistence is theproperty of an object tbrougb which its existence transcends time (i.e. tbe object continues to exist after its creator ceases to exist) and/or space (i. e. the objects location moves from the 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 destroyed

Object used in program

Some-time Object Saved//Resurect into/from Storage

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

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

59

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

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

61

Kode Untuk Menyimpan


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=new FileOutputStream("DataTeller.ser"); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(a1); oos.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); }}
62

Kode Untuk Membaca


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

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

64

65

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

66

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 Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung

68

IT SALARY

69

OOT: Gaji Orang IT


IndoSalaray Guide 2007:

70

OOT: Gaji Orang IT ( lanjutan )


2007 IT Salary and Skills Report

71

OOT: Gaji Orang IT ( lanjutan )


UK IT Salary Survey 2006-2007:

72

73

74

75

Anda mungkin juga menyukai