Class Private , Class Public, dan Class Protected

16.3. Class Private , Class Public, dan Class Protected

Penggunaan private maupun int Absis; public biasanya digunakan bersama-

int Ordinat;

sama atau dikombinasikan. Pada }; dasarnya suatu class apabila tidak

dituliskan secara default adalah Variabel Absis dan Ordinat private jadi pada prinsipnya class merupakan variabel private walaupun tidak dapat diakses oleh class lain tidak ditulis secara eksplisit. Apabila

dan hanya dapat diakses oleh class ditulispun hasilnya sama saja, karena itu sendiri. Untuk lebih memahami secara default komponen dalam kita kembali ke contoh aplikasi class

suatu class adalah private. Dalam hal yang pertama kali.

ini variabel Absis dan Ordinat tidak bisa diakses secara langsung.

class Titik Sebagai gambaran dilihat contoh { di bawah ini:

Program 16.7 #include <cstdlib> #include <iostream>

using namespace std;

class Titik { int X; int Y; };

int main(int argc, char *argv[]) { Titik A;

4 A.X = ; A.Y = 6 ; cout<< "Absis titik A = " <<A. X<< "\n" ; cout<< "Ordinat titik A = " <<A.Y<< "\n" ; system( "PAUSE" ); return EXIT_SUCCESS; }

Program di atas apabila di dan Y tidak dianggap sebagai compile akan terjadi kesalahan member hal ini karena private. Lain dianggap kelas Titik tidak mempunyai

halnya jika diganti menjadi public member bernama X dan Y. Jadi X seperti berikut:

Direktorat Pembinaan SMK | 2008

Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman

Program 16.8 #include <cstdlib> #include <iostream>

using namespace std;

class Titik { public: int X; int Y; };

int main(int argc, char *argv[]) { Titik A;

4 A.X = ; A.Y = 6 ; cout<< "Absis titik A = " <<A. X<< "\n" ; cout<< "Ordinat titik A = " <<A.Y<< "\n" ; system( "PAUSE" ); return EXIT_SUCCESS; }

Program di atas jikalau Tapi kalau bisa diubah dari luar dijalankan tidak akan terjadi maka data itu terlalu berisiko ibarat kesalahan, karena variabel X dan Y

sebuah rumah bisa dimasuki orang public jadi tidak ada penyembunyian

sekehendak hati, hal ini tidak boleh informasi (information hiding).

terjadi. Oleh karena itu variabel Keluaran dari program tersebut tersebut harus tetap private tetapi seperti berikut:

diberi jalan masuk apabila diperlukan untuk diganti atau diubah nilainya.

Absis titik A = 4 Program secara lengkapnya menjadi Ordinat titik A = 6

#include <cstdlib>

Program 16.9 #include <iostream>

using namespace std;

class Titik {

2008 | Direktorat Pembinaan SMK

Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends

private: int X; int Y; public: void SetAbsis(int x); void SetOrdinat(int y); int AmbilAbsis(); int AmbilOrdinat(); };

void Titik::SetAbsis(int x) {

X = x; }

void Titik::SetOrdinat(int y) { Y = y; }

int Titik::AmbilAbsis() { return X; }

int Titik::AmbilOrdinat() { return Y; }

int main(int argc, char *argv[]) { Titik A;

A.SetAbsis( 4 ); A.SetOrdinat( 6 ); cout<< "Absis titik A = " <<A.AmbilAbsis()<< "\n" ; cout<< "Ordinat titik A = " <<A.AmbilOrdinat()<< "\n" ; system( "PAUSE" ); return EXIT_SUCCESS; }

Direktorat Pembinaan SMK | 2008

Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman

Jadi ada dua pasang method ada pintu masuk dan pintu keluar, yang ditambahkan, satu untuk untuk mengambil barang-barang memasukkan data baik X maupun Y

yang ada harus melalui prosedur yaitu lewat SetAbsis maupun tidak bisa begitu saja. Dapat SetOrdinat. Yang kedua untuk disimpulkan untuk mengakses data menampilkan atau melihat variabel X

dalam suatu class yang bersifat ataupun Y melalui perintah private bisa dengan membuat AmbilAbsis dan AmbilOrdinat. Disini method yang bersifat public sehingga terlihat bahwa pintu masuk dan bisa memanipulasi data/variabel yang keluar melalui jalur tertentu tidak bisa

ada didalamnya. Contoh lain sebagai langsung seperti apabila variabel di berikut: set public. Ibarat super market disitu

Program 16.10 #include <cstdlib> #include <iostream>

using namespace std;

class A { private: int privat; public: int umum; int AmbilPrivat() { return privat; }; void SetPrivat(int data) { privat = data; };

void TesA(); };

void A::TesA() { cout<< "Keluaran dari TesA" <<endl; cout<< "Umum =" <<umum<<endl; cout<< "Private =" <<privat<<endl; }

class

B: public A { public: void TesB();

2008 | Direktorat Pembinaan SMK

Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends

void B::TesB() { cout<< "Keluaran dari TesB" <<endl; cout<< "Umum =" <<umum<<endl; cout<< "Private =" <<AmbilPrivat()<<endl; } int main(int argc, char *argv[]) {

A ContohA;

ContohA.SetPrivat( 4 ); ContohA.umum = 20 ;

ContohA.TesA();

cout<<endl<< "Keluaran dari Main()" <<endl; cout<< "Umum =" <<ContohA.umum<<endl; cout<< "Private =" <<ContohA.AmbilPrivat()<<endl<<endl;

B ContohB;

ContohB.SetPrivat( 40 );

ContohB.umum = 200 ; ContohB.TesB();

cout<<endl<< "Keluaran dari Main()" <<endl; cout<< "Umum =" <<ContohB.umum<<endl; cout<< "Private =" <<ContohB.AmbilPrivat()<<endl<<endl;

system( "PAUSE" ); return EXIT_SUCCESS; }

Dari contoh di atas dapat dilihat Tetapi pemanggilan dari class perbedaan pemakaian public dan turunannya yaitu class B harus private dalam memanipulasi data di melalui method public-nya, dalam class, baik dari class itu sendiri

contohnya pada method TesB() untuk maupun dari class turunannya. Dari menampilkan data harus pakai class sendiri yaitu class A semua AmbilPrivat tidak langsung variabel variabel maupun method bisa privat seperti TesA(). Tetapi untuk diakses lansung, contoh method

variabel umum bisa dipanggil TesA().

langsung karena sifatnya public, jadi 538

Direktorat Pembinaan SMK | 2008

Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman

tidak ada beda cara pemanggilan turunan public dari class A. baik TesA() maupun TesB().

Sebenarnya masih ada satu lagi yaitu Sedangkan untuk pemanggilan sifat protected. Suatu class yang di main() baik ContohA yang memproteksi data-datanya dengan merupakan class baru dari class A, sifat protected hanya bisa diakses dan Contoh B yang merupakan class

dari dirinya sendiri atau dari class baru dari class B tidak ada turunannya. Lihat contoh berikut dan perbedaan cara pemanggilan. Bisa bandingkan dengan sifat private yang dimengerti karena class B merupaka

telah dibahas sebelumnya.

Program 16.11 #include <cstdlib> #include <iostream>

using namespace std;

class A { protected: int proteksi; public: int umum; int AmbilProteksi() { return proteksi; }; void SetProteksi(int data) { proteksi = data; };

void TesA(); };

void A::TesA() { cout<< "Keluaran dari TesA" <<endl; cout<< "Umum =" <<umum<<endl; cout<< "Private =" <<proteksi<<endl; }

class

B: public A { public: void TesB(); };

2008 | Direktorat Pembinaan SMK

Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends

void B::TesB() { cout<< "Keluaran dari TesB" <<endl; cout<< "Umum =" <<umum<<endl; cout<< "Protected =" <<proteksi<<endl; } int main(int argc, char *argv[]) {

A ContohA;

ContohA.SetProteksi( 4 ); ContohA.umum = 20 ;

ContohA.TesA();

cout<<endl<< "Keluaran dari Main()" <<endl; cout<< "Umum =" <<ContohA.umum<<endl; cout<< "Private =" <<ContohA.AmbilProteksi()<<endl<<endl;

B ContohB;

ContohB.SetProteksi( 40 );

ContohB.umum = 200 ; ContohB.TesB();

cout<<endl<< "Keluaran dari Main()" <<endl; cout<< "Umum =" <<ContohB.umum<<endl; cout<< "Private =" <<ContohB.AmbilProteksi()<<endl<<endl;

system( "PAUSE" ); return EXIT_SUCCESS; }

Coba lihat method TesA() dan diakses langsung dari turunannya. TesB() cara mengakses data class Tetapi harus melalui method yang sama persis (variabel maupun bersifat public. Namun perlu method) contoh variabel umum dan dicermati cara macam ini mempunyai variabel proteksi. Jadi class yang kelemahan karena data tersebut bersifat protected bisa diakses seolah-olah menjadi bersifat public langsung persis seperti class tersebut

meskipun dideklarasikan secara melalui turunannya. Bandingkan private atau protected; Untuk dengan contoh sebelumnya yaitu mengatasi masalah semacam itu, class yang bersifat private tidak dapat

C++ menyediakan satu keyword, 540

Direktorat Pembinaan SMK | 2008

Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman

yaitu friend. Sebuah fungsi atau class anggota class lain, baik bersifat yang dideklarasikan dengan sifat private, protected, maupun public. friend dapat mengakses semua