Obyek dan Class
14.1. Obyek dan Class
Dalam C atau bahasa struct Time { pemrograman prosedural lainnya,
int hour;
pemrogramannya berorientasi // nilai jam 0 ‐ 23 kepada aksi, sedangkan int minute; pemrograman C++ cenderung
// nilai menit 0 ‐ 59 berorientasi pada obyek. Disamping
int second;
itu, unit program dalam C adalah // nilai detik 0 ‐ 59 fungsi, tetapi di dalam C++, unit };
program adalah kelas (class) dimana
suatu obyek (object) secara Definisi Time ini terdiri dari tiga mendekati kenyataan dapat buah anggota data (data members) diciptakan. yang semuanya bertipe int, yaitu Kelas di dalam C++ merupakan hour, minute, dan second. Anggota pengembangan dari notasi struct di struktur dapat terdiri dari berbagai dalam C biasa, yaitu struktur untuk macam tipe, kecuali tipe Time itu mendefinisikan elemen-elemen data. sendiri. Berikut adalah contoh-contoh Misalnya didefinisikan data tentang deklarasi variabel dan akses anggota waktu yang terdiri dari jam, menit,
data dari struktur
dan detik sebagai berikut:
Time timeObyek, timeArray[ 10 ],
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
*timePtr; sebagai anggota data (data cout << timeObyek.hour;
members) dan sifat atau operasi- // mengakses data hour dari obyek
operasi atau prosedur-prosedur yang cout << timePtr ‐> hour;
direpresentasikan sebagai fungsi // mengakses data hour dari obyek
anggota (member functions). Fungsi // yang ditunjuk oleh pointer timePtr
anggota sering disebut dengan metode pada bahasa pemrograman
Untuk melakukan proses berorientasi objek lainnya dan pengolahan terhadap obyek data ini digunakan untuk memberi pesan diperlukan fungsi-fungsi yang ditulis pada obyek yang bersangkutan. secara terpisah dari definisi Setiap anggota dari obyek ini strukturnya. Sebagai contoh, fungsi dikelompokkan berdasarkan sifat berikut disusun untuk menuliskan akses terhadap anggotaanggotanya, obyek
dengan bentuk baik dari dalam obyek itu sendiri hh:mm:ss.
Time
maupun dari obyek lainnya. Ada tiga sifat yang dapat diberikan, yaitu
void printTime (const Time &t)
private, dan protected. {
public,
Perhatikan contoh berikut:
cout << (t.hour < 10 ? "0" : "" ) <<
class Time {
t.hour << ":"
public:
<< (t.minute < 10 ? "0" : "" ) << Time(); t.minute << ":" // default constructor << (t.second < 10 ? "0" : "" ) << void setTime(int, int, int); t.second << ":" ;
// member function
voit print();
~Time(); Pada contoh ini terlihat adanya
// destructor
pemisahan antara data dan prosedur/fungsi, yang berbeda private: dengan konsep pemrograman int hour; beorientasi obyek dimana antara
// data member
keduanya dibungkus ke dalam satu
int minute;
kesatuan dengan menggunakan tipe
int second;
class. Pembungkusan }; (encapsulation) inilah yang merupakan salah satu ciri utama dari
Anggota kelompok private hanya pemrograman berorientasi objek.
dapat diakses oleh fungsi anggota dari kelas itu sendiri dan kelas lain yang mempunyai hubungan friend
14.2. Tipe Class
(akan dijelaskan pada bab
Kata kunci class dalam C++ berikutnya). Hal ini berbeda dengan digunakan untuk memodelkan suatu kelompok public yang dapat diakses obyek terdiri dari dua anggota, yaitu
dari bagian-bagian lainnya dari atribut yang direpresentasikan program, sedangkan kelompok
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
protected hanya dapat diakses oleh { fungsi anggota dari kelas yang
hour = minute = second = 0 ; bersangkutan dan kelas-kelas lain } yang menjadi turunannya.
void Time :: setTime( int h = 0 , int m = 0 ,
Pembatasan akses itu int s= 0 )
merupakan information hiding yang { berguna antara lain jika representasi
hour = h;
data dari kelas berubah, hanya fungsi
minute = m;
anggota (bukan program dari
second = s;
pengguna) yang perlu diambil, dan
jika ada kesalahan dalam manipulasi anggota data dari kelas, hanya fungsi
voit Time :: print()
anggota yang perlu di-debug, bukan
seluruh program.
Fungsi anggota yang namanya cout << (hour < 10 ? "0" : "" ) sama dengan nama kelas disebut
<< hour << ":"
default constructor, dan fungsi << (minute < 10 ? "0" : "" ) anggota yang namanya terdiri tkita
<< minute << ":"
tilde (“~“) diikuti dengan nama kelas << (second < 10 ? "0" : "" ) disebut destructors. Constructor akan
<< second << ":" ; secara otomatis dipanggil oleh }
kompilator untuk inisialisasi obyek,
sedangkan destructor akan secara Operator “::“ adalah scope- otomatis dipanggil oleh kompilator operator, yang menunjukkan bahwa
untuk dealokasi memori. Nama kelas fungsi yang dituliskan di belakangnya akan berlaku sebagai kata kunci merupakan anggota dari kelas yang
penentu untuk suatu tipe data baru, ditulis di depannya. Dengan misalnya dengan kelas Time tersebut
demikian, misalnya void Time :: dapat dibuat deklarasi variabel setTime ( h = 0, m = 0, s = 0 )
sebagai berikut: menunjukkan bahwa fungsi setTime merupakan anggota dari kelas Time.
Time timeObyek1, Suatu fungsi dalam C++ dapat timeObyek2; dipanggil dengan nol atau lebih
argumen, seperti contoh Time() yang Pada saat deklarasi inilah tidak mempunyai argumen, dan diproses fungsi anggota Time() yang
setTime ( h = 0, m = 0, s = 0 ) merupakan default constructor dari mempunyai tiga argumen dengan
kelas ini. Namun demikian, kelas masing-masing mempunyai nilai tersebut belum dapat digunakan default. Artinya, fungsi itu dapat karena implementasi setiap fungsi dipanggil dengan beberapa cara anggota belum dibuat. Perhatikan seperti contoh berikut: contoh implementasi berikut dibawah ini:
10, 30, 25 ); // argumen h=10, m=30, s=25 Time :: Time()
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
// argumen h=10, m=30, s=0 Anggota-anggota data (data setTime(); members) yang merupakan // argumen h=0, m=0, s=0
representasi dari kelas. Suatu kelas dapat mempunyai nol atau
Dengan definisi dan deklarasi kelas lebih data member dengan tipe Time yang telah dibuat, maka dapat
apa saja.
digunakan sebagai tipe baru seperti Fungsi-fungsi anggota (members pada program berikut (misalnya
function) yaitu operasi-operasi definisi dan deklarasi kelas Time
yang dapat diterapkan pada telah disimpan pada file time.h):
obyek-obyek dari kelas itu. Sebuah kelas dapat mempunyai
#include <iostream> nol atau lebih fungsi anggota. #include "time.h"
Tingkat akses.
Setiap anggota suatu kelas dapat main() {
ditentukan tingkat aksesnya Time t1;
sebagai private, protected atau t1.setTime( 10 , 30 , 25 ); public. Tingkat-tingkat ini
// obyek t1 memiliki hour=10, mengontrol akses ke anggota kelas. Biasanya representasi kelas
minute=30, second=25 bersifat private, sedang operasi- t1. operasinya bersifat public. Spesifikasi private/public ini
Mekanisme kelas (class) membentuk information hidding. memungkinkan pengguna Nama kelas yang berlaku sebagai
mendefinisikan tipe data abstrak
type-specifier.
(ADT). Suatu kelas mempunyai empat atribut, yaitu: