Anda di halaman 1dari 5

Nama : Akbar Taqwa Ramadhan

NIM : 20620030
Prodi : Teknik Komputer
Matkul : PBO

ENKAPSULASI DAN PEWARISAN


1. Enkapsulasi
Enkapsulasi (encapsulation) adalah aspek dalam Bahasa pemrograman yang
mengizinkan penyertaan data dan fungsi ke dalam satu paket tunggal. Peyertaan
(inklusi) berarti bahwa seluruh data (variabel anggota) dan fungsionalitas yang
mendayagunakan data (fungsi anggota) dan memasukkannya dalam definisi atau
deklarasi sebuah kelas. Definisi lainnya adalah pertimbangan dalam
penyembunyian data (data hiding) atau pembatasan data (data restriction).
Untuk mengimplementasikan enkapsulasi pada kelas Person, dapat
dilakukan dengan menambah kode program yang digunakan untuk memfasilitasi
proses penyimpanan dan pemgambilan nilai dari variabel anggota.

#include <iostream>
#include <string>
using namespace std;
class Person
{
private:
string firstName;
string lastName;
int age;

public:
//konstruktor 1
Person():
firstName(""), lastName(""), age(0)
{
}
//konstruktor 2
Person(string fName, string lName):
firstName(fName), lastName(lName)
{
}
//konstruktor 3
Person(string fName, string lName, int age):
firstName(fName), lastName(lName), age(age)
{
}
//fungsi anggota
void SetFirstName(string fName)
{
this->firstName = fName;
}
string GetFirstName()
{
return this->firstName;
}
void SetLastName(string lName)
{
this->lastName = lName;
}
string GetLastName()
{
return this->lastName;
}
void SetAge(int age)
{
if (age > 0)
this->age = age;
else
cout << "Masukkanlah usia yang benar" << endl;
}
int GetAge()
{
return this->age;
}
void SayHello()
{
cout << "Hallo" << endl;
}
};

Contoh program untuk menguji kelas Person di atas:

int main()
{
//buat objek
Person p;
p.SetFirstName("Satya");
cout << p.GetFirstName() << endl;
// baris ini akan memberi output bahwa data tidak sesuai
// validasi dilakukan dalam fungsi SetAge()
p.SetAge(-5);
// baris ini tidak akan berfungsi karena firstName
// adalah variabel private
p.firstName = "Gerry";
return 0;
}

Fungsi anggota yang digunakan untuk melakukan operasi terhadap variabel


anggota diletakkan di luat konstruktor. Dengan cara ini data tidak dapat diakses secara
langsung, namum operasi penyimpanan atau pemgambilan data tetap dapat dilakukan
melalui fungsi public yang telah disediakan.

2. Pewarisan
Kelas baru dapat diturunkan dari kelas yang sudah ada menggunakan
mekanisme yang disebut pewarisan (inheritance). Kelas yang akan diwarisi
karakteristiknya disebut sebagai kelas dasar (base class) atau kelas induk, dan kelas
turunan disebut sebagai sub kelas (sub-classes).

class Kendaraan
{
private:
string tahunProduksi;
string warna;
...
};
class Mobil: Kendaraan
{
// anggota kelas termasuk tahunProduksi dan warna
// spesifikasi anggota kelas Mobil lainnya.
};

Dalam contoh ini, Kendaraan adalah kelas induk dan Mobil adalah kelas turunan.
Mobil secara otomasis mewarisi tahunProduksi dan warna dan juga dapat menambahkan
karakterisitik khusus baik itu sebagai variabel atau fungsi yang hanya dimiliki oleh Mobil.

C++ mendukung tiga macam pewarisan, yaitu public, private dan protected.
Pewarisan public menjelaskan bagaimana kelas turunan mewarisi seluruh anggota dari
kelas induk, baik yang bersifat private maupun public, namum akses langsung hanya
dapat dilakukan pada anggota public dari kelas induk. Setiap anggota dari kelas induk akan
mempertahankan aksesibilitasnya di dalam kelas turunan. Berikut adalah contoh kelas
Student yang diturunkan dari kelas Person.

#include "Person.h"
using namespace std;
class Student: public Person
{
public:
Student()
{
}
~Student();
{
}
// baris ini akan menyebabkan compiler error
firstName = "Tom";
};
int main()
{
Student student1;
// baris ini akan menyebabkan compiler error
student1.firstName = "Tom";
// baris ini akan mencetak Hallo
student1.SayHello();
return 0;
}

Dalam contoh ini diasumsikan bahwa kelas Person disimpan dalam header file
person.h sehingga kita hanya perlu memasukkan header tersebut untuk
mengimplementasikan kelas Person. Proses pewarisan dilakukan dengan menulis class
Student diikuti tanda titik dua (:) lalu public Person. Perintah ini menunjukkan bahwa
kelas Student juga memiliki konstruktor dan destructor sendiri.

Tabel. Pebandingan Jenus Pewarisan

Inisialisasi anggota kelas induk dapat dilakukan dengan memanggil konstruktor


kelas induk dari kelas turunannya. Sangat disarankan untuk melakukan pemanggilan
konstruktor kelas induk sebagai perintah pertama dari kelas turunannya untuk
memastikan bahwa variabel anggota pada kelas induk sudah diinisialisasi sebelum
bariabel tersebut diakses.

Anda mungkin juga menyukai