Nama : Riyn Winesdyo W.
Kelas : 02PPT
NIM : 1701292866
Kuis dan TM 7
Soal Pilihan
01. Inheritance kerap kali dihubungkan dengan polymorphism. Istilah yang paling
tepat untuk menyatakan inheritance sebagai polymorphism adalah
a.trivial polymorphism b. universal polymorphism
c. pure polymorphism d. subtype polymorphism
02. Meskipun mendukung penggunaan multiple inheritance tetapi penggunaan fitur
ini tidak dianjurkan di C++. Opsi berikut yang dianjurkan sebagai penggantinya
adalah
a. composition b. template
c. polymorphism d. overloading function
03. Salah satu kerugian penggunaan inheritance di OOP adalah
a. independensi di antara class dalam hirarki
b. independensi di antara object dalam hirarki
c. dependensi di antara class dalam hirarki
d. dependensi di antara object dalam hirarki
04. Tipe inheritance yang dianjurkan untuk melakukan derivation adalah
a. private b. protected
c. public d. private, protected dan public
05. ADT dan inheritance mempunyai komponen yang sama tetapi hanya beda strukturnya.
Paralel di ADT, hirarki di inheritance. Karena itu sejumlah inheritance mempunyai
kelebihan dibandingkan dengan ADT. Kelebihan-kelebihan itu diantaranya adalah
adalah adanya fitur-fitur bedrikut ini
a. reuse-ability dan extend ability
b. extend ability dan overriding function
c. overriding function dan reuse-ability
d. reuseability, extend ability dan overriding function
Soal Uraian
1. Apa yang salah dalam penggalan definisi class berikut:
class Time {
public: // prototype fungsi
private: int h = 0;
int m = 0;
int s = 0;
}
• Data member tidak boleh diinisialisasi secara langsung, tetapi boleh di dalam member function atau di dalam default constructor.
• Tidak ada tanda ‘;’ (titik-koma) untuk menutup class.
2. Jika Rasional adalah class bilangan rasional (pecahan seperti 22/7), apa beda ketiga pernyataan berikut:
Rasional y(x);
Rasional y = x;
Rasional y; y = x;
• Rasional y(x) dan Rasional y=x memanggil copy constructor karena belum diinisialisasi
• Rasional y; y=x memanggil assignment operator karena y telah diinisialisasi sebelumnya
3. Uraikan mengapa constructor dan destructor tidak diwariskan di C++ meskipun mereka kita deklarasikan dengan level akses public atau protected. Uraikan juga mengapa fungsi friend tidak diwariskan di klas turunan. Selanjutnya, sebutkan pula sejumlah fitur lain di klas induk yang tidak diwariskan di klas turunan.
• Destructor tidak diwariskan di C++ karena hal tersebut bukan bagian interface dari suatu class. Yang bisa diwariskan hanya interface dari class.
• Constructor tidak diwariskan karena setiap class hanya boleh punya 1 constructor.
• Friend function tidak diwariskan karena fungsi ini merupakan fungsi bebas yang artinya jika base class diwariskan pada inherited class tidak berarti friend function diwariskan pula. Selain itu friend function juga tidak boleh diwariskan karena melanggar konsep ’Information Hiding’
4. Konsep inheritance memunculkan fitur baru dalam C++ yaitu reuseability, dominating dan overriding. Jelaskan melalui penggalan kode, apa yang kamu ketahui tentang ketiga fitur tersebut.
• Reusability memungkinkan penggunaan kembali member dari base class di inherited class tanpa perlu membuat code dari awal.
class A{
protected:
int x;
public:
A(){x=0;}
~A(){}
};
class B : public A{
protected:
int y;
public:
B(){y=1;}
~B(){}
void print(){cout<<x<<endl<<y;}
};
• Dominating berarti beberapa function member yang menggunakan nama sama akan didominasi oleh salah satu member function dan member function lainnya tertutup.
class A{
protected:
int x;
double z;
public:
A(){x=0; z=2.00;}
~A(){}
void print(int ){cout<<x<<endl;}
void print(int, double){
cout<<x<<endl<<z<<endl;
}
};
class B : public A{
protected:
int y;
public:
B(){y=1;}
~B(){}
void print(){cout<<x<<endl<<y;}
};
• Overriding berarti function member di inherited class menggunakan nama yang sama dengan member function di base classnya
class A{
protected:
int x;
public:
A(){x=0;}
~A(){}
void print(){cout<<x<<endl;}
};
class B : public A{
protected:
int y;
public:
B(){y=1;}
~B(){}
void print(){cout<<x<<endl<<y;}
};
5. Ilmu pengetahuan itu sifatnya kumulatif sehingga meskipun kita sudah mempunyai utilitas ADT yang tidak lain adalah enkapsulasi kita masih memerlukan inheritance. WHY? Untuk bisa menjawab kasus ini kamu harus membandingkan inheritance dengan ADT. Pertanyaan buat kamu adalah coba bandingkan inheritance dengan ADT dari berbagai sisi diantaranya dari sisi komponen, struktur komponen, advantage dan disadvantage.
|
Inheritance |
ADT |
| Komponen |
Data member, member function, constructor, copy constructor, destructor, access modifier |
Data member, member function, access modifier |
| Struktur komponen |
Turunan |
Paralel |
| Advantage |
Reusability, extendability, information hiding, overriding |
Modularity(independent), reuseability |
| Disadvantage |
Dependent |
Indepent |
I AM PROUD AS BINUSIAN