You are here

Enkapsulasi

Enkapsulasi adalah dasar dari OOP. Seperti yang telah dijelaskan di bagian Pengenalan, bahwa enkapsulasi itu adalah penyembunyian informasi melalui private dan protect. Sebelum mengetahui apa perbedaannya, perlu diketehui bahwa ada tiga jenis pendeklarasian di class, public, private dan protect. Secara default fungsi atau variabel yang dideklarasikan akan bertipe private. Di bawah ini adalah perbedaan ketiganya:

  • Public : Seluruh yang dideklarasikan di sini bisa di akses siapa saja
  • Private : Hanya bisa diakses oleh fungsi itu sendiri dan friend class
  • Protect : Bisa diakses oleh fungsi itu sendiri, friend class dan turunannya.

Untuk memahami penggunaan public, perhatikan contoh di bawah ini:

1:   // Demonstrates declaration of a class and
2:   // definition of an object of the class,
3:
4:   #include <iostream.h> // for cout
5:
6:   class Cat         // declare the class object
7:   {
8:    public:          // members which follow are public
9:      int itsAge;
10:     int itsWeight;
11:  };
12:
13:
14:  void main()
15:  {
16:     Cat Frisky;
17:     Frisky.itsAge = 5; // assign to the member variable
18:     cout 

Gimana, ngerti kan? Jadi kalo dideklarasikan public, kita bisa langsung menulis "Frisky.Umurnya = 5". Tapi apabila public tidak ditulis (defaultnya adalah private), maka akan terjadi error.

Sekarang kita lihat cara penggunaan private:

1: // Cat class declaration
2: // Data members are private, public accessor methods
3: // mediate setting and getting the values of 
the private data
4:
5:  class Cat
6:  {
7:  public:
8:       // public accessors
9:     unsigned int GetAge();
10:    void SetAge(unsigned int Age);
11:
12:    unsigned int GetWeight();
13:    void SetWeight(unsigned int Weight);
14:
15:      // public member functions
16:    Meow();
17:
18:      // private member data
19: private:
20:    unsigned int  itsAge;
21:    unsigned int  itsWeight;
22:
23: };

Perhatikan baris ke 9 dan 10 itu adalah fungsi untuk mengakses itsAge pada baris 20 yang dibuat private. Untuk memasukkan nilai ke itsAge, gunakan SetAge dan untuk melihat nilai itsAge gunakan GetAge. Perhatikan cara pengaksesannya.

Cat  Frisky;
Frisky.SetAge(5); // set Frisky's age using 
                  // the publicaccessor

Bagaimana, paham apa yang dimaksud penyembunyian? Jadi kita gak bisa mengubah dan mengaksesnya secara bebas. Sekarang mari kita lihat program lengkapnya.

Perhatikan program yang ditulis secara lengkap di bawah ini:

1:   // Demonstrates declaration of a class and
2:   // definition of class methods,
3:
4:   #include  <iostream.h>      // for cout
5:
6:   class Cat                   // begin declaration
of the class
7:   {
8:     public:                   // begin public section
9:       int GetAge();           // accessor function
10:      void SetAge (int age);  // accessor function
11:      void Meow();            // general function
12:    private:                  // begin private section
13:      int itsAge;             // member variable
14:  };
15:
16:  // GetAge, Public accessor function
17:  // returns value of itsAge member
18:  int Cat::GetAge()
19:  {
20:     return itsAge;
21:  }
22:
23:  // definition of SetAge, public
24:  // accessor function
25:  // returns sets itsAge member
26:  void Cat::SetAge(int age)
27:  {
28:     // set member variable its age to
29:     // value passed in by parameter age
30:     itsAge = age;
31:  }
32:
33:  // definition of Meow method
34:  // returns: void
35:  // parameters: None
36:  // action: Prints "meow" to screen
37:  void Cat::Meow()
38:  {
39:     cout 

Gimana? panjang banget yach? nyantai... bakal dibahas kok. Sekarang perhatikan baris ke 9 (untuk memperoleh umur kucing) dan 10 (untuk memasukkan umur kucing), kedua fungsi itu untuk mengakses variabel private yang ada dibaris 13. Sedangkan pada baris ke 11 itu adalah fungsi biasa.

Sekarang kita lihat baris 18 sampai 21. Itu adalah isi dari fungsi GetAge (perhatikan cara penulisannya "int Cat::GetAge()", menggunakan titik dua sebanyak 2). Isinya cuman sebaris "return itsAge", yang fungsinya untuk mengambil nilai dari variabel itsAge yang diset private. Pada baris 26 sampai 31 adalah isi dari fungsi dari SetAge untuk memberi nilai variabel itsAge. Yang terakhir adalah isi dari fungsi void Meow() (lihat baris 37 sampai 40), bila ini diakses akan tercetak dilayar "Meow" .

Yup, udah kelar semuanya. Sekarang mari kita lihat program utamanya dibaris 44 sampai 53.

44:  
45:  
46:  mendefinisikan objek
47:  memberi nilai itsAge dengan cara "Frisky.SetAge(5);"
48:  mengakses fungsi "Frisky.Meow();" (mencetak 
meow. dilayar)
49:  mencetak "Frisky is a cat who is "
50:  mencetak umur Frisky dengan cara menuliskan 
"Frisky.GetAge()"
51:  mengakses fungsi "Frisky.Meow();" (mencetak 
meow. dilayar)
52;  
53:

Huuff.... kelar juga yaaacchh.... Loh, bukannya protect belum dijelasin? Iya emang belum, dijelasinnya nanti di inheriten. Coba dech liat perbedaan private dan protect.

Inti dari ekpasulasi sudah dijelasin. Sebenarnya pembahasannya belon kelar, masih ada constructor dan destructor. Kedua jenis itu berguna banget looohh.... Tapi kalo udah paham konsep di atas, gak bakal susah untuk memahami apa itu constructor dan destructor. Seperti janji gua tadi bakal ngasih artikel-artikel untuk dipelajari sendiri. klik di sini untuk melihat artikelnya

Regards,

dj