Dalam OOP kita mengabstraksikan object dalam sebuah class. Setiap object memiliki attribute dan operation, sebagai contoh object box memiliki attribut: panjang (length), lebar (breadth) dan tinggi (height) serta memiliki operation: hitung volume (getVolume); seperti digambarkan pada class diagram berikut ini.
Data Member
Istilah properties/atributes/data member mengacu pada deklarasi variable pada program OOP. Data member umumnya diberikan visibility private atau protected untuk mencegah akses langsung dari luar class. Itu adalah aturan (rule) dalam konsep OOP Encapsulation untuk data/information hiding. Untuk mengakses data member harus melalui member function.
Member Function
Member function adalah deklarasi/definisi fungsi dalam class. Kita dapat memasukan deklarasi fungsi saja dalam bentuk function prototype dan definisi fungsinya diimplementasikan diluar class. Ini sangat dianjurkan supaya pembuatan class menjadi lebih terlihat rapi dan mudah di maintain. Penulisan definisi member function diluar class menggunakan scope resolution (::). Deklarasi function prototype akan menjadi inline function, artinya ketika di compile definisi fungsinya akan masuk ke dalam classnya.
Member function dapat berisi Constructor, Desctructor, Getter (Accessor), Setter (Mutator), helper/utility dan fungsi lainnya sebagai operasi dari object (apa yang bisa dilakukan oleh object).
Object sebagai instance class dapat menjalankan member function dengan operator dot (.)
Access Modifier Member Class
Member dari sebuah class memiliki 3 level akses. (https://www.tutorialspoint.com/cplusplus/cpp_class_access_modifiers.htm)
- Private –> member hanya dapat diakses dalam classnya sendiri
- Protected –> member dapat diakses dalam classnya sendiri dan dalam class turunannya
- Public –> member dapat diakses dari manapun diluar classnya
3 jenis akses tersebut menjadi level visibility dari object class tersebut.
By Default level akses class adalah private, artinya jika member tidak diberikan level visibility (label private/protected/public) maka akses member tersebut adalah private.
#include <iostream> using namespace std; class Box { private: // Data Member double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box public: // Member functions declaration double getVolume(void); void setLength( double len ); void setBreadth( double bre ); void setHeight( double hei ); }; // Member functions definitions double Box::getVolume(void) { return length * breadth * height; } void Box::setLength( double len ) { length = len; } void Box::setBreadth( double bre ) { breadth = bre; } void Box::setHeight( double hei ) { height = hei; } // Main function int main( ) { Box Box1; // Create object Box1 of type Box Box Box2; // Create object Box2 of type Box double volume = 0.0; // Initial the volume of a box // box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // box 2 specification Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // volume of box 1 volume = Box1.getVolume(); cout << "Volume of Box1 : " << volume <<endl; // volume of box 2 volume = Box2.getVolume(); cout << "Volume of Box2 : " << volume <<endl; system("pause"); return 0; }
Sumber: https://www.tutorialspoint.com/cplusplus/cpp_class_member_functions.htm
Output:
Volume of Box1 : 210
Volume of Box2 : 1560
Press any key to continue . . .
terimakasih pak sangat membantu. tetapi saya ingin bertanya sedikit, saya kurang paham dengan cara penggunaan scope resolution nya. apakah ‘ :: ‘ tersebut digunakan untuk sebagai pengenalan suatu variabel atau?
SukaSuka
Hi Brenda,
Scope resolution dipakai untuk mengakses member class, umumnya member function. Contoh post saya pada https://oopcpp.wordpress.com/2017/03/01/data-member-dan-member-function/
SukaSuka