Penjelasan dan Cara Pembuatan Class dan Object

Written by: Fajar   |   Updated on: Agustus 27, 2018
Class dan Object

Salah satu tujuan diciptakan Bahasa Pemrograman C++ adalah untuk menambahkan fitur baru, salah satunya adalah OOP (Object Oriented Programming) pada Bahasa Pemrograman C.

Fitur Class class adalah fitur OOP pada C++ mirip seperti FItur Data Structures struct pada C, keduanya dapat menampung variabel sebagai anggota. Tapi perbedaan dari class dan struct tersebut adalah pada Class memiliki kemampuan lebih, seperti dimungkinkan untuk memuat method, inheritance dan lain-lain.

Pengertian Class

Class adalah salah satu dari konsep OOP yang digunakan untuk membungkus data abstraksi procedural sebagai deskripsi tergeneralisir atau rancangan dari sebuah object untuk mendefinisikan atau menggambarkan isi dan tingkah laku sebagai entitas dari object.

Cara Mendirikan Class

Untuk mendirikan Class kita membutuhkan keyword class yang dilanjutkan dengan pemberian nama dari deklarasi class tersebut. lalu dilanjutkan dengan meletakan tanda { dan } untuk mengapit definisi dari class.

Class termasuk sebuah pernyataan maka dari itu akhir dari deklarasi class diwajibkan untuk mengakhiri class menggunakan tanda titik-koma ;

Bentuk penulisan

class nama_class{
	akses_specifier :
		data_member;
		…
	akses_specifier2 :
		data_member;
		…
}nama_object;

Keterangan

  • nama_class : tempat dimana anda dapat memberikan nama pada class tersebut.
  • akses_specifier : tempat dimana anda dapat mendifinisikan hak akses kepada anggota yang ada dibawahnya. Jika tidak didefinisikan maka anggota class secara otomatis memiliki hak akses private.
  • data_member : tempat dimana anda dapat mendirikan sebuah variabel atau function sebagai anggota dari class.
  • nama_object : tempat dimana anda dapat mendirikan object-object dengan menggunakan class tersebut, hal ini merupakan opsional tapi jika class tidak diberi nama class maka diwajibkan mendirikan object, karena kita tidak akan bisa membuat object dengan class di luar dari deklarasi class tersebut.

Class dan Object merupakan fitur yang sangat membantu untuk mendirikan sebuah program besar, menjadikan sebuah code program yang ditulis oleh programmer mudah untuk dimengerti, lebih terstruktur, dan juga mudah dalam pemeliharaan program.

Terdapat banyak fasilitas yang disediakan oleh class, yaitu dapat menampung member variabel, function, constructor, desctructor, overloading dan lain-lain. Diluar definisi class kita juga dimungkinkan untuk membuat relalasi seperti inheritance dan overriding.

Baca :   Penjelasan dan Contoh Encapsulation (Enkapsulasi)

Contoh penulisan

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
}anton;

Diatas adalah sepenggal program yang mencontohkan bagaimana cara mendirikan dan mendefinisikan sebuah class dengan nama class mahasiswa. Di dalam class pada baris pertama isi dari class terdapat akses specifier public yang berarti semua anggota di bawah label itu akan bersifat bebas untuk diakses dari dalam maupun dari luar class.

Baris kedua sampai empat definisi dari class terdapat tiga variabel nim, nama dan nilai dengan tipe data int, string dan float yang merupakan member variable dari class tersebut. Dan pada baris berikutnya terdapat anggota yang berupa member function atau biasa disebut method, yang mempunyai definisi dengan tugas untuk mencetak nilai dari anggota variabel di atasnya.

Dan baris terakhir dari luar class anton diantara tanda } dan ; adalah sebuah object yang telah didirikan di dalam deklarasi class. Object yang didirikan pada deklarasi class merupakan opsional, anda juga dapat mendirikan object lebih dari satu di dalam deklarasi class, untuk setiap object akan dipisahkan dengan tanda koma ,.

Cara mendirikan Object

Mendirikan class seperti halnya kita membuat sebuah kerangka atau blueprint untuk object. Terdapat dua cara untuk mendirikan object pada class, yaitu:

Pertama, Mendirikan object di dalam deklarasi Class: Seperti contoh sebelumnya, bahwa kita dapat membuat object setelah definisi dari class yaitu tepat di antara tanda } dan ;. Memberi object setelah definisi class tidak diharuskan, tapi dapat dilakukan dan kita bisa membuat object lebih dari satu dengan memisahkan masing-masing object dengan tanda koma ,.

Contoh penulisan

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
}anton, budi, tono;

Cara ini akan wajib digunakan ketika class yang didirikan adalah anonymous class atau class yang tidak memiliki nama.

Baca :   Array Multidimensi

Kedua, Mendirikan object di luar deklarasi Class: Mendirikan object sama seperti kita mendirikan variabel, yang berbeda adalah nama dari class akan digunakan sebagai tipe data dari object.

Contoh penulisan

mahasiswa anton;
mahasiswa budi, tono;
//atau
class mahasiswa anton;

Dalam mendirikan object class kita bebas untuk menambahkan keyword class atau tidak menambahkannya sebelum nama dari class tersebut, karena semua bentuk penulisan memiliki arti yang sama.

Contoh program

#include <iostream>
using namespace std;

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
};

int main() {
    mahasiswa tanto,budi,adi;
    return 0;
}

Cara Mengakses Object

Setelah kita berhasil mendirikan object. object tersebut akan sepenuhnya memiliki bentuk berdasarkan rancangan pada class yang dipakai. Untuk mengakses Object dan member dari object tersebut kita membutuhkan “Member Access Operator .” yang diletakan di antara nama object dan nama member.

Contoh penulisan

anton.nim;
anton.nama;
anton.nilai;
anton.printData();

Contoh program

#include <iostream>
using namespace std;

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
};

int main() {
    mahasiswa anton;
    anton.nim=1234;
    anton.nama="Anton Cpluzer";
    anton.nilai=95;
    anton.printData();
    return 0;
}

Cara Inisialisasi Object

Terdapat tiga cara untuk inisialisasi object, yaitu:

Non-static Member Initialization, merupakan cara untuk memberikan nilai awal (Inisialisasi) di saat mendirikan variabel sebagai member class. Maka nilai awal itu akan berlaku pada semua object yang menggunakan class tersebut. dan cara ini hanya tersedia pada C++11 ke atas.

Contoh program

#include <iostream>
using namespace std;

class mahasiswa{
public:
    int nim=1; //inisialisasi
    string nama="default name"; //inisialisasi
    float nilai=0; //inisialsiasi

    void setterNilai (float aNilai){
        nilai=aNilai;
    }
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
};

int main() {
    mahasiswa anton,budi;
    cout<<"==Anton=="<<endl;
    anton.printData();
    cout<<"==Budi==="<<endl;
    budi.printData();

    return 0;
}

Uniform Initialization, merupakan cara kedua untuk inisialisasi member pada object. Dengan cara memberikan nilai awal kepada member class saat mendirikan object, inisialisasi harus disebutkan dengan urut berdasarkan urutan deklarasi member. inisialisasi ini hanya akan berlaku pada object itu sendiri. Tapi kelemahanya, cara ini hanya bisa dilakukan jika semua member dari class bersifat public.

Baca :   Penjelasan Literal dan Konstanta

Contoh penulisan

mahasiswa anton = {123,"Antonia uvava osas",98.5}; //atau
mahasiswa albert {234,"Albert Insting", 101.5}; //C++11

Contoh program

#include <iostream>
using namespace std;

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData(){
        cout<<"NIM   \t= "<<nim<<endl;
        cout<<"Nama  \t= "<<nama<<endl;
        cout<<"Nilai \t= "<<nilai<<endl;
    }
};

int main() {
    mahasiswa anton = {123,"Antonia uvava osas",98.5};
    mahasiswa albert {234,"Albert Insting", 101.5};

    anton.printData();
    albert.printData();
    return 0;
}

Member Initialization In Constructor, Merupakan cara ketiga dan penulis sarankan untuk digunakan karena memiliki level keamanan yang cukup tinggi. Untuk penjelasan lebih lanjut mengenai constructor akan penulis sampaikan pada artikel constructor.

Tambahan:

Dalam membuat member function atau method terdapat dua cara, yaitu:

  • Pertama, mendirikan dan mendefinisi function di dalam definisi class. Seperti apa yang sudah penulis contohkan pada contoh-contoh program di atas.
  • Kedua, Mendirikan di dalam definisi class dan mendefinisikan function di luar class. Mirip seperti kita membuat function dengan mendirikan function prototype terlebih dahulu dan mendefinisikan function tersebut sesudah deklarasi function.

Pada class kita juga dimungkinkan untuk mendirikan function prototype, dan mendefinisikanya di luar definisi class. Untuk memberi definisi pada function tersebut kita dapat melakukanya dengan menggunakan “Scope Resolution Operator ::“, yang diletakan di antara nama class dan nama member function.

Untuk mendefinisiakan function menggunakan Scope Resolution Operator, kita bebas menaruh definisi tersebut dimana pun, seperti tepat di bawah deklarasi class tersebut atau di bawah main function dan juga bisa di definisikan diluar file, tapi kita tidak bisa melakukan definisi sebelum deklarasi function.

Bentuk umum penulisan

//Function prototype
return_type nama_function(arguments);
//Definisi Function
return_type nama_class :: nama_function(){
	…
}

Contoh penulisan

class mahasiswa{
public:
    int nim;
    string nama;
    float nilai;
    void printData();
};
void mahasiswa::printData(){
        cout<<"Definisi Function menggunakan Scope Resolution Operator"<<endl;
}

3 Replies to “Penjelasan dan Cara Pembuatan Class dan Object”

  1. I am regular visitor, how are you everybody? This piece of writing posted at this site is
    genuinely fastidious.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *