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