Advertisement

Pemrograman Berorientasi Objek dengan C++ (Bagian 1)

Memahami perbedaan antara struct dan Class

0 12,169

Jika pembaca pernah belajar tentang struct di dalam C, maka mempelajari konsep pemrograman berbasis objek pada C++ tidak akan memerlukan waktu lama. Misalnya, di dalam C, terdapat tipe data seperti integer, float dan string yang digabung dijadikan satu tipe data tunggal yang disebut struct. Pada C++, terdapat versi pengembangan dari struct, yang disebut class.

  • Class vs Object

Dalam dunia nyata, akan sering ditemui beberapa objek individual yang memiliki kesamaan jenis. Ada ribuan jenis sepeda yang ada, namun semuanya memiliki kegunaan dan model yang sama. Setiap sepeda dibuat dengan set cetak biru yang sama dan oleh karena itu ia memiliki komponen yang sama. Dalam istilah pemrograman berbasis objek dapat dikatakan, sepeda yang sedang dimiliki oleh seseorang  adalah instance dari sebuah class yang disebut sepeda. Sebuah class adalah cetak biru dari setiap object yang dibuat

  • Class vs Struct

Untuk memahami lebih jelas tentang perbedaan class dan struct perhatikan program berikut


#include <iostream>
#include <string>
using namespace std;
struct Robot_Struct {
int id;
int no_wheels;
string robot_name;
};
class Robot_Class {
public:
int id;
int no_wheels;
string robot_name;
void move_robot();
void stop_robot();
};
void Robot_Class::move_robot() {
cout << "Moving Robot" << endl;
};
void Robot_Class::stop_robot() {
cout << "Stopping Robot" << endl;
};
int main() {
Robot_Struct robot_1;
Robot_Class robot_2;
robot_1.id = 2;
robot_1.robot_name = "Mobil Robot";
robot_2.id = 3;
robot_2.robot_name = "Humanoid Robot";
cout << "ID=" << robot_1.id << "\t" << "Robot Name:" << robot_1.robot_name
<< endl;
cout << "ID=" << robot_2.id << "\t" << "Robot Name:" << robot_2.robot_name
<< endl;
robot_2.move_robot();
robot_2.stop_robot();
return 0;
}
;
view raw

robot.cpp

hosted with ❤ by GitHub

Program tersebutmencontohkan penggunaan struct dan class. Terdapatstruct bernama Robot_Struct, pada baris 6-10. dan class yang bernama Robot_Class pada baris 12 – 19.

Perbedaan keduanya adalah, jika struct hanya berisi  variabel sedangkan class juga dapat berisi deklarasi fungsi. Fungsi dapat ditulis di luar atau dalam class, pada  artikel ini implementasi fungsi ditulis di luar class, guna menjaga definisi class ditulis pendek.

Perhatikan pada baris 30-37 dimana robot_2 adalah object dari class Robot_Class sedangkan robot_1 adalah instance dari struct.  Dengan menggunakan object , programmer dapat mengakses tiap variabel dan fungsi menggunakan operator dot (.). Sedangkan untuk struct atau class pointer digunakan operator -> untuk mengakses variabel

[code lang=”c”]

Robot_Class *robot_2;
robot_2 = new Robot_Class;
robot_2 -> id-2;
robot_2 -> name="Humanoid Robot"

[/code]

operator new akan mengalokasikan memori untuk objek C++. Untuk meng-compile program dapat digunakan perintah berikut

$ g++ classvsstruct.cpp -o classvsstruct
$ ./classvsstruct
  • Class Access Modifier

Di dalam Robot_Class pada baris 13 terdapat keyword public: yang disebut sebagai access modifier. Fitur ini disebut sebagai data hiding. Dengan mengatur access modifier, programmer dapat membatasi siapa saja yang bisa mengakses fungsi atau variabel didalam sebuah class

Ada tiga jenis access modifier, yaitu

  • public Semua member yang bersifat public dapat diakses dimanapun di luar class di dalam program
  • private variabel atau fungsi yang bertipe private hanya bisa diakses di dalam class
  • protected. pada umumnya mirip dengan private  namun perbedaannya ada pada bahwa member protected masih bisa diakses oleh class anak sedangkan private tidak

 

  • Pewarisan dalam C++

Pewarisan (inheritance) adalah konsep penting lain di Pemrograman Berorientasi Objek. Jika terdapat dua atau lebih class, dan diinginkan suatu class memiliki fungsi yang sama dengan class yang lain maka dapat digunakan inheritance. Dengan menggunakan inheritance, fungsi yang terdapat pada class lain dapat digunakan ulang (reuse) di class lain. Class baru akan mewarisi sifat dari Class lama, Class baru akan disebut sebagai class turunan (derived class), sedangkan class lama adalah class induk (base class)

Sebuah class dapat mewarisi properti public, protected ataupun private, dengan ketentuan sebagai berikut

jika sebuah class diturunkan dari class dasar, maka member public dari class dasar akan menjadi member public pula untuk class turunan. Member protected dari class dasar akan menjadi member protected class turunan. Member private dari class dasar tidak akan bisa diakses oleh  class turunan.

Berikut adalah contoh program yang menggambarkan pewarisan sifat


#include <iostream>
#include <string>
using namespace std;
struct Robot_Class
{
int id;
int no_wheels;
string robot_name;
void move_robot();
void stop_robot();
};
class Robot_Class_Derived: public Robot_Class
{
public:
void turn_left();
void turn_right();
};
void Robot_Class::move_robot()
{
cout<<"Moving Robot"<<endl;
}
void Robot_Class::stop_robot()
{
cout<<"Stopping Robot"<<endl;
}
void Robot_Class_Derived::turn_left()
{
cout<<"turn left"<<endl;
}
void Robot_Class_Derived::turn_right()
{
cout<<"turn right"<<endl;
}
int main()
{
Robot_Class_Derived robot;
robot.id = 2;
robot.robot_name = "Mobile robot";
cout<<"ID="<<robot.id<<"\t"<<"Robot Name"<<robot.robot_name<<endl;
robot.move_robot();
robot.stop_robot();
return 0;
}
view raw

inheritance.cpp

hosted with ❤ by GitHub

 

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.