1 / 44

PEWARISAN ( Inheritance )

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

ria-le
Download Presentation

PEWARISAN ( Inheritance )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PEWARISAN(Inheritance)

  2. Pengantar • Adalahprosespembentukankelasbaru yang disebutsebagaiderived classatauinherited class atau kelas turunan atau subkelasdarikelas yang sudahadasebelumnya yang disebutbase classatau superkelas • Subkelas akanmewarisisemuaanggota superkelas dandapatditambahanggota baru yang memilikikarakter lebihkhusus

  3. Pengantar(lanjutan) • Pewarisan • Merupakanbentukrelasi “is-a” • PenggunaankembaliSoftware (kode program) • Membuatkelas baru dari kelas yang dibuatsebelumnya • Menampungvariabelkelas dan perilakudarisuperkelas • Meningkatkanataumenambahatributataumetodebarudarisuperkelas

  4. Pengantar(lanjutan) • Pewarisan • Subkelassebagaiperluasandarisuperclass • Subclass • Lebih spesifikdarisuperkelas-nya • Mewarisiatribut dan perilaku dari superkelas • Perilakudapat disesuaikan • Dapatditambahkan atribut dan perilaku baru

  5. Pengantar (lanjutan) • hirarki kelas • Langsung superclass • Warisan eksplisit (satu tingkat hirarki) • TidakLangsung superclass • Warisandua atau lebih tingkat hirarki • Pewarisan Tunggal • Mewarisi dari satu superclass • PewarisanJamak • Mewarisi dari beberapa superclasses • Java tidak mendukung PewarisanJamak

  6. SuperKelasdanSubKelas • SuperKelasdan SubKelas • Obyek sebuahkelas “is-an”objek kelas lain • Contoh: PersegiPanjangadalah Segiempat. • Kelas PersegiPanjangmewarisi dari kelas Segiempat • Segiempat: SuperKelas • PersegiPanjang: SubKelas

  7. SuperKelasdanSubKelas • SuperKelasdan SubKelas • SuperKelasmempunyailingkupyang lebih luasdaripada obyek SubKelas • contoh: • SuperKelas: Kendaraan • Mobil, truk, kapal, sepeda, ... • SubKelas: Mobil • Lebih sempitlinkupnya, bagian yang lebih spesifik darikendaraan

  8. ContohSuperKelasdanSubKelas

  9. SuperKelasdanSubKelas (lanjutan) • Hirarki Pewarisan • RelasiPewarisan: • Seperti struktur pohon hirarki • Setiap kelas menjadi • SuperKelas • Pasokan anggota kelas-kelas lain (SubKelas) ATAU • SubKelas • Mewarisi anggota dari kelas lain (SuperKelas)

  10. HirarkiPewarisan di UML CivitasAkademika Pegawai Mahasiswa Alumni Fakultas Pusat Jurusan Staf

  11. HirarkiPewarisan Bentuk DuaDimensi TigaDimensi Lingkaran Bola Persegi Kubus Segitiga Kerucut

  12. Anggota Protected • Akses protected • Level aksesdi antarapublicdan private • Anggota protected dapat diakses oleh: • Anggota superkelas • Anggota subkelas • Anggota kelas dalam paket yang sama • Akses subkelaspadaanggota superkelas • Menggunakankeywordsuperdiikutidengan operator titik (.)

  13. Catatan • Metode subkelastidak dapat langsung mengakses anggota privatedari superkelas-nya. Sebuah subkelas bisa mengubah status variabel instanprivatemiliksuperkelas hanya melalui metode non-privateyang disediakan superkelas dan diwariskankesubkelas.

  14. Catatan (lanjutan) • Mendeklarasikan variabel instanprivatedapatmembantu programmerdalammelakukanpengujian, debug dan modifikasi sistemsecarabenar. Jika subkelas bisa mengakses variabel instan privatesuperclass-nya, kelas yang mewarisi dari subkelas akanbisa jugamengakses variabel instan tersebut. Hal ini akan memperluasakses ke variabel instanprivate, sehinggamanfaat penyembunyian informasi akan hilang.

  15. RelasiSuperkelasdanSubkelas • Contoh • HirarkiPewarisankelasKaryawanPemasarandankelasKaryawanTetapPemasaran • KelasKaryawanPemasaran • Atribut: nama, nik, totalJual, persenKomisi • KelasKaryawanTetapPemasaran • Atribut: nama, nik, totalJual, persenKomisi, gajiPokok

  16. KelasKaryawanPemasaran • Turunan (extends) darikelas Object • Menggunakan keyword extends • Setiap kelas di Java merupakansecara default turunan (extends) darikelas Object • Kecualikelas Object • Setiap kelas mewarisi metodedarikelas Object • Setiap kelas baru secaraimplisit sebagaiturunan (extends) darikelas Object • Jika bukansebagaiturunan (extends) darikelas lain

  17. Catatan • Compiler Java menetapkan sebagaisuperkelas adalahkelas Objectketika mendeklarasikankelas yang tidak secara eksplisit dituliskansebagaiturunan (extends) darikelas Object.

  18. KelasKaryawanPemasaran

  19. KelasKaryawanPemasaran (lanjutan)

  20. Catatan • Kesalahan sintaks akanterjadibilasebuahmetode di superkelas di-override padasubkelasdenganmenggunakan access modifier yang lebihterbatasjangkauannya. Misalkan: metode public di superkelas tidak bisa menjadi metode protectedatau private padasubkelas, sebuah metode protected di superkelas tidak dapatmenjadi metode private di subkelas. Karenaperlakuan di atasakan mematahkanrelasi"is-a" dimana diperlukan bahwa semua objekdarisubkelas dapat menanggapi panggilan metode yang dideklarasikansebagaimetode public di superkelasnya.

  21. Catatan (lanjutan) • Jika metode public bisa di-override menjadimetode protected atau private, makaobyek subkelas tidak akan dapatmerespon terhadppemanggilan metode yang sama padaobyek superkelas. Bilametodedideklarasikansebagaipublicdi superkelas, makametode harustetap publicketika di-override padasubkelasbaikpewarisanlangsung maupuntidak langsung.

  22. TesKelasKaryawanPemasaran

  23. TesKelasKaryawanPemasaran(keluaran)

  24. KelasKaryawanTetapPemasarantanpaPewarisan • Kelas KaryawanTetapPemasaran • Secara implisit turunandarikelasObject • Sebagian besar kode program mirip dengan kelasKaryawanPemasaran, meliputi: • variabel instan private • metode public • konstruktor • Tambahan • variabel instangajiPokok • Metode setGajiPokokdan getGajiPokok

  25. Contoh: KelasKaryawanTetapPemasarantanpaPewarisan

  26. Contoh: KelasKaryawanTetapPemasarantanpaPewarisan (lanjutan)

  27. Catatan • Copy dan paste kode program dari satu kelas ke kelas lainnya dapat menambahpeluangterjadikesalahan di beberapa file kode program. Untuk menghindari duplikasi kode (dan mungkin terjadikesalahan), penggunaan konseppewarisan, bukan cara"copy-and-paste", dalam situasi di mana diinginkanmendeklarasikankelas yang dapat"menyerap" variabel instandan metode darikelas lain.

  28. Catatan • Dengan konseppewarisan, variabel instandan metode umum darisemua kelas dalam hirarki pewarisandideklarasikan di superclass-nya. Bilaperubahan diperlukan darifitur-fitur umum, pengembang perangkat lunak hanya perlu membuat perubahan di superclass-subclass-nyakemudian mewarisikan perubahantersebut. Tanpa pewarisan, perubahan perlu dilakukan untuk semua file kode program yang berisi salinan dari kode tersebut.

  29. Catatan • Kelas KaryawanTetapPemasaran • Turunandarikelas KaryawanPemasaran • “is-a” kelasKaryawanPemasaran • Memiliki variabel instangajiPokok • Mewarisi anggota public dan protected • Konstruktor tidak diwariskan

  30. KelasKaryawanTetapPemasaran (turunankelasKaryawanPemasaran)

  31. KelasKaryawanTetapPemasaran (turunankelasKaryawanPemasaran)

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

  33. AnggotaProtected • Penggunaan variabel instan protected • Dimungkinkan subkelas untuk langsung mengakses variabel instan protected di superclass-nya • Anggota protectedsuperclass diwariskan kesemua subclases-nya

  34. AnggotaProtected (lanjutan) • Penggunaanvariabel instan protected • Keuntungan • Subclass dapat memodifikasi nilai data secara langsung • Meningkatkan kinerjawalausedikit • Terhindardarimetode set/get • Kerugiannya • Tidak ada pemeriksaanvaliditas • subclass dapat menetapkan nilai ilegal • Implementasitergantung • metode subclass dimungkinkantergantung pada implementasi superclass • perubahan implementasi superclass dapat mengakibatkan modifikasi subclass • Perangkat lunak lemah

  35. Catatan • Gunakan akses modifier protectedketika superclass harus menyediakan metode yang hanya untuk subclass dan kelas-kelas lain dalam paket yang sama, tetapi tidak untuk kelaslainnya. • Mendeklarasikan variabel instanprivate di superkelas (sebagai lawan protected) memungkinkan penggunaanvariabel instansuperclass tersebut tanpa mempengaruhi implementasi subkelas-nya

  36. Review • Gunakan praktek rekayasa perangkat lunak yang baikdengan: • Deklarasikan variable instansebagai private • Menambahkanmetode set dan get sebagai public • Gunakan metode set dan get tersebutuntuk mendapatkan nilai dari variabel instan.

  37. Catatan (lanjutan) • Ketika metode superkelas di-override di subkelas, sering versi subkelas memanggilversi superkelas untuk melakukan sebagian pekerjaan. Kelalaianpemberianawalan super.padapemanggilanmetode superkelas menyebabkan pemanggilanmetode di subkelas akanmemanggildirinyasendirisehinggaterjadikesalahan beruparekursi tak terbatas (infinite recursion).

  38. KonstruktorSubkelas • Instansiasiobjeksubkelas • Sebagaiserangkaiandaripemanggilan konstruktor • Konstruktor subkelas memanggil konstruktor superkelas • Implisit atau eksplisit • Didasarkanhirarki pewarisan • Konstruktor terakhir yang dipanggiladalah konstruktor Objek dipilih • Konstruktorsubkelas dieksekusi paling akhir

  39. Catatan • BahasapemrogramanJava menetapkanbahwa jika konstruktor tidak menentukannilai variabel instan, makavariabel instantersebutakandiinisialisasi ke nilai default (misalkan: 0 untuk tipenumerik primitif, false untuk boolean, dannull untuk referensi).

  40. PenggunaanPewarisan di RPL • Disesuaikan terhadapperangkat lunak yang ada • Pewarisandari kelas yang sudahada (dibuat) • Penyertaan anggota tambahan • Pendefinisian kembali(override) anggota superkelas • Tidak ada modifikasikode sumber superkelas • Link ke kode objek • Tidaktergantungterhadapsoftware vendor (ISV) • Sebagai pengembangan kode berlisensi • Tersedia dalam format object-code • Pengguna dapatmemperoleh kelas baru • Tanpa memodifikasikode sumber yang telahdibuatsebelumnya

  41. Catatan • Terlepas dari praktekpemrogrambahwa sebenarnyakonsep pewarisan kelas tidak perlumelakukanmodifikasikode sumber dari superkelas, tetapiseringkalipemrogramsering bersikeras inginmelihat kode sumber darisuperkelasuntuk memahami bagaimana superkelas diimplementasikan. Pemrogramhanyaingin memastikan bahwa kelas yang dikembangkanbenar-benarsolid, yaitukelas yang berkinerja baik dan dapatdiimplementasikandengan aman.

  42. Catatan • Pada tahap desain sistem berorientasi objek, perancangsering menemukan bahwa terdapatbeberapakelastertentu memiliki hubungan erat. Perancang harusmemasukkanbeberapavariabel instan danmetodebersifatumum kedalamkodesumberdarisuperkelss. Kemudian perancangharus menggunakan konseppewarisanuntuk mengembangkan subkelas, sehinggadapatmemasukkananggotatambahandarisuperkelassebelumnyauntukkemudiandiwariskankesubkelas. • Jikadeklarasi subkelas tidak mengubahkode sumber superkelasnya, makapenggunaan pewarisan akandapatmenjaga integritas superkelas.

  43. Catatan • Sama seperti perancang sistem non-object-oriented, merekajugaharus menghindari proliferasi (pengembangan)fungsi/subprogram yang telahada/dibuat, perancang sistem berorientasi objek harus menghindari proliferasi kelas. Proliferasi tersebut menciptakan masalah manajemen dan dapat menghambat usabilitas perangkatlunak, karena dalam kelas pustaka yang besar akanmenyulitkanuntuk menemukan kelas yang paling tepat. Sebagai alternatif adalah membuatsedikit kelas yang menyediakan fungsionalitas yang lebih besar, tetapi kelas tersebut bisa-jadirumit. • Jika subkelas lebih besar dari yang dibutuhkan(misalnya, memilikiterlalu banyak fungsi), memori dan pengolahan sumber daya mungkin menjadiboros/sia-sia. Pewarisansuperkelassebaiknyayang berisi fungsi sesuaikebutuhan.

  44. KelasObject • Beberapametode yang terdapat di kelas Object: • clone • equals • finalize • getClass • hashCode • notify, notifyAll, wait • toString

More Related