Anda di halaman 1dari 10

● buatlah program yang menampilkan nama mahasiswa, nim, dan nilainya

menggunakan inheritance

#include <iostream>
using namespace std;
// base class
class mahasiswa {
public:
void nama() {
cout << "Muhammad Ilhamdi Akbar" << endl;
}
void nim() {
cout << "2010953001" << endl;
}
};
// derived class
class nilai : public mahasiswa {
public:
void skor() {
cout << "Nilai : A" << endl;
}
};

int main() {
// buat objek dari kelas nilai
nilai nilai1;
// memanggil anggota kelas utama
nilai1.nama();
nilai1.nim();
// memanggil anggota kelas turunan
nilai1.skor();
return 0;
}

keluaran

● jelaskan macam - macam akses specifier dalam C++ dan buatlah tabel perbedaan serta
satu contoh program dari cara penggunaannya.
penjelasan

a. Public adalah label yang berfungsi untuk menentukan sifat akses ke semua
member yang mengikutinya (di bawahnya), sehingga memiliki sifat dapat di
akses dari manapun. Dapat di akses dari dalam class itu sendiri, dari anak
class (derived class) dan juga dari luar class.
b. Private adalah label yang berfungsi untuk menentukan sifat akses ke semua
member yang mengikutinya menjadi memiliki sifat yang tidak dapat di
akses dari manapun kecuali melalui friend function dan dari dalam class itu
sendiri.
c. Protected adalah label yang berfungsi untuk menentukan sifat akses semua
member yang mengikutinya, sehingga memiliki sifat yang tidak dapat
diakses dari luar class tapi masih dapat di akses dari dalam class maupun
anak class (derived class)
tabel perbedaan

Public Private Protected

“Dapat di akses dari “tidak dapat di akses dari “tidak dapat diakses dari
dalam class itu sendiri, manapun kecuali melalui luar class tapi masih dapat
dari anak class (derived friend function dan dari di akses dari dalam class
class) dan juga dari luar dalam class itu sendiri.” maupun anak class
class” (derived class)”
program

#include <iostream>
using namespace std;

class Base {
private:
int pvt = 1;

protected:
int prot = 2;

public:
int pub = 3;

// function to access private member


int getPVT() {
return pvt;
}
};

class PublicDerived : public Base {


public:
// function to access protected member from Base
int getProt() {
return prot;
}
};

int main() {
PublicDerived object1;
cout << "Private = " << object1.getPVT() << endl;
cout << "Protected = " << object1.getProt() << endl;
cout << "Public = " << object1.pub << endl;
return 0;
}

Function Overriding C++


1. Jelaskan apa itu fungsi overriding! dengan bahasa sendiri.

Fungsi overriding merupakan fungsi dimana programmer bisa membuat sebuah


fungsi pada kelas turunan (derived class) yang sama persis dengan fungsi yang ada
pada kelas induk (base class). Hal ini secara sederhananya bisa diartikan bahwa
programmer membuat fungsi baru untuk menggantikan peran fungsi yang ada pada
base class.

2. Jalankan program berikut!

#include <iostream>
using namespace std;

class Mahasiswa {
public:
string mhs() {
return "123456789";
}
};

class Nama: public Mahasiswa {


public:
string mhs() {
return "Ahmad Dani";
}
};

int main()
{
Nama NamaMahasiswa;
cout << NamaMahasiswa.mhs() << endl;

return 0;
}
Apakah dalam program tersebut sudah terjadi function overriding? Jelaskan!

Pada program diatas sudah terjadinya penerapan dari fungsi overriding hal ini dapat
dilihat dari output yang dihasilkan bahwa nantinya output yang keluar
adalah”ahmad dhani” dari sini dapat disimpulkan bahwa fungsi dari turunan akan
dieksekusi dengan mengesampingkan fungsi dasar. Fungsi tersebut diganti karna
memanggil fungsi objek kelas turunan.

3. Lanjutkanlah program sebelumnya sehingga menampilkan output Nama dan Nim


(tanpa mengubah program tersebut)

#include <iostream>
using namespace std;

class Mahasiswa {
public:
string mhs() {
return "nim : 123456789";
}
};

class Nama: public Mahasiswa {


public:
string mhs() {
return "Ahmad Dani";
}
};

int main()
{
Nama NamaMahasiswa1,NamaMahasiswa2;
cout << NamaMahasiswa1.mhs() << endl;
cout <<NamaMahasiswa2.Mahasiswa::mhs();

return 0;
}

● jelaskan perbedaan dan keunggulan multilevel dan hierarchical dalam tipe inheritance
dan buatkan program penggunaan dari masing-masing tipe.
perbedaan
multilevel hierarchical

penurunan class berjenjang dari satu Penurunan hiraki terjadi jika lebih dari
class ke class lain. tidak hanya dapat satu kelas diwarisi dari kelas dasar.
menurunkan kelas dari kelas dasar tetapi Dimana pada penurunan ini semua fitur
juga dapat menurunkan kelas dari kelas yang umum dari kelas anak termasuk
turunan. dalam kelas induk
keunggulan

multilevel hierarchical

Cara pembuatan multilevel inheritance semua fitur yang umum dari kelas anak
sebenarnya sama seperti penurunan class termasuk dalam kelas induk
biasa, hanya saja setiap class saling
terhubung satu sama lain.
program

multilevel hierarchical

#include <iostream> #include <iostream>


using namespace std; using namespace std;

class A { // base class


public: class Animal {
void display() { public:
cout<<"Base class content."; void info() {
} cout << "I am an animal." << endl;
}; }
};
class B : public A {};
// derived class 1
class C : public B {}; class Dog : public Animal {
public:
int main() { void bark() {
C obj; cout << "I am a Dog. Woof woof."
obj.display(); << endl;
return 0; }
} };

// derived class 2
class Cat : public Animal {
public:
void meow() {
cout << "I am a Cat. Meow." <<
endl;
}
};
int main() {
// Create object of Dog class
Dog dog1;
cout << "Dog Class:" << endl;
dog1.info(); // Parent Class function
dog1.bark();

// Create object of Cat class


Cat cat1;
cout << "nCat Class:" << endl;
cat1.info(); // Parent Class function
cat1.meow();

return 0;
}

● Jelaskan apa itu fungsi virtual

Fungsi virual Adalah fungsi yang mendukung adanya polymorphic function.


artinya fungsi tersebut dapat didefinisikan ulang pada kelas - kelas turunannya.
Fungsi ini biasanya terdapat pada kelas - kelas dasar. Walaupun demikian, kita juga
dapat mendeklarasikan fungsi virtual pada kelas - kelas turunan yang akan dijadikan
sebagai kelas dasar bagi kelas - kelas lainnya.

Lihat sintaks program dibawah ini

#include <iostream>
using namespace std;

class Base {
public:
virtual void print() {
cout << "Base Function" << endl;
}
};

class Derived : public Base {


public:
void print() {
cout << "Derived Function" << endl;
}
};
int main() {
....................

return 0;
}

Isilah … sehingga program fungsi turunan dapat berjalan dan menampilkan “Derived
Function”
Tuliskan sintaks programnya dibawah ini:

#include <iostream>
using namespace std;

class Base {
public:
virtual void print() {
cout << "Base Function" << endl;
}
};

class Derived : public Base {


public:
void print() {
cout << "Derived Function" << endl;
}
};

int main() {
Derived Derived1;
Base*Base1 = & Derived1;
Base1->print();
return 0;
}

Tampilkan cuplikan layar outputnya dibawah ini:


Jelaskan cara kerja programnya:

● Tuliskan sintak berikut, lengkapi agar dapat menghasilkan output!


#include <iostream>
#include <string>

using namespace std;

class Teknik {
public:
void jurusan() {
cout << "Saya adalah anak Teknik \n" ;
}
};

class Elektro : public Teknik {


public:
void jurusan() {
cout << "jurusan saya adalah teknik : Elektro \n" ;
}
};

class Mesin : public Teknik {


public:
void jurusan() {
cout << "jurusan Saya adalah teknik : Mesin \n" ;
}
};

int main() {
.....
.......
........
................
}

Tuliskan kembali sintaks yang sudah dilengkapi


#include <iostream>
#include <string>

using namespace std;

class Teknik {
public:
void jurusan() {
cout << "Saya adalah anak Teknik \n" ;
}
};

class Elektro : public Teknik {


public:
void jurusan() {
cout << "jurusan saya adalah teknik : Elektro \n" ;
}
};

class Mesin : public Teknik {


public:
void jurusan() {
cout << "jurusan Saya adalah teknik : Mesin \n" ;
}
};

int main() {
Elektro elektro1;
// Call print() function of Derived class
elektro1.jurusan();

Mesin mesin1;
mesin1.jurusan();

return 0;
}

Cuplikan hasil compiler

Jelaskan cara kerja program


Ini adalah polimorfisme runtime karena panggilan fungsi tidak diselesaikan oleh kompiler,
tetapi diselesaikan di runtime sebagai gantinya.

Anda mungkin juga menyukai