Object Oriented Programming - Inheritance

Published on June 2017 | Categories: Documents | Downloads: 41 | Comments: 0 | Views: 466
of x
Download PDF   Embed   Report

Comments

Content

Inheritance antar class Fitur utama dari C + + class adalah inheritance. Inheritance memungkinkan untuk menciptakan class yang berasal dari class lain, sehingga mereka secara otomatis termasuk beberapa "orang tua" anggotanya, ditambah sendiri. Sebagai contoh, kita akan mendeklarasikan serangkaian class yang menggambarkan polygon seperti CRectangle, atau seperti CTriangle. Mereka memiliki sifat umum tertentu, seperti keduanya dapat digambarkan dengan cara hanya dua sisi: height dan base. Hal ini dapat diwakili dalam class CPolygon dari mana kita akan memperoleh dua yang lainnya: CRectangle dan CTriangle.

Class CPolygon akan berisi anggota yang umum untuk kedua jenis poligon. Dalam hal ini: width (lebar) dan height (tinggi). CRectangle dan CTriangle akan menjadi derived class (class turunan), dengan fitur khusus yang berbeda satu dengan yang lain. Class yang berasal dari yang lain mewarisi semua anggota dapat diakses dari class dasar. Itu berarti bahwa jika sebuah class dasar termasuk anggota A dan kita mewarisinya dari class lain dengan anggota lain yang disebut B, class turunan akan berisi keduanya anggota A dan B. Dalam rangka untuk mewariskan class dari base class yang lain, kita menggunakan titik dua (:) dalam deklarasi dari kelas turunan dengan menggunakan format berikut:
class derived_class_name: public base_class_name { /*...*/ };

derived_class_name adalah nama dari kelas turunan dan base_class_name adalah nama dari kelas yang menjadi dasarnya. Tipe akses public dapat diganti dengan tipe akses lainnya seperti protected atau private. Tipe akses membatasi tingkat akses dari kelas turunan ke kelas induknya: Para anggota dengan tingkat lebih mudah diakses diwariskan dengan tingkat ini sebagai gantinya, sedangkan anggota dengan tingkat akses yang sama atau lebih ketat menjaga tingkat restriktif mereka di kelas turunan .

Object dari class CRectangle dan CTriangle masing-masing mewarisi anggota dari CPolygon. Anggota tersebut adalah: width, height, dan set_values (). Tipe akses protected mirip dengan private. Satu-satunya perbedaan yang terjadi pada kenyataannya dengan warisan. Ketika kelas mewarisi dari yang lain, para anggota kelas turunan dapat mengakses anggota protected mewarisi dari kelas dasar, tetapi bukan anggota pribadi.

Agar lebar dan tinggi dapat diakses dari anggota derived classes CRectangle dan CTriangle dan tidak hanya oleh anggota CPolygon, maka digunakan tipe akses protected bukan private. Kita dapat meringkas jenis akses yang berbeda sesuai dengan siapa yang dapat mengaksesnya dengan cara berikut:
Access public protected private members of the same class yes yes yes members of derived classes yes yes no not members yes no no

Dimana "not members" mewakili akses dari luar class, seperti dari main() , dari kelas lain atau dari sebuah fungsi.

Pada contoh di bawah ini, para anggota yang diwarisi oleh CRectangle dan CTriangle memiliki hak akses yang sama seperti yang dimiliki oleh kelas dasar CPolygon:
CPolygon::width CRectangle::width CPolygon::set_values() CRectangle::set_values() // protected access // protected access // public access // public access

Ini karena kita telah menggunakan kata kunci umum untuk menentukan hubungan warisan pada masing-masing kelas turunan:
class CRectangle: public CPolygon { ... }

Apa saja yang diwariskan dari base class? Pada prinsipnya, sebuah kelas turunan mewarisi setiap anggota kelas dasar kecuali:    constructor dan destructor member operator=() friend functions

Meskipun konstruktor dan destructors dari kelas dasar tidak diwariskan, default konstruktor (yaitu, konstruktor tanpa parameter) dan destruktor yang selalu disebut ketika sebuah objek baru dari kelas turunan dibuat atau dihancurkan.

Jika kelas dasar tidak memiliki konstruktor default atau Anda ingin bahwa konstruktor overload disebut jika benda diturunkan baru dibuat, Anda dapat menentukan dalam setiap definisi constructor dari kelas turunan:
derived_constructor_name (parameters) : base_constructor_name (parameters) {...}

Contoh :

Perhatikan perbedaan jika konstruktor mother dipanggil jika object daughter baru dibuat dan yang ketika itu adalah objek son. Perbedaannya adalah karena deklarasi constructor daughter dan son:
daughter (int a) son (int a) : mother (a) // nothing specified: call default // constructor specified: call this

Multiple Inheritance Dalam C + + sangat mungkin bahwa sebuah kelas mewarisi anggota dari lebih dari satu kelas. Hal ini dilakukan dengan hanya memisahkan kelas dasar yang berbeda dengan koma dalam deklarasi kelas turunan. Sebagai contoh, jika kita memiliki kelas khusus untuk mencetak di layar (COutput) dan kami ingin CRectangle kelas kami dan CTriangle juga mewarisi anggotanya di samping mereka dari CPolygon kita bisa menulis:
class CRectangle: public CPolygon, public COutput; class CTriangle: public CPolygon, public COutput;

Contoh :

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close