Materi kuliah ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM Ir. Roedi Goernida, MT. (roedig@yahoo.com) Program Studi Sistem Informasi Fakultas Rekayasa Industri Institut Teknologi Telkom Bandung 2011 1 Pengertian Inti Java Programming Object Oriented Programming. Dalam dunia nyata, semua benda dianggap objek. Setiap objek memiliki: atribut (state) variable tingkah laku (behaviour). method (fungsi / prosedur) Karakteristik utama pemrograman berorientasi objek: 1. Abstraksi (abstraction) 2. Pengkapsulan (encapsulation) 3.Pewarisan (Inheritance) 4. Polimorfisme Tujuan merahasiakan source code suatu produk/aplikasi. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 1 2
Abstraksi (1/3) Metoda dasar yang digunakan dalam menangani kompleksitas Penyembunyian suatu kerumitan dalam suatu proses pemrograman. Cara membuat suatu abstraksi akan berbeda dan bergantung kepada kebutuhan dalam penyelesaian yang diinginkan. Abstraksi merupakan method yang belum memiliki implementasi dan fokus kepada apa objek-nya. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 2 3 Abstraksi (2/3) Bentuk abstraksi prosedural / fungsional / algoritmik. Abstract class dalam java digunakan untuk mendeklarasikan karakteristik umum dari subclass. Untuk mendeklarasikan sebuah abstract class digunakan keyword abstract : abstract] class [class_name] Sebuah abstract class bisa berisi method tanpa diimplementasikan hanya sebuah method tanpa class. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 3 4
Abstraksi (3/3) Abstract Method Method yang memiliki isi atau definisi public abstract class Hitung1 { public abstract double getluas(); public abstract double getkeliling(); public class Lingkaran extends Hitung1 { private double radius; public Lingkaran (double radius) { this.radius = radius; public double getradius() { return radius; public double getluas() { return Math.PI * radius * radius; public double getkeliling() { return 2 * Math.PI * radius; Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 4 5 Encapsulation (1/2) Pengkapsulan pengkombinasian antara data dan prosedur ataupun fungsi yang memanipulasinya ke dalam sebuah wadah yang disebut objek. Tujuan untuk melindungi program/aplikasi dan data yang sedang diolah agar tidak diakses sembarangan oleh program lainnya. Manfaat proses Encapsulation: - Information hiding - Interface to Access data - Modularitas Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 5 6
Encapsulation (2/2) Metoda pengkapsulan terdiri dari: - Akses default - Akses public - Akses protected - Akses private Wilayah Akses public protected default private Di kelas yg sama Beda kelas, di package yg sama Beda kelas, beda package, di kelas turunan Beda kelas, beda package, tidak di kelas turunan x x x x x x Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 6 7 Contoh class Mobil1 { public String Merek; public Mobil1 (String n){ this.merek = n; public String tampilmerek() { return Merek; public void tipe() { System.out.println("Sedan"); public void transmisi () { System.out.println("Matik"); public void bahanbakar () { System.out.println("Pertamaxx`"); class Tampil1 { public static void main(string arg[]) { Mobil Tampil1 = new Mobil("Honda"); System.out.println("Nama: " + Tampil1.tampilMerek] Tampil1.Merek(); Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 7 8
Inheritance (1/3) Suatu entitas / objek dapat memiliki entitas / objek turunan. Pewarisan kemampuan suatu objek untuk menurunkan karakteristik yang dimilikinya (data atau prosedur / fungsi) kepada objek yang lain. Kemudahan dalam mengembangkan suatu objek baru dengan menggunakan sifat-sifat objek lain. Dalam Java, class Object merupakan class yang berada pada tingkat hirarki tertinggi Membangun class baru dengan menggunakan class yang telah ada. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 8 9 Inheritance (2/3) Bertujuan untuk menggunakan kembali code yang telah didefinisikan pada class yang telah ada untuk membentuk class baru. Parent / base-class suatu class yang memiliki class turunan. Child / sub-class class dari turunan itu sendiri. pesawat jet propeller Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 9 10
Inheritance (3/3) Suatu subclass dapat mewarisi semua atau sebagian member yang dimiliki oleh parent class hanya memperluas (extend) parent class-nya. Digunakan disebabkan oleh: Tidak perlu banyak menulis ulang sekelompok kode. Mengkoreksi / memperbaiki pengkodean pada base-class ke seluruh subclass. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 10 11 Deklarasi Inheritance Menambahkan kata kunci extends setelah deklarasi nama class, dan diikuti dengan nama parent class-nya. Kata kunci extends tersebut akan memberitahu Java compiler bahwa akan dilakukan perluasan class. public class A { public class B extends A { Hand-out: Enkapsulasi & Inheritansi IS1313-9 Hal. 11 12
Apa yang diwariskan? Semua field yang ditandai sebagai "dilindungi" atau "publik". "private" hanya dapat dilihat oleh kelas yang menyatakan mereka "protected" hanya dapat dilihat oleh kelas yang dinyatakan, dan pada setiap subclass Semua public dan method-method yang diprotek. Hand-out: Enkapsulasi & Inheritansi IS1313-9 Hal. 12 13 Contoh (1/2) public class Karyawan { public String nama; public double gaji; public class Supervisor extends Karyawan { public String departemen; class A { int x; int y; void TampilkanNilaixy() { System.out.println("Nilai x:" + x + ", y:" + y); class B extends A { int z; void TampilkanJumlah() { //subclass dapat mengakses member dari superclass System.out.println("Jumlah = " + (x+y+z)); Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 13 14
Contoh (2/2) class Parent1 { public int x = 67; class Child extends Parent1 { public int x = 6; public void Info(int x) { System.out.println("Nilai x sebagai " + "parameter = " + x); System.out.println("Data member x " + "di class Child = " + this.x); System.out.println("Data member x " + "di class Parent = " + super.x); class NilaiX { public static void main(string args[]) { Child tes = new Child(); tes.info(16); Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 14 15 Polimorfisme Merupakan suatu sifat yang memungkinkan nama yang sama dapat menyatakan tindakan yang berbeda. Secara umum, merupakan kemampuan untuk muncul dalam berbagai bentuk. Polymorphism di Java: Kemampuan suatu reference variable untuk bertindak (melakukan method) sesuai dengan object yang dipegangnya. Memungkinkan berbagai object dari berbagai subclass diperlakukan sebagai sebuah object super class. Super class yang dimaksud akan melakukan tindakan sesuai dengan object subclass tersebut. Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 56 16
Contoh public class Siswa { public String getname(){ System.out.println( Nama Siswa: + nama); return nama; public class Karyawan { public String getname(){ System.out.println( Nama Karyawan: + nama); return nama; Hand-out: Enkapsulasi & Inheritansi IS1313-09 Hal. 16 17 Selesai 18