Deklarasi Class OPERASI FILE

2008 | Direktorat Pembinaan SMK 475

1. private , anggota class dapat

diakses dari danggota lain pada kelas yang sama atau dari class friend.

2. protected , anggota dapat

diakses dari anggota class yang sama atau class friend , dan juga dari anggota class turunannyaderived.

3. public , anggota dapat diakses

dari class manapun. Default permission label : private Contoh : class CRectangle { int x, y; public: void set_values int,int; int area void; } rect; Deklarasi class CRectangle dan object bernama rect. Class ini berisi empat anggota: dua variable bertipe int x and y pada bagian private karena private adalah default permission dan dua fungsi pada bagian public : set_values dan area, dimana hanya dideklarasikan propotype_nya. Perhatikan perbedaan antara nama classdan nama object. Pada contoh sebelumnya CRectangle adalah nama classcontoh, user- defined type, dan rect adalah object dari tipe CRectangle. Sama halnya dengan deklarasi berikut : int a; int adalah nama class type dan a adalah nama objectvariable. 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 xy;} }; 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; 476 Direktorat Pembinaan SMK | 2008 return ; } Keluaran program diatas adalah sebagai berikut: area: 12 Hal baru dari contoh diatas adalah operator :: dari lingkup yang disertakan dalam pendefinisian set_values. Digunakan untuk mendeklarasikan anggota dari class diluar class tersebut. Scope operator :: menspesifikasikan class dimana anggota yang dideklarasikan berada, memberikan scope properties yang sama seperti jika dideklarasikan secara langsung dalam class. 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 xy;} }; 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 ; } Keluaran program diatas adalah sebagai berikut: rect area: 12 rectb area: 30 2008 | Direktorat Pembinaan SMK 477 Perhatikan pemanggilan rect.area tidak memberikan hasil yang sama dengan pemanggilan rectb.area. Ini disebabkan karena objek dari class CRectangle mempunyai variable sendiri, x dan y, dan fungsi set_value dan area. Class terdiri dari dua bagian, yaitu: Class head yaitu kata kunci class diikuti oleh nama kelas dan Class body yaitu class yang diapit kurung kurawal { }, diikuti tkita titik koma atau daftar deklarasi. Misalnya: class screen ………. ; class screen ………. s1 , s2 ; Dalam class body ditentukan data members, member function dan tingkat-tingkat dari information hidding. Deklarasi untuk data members sama dengan deklarasi untuk variabel, kecuali bahwa inisialisasi eksplisit tidak diperbolehkan. Perhatikan contoh dibawah ini: class screen { height dan width menyatakan jumlah kolom crusor menunjukkan posisi screen sekarang scr menunjuk ke array heightwidth short height, width ; menyatakan jumlah kolom char crusor ; posisi screen saat ini char scr ; menunjuk ke array heightwidth }; Class dapat mendefinisikan data member berupa reference ke tipe dirinya, perhatikan contoh dibawah ini: class linkScreen { screen window ; linkScreen next ; linkScreen prev ; }; Member functions dari suatu kelas tidak dideklarasikan di dalam class body. perhatikan contoh dibawah ini: class Screen { Public : void home { cursor = scr ; } void move int, int ; char get { return cusor ;} char get int , int ; void checkRange int , int ; ……… }; Member function yang didefinisikan di dalam class-body secara otomatis dianggap inline, dan member function yang lebih dari satu atau dua baris sebaiknya didefinisikan di luar class- body. perhatikan contoh dibawah ini 478 Direktorat Pembinaan SMK | 2008 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 ‐ 1 ; } } Member function yang didefinisikan di luar class body, jika ingin dibuat inline harus secara eksplisit. perhatikan contoh dibawah ini: inline void screen :: move int r , int c memindahkan cursor ke posisi r,c { clockRange r,c ; koordinat sah ? int row = r‐ 1 width ; cursor = ser + row + c‐ 1 ; } inline void screen :: move int r , int c memindahkan cursor ke posisi r,c { clockRange r,c ; koordinat sah ? int row = r‐ 1 width ; cursor = ser + row + c‐ 1 ; } Member function dibedakan dari fungsi-fungsi biasa dalam hal-hal:  Member function punya hak akses penuh ke anggota-anggota kelas yang bersifat public maupun private. Pada umumnya, fungsi- fungsi biasa dapat di akses hanya oleh anggota-anggota kelas yang public. Tentu saja pada umumnya member functions suatu kelas tidak mempunyai hak akses ke anggota-anggota non public dari kelas-kelas lainnya.  Member function didefinisikan dalam scope dari kelasnya, fungsi- fungsi biasa didefinisikan dalam scope file. 2008 | Direktorat Pembinaan SMK 479

14.4. Struktur dan kelas

Dalam C++, tipe data struktur yang dideklarasikan dengan kata kunci struct, dapat mempunyai komponen dengan sembarang tipe data, baik tipe data dasar maupun tipe data turunan, termasuk fungsi. Dengan kemampuan ini, tipe data struktur menjadi sangat berdaya guna. Misalnya, pada masalah ketika kita ingin membentuk tipe data struktur yang namanya kotak. Maka dapat dideklarasikan sebagai berikut: struct tkotak { double panjang; double lebar; }; tkotak kotak; Untuk memberi nilai ukuran kotak tersebut, kita dapat menggunakan perintah-perintah ini: kotak.panjang = 10; kotak.lebar = 7; Untuk memberi nilai panjang dan lebar kotak, salah satu caranya adalah seperti diatas. Cara lain untuk memberi nilai panjang dan lebar adalah dengan membentuk suatu fungsi. Karena fungsi ini hanya digunakan untuk memberi nilai data panjang dan lebar suatu kotak, tentunya fungsi ini khusus milik objek kotak, sehingga harus dianggap sebagai truktur kotak. C++ sebagai bahasa pemrograman dapat mendefinisikan anggota tipe struktur yang berupa fungsi. Dengan menambah fungsi tersebut, maka struktur kotak menjadi lebih jelas bentuknya. struct tkotak { double panjang; double lebar; void SetUkurandouble pj, double lb { panjang = pj; lebar = lb; }; }; tkotak kotak; dengan tipe struktur kotak seperti itu, untuk memberi nilai panjang dan lebar hanya dengan memanggil fungsi SetUkuran kotak.SetUkuran10,7; Selain punya ukuran panjang dan lebar, kotak juga mempunyai keliling dan luas. Dengan demikian, kita dapat memasukkan fungsi untuk menghitung keliling dan luas ke dalam struktur kotak. Sebagai catatan, bahwa definisi fungsi yang menjadi anggota struktur dapat ditempatkan di luar tubuh struktur. Dengan cara ini maka deklarasi struktur kotak menjadi seperti berikut: struct tkotak { double panjang; double lebar; void SetUkurandouble pj, double lb; double Keliling; double Luas; }; tkotak kotak; 480 Direktorat Pembinaan SMK | 2008 Class merupakan struktur data dari obyek. Untuk menjelaskan tentang class, lihat perbandingannya dengan struktur. Untuk lebih jelasnya mengenai keduanya perhatikan contoh program di bawah ini: Program 14.4 include conio.h include iostream include string.h using namespace std; struct siswaSMK { char nis[ 12 ]; char nama[ 25 ]; int umur; }; void main { siswaSMK siswakls3; strcpysiswakls3.nis, 95514060 ; strcpysiswakls3.nama, Suprapto ; siswakls3.umur = 20 ; cout siswakls3.nis endl; cout siswakls3.nama endl; cout siswakls3.umur endl; getch; return ; } Setelah program di atas dicompile, error tidak ada. Berikutnya struktur di atas kita ganti dengan class, sehingga program menjadi seperti berikut dibawah ini: Program 14.5 include conio.h include iostream include string.h using namespace std; class siswaSMK