Anda di halaman 1dari 5

Pemrograman Berorientasi Objek Dengan

C++ (Bagian 1)
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 rawrobot.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 rawinheritance.cpp hosted with ❤ by GitHub

Anda mungkin juga menyukai