LABORATORIUM KOMPUTER
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS ANDALAS
MODUL IV
Struct dan Object Oriented Programming
I. Tujuan
• Praktikan dapat memahami konsep struct, classs, constructor, destructor, inheritance,
dan polimorfisme.
• Praktikan dapat mengerti perbedaan class tipe public, private, dan protected dan cara
penggunaannya.
• Praktikan dapat mengimplementasikan struct, classs, constructor, destructor,
inheritance, dan polimorfisme dalam memecahkan masalah.
II. Teori
1. Struct
Struct merupakan keyword yang memungkinkan untuk membuat sebuah
deklarasi untuk membuat pengelompokan variabel dengan tipe data yang
berbeda. Berikut merupakan cara untuk mendeklarasikan struct.
Struct nama_struct {
tipe_data variabel_1;
tipe_data variabel_2;
...
tipe_data variabel_n;
}nama_objek;
Suatu struct harus diawali oleh keyword struct dan diikuti oleh nama struct.
nama_objek merupakan deklarasi yang menggunakan struct tersebut menjadi
tipe data. Pada suatu program dapat mendirikan banyak objek yang dipisahkan
dengan tanda koma. Objek diletakkan setelah penutup block dan sebelum
semicolon.
#include<iostream>
using namespace std;
struct mahasiswa{
int nim;
string nama;
float nilai;
};
DEPARTEMEN PENDIDIKAN NASIONAL
LABORATORIUM KOMPUTER
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS ANDALAS
int main(){
mahasiswa rudi, rizky; //deklerasi object di luar struct
rudi.nim = 2110953017;
rudi.nama = "Rudi Kurnia";
rudi.nilai = 90.3;
rizky.nim = 2110951025;
rizky.nama = "Rizky Pratama";
rizky.nilai = 75.4;
Member pada class dapat berupa suatu deklarasi data atau sebuah fungsi.
Permission_label dapat berupa salah satu dari private, public, dan protected.
Contoh:
#include<iostream>
using namespace std;
class mahasiswa{
private:
int nim;
string nama;
float nilai;
public:
void printData(){
cout<<"Nama\t: "<<nama<<endl;
cout<<"NIM\t: "<<nim<<endl;
cout<<"nilai\t: "<<nilai<<endl;
}
}anton;
3. Enkapsulasi
Enkapsulasi merupakan cara pembungkusan suatu data atau fungsi yang
menyusun suatu class dan sebagai cara untuk menyembunyikan informasi detail
dari suatu class dalam OOP. Enkapsulasi penting untuk keamanan serta
menghindari kesalahan pada program, pembungkus ini bertujuan untuk
menjaga anggotanya supaya tidak dapat diakses secara sembarang oleh
program lain. Terdapat 3 jenis enkapsulasi yaitu private, protected, dan public.
3.1 Private
Merupakan suatu permission label yang membatasi anggota member hanya
dapat diakses oleh class itu sendiri atau class friend. Jenis ini merupakan
enkapsulasi yang paling ketat.
3.2 Protected
Merupakan suatu permission label yang hanya dapat diakses oleh class itu
sendiri, class friend, dan class turunannya. Suatu class dapat dibuat
berdasarkan class lainnya. Class turunan akan mewarisi sifat-sifat dari kelas
dasarnya. Class turunan dapat mengakses anggota class utamanya jika
menggunakan hak ases terproteksi.
DEPARTEMEN PENDIDIKAN NASIONAL
LABORATORIUM KOMPUTER
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS ANDALAS
3.3 Public
Merupakan permission label yang dapat diakses oleh class apapun, fungsi
utama, dan fungsi lain. Jika suatu classi ingin diakses oleh fungsi utama
maka class tersebut harus memiliki hak akses public.
4. Constructors dan Destructor
Konstruktor biasanya digunakan untuk menginisiasi variabel atau memori
dinamis saat sebuah objek dibuat. Suatu konstruktor dibuat dengan
menggunakan nama yang sama dengan nama classnya. Konstruktor secara
otomatis akan dijalankan saat suatu objek dibuat.
Destruktor merupakan kebalikan dari konstruktor. Destruktor akan dipanggil
ketika program telah selesai dijalankan. Suatu destruktor dibuat dengan nama
yang sama dengan class namun diawali oleh tanda tilde(~).
Contoh
#include<iostream>
using namespace std;
class mahasiswa{
private:
int nim;
string nama;
float nilai;
public:
mahasiswa(); //konstruktor
~mahasiswa(); //destruktor
void printData();
}anton;
5. Inheritance
Inheritance merupakan suatu subclass dari class utam dan mewarisi member-
member dari class utama. Inheritace digunakan untuk menghindari terjadinya
duplikasi pada suatu program.
Pada suatu inheritance terdapat istilah class induk dan class anak. Class anak
akan mewarisi sifat-sifat atau fungsi-fungsi dari kelas induk, namun dengan
batasan tertentu. Selain mewarisi, class anak juga dapat menambahkan
membernya sendiri. Inheritance memiliki bentuk umum sebagai berikut.
class nama_class_anak : penentu_warisan nama_class_induk
DEPARTEMEN PENDIDIKAN NASIONAL
LABORATORIUM KOMPUTER
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS ANDALAS
class induk {
protected:
int panjang, lebar;
public:
void input(float p, float l);
};
return panjang*lebar;
}
};
int main(){
anak persegi_panjang;
persegi_panjang.input(4,3);
cout<<persegi_panjang.luas();
return 0;
}
6. Polimorfisme
Polimorfime merupakan suatu konsep sesuatu yang sama dapat memilii sifat
dan perilaku yang berbeda. Pada OOP, Hal ini berarti bahwa suatu pengenal
data, metode, dan bahkan nama fungsi dapat dibuat dengan nama yang sama
namun untuk kegunaan yang berbeda.
Penggunaan polimorfisme pada C++ dikenal dengan istilah overriding.
Pewarisan pada OOP membuat class anak dari class induk yang memungkinkan
class anak untuk mewarisi isi dari class induk. Jika terdapat fungsi dengan nama
yang sama pada class anak dan class induk lalu fungsi dipanggil melalui objek
dari class anak maka fungsi yang akan dieksekusi merupakan fungsi dari class
anak. Jika ingin memanggil fungsi dari class induk melalui objek anak tersebut
maka menggunakan operator ( :: ) .
Contoh:
#include <iostream>
using namespace std;
class Induk {
public:
void print() {
cout << "Fungsi Induk" << endl;
}
};
void print() {
cout << "Fungsi anak" << endl;
}
};
int main() {
Anak anak1, anak2;
anak1.print();
Output
Output