Skip to main content

Pewarisan Dalam Object Oriented Programming (OOP)

Pewarisan atau Inheritance

Sekitar pertengahan tahun 1980, para software developers berkeyakinan bahwa produktivitas mereka dapat ditingkatkan melalui konsep yang disebut sebagai software reuse.

Abstract Data Types (ADT / Tipe Data Abstrak), dengan fitur encapsulation dan acess control, sepertinya menyediakan kemudahan untuk digunakan kembali untuk tujuan lain (software reuse). Namun penggunaan ADT semata untuk mendukung software reuse berhadapan dengan dua permasalahan:
  • Tidak mudah melakukan reuse dengan cara modifkasi terhadap ADT yang dibuat oleh orang lain. (Dalam banyak kasus orang yang memodifikasi bukanlah si penulis kode).
  • Setiap ADT yang dibuat akan bersifat independent (tidak ada kaitan satu sama lain) dan berada pada level yang sama, sehingga sulit untuk memenuhi kebutuhan akan dua atau lebih ADT yang berkaitan satu sama lain.
Dengan pewarisan/inheritance, suatu ADT (class) yang baru dapat didefinisikan atas dasar ADT yang sudah ada, tanpa harus memodifikasi ADT asal. ADT yang baru dapat mewarisi (inherit) entitas (data dan functionality dari ADT asal, kemudian hanya perlu memodifikasi entitas yang diwarisi ataupun menambahkan entitas baru, tanpa menyebabkan perubahan pada ADT asal. Sebagai contoh, misalkan sudah tersedia ADT (class) bernama Vehicles (kendaraan) dengan beberap atribut seperti tahun, warna, pabrik.

Suatu bentuk khusus (subclass) dari class Vehicle adalah Truck (kendaraan truk). Class Truck tersebut dapat didefinisikan melalui inheritance terhadap class Vehicle, sehingga atribut tahun, warna, pabrik menjadi ada pada class Truck melalui pewarisan (inheritance). Selanjutnya, pada class Truck, atribut yang diperoleh melalui pewarisan tersebut dapat dimodifikasi, atau atribut baru (misalnya kapasitas angkut, jumlah roda) dapat ditambahkan. 

Gambar berikut menunjukkan relationship antara class Vehicle dan Truck , dimana garis panah mengarah pada class induk parent class:
Terminologi dalam OOP

Berikut ini beberapa terminologi / konsep yang digunakan dalam Object-Oriented:
  • ADT biasanya disebut classes
  • Instances dari suatu class disebut objects
  • Class yang mewarisi disebut derived class atau subclass
  • Class yang diwarisi (mewariskan) disebut parent class or superclass
  • Subprograms yang berperan melakukan operasi pada objects disebut methods
  • Pemanggilan (call) pada methods disebut messages
  • Kumpulan dari methods dari suatu object disebut message protocol atau message interface
  • Messages terdiri dua komponen: method name dan destination object
  • Pada kasus inheritance sederhana, suatu class mewarisi (inherits) semua entitas dari parent class nya.
  • Inheritance dapat menjadi lebih kompleks dengan pengaturan access controls terhadap encapsulated entities.
  • Suatu class dapat menjadikan entities tersembunyi (hidden) terhadap subclasses nya.
  • Suatu class dapat menjadikan entities tersembunyi (hidden) terhadap pengguna (clients) nya.
  • Suatu class juga dapat menjadikan entities tersembunyi (hidden) terhadap pengguna (clients) nya, tapi transparant terhadap subclass nya.
  • Suatu class dapat memodifikasi methods yang diperoleh dari pewarisan. (overriding methods).
  • Terdapat tiga kemungkinan cara bagaimana suatu class turunan (derived class) menjadi berbeda terhadap class induknya (parent class):
  1. Parent class mendefinisikan sebagian dari variables/methods nya sebagai private access, yang menyebabkan variables/methods tersebut menjadi tidak visible di dalam subclass
  2. Subclass menambahkan variables dan/atau methods untuk melengkapi yang diperoleh melalui inheritance
  3. Subclass memodifikasi cara beroperasi dari satu atau beberapa methods yang diperoleh melalui inheritance.
  • Di dalam suatu class, variables dapat dibedakan menjadi:
    • Class variables, variables yang disediakan hanya satu untuk setiap object dari class (shared by all objects of the class).
    • Instance variables, variables yang disediakan untuk masing masing object dari class.
  • Di dalam suatu class , methods dapat dibedakan menjadi:
    • Class methods , methods yang dapat dioperasikan pada class atau pun object dari class.
    • Instance methods, methods yang hanya dapat dioperasikan pada object dari suatu class.
  • Inheritance dapat berbentuk:
    • Single inheritance, inheritance dimana new class yang dihasilkan merupakan subclass dari satu parent class.
    • Multiple inheritance , inheritance dimana new class yang dihasilkan merupakan subclass dari dua atau lebih parent class.
Salah satu kerugian (disadvantage) dari penggunaan pewarisan/inheritance untuk reuse adalah saling ketergantungan interdependencies antara classes yang menyebabkan upaya maintenance menjadi rumit.

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan di at