PEWARISAN (Inheritance)

Slides:



Advertisements
Presentasi serupa
PERTEMUAN 4 PEMROGRAMAN API OOP Concept mudafiqriyan.com.
Advertisements

OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan.
Nur Hayatin, S.ST Jurusan Teknik Informatika Universitas Muhammadiyah Malang Sem Genap 2010.
Inheritance.
Inheritance ImamFahrur Rozi.
Pemrograman Berorientasi Objek
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
7 Rekayasa Sistem Konsep Utama OOP Dedy Alamsyah, S.Kom.
Advanced Class Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
Encapsulation, Inheritance, polymorphism, dan interface
Desain Berorientasi Obyek dan UML
Pewarisan, Polimorfisme, dan Interface
Pemrograman Berorientasi Objek
Inheritance (Pewarisan)
ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM
Pemrograman Berorientasi Obyek Oleh Tita Karlita
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Inheritance (Pewarisan)
Pemrograman Berorientasi Obyek dengan JAVA Interface
Advanced Class Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Inheritance Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
Object Oriented Programming with JAVA 2011/2012
Polymorphism (bag. 2).
INHERITANCE / PEWARISAN
Inheritance, polymorphism, dan interface
Pemrograman Berorientasi Obyek (PBO)
INHERITANCE (Oleh : Nur Hayatin, S.ST)
Algoritma &Pemrograman 1
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
Perancangan dan Pemrograman Web
Pertemuan 2 PBO Imam Solikin, M.Kom..
OBJEK dan KELAS Sutrisno PTIIK-UB.
Access Modifier.
Inheritance dan Kata Kunci static
Pemograman Berorientasi Objek
Encapsulation, Inheritance, Polymorphism
Outline: Pewarisan/Inheritance Polymorphism
Pemrograman Berorientasi Objek
Object Oriented Programming
POLYMORPHISM, ABSTRACT CLASS DAN INTERFACE
Pewarisan Disusun Oleh: Reza Budiawan Untuk:
POLYMORPHISM.
Pertemuan 4 Class, object & Variable
MEMBUAT CLASS SENDIRI 2.
METODE (2) SUSSI.
Object Oriented Programming
Inheritance.
Inheritance (Turunan)
INHERITANCE SUSSI.
Polymorphism (bag. 2).
Encapsulation / Visibility, Getter Setter, Pewarisan, Overloading dan Overriding PBO.
Visibility, Getter Setter, Pewarisan, Overloading dan Overriding
Array, Class, Obyek, Method danConstructor.
Visibility, Getter Setter, Pewarisan, Overloading dan Overriding
Pemrograman Berorientasi Object
Algoritma dan Struktur Data
Pemrograman Berorientasi Object
PEWARISAN Kelompok : Alim Mutohidin ( )
ISTILAH-ISTILAH PENTING PEMROGRAMAN BERBASIS OBYEK
Encapsulation / Visibility, Getter Setter, Pewarisan, Overloading dan Overriding Pemrograman.
Array, Class, Obyek, Method danConstructor.
Pertemuan 5 Inheritance
Oleh : Rahmat Robi Waliyansyah, M.Kom
Perkembangan Teknik Pemrograman
Encapsulation / Visibility, Getter Setter, Pewarisan, Overloading dan Overriding PBO.
Pemrograman Berorientasi Objek
Pemrograman Berorientasi Obyek (PBO) Disusun oleh : Khairan Marzuki, M.Kom Fakultas Teknik dan Kesehatan, Universitas Bumigora.
Transcript presentasi:

PEWARISAN (Inheritance)

Pengantar Adalah proses pembentukan kelas baru yang disebut sebagai derived class atau inherited class atau kelas turunan atau subkelas dari kelas yang sudah ada sebelumnya yang disebut base class atau superkelas Subkelas akan mewarisi semua anggota superkelas dan dapat ditambah anggota baru yang memiliki karakter lebih khusus

Pengantar (lanjutan) Pewarisan Merupakan bentuk relasi “is-a” Penggunaan kembali Software (kode program) Membuat kelas baru dari kelas yang dibuat sebelumnya Menampung variabel kelas dan perilaku dari superkelas Meningkatkan atau menambah atribut atau metode baru dari superkelas

Pengantar (lanjutan) Pewarisan Subkelas sebagai perluasan dari superclass Subclass Lebih spesifik dari superkelas-nya Mewarisi atribut dan perilaku dari superkelas Perilaku dapat disesuaikan Dapat ditambahkan atribut dan perilaku baru

Pengantar (lanjutan) hirarki kelas Langsung superclass Warisan eksplisit (satu tingkat hirarki) Tidak Langsung superclass Warisan dua atau lebih tingkat hirarki Pewarisan Tunggal Mewarisi dari satu superclass Pewarisan Jamak Mewarisi dari beberapa superclasses Java tidak mendukung Pewarisan Jamak

SuperKelas dan SubKelas Obyek sebuah kelas “is-an” objek kelas lain Contoh: PersegiPanjang adalah Segiempat. Kelas PersegiPanjang mewarisi dari kelas Segiempat Segiempat: SuperKelas PersegiPanjang: SubKelas

SuperKelas dan SubKelas SuperKelas mempunyai lingkup yang lebih luas daripada obyek SubKelas contoh: SuperKelas: Kendaraan Mobil, truk, kapal, sepeda, ... SubKelas: Mobil Lebih sempit linkupnya, bagian yang lebih spesifik dari kendaraan

Contoh SuperKelas dan SubKelas Mahasiswa Sarjana, PascaSarjana, Doktoran Bentuk2Dimensi Lingkaran, Segitika, Segiempat Persewaan PersewaanMobil, PersewaanLahan, PersewaanRumah Pegawai PegawaiDaerah, PegawaiPusat, Staf RekeningBank RekeningTabungan, RekeningGiro

SuperKelas dan SubKelas (lanjutan) Hirarki Pewarisan Relasi Pewarisan: Seperti struktur pohon hirarki Setiap kelas menjadi SuperKelas Pasokan anggota kelas-kelas lain (SubKelas) ATAU SubKelas Mewarisi anggota dari kelas lain (SuperKelas)

Hirarki Pewarisan di UML CivitasAkademika Pegawai Mahasiswa Alumni Fakultas Pusat Jurusan Staf

Hirarki Pewarisan Bentuk DuaDimensi TigaDimensi Lingkaran Persegi Segitiga Bola Kubus Kerucut

Anggota Protected Akses protected Level akses di antara public dan private Anggota protected dapat diakses oleh: Anggota superkelas Anggota subkelas Anggota kelas dalam paket yang sama Akses subkelas pada anggota superkelas Menggunakan keyword super diikuti dengan operator titik (.)

Catatan Metode subkelas tidak dapat langsung mengakses anggota private dari superkelas-nya. Sebuah subkelas bisa mengubah status variabel instan private milik superkelas hanya melalui metode non-private yang disediakan superkelas dan diwariskan ke subkelas.

Catatan (lanjutan) Mendeklarasikan variabel instan private dapat membantu programmer dalam melakukan pengujian, debug dan modifikasi sistem secara benar. Jika subkelas bisa mengakses variabel instan private superclass-nya, kelas yang mewarisi dari subkelas akan bisa juga mengakses variabel instan tersebut. Hal ini akan memperluas akses ke variabel instan private, sehingga manfaat penyembunyian informasi akan hilang.

Relasi Superkelas dan Subkelas Contoh Hirarki Pewarisan kelas KaryawanPemasaran dan kelas KaryawanTetapPemasaran Kelas KaryawanPemasaran Atribut: nama, nik, totalJual, persenKomisi Kelas KaryawanTetapPemasaran Atribut: nama, nik, totalJual, persenKomisi, gajiPokok

Kelas KaryawanPemasaran Turunan (extends) dari kelas Object Menggunakan keyword extends Setiap kelas di Java merupakan secara default turunan (extends) dari kelas Object Kecuali kelas Object Setiap kelas mewarisi metode dari kelas Object Setiap kelas baru secara implisit sebagai turunan (extends) dari kelas Object Jika bukan sebagai turunan (extends) dari kelas lain

Catatan Compiler Java menetapkan sebagai superkelas adalah kelas Object ketika mendeklarasikan kelas yang tidak secara eksplisit dituliskan sebagai turunan (extends) dari kelas Object.

Kelas KaryawanPemasaran

Kelas KaryawanPemasaran (lanjutan)

Catatan Kesalahan sintaks akan terjadi bila sebuah metode di superkelas di-override pada subkelas dengan menggunakan access modifier yang lebih terbatas jangkauannya. Misalkan: metode public di superkelas tidak bisa menjadi metode protected atau private pada subkelas, sebuah metode protected di superkelas tidak dapat menjadi metode private di subkelas. Karena perlakuan di atas akan mematahkan relasi "is-a" dimana diperlukan bahwa semua objek dari subkelas dapat menanggapi panggilan metode yang dideklarasikan sebagai metode public di superkelasnya.

Catatan (lanjutan) Jika metode public bisa di-override menjadi metode protected atau private, maka obyek subkelas tidak akan dapat merespon terhadp pemanggilan metode yang sama pada obyek superkelas. Bila metode dideklarasikan sebagai public di superkelas, maka metode harus tetap public ketika di-override pada subkelas baik pewarisan langsung maupun tidak langsung.

Tes Kelas KaryawanPemasaran

Tes Kelas KaryawanPemasaran (keluaran)

Kelas KaryawanTetapPemasaran tanpa Pewarisan Secara implisit turunan dari kelas Object Sebagian besar kode program mirip dengan kelas KaryawanPemasaran, meliputi: variabel instan private metode public konstruktor Tambahan variabel instan gajiPokok Metode setGajiPokok dan getGajiPokok

Contoh: Kelas KaryawanTetapPemasaran tanpa Pewarisan

Contoh: Kelas KaryawanTetapPemasaran tanpa Pewarisan (lanjutan)

Catatan Copy dan paste kode program dari satu kelas ke kelas lainnya dapat menambah peluang terjadi kesalahan di beberapa file kode program. Untuk menghindari duplikasi kode (dan mungkin terjadi kesalahan), penggunaan konsep pewarisan, bukan cara "copy-and-paste", dalam situasi di mana diinginkan mendeklarasikan kelas yang dapat "menyerap" variabel instan dan metode dari kelas lain.

Catatan Dengan konsep pewarisan, variabel instan dan metode umum dari semua kelas dalam hirarki pewarisan dideklarasikan di superclass-nya. Bila perubahan diperlukan dari fitur-fitur umum, pengembang perangkat lunak hanya perlu membuat perubahan di superclass-subclass-nya kemudian mewarisikan perubahan tersebut. Tanpa pewarisan, perubahan perlu dilakukan untuk semua file kode program yang berisi salinan dari kode tersebut.

Catatan Kelas KaryawanTetapPemasaran Turunan dari kelas KaryawanPemasaran “is-a” kelas KaryawanPemasaran Memiliki variabel instan gajiPokok Mewarisi anggota public dan protected Konstruktor tidak diwariskan

Kelas KaryawanTetapPemasaran (turunan kelas KaryawanPemasaran)

Kelas KaryawanTetapPemasaran (turunan kelas KaryawanPemasaran)

Catatan Sebuah kesalahan kompilasi terjadi jika konstruktor subclass memanggil salah satu konstruktor superclass dengan argumen yang tidak sama persis dengan jumlah dan jenis parameter yang ditentukan dalam salah satu deklarasi konstruktor superclass.

Anggota Protected Penggunaan variabel instan protected Dimungkinkan subkelas untuk langsung mengakses variabel instan protected di superclass-nya Anggota protected superclass diwariskan ke semua subclases-nya

Anggota Protected (lanjutan) Penggunaan variabel instan protected Keuntungan Subclass dapat memodifikasi nilai data secara langsung Meningkatkan kinerja walau sedikit Terhindar dari metode set/get Kerugiannya Tidak ada pemeriksaan validitas subclass dapat menetapkan nilai ilegal Implementasi tergantung metode subclass dimungkinkan tergantung pada implementasi superclass perubahan implementasi superclass dapat mengakibatkan modifikasi subclass Perangkat lunak lemah

Catatan Gunakan akses modifier protected ketika superclass harus menyediakan metode yang hanya untuk subclass dan kelas-kelas lain dalam paket yang sama, tetapi tidak untuk kelas lainnya. Mendeklarasikan variabel instan private di superkelas (sebagai lawan protected) memungkinkan penggunaan variabel instan superclass tersebut tanpa mempengaruhi implementasi subkelas-nya

Review Gunakan praktek rekayasa perangkat lunak yang baik dengan: Deklarasikan variable instan sebagai private Menambahkan metode set dan get sebagai public Gunakan metode set dan get tersebut untuk mendapatkan nilai dari variabel instan.

Catatan (lanjutan) Ketika metode superkelas di-override di subkelas, sering versi subkelas memanggil versi superkelas untuk melakukan sebagian pekerjaan. Kelalaian pemberian awalan super. pada pemanggilan metode superkelas menyebabkan pemanggilan metode di subkelas akan memanggil dirinya sendiri sehingga terjadi kesalahan berupa rekursi tak terbatas (infinite recursion).

Konstruktor Subkelas Instansiasi objek subkelas Sebagai serangkaian dari pemanggilan konstruktor Konstruktor subkelas memanggil konstruktor superkelas Implisit atau eksplisit Didasarkan hirarki pewarisan Konstruktor terakhir yang dipanggil adalah konstruktor Objek dipilih Konstruktor subkelas dieksekusi paling akhir

Catatan Bahasa pemrograman Java menetapkan bahwa jika konstruktor tidak menentukan nilai variabel instan, maka variabel instan tersebut akan diinisialisasi ke nilai default (misalkan: 0 untuk tipe numerik primitif, false untuk boolean, dan null untuk referensi).

Penggunaan Pewarisan di RPL Disesuaikan terhadap perangkat lunak yang ada Pewarisan dari kelas yang sudah ada (dibuat) Penyertaan anggota tambahan Pendefinisian kembali (override) anggota superkelas Tidak ada modifikasi kode sumber superkelas Link ke kode objek Tidak tergantung terhadap software vendor (ISV) Sebagai pengembangan kode berlisensi Tersedia dalam format object-code Pengguna dapat memperoleh kelas baru Tanpa memodifikasi kode sumber yang telah dibuat sebelumnya

Catatan Terlepas dari praktek pemrogram bahwa sebenarnya konsep pewarisan kelas tidak perlu melakukan modifikasi kode sumber dari superkelas, tetapi seringkali pemrogram sering bersikeras ingin melihat kode sumber dari superkelas untuk memahami bagaimana superkelas diimplementasikan. Pemrogram hanya ingin memastikan bahwa kelas yang dikembangkan benar-benar solid, yaitu kelas yang berkinerja baik dan dapat diimplementasikan dengan aman.

Catatan Pada tahap desain sistem berorientasi objek, perancang sering menemukan bahwa terdapat beberapa kelas tertentu memiliki hubungan erat. Perancang harus memasukkan beberapa variabel instan dan metode bersifat umum ke dalam kode sumber dari superkelss. Kemudian perancang harus menggunakan konsep pewarisan untuk mengembangkan subkelas, sehingga dapat memasukkan anggota tambahan dari superkelas sebelumnya untuk kemudian diwariskan ke subkelas. Jika deklarasi subkelas tidak mengubah kode sumber superkelasnya, maka penggunaan pewarisan akan dapat menjaga integritas superkelas.

Catatan Sama seperti perancang sistem non-object-oriented, mereka juga harus menghindari proliferasi (pengembangan) fungsi/subprogram yang telah ada/dibuat, perancang sistem berorientasi objek harus menghindari proliferasi kelas. Proliferasi tersebut menciptakan masalah manajemen dan dapat menghambat usabilitas perangkat lunak, karena dalam kelas pustaka yang besar akan menyulitkan untuk menemukan kelas yang paling tepat. Sebagai alternatif adalah membuat sedikit kelas yang menyediakan fungsionalitas yang lebih besar, tetapi kelas tersebut bisa-jadi rumit. Jika subkelas lebih besar dari yang dibutuhkan (misalnya, memiliki terlalu banyak fungsi), memori dan pengolahan sumber daya mungkin menjadi boros/sia-sia. Pewarisan superkelas sebaiknya yang berisi fungsi sesuai kebutuhan.

Kelas Object Beberapa metode yang terdapat di kelas Object: clone equals finalize getClass hashCode notify, notifyAll, wait toString