Jumat, 27 April 2012

Penentu Akses (Access Specifier)



Penentu Akses (Access Specifier) :

Digunakan untuk menentukan anggota data atau fungsi anggota mana yang boleh diakses dan oleh siapa.

Ada 3 macam penentu akses(access specifier):

1. Public
    Bisa diakses dari luar kelas (bersifat global)
2. Private
    Hanya bisa diakses dari dalam kelas (bersifat lokal)
3. Protected
    Sama dengan Private dan bisa diakses oleh kelas-kelas turunan



Penentu Akses Public.

Dengan menggunakan penentu akses publik, anggota data dan fungsi anggota bisa diakses dari luar kelas.

Contoh:
    class Contoh{
      public :
          ….;
          ….;
    };

Contoh Program 1.1 dengan Public:
#include "iostream.h"
#include "conio.h"
#include "string.h"
class mahasiswa
{
    public:
        char nim[10];
        char nama[30];
        int nilai;
};

int main()
{
    mahasiswa mhs;
    strcpy(mhs.nim, "201081033");
    strcpy(mhs.nama, "Shelly");
    mhs.nilai = 90;

    cout<<"NIM : \n";
    cout<<"NAMA : \n";
    cout<<"NILAI : \n";
    getch();
}


Penentu Akses Private.

-Digunakan untuk memproteksi anggota-anggota tertentu pada kelas agar tidak bisa diakses
secara langsung dari luar kelas.
-Biasanya yang menggunakan penentu akses private adalah anggota data.
-Penentu akses private adalah nilai default sehingga kalau penentu akses tidak ditentukan,
maka dianggap menggunakan penentu akses private.

Contoh:
    class Contoh {            class Contoh {            
      private :              …;
          ….;                    …;
          ….;                    …;
    };                };

Untuk melihat efek dari private, gantilah kata kunci public pada program 1.1 diatas dengan
private, seperti tampak program berikut ini:

#include "iostream.h"
#include "conio.h"

#include "string.h"

class mahasiswa
{
    private:
        char nim[10];
        char nama[30];
        int nilai;
};

int main()
{
    mahasiswa mhs;
    strcpy(mhs.nim, "201081033");
    strcpy(mhs.nama, "Shelly");
    mhs.nilai = 90;

    cout<<"NIM : \n";
    cout<<"NAMA : \n";
    cout<<"NILAI : \n";
    getch();
}

Jika program diatas dicompile atau di running, maka akan terjadi kesalahan seperti keluarnya
message error seperti gambar dibawah ini.





Program tersebut error tidak bisa dijalankan saat kita ganti public dengan private, mengapa?
karena anggota data yang terdiri dari nim, nama, dan nilai yang ada didalam kelas memiliki access specifier private dimana anggota data tersebut hanya bisa diakses hanya didalam kelas yang mendefinisikannya jadi fungsi utama/main tidak dapat mengakses anggota data tersebut.

Tidak ada komentar:

Posting Komentar