NIM : 20620030
Prodi : Teknik Komputer
Matkul : PBO
#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;
}
};
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;
}
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.