Inheritance dan Kata Kunci static

dokumen-dokumen yang mirip
5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

Inheritance (Pewarisan) Pengertian dasar inheritance

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Pemrograman Berbasis Objek Inheritance

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Inheritance. Topik 5/17/2013

Bahasa Pemrograman :: Polimorfism and Abstraction

PERANCANGAN PERANGKAT LUNAK BERORIENTASI OBYEK

KONSEP OOP: PEWARISAN / INHERITANCE

Pemrograman Berorientasi. Inheritance

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

subclass class manapun private default protected public package yang sama

Modul Bahasa Pemrograman 1

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Konsep Inheritance. Praktikum 8 Pemrograman Berbasis Obyek

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

KONSEP OOP: PEWARISAN / INHERITANCE

Konsep Dasar Pemrograman Berorientasi Objek

IKG2I4 / Software Project I

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Pemrograman Lanjut. Class : Deeper Look 2

(INHERITANCE) Nurochman

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

BAB 6 INHERITANCE Tujuan:

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Pemrograman Berorientasi. Abstract & Interface

Dengan menggunakan encapsulation kita dapat membatasi akses langsung suatu class atau program kecuali melalui suatu method yang sudah diberikan.

PEMROGRAMAN BERORIENTASI OBJEK

public class B extends A {... }

JOBSHEET 8 INHERITANCE (PEWARISAN)

Gambar 1: Hirarki class

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

INTERAKSI ANTAR OBJECT

Dasar-Dasar OOP di Java

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

Pemrograman Berorientasi. Class dan Obyek 2

SUMBER BELAJAR PENUNJANG PLPG

LAPORAN RESMI INHERITANCE

Pewarisan, Polimorfisme, dan Interface

Membuat dan Menggunakan Class

Bahasa Pemrograman 2.

Praktikum 3 Konsep Class, Attribute dan Method

PRAKTIKUM I Class dan Obyek

8 - Overriding dan Overloading

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

Bahasa Pemrograman :: Inheritance

7 Inheritance. + berjalan() + berhenti PENDAHULUAN

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Bahasa Pemrograman 2.

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

Modul II Object Oriented Programming

Composition dan Inheritance

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Bahasa Pemrograman 2.

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Pemrograman Berorientasi Objek Danu Wira Pangestu

PEWARISAN D E W I S A R T I K A, M. K O M

Modul 4: Lebih Dalam lagi tentang Class, Objek dan Method

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

[Lanjutan] Nurochman

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Pengenalan pemrograman berorientasi obyek

2 TIPE DATA DAN VARIABEL

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

KONSEP OOP: PEWARISAN / INHERITANCE

Pewarisan atau Inheritance

MINGGU V : PBO (PEWARISAN)

:: abstract class + interface. :: abstract class

Dasar-Dasar OOP di Java

BAB II VARIABEL DAN TIPE DATA

Parent dan Child di Java

CLASS, METHOD DAN MODIFIER

CLASS PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM JOGJAKARTA

PERTEMUAN 13 PERANCANGAN BERORIENTASI OBJEK UNTUK MULTI KELAS

INHERITANCE. Pelatihan Java 2 Mei 2015 Fakultas Teknologi Informasi Program Studi Teknik Informatika

Bab 8. Dasar-Dasar OOP

UNIVERSITAS GUNADARMA

Pemrograman Berorientasi Objek

Enkapsulasi. Politeknik Elektronika Negeri Surabaya. Enkapsulasi. public void Info() { System.out.println( Saya siswa PENS );

Konsep Pemrograman Berbasis Obyek

INHERITANCE. Gambar 1. Kelas Hierarki Java

PRAKTIKUM III & IV PEMROGRAMAN BERORIENTASI OBJEK

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

Konsep Pemrograman Berorientasi Pada Objek Dengan. Java Netbeans

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Polymorphism (Polimorfisme)

Keyword this untuk memanggil private String pengarang; private String judul;

Class & Object 2. Imam Fahrur Rozi

Transkripsi:

Inheritance dan Kata Kunci static

PEWARISAN (INHERITANCE) Salah satu fitur yang paling kuat dalam OOP adalah penggunaan kode kembali (code reuse). Sekali sebuah prosedur dibuat, maka kita bisa menggunakannya berulang kali Dalam OOP, kemampuan yang dimiliki tidak hanya itu. Kita juga bisa mendefinisikan hubungan antar kelas yang tidak hanya dimanfaatkan untuk code reuse, tapi juga dari segi pendesainannya yang jauh lebih baik, yaitu dengan cara mengelola kelas-kelas dan faktor kemiripan di antara kelas-kelas tersebut.

Fitur pewarisan (inheritance) mengijinkan sebuah kelas, yang disebut superclass, untuk menurunkan atribut-atribut dan method-methodnya kepada kelas lainnya yang disebut subclass (child)

Terdapat beberapa karakteristik dari subclass: - subclass adalah bentuk khusus dari sebuah superclass - dalam sebuah subclass terdapat atribut dan method yang diturunkan dari superclass - subclass bisa memiliki fitur tambahan yang berbeda dari fitur-fitur yang diturunkan dari superclass-nya

CONTOH PEWARISAN

JENIS-JENIS PEWARISAN Single inheritance, yaitu hanya terdapat satu superclass Multiple inheritance, yaitu terdapat lebih dari satu superclass. Bahasa Java tidak mengakomodasi multiple inheritance

Pewarisan adalah 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. Pewarisan ini merupakan implementasi dari hubungan antar kelas generalisasi-spesialisasi.

Kelas yang mewariskan disebut kelas induk, super class, atau base class sedangkan kelas yang menerima pewarisan disebut kelas anak, kelas turunan, atau subclass.

Pewarisan dapat dilakukan jika : 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)

Pewarisan di Java Pewarisan di Java hanya mengenal pewarisan tunggal, artinya sebuah kelas hanya mewarisi atribut dan method dari satu kelas induk. Untuk menggunakan pewarisan di Java digunakan keyword extends.

Contoh Pewarisan

//Employee.java public class Employee { public String name; public Date birthdate; public double salary; public String getdetails() {...

//Manager.java public class Manager extends Employee { public String department;

Dari kode di atas, terlihat bahwa atribut name, birthdate, dan salary serta method getdetails() diturunkan ke kelas Manager sehingga kelas Manager dapat menggunakan atribut dan method tersebut. Konstruktor dari kelas induk tidak dapat diturunkan kepada kelas turunannya. Untuk menggunakan method dan konstruktor dari kelas induk pada kelas anak digunakan keyword super

//Employee.java public class Employee { private String name; private double gaji; public Employee (String s, double g) { name = s; public double getgaji() { return gaji;

//Manager.java public class Manager extends Employee { private String alamat; private double tunjangan; private double bonus; public Manager(String nama, String s, double gaji) { super(nama, gaji); alamat = s; Public double getgaji() { return (super.getgaji()+tunjangan+bonus);

Ketika kode dalam satu kelas (kelas A) memiliki akses ke kelas yang lain (kelas B), hal tersebut berarti kelas A dapat melakukan satu dari tiga hal berikut : Membuat instance kelas B; Meng-extends kelas B (dengan kata lain, menjadi subclass dari kelas A); Mengakses atribut dan method tertentu dalam kelas B tergantung dari access control atribut dan methodnya.

Access Specifier yang dapat diterapkan pada kelas adalah akses default (friendly) dan public. Dalam deklarasinya, sebuah kelas dengan access specifier default tidak memiliki specifier di depan nama kelasnya. Kelas yang memiliki akses default berarti kelas ini hanya dapat diakses oleh kelas yang berada di dalam package yang sama. Contoh, jika kelas A dan B terletak di dalam package yang berbeda, dan kelas A memiliki akses default, maka kelas B tidak dapat membuat instance dari kelas A atau bahkan tidak dapat mendeklarasikan variabel yang bertipe kelas A. Perhatikan contoh berikut ini:

Contoh package packageone; class Animal { package packagetwo; import packageone.animal; class Dog extends Animal { Superclass Animal berada di dalam package yang berbeda dengan subclassnya, yaitu Dog. Pernyataan import di dalam kelas Dog berusaha mengimpor kelas Animal. Ketika proses kompilasi dijalankan, kelas Animal dapat dikompilasi, tetapi tidak dengan kelas Dog. Hal ini disebabkan karena superclass Animal mempunyai akses default dan terletak di dalam package yang berbeda. Kelas yang dideklarasikan public dapat diakses oleh kelas yang berada di manapun, termasuk oleh kelas yang berada di package yang berbeda. Jika contoh kode di atas dimodifikasi dengan menjadikan kelas Animal memiliki access specifier public, maka kedua kelas tersebut dapat dikompilasi.

Access Specifier Tabel di bawah ini merupakan rangkuman aksesibilitas dari access specifier pada class member (atribut dan method). Specifier Kelas yang sama Package yang Sama Subclass Semua Kelas private Ya default Ya Ya protected Ya Ya Ya public Ya Ya Ya Ya

package1 Class2 OK OK OK NO Class1 a : int + b : int # c : int - d : int OK OK OK NO SubClass1

package3 package1 package2 Class2 NO OK NO NO Class1 a : int + b : int # c : int - d : int NO OK OK NO SubClass1

Latihan Buatlah kode Java untuk diagram UML berikut

Keyword Final Kata Kunci final dapat digunakan untuk deklarasi kelas, method, dan variabel. Bahasa pemrograman Java memungkinkan penggunaan kata kunci final pada kelas. Jika kelas dideklarasikan final, maka kelas tersebut tidak dapat diturunkan. Salah satu contoh dari kelas final adalah kelas java.lang.string. Kelas ini dibuat final untuk alasan keamanan.

Method dapat dideklarasikan dengan kata kunci final. Method yang dideklarasikan final tidak dapat di-override. Sebuah method sebaiknya didelkarasikan final jika method yang bersangkutan mempunyai implementasi yang tidak boleh diubah dan penting untuk menjaga konsistensi perilaku sebuah obyek.

Jika variabel dideklarasikan dengan kata kunci final, maka variabel tersebut dijadikan sebagai sebuah konstanta. Apabila program berusaha mengubah nilai dari variabel final, maka akan muncul kesalahan compiler. Kode program berikut ini menggambarkan penggunaan variabel final : public class Bank { private static final double DEFAULT_INTEREST_RATE=3.2;

Untuk kasus variabel referensi, jika menandai variabel tersebut dengan final, maka variabel tersebut tidak dapat merujuk ke obyek lainnya. Tetapi, isi variabel dari obyek tersebut dapat diubah. Variabel final kosong adalah sebuah variabel final yang tidak diinisialisasi ketika dideklarasikan. Biasanya variable ini merupakan variabel instance yang nilainya diberikan di dalam konstruktor. Variabel final kosong yang dideklarasikan sebagai variabel obyek dapat diberi nilai di bagian manapun di dalam method, tetapi hanya dapat diberi nila satu kali saja. Kode program berikut menunjukkan penggunaan variabel final dengan nilai awal kosong.

public class Customer { private final long customerid; public Customer(){ customerid = 10238L; public long getid() { return customerid;

Keyword static Pada saat tertentu, terkadang dibutuhkan variabel yang di-share/dibagi untuk semua instance/obyek suatu kelas. Sebagai contoh, variabel yang digunakkan sebagai basis untuk komunikasi antar instance atau menghitung jumlah instance yang telah dibuat. Untuk melakukan hal ini, tandai sebuah variabel dengan kata kunci static. Variabel tersebut seringkali disebut sebagai variabel kelas untuk membedakannya dari member variable atau variabel instance yang tidak di-share oleh semua instance. Perhatikan contoh kode program berikut.

public class Count{ private int serialnumber; public static int counter = 0; public Count() { counter++; serialnumber = counter;

Pada contoh tersebut, diberikan SerialNumber yang unik untuk setiap obyek yang dibuat, dimulai dengan angka 1 untuk obyek pertama, angka 2 untuk obyek kedua, dan seterusnya. Variable counter dishare/dibagi untuk semua instance. Ketika membuat sebuah obyek Count, konstruktor akan dipanggil. Pemanggilan konstruktor ini akan meincrement (menambahkan dengan 1) nilai dari variabel counter dan nilai ini diberikan kepada variabel serialnumber.

Gambar berikut ini menunjukkan visualisasi dari pembentukan instance/obyek tersebut.

Variabel statik memiliki konsep yang serupa dengan variabel global di dalam bahasa pemrograman lainnya. Bahasa Java tidak mengenal variabel global, tetapi variabel statik adalah sebuah variabel yang dapat diakses oleh setiap instance dari sebuah kelas. Untuk mengkasesnya tidak diperlukan instance dari kelasnya, tetapi menggunakan nama kelasnya sebagaimana ditunjukkan pada contoh kode program berikut ini.

public class OtherClass { public void incrementnumber() { Count1.counter++;

Terkadang perlu juga mengakses kode program yang tidak memiliki instance dari sebuah kelas. Hal tersebut dapat dilakukan dengan menggunakan method yang dideklarasikan static. method demikian seringkali disebut sebagai method kelas sebagaimana ditunjukkan pada kode program berikut.

public class Count2 { private int serialnumber; private static int counter = 0; public static int gettotalcount() { return counter; public Count2() { counter++; serialnumber = counter;

Untuk menggunakan method yang dideklarasikan static, tidak perlu menggunakan referensi obyeknya melainkan nama kelas seperti ditunjukkan pada kode program berikut ini : public class TestCounter { public static void main(string[] args) { System.out.println("number of counter is + Count2.getTotalCount()); Count2 count2 = new Count2(); System.out.println("number of counter is "+ Count2.getTotalCount());

Karena method statik dipanggil tanpa menggunakan variabel instance dari kelas yang bersangkutan, maka tidak dapat diterapkan variabel referensi this. Akibatnya, method statik tidak dapat mengakses variabel selain daripada variabel lokal, atribut static, dan parameternya. Apabila berusaha mengakses atribut bukan statik dari method statik, hal itu akan menyebabkan compiler error. Atribut bukan statik terkait dengan satu instance tertentu dan ia hanya bisa diakses melalui referensi instance. Berikut contoh kode program yang mencoba mengakses variabel bukan statik dari method statik.

public class Count3 { private int serialnumber; private static int counter = 0; public static int getserialnumber() { return serialnumber; //COMPILER ERROR

Hal yang harus diperhatikan ketika menggunakan method statik antara lain : Method statik tidak dapat di-override Method main() merupakan sebuah method statik karena JVM tidak perlu membuat sebuah instance dari kelas yang bersangkutan ketika method main() dieksekusi. Jika mempunyai data member, hendaknya dibuatkan sebuah obyek untuk mengaksesnya.

Method atau variabel statik dideklarasikan sebaiknya ketika : tidak diperlukan operasi pada obyek individual; tidak diperlukan asosiasi suatu variabel kepada sebuah obyek; diperlukan akses variabel atau method sebelum instanstiasi obyek; Method atau variabel secara logika bukan milik dari sebuah obyek, tetapi milik sebuah kelas utilitas. Contohnya kelas Math pada Java API.