Kuis dan TM 7
Soal Pilihan
- 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
- Apa yang salah dalam penggalan definisi class berikut:
class Time {
public: // prototype fungsi
private: int h = 0;
int m = 0;
int s = 0;
}
Karena adanya inisialisasi nilai pada access modifier private.
- Jika Rasional adalah class bilangan rasional (pecahan seperti 22/7), apa beda ketiga pernyataan berikut:
Rasional y(x); (Function declaration)
Rasional y = x; (Object declaration)
Rasional y; y = x; (Object declaration)
- 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.
Constructor dan destructor hanya ada pada kelas induk saja dan tidak bisa diwariskan ke kelas turunannya.
Fungsi friend hanya berguna untuk mengakses data member dalam access modifier private.
Data member dengan access modifier private dan friend function.
- 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 sebuah kelas induk mewariskan data member ke kelas turunannya
Dominating adalah berkuasanya kelas induk terhadap kelas turunannya saat inheritance
Overriding memungkinkan sebuah kelas turunan untuk menyediakan sebuah implementasi spesifik dari metode yang sudah disediakan oleh kelas induknya
class Animal
{
protected:
string nama;
int kaki;
public:
Animal()
{
nama = “”;
kaki = 0;
}
//overloading constructor
Animal(string nama, int kaki):nama(nama), kaki(kaki){}
//overriding function
virtualvoid move() = 0;
//setter
void setNama(string nama)
{
this->nama = nama;
}
void setKaki(int kaki)
{
this->kaki = kaki;
}
//getter
string getNama()
{
returnthis->nama;
}
int getKaki()
{
returnthis->kaki;
}
};
class Horse : public Animal //reusability
{
protected:
int horsePower;
public:
Horse(){}
Horse(string nama, int kaki, int horsePower)
{
this->nama = nama;
this->kaki = kaki;
this->horsePower = horsePower;
}
//overriding function
virtualvoid move()
{
cout << “Horse walking” << endl;
}
};
class Bird : public Animal //reusability
{
protected:
int flyPower;
public:
Bird(){}
Bird(string nama, int kaki, int flyPower)
{
this->nama = nama;
this->kaki = kaki;
this->flyPower = flyPower;
}
//overriding function
virtualvoid move()
{
cout << “Bird flying” << endl;
}
};
class Pegasus : public Horse, public Bird //multiple inherit : reusability
{
private:
int attack;
Horn horn;
public:
Pegasus(string nama,
int kaki,
int horsePower,
int flyPower,
int attack,
Horn horn)
{
Horse::nama = nama;
Horse::kaki = kaki;
this->horsePower = horsePower;
this->flyPower = flyPower;
this->attack = attack;
this->horn = horn;
}
//overriding function
virtualvoid move()
{
cout << “Pegasus flying while running” << endl;
}
int getPanjang()
{
return horn.getPanjang();
}
};
- 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.
Abstract data type | Inheritance | |||||||||
Komponen | Representasi atribut dan method | Kelas induk dan turunan | ||||||||
Struktur |
|
|
||||||||
Keuntungan |
|
|||||||||
Kekurangan |
|
Daniel David 1701291610 02PPT
I AM PROUD AS BINUSIAN
Recent Comments