File header, Bus.h
#pragma once
#include <iostream>
#include <iomanip>
#include <string>
using std::cout;
using std::endl;
using std::setw;
using std::setprecision;
using std::string;
class Bus
{
private:
int Id;
string Name;
long Distance;
int PassengersCount;
int Capacity;
int Position;
double Fuel;
public:
Bus(void);
Bus(int Id, string Name, int Capacity);
void Initialize(int PassengerCount);
void Move();
void Stop();
int Unload(int PassengersCount);
int Load(int PassengersCount);
void Refill();
int GetId();
int PassCount();
int Position();
long GetDistance();
string GetName();
double GetFuel();
void DisplayData();
~Bus(void);
};
Jadi, suatu kelas itu pasti punya yang namanya constructor dan destructor, minimal ada 1 constructor dan 1 destructor.
Di baris kode tersebut dapat kita lihat ada 2 fungsi dengan nama Bus dengan parameter berbeda. Itulah yang disebut constructor. Fungsinya untuk membuat objek baru ketika dideklrasikan di fungsi main() dan mengalokasikan suatu blok memory untuk objek tersebut. Sedangkan ada fungsi dengan nama Bus tetapi diawal tanda '~'. Itulah yang disebut destructor. Fungsinya untuk membebaskan alokasi memory ketika program akan keluar. Secara default, fungsi destructor dipanggil compiler secara otomatis sebelum return 0 pada fungsi main(). Jadi dalam fungsi itu isinya cuma membebaskan memory yang digunakan.
Selain, constructor dan destructor ada fungsi khusus lain yaitu fungsi accessor dan modifier. Karena kedua fungsi ini berhubungan dengan yang namanya access modifier yang private dan public tadi itu, maka penjelasan kedua fungsi ini akan dijelaskan bersamaan bagian access modifier. Nah, di baris kode di file header, jika ada yang namanya diawali Set umumnya merupakan fungsi modifier sedangkan yang awalannya Get umumnya fungsi accessor. Namun, tidak selalu seperti itu karena masalah penamaan tergantung programmer juga. Tapi standart OOP umumnya seperti itu. Set bla bla bla berarti modifier, kalo Get bla bla bla berarti fungsi accessor.
Nah, lalu di Bus.h diatas ada beberapa fungsi yang diawali Get, itula fungsi accessor di kelas Bus, namun tidak ada fungsi modifier karena memang tidak membutuhkan fungsi modifier yang terpisah. Fungsionalitas fungsi modifier sudah diambil alih oleh perilaku objek.
Berarti fungsi sisanya, yang tidak termasuk constructor, destructor, accessor maupun modifier merupakan fungsi perilaku, fungsi-fungsi yang menggambarkan perilaku objek di dunia nyata.
Fiuh, baru bahas file header saja sudah panjang, dan saya sudah mulai mengantuk, sudah berkali-kali salah ketik, hehe. Mungkin dilanjut di postingan berikutnya saja untuk penjelasan implementasinya.
Semoga menambah pemahaman. Stay in touch ya.. hehe :P