Deklarasi Class
14.3. Deklarasi Class
Class adalah metode logical ...
untuk organisasi data dan fungsi } object_name;
dalam struktur yang sama. Class
adalah dideklarasikan menggunakan nama class(user defined type) dan keyword
Dimana class_name
class, yang secara field optional object_name adalah fungsional sama dengan keyword satu atau beberapa identifier objek struct, tetapi dengan kemungkinan yang valid. Body dari deklarasi penyertaan fungsi sebagai anggota, berisikan members, yang dapat formatnya sebagai berikut :
berupa data ataupun deklarasi fungsi, dan permission labels (optional),
class class_name {
dapat berupa satu dari tiga keyword permission_label_1: berikut : private:, public: atau member1; protected:. Digunakan untuk permission_label_2: menentukan batasan akses terhadap member2; members yang ada :
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
1. private , anggota class dapat Deklarasi class CRectangle dan diakses dari danggota lain pada
object bernama rect. Class ini berisi kelas yang sama atau dari class
empat anggota: dua variable bertipe "friend".
int (x and y) pada bagian private
2. protected , anggota dapat (karena private adalah default diakses dari anggota class yang
permission) dan dua fungsi pada sama atau class friend , dan juga
bagian public : set_values() dan
dari anggota class area(), dimana hanya dideklarasikan turunannya(derived).
propotype_nya.
3. public , anggota dapat diakses Perhatikan perbedaan antara dari class manapun.
nama classdan nama object. Pada contoh sebelumnya CRectangle
Default permission label : private adalah nama class(contoh, user- Contoh :
defined type), dan rect adalah object dari tipe CRectangle. Sama halnya
class CRectangle { dengan deklarasi berikut : int x, y;
public: int a;
void set_values (int,int); int area (void);
int adalah nama class (type) } rect;
dan a adalah nama object(variable).
Program 14.1 #include <conio.h> #include <iostream> using namespace std;
class CRectangle { int x, y; public: void set_values (int,int); int area (void) {return (x*y);} };
void CRectangle::set_values (int a, int b) { x = a; y = b; } int main () { CRectangle rect;
rect.set_values ( 3 , 4 );
cout << "area: " << rect.area(); getch();
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
return 0 ; }
Keluaran program diatas adalah sebagai berikut: area: 12
Hal baru dari contoh diatas (::) menspesifikasikan class dimana adalah operator :: dari lingkup yang
anggota yang dideklarasikan berada, disertakan dalam pendefinisian memberikan scope properties yang set_values(). Digunakan untuk sama seperti jika dideklarasikan mendeklarasikan anggota dari class secara langsung dalam class. diluar class tersebut. Scope operator
Program 14.2 #include <conio.h> #include <iostream>
using namespace std;
class CRectangle { int x, y; public: void set_values (int,int); int area (void) {return (x*y);}
void CRectangle::set_values (int a, int b) { x = a; y = b;
int main () { CRectangle rect, rectb;
rect.set_values ( 3 , 4 ); rectb.set_values ( 5 , 6 );
cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; getch();
return 0 ; }
Keluaran program diatas adalah sebagai berikut: rect area: 12 rectb area: 30
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
Perhatikan pemanggilan }; rect.area() tidak memberikan hasil yang sama dengan pemanggilan rectb.area(). Ini disebabkan karena Class dapat mendefinisikan data objek dari class CRectangle
member berupa reference ke tipe mempunyai variable sendiri, x dan y,
dirinya, perhatikan contoh dibawah dan fungsi set_value() dan area().
ini:
Class terdiri dari dua bagian, yaitu: Class head yaitu kata kunci class diikuti oleh nama kelas dan class linkScreen { Class body yaitu class yang diapit screen window ; kurung kurawal { }, diikuti tkita titik linkScreen *next ; koma atau daftar deklarasi. Misalnya:
linkScreen *prev ; };
class screen (/*……….*/) ;
class screen (/*……….*/) s1 , s2 ; Member functions dari suatu kelas
tidak dideklarasikan di dalam class
Dalam class body ditentukan body. perhatikan contoh dibawah ini: data members, member function dan
tingkat-tingkat dari information hidding. Deklarasi untuk data class Screen { members sama dengan deklarasi untuk variabel, kecuali bahwa Public : inisialisasi eksplisit tidak void home ( ) { cursor = scr ; } diperbolehkan.
void move ( int, int ) ; Perhatikan contoh dibawah ini: char get ( ) { return *cusor ;}
screen { char get (int , int ) ; // height dan width menyatakan jumlah
class
void checkRange ( int , int ) ; kolom
//crusor menunjukkan posisi screen
sekarang
// scr menunjuk ke array height*width
Member function yang didefinisikan di dalam class-body secara otomatis
short height, width ; dianggap inline, dan member function // menyatakan jumlah kolom yang lebih dari satu atau dua baris char *crusor ;
sebaiknya didefinisikan di luar class- // posisi screen saat ini
body. perhatikan contoh dibawah ini char scr ;
// menunjuk ke array heightwidth
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
Program 14.3 #include "screen.h" #include <iostream.h> #include <stdlib.h>
using namespace std;
void screen :: checkRange (int row , int col ) // validasi koordinat {
if (row < 1 || row > height || col < 1 || col > width )
{ cerr << "Koordinat screen ( " << row << ", " << col << " ) keluar batas \n " ; exit (‐
Member function yang didefinisikan di
luar class body, jika ingin dibuat inline harus secara eksplisit. perhatikan contoh dibawah ini:
Member function dibedakan dari inline void screen :: move ( int r , int c )
fungsi-fungsi biasa dalam hal-hal: // memindahkan cursor ke posisi (r,c)
Member function punya hak akses penuh ke anggota-anggota kelas { yang bersifat public maupun
clockRange (r,c) ; private. Pada umumnya, fungsi- // koordinat sah ?
fungsi biasa dapat di akses hanya int row = (r‐ 1 ) *width ;
oleh anggota-anggota kelas yang
cursor = ser + row + c‐ 1 ;
public. Tentu saja pada umumnya } member functions suatu kelas
void screen :: move ( int r , int c ) tidak mempunyai hak akses ke anggota-anggota non public dari
inline
// memindahkan cursor ke posisi (r,c) kelas-kelas lainnya.
Member function didefinisikan { dalam scope dari kelasnya, fungsi- clockRange (r,c) ;
fungsi biasa didefinisikan dalam // koordinat sah ?
scope file.
int row = (r‐ 1 ) *width ;
cursor = ser + row + c‐ 1 ;
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman