Materi Minggu-8-14
Materi 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
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
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
Untuk memanggil method kelas induk dari kelas anak digunakan notasi super.namaMethod().
public double getGaji() { double pokok = super.getGaji(); return (pokok+lembur); }
9
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
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
Kode Program
Person.java Employee.java Student.java CobaKelasAbstrak.java
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
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>>
Kelas
21
Interface
<<interface>> StartStop
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
26
27
Polymorphism
CS 2223 Pemrograman Berorientasi Objek Program Studi Sarjana Teknik Informatika Institut Teknologi Telkom Bandung
28
29
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
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
Sesudah:
p = s;
p Poligon
33
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()); } }
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
36
Bentuk-bentuk Polimorfisme
Overloading
Constructor Method
Overriding
Pendefinisian ulang method yang diturunkan kelas induk oleh kelas anak.
37
This f can be called with any type of parameter Java is willing to coerce to type double
38
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
Paket A
Paket B
Paket C
Paket D
You Package
42
Pro Package
43
nama package
44
45
Membuat Package
Buat directory yang merepresentasikan tempat package yang akan dibuat.
46
47
48
SegiEmpat
SegiTiga
Lingkaran
Balok
Silinder
52
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)
Object destroyed
58
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
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
70
71
72
73
74
75