Object Oriented Programming
& Sejarah OOP
Tahun 1960, ditemukan suatu pembuatan program
yang terstuktur (structure programming). Metode ini dikembangkan dari
bahasa C dan Pascal. Dengan program yang
terstruktur inilah untuk pertama kalinya kita mampu menulis program yang begitu
sulit dengan lebih mudah.
& Definisi OOP
Object Oriented Programming adalah suatu metode dalam
pembuatan program, dengan tujuan untuk
menyelesaikan kompleksnya berbagai masalah program yang terus meningkat.
Sebagai contoh anggap
kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi
data dan lainnya. Misal manager
tersebut ingin memperoleh data dari bagian administrasi maka
manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh
petugas bagian administrasi untuk
mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui
bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data
tersebut melalui objek petugas adminiistrasi.
& Objek dan Kelas
Ø Ide dasar pada OOP adalah
mengkombinasikan data dan fungsi untuk mengakses data menjadi sebuah kesatuan
unit yang dikenal dengan nama objek.
Ø Kelas adalah kumpulan dari beberapa objek yang sama.
&
Kelebihan OOP
OOP memiliki beberapa keuntungan dalam pemrograman,
di antaranya:
Ø
OOP menyediakan struktur modular yang jelas untuk
program sehingga OOP sangat bagus digunakan untuk mendefinisikan tipe data
abstrak di mana detil implementasinya tersembunyi.
Ø
OOP akan mempermudah dalam memaintain dan
memodifikasi kode yang sudah ada. Objek yang baru dapat dibuat tanpa mengubah
kode yang sudah ada.
Ø
OOP menyediakan framework untuk library kode di mana
komponen software yang tersedia dapat dengan mudah diadaptasi dan dimodifikasi
oleh programmer. Hal ini sangat berguna untuk mengembangkan GUI (Graphical User
Interfaces).
&
Kekurangan OOP
Ø
Tidak memperbolehkan implementasi yang kuat pada
reuse
Ø
Properti software tidak terikat dalam satu unit
fungsional, sehingga harus
crosscut di antara komponennya.
crosscut di antara komponennya.
Ø
Crosscut tersebut mengakibatkan sulitnya
pengembangan dan pemeliharaan.
& Konsep dasar OOP
Ø Pengkapsulan
(Encapsulation)
Ø Pewarisan (Inheritance)
Ø Polimorfisme
Ø Pengkapsulan (Encapsulation) Enkapsulation seringkali dianggap sebagai “penyembunyian
informasi”, dapat diartikan juga pengemasan data dan fungsi dalam wadah bernama
objek. Konsep public dan private akan senantiasa dipakai dalam pengkapsulan. Enkapsulation memastikan
pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek
dengan cara yang tidak layak, hanya metode dalam objek tersebut yang diberi
ijin untuk mengakses keadaannya. Contoh program
#include <iostream>
using namespace std;
class Adder{
public:
// constructor
Adder(int i = 0)
{
total = i;
}
// interface to outside world
void addNum(int number)
{
total += number;
}
// interface to outside world
int getTotal()
{
return total;
};
private:
//
hidden data from outside world
int total;
};
int main( )
{
Adder a;
a.addNum(10);
a.addNum(20);
a.addNum(30);
cout << "Total " <<
a.getTotal() <<endl;
return 0;
}
Outputnya:
& Pewarisan
(Inheritance)
Inheritance merupakan sifat dalam bahasa berorientasi objek yang
memungkinkan sifat-sifat dari suatu kelas diturunkan ke kelas lain.
Contoh program
#include <iostream>
using namespace std;
// Base class
class Shape
{
public:
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};// Derived class
class Rectangle: public Shape
{
public:
int getArea()
{
return (width * height);
}
};
int main(void)
{
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
// Print the area of the object.
cout << "Total area:
" << Rect.getArea() << endl;
return 0;
}
Outputnya:
&
Polimorfisme
Polimorfisme merupakan
suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk
dan perilaku yang berbeda. Istilah ini sendiri berasal dari Bahasa Yunani, yang
berarti “mempunyai banyak bentuk”. Contohnya, bila sebuah burung menerima pesan "gerak cepat",
dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan
yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah
pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut.
& Program Pengkapsulan (Encapsulation)
#include <stdio.h>
#include <iostream>
// Deklarasi kelas-kelas
class Kotak
{
protected :
int panjang, lebar;
long luas, keliling;
public
:
Kotak (int Panjang, int Lebar);
int ambil_panjang();
int ambil_lebar();
virtual void hitung(); // metode virtual
void ambil (long& Luas, long& Keliling);
};
class Balok : public Kotak
{
private :
int tinggi;
int volume;
public
:
Balok
(int Panjang, int Lebar, int Tinggi);
int ambil_tinggi();
virtual void hitung(); // metode virtual
void ambil (long& Luas, long& Keliling, long& Volume);
};
// Definisi metode-metode
kelas Kotak
Kotak::Kotak (int Panjang,
int Lebar)
{
panjang = Panjang;
lebar = Lebar;
}
int Kotak::ambil_panjang()
{
return panjang;
}
int Kotak::ambil_lebar()
{
return lebar;
}
void Kotak::hitung()
{
luas = panjang * lebar;
keliling = 2 * (panjang + lebar);
}
void Kotak::ambil
(long& Luas, long& Keliling)
{
Luas = luas;
Keliling = keliling;
}// Definisi metode-metode
kelas Balok
Balok::Balok (int Panjang, int Lebar, int Tinggi):Kotak (Panjang, Lebar)
{
tinggi = Tinggi;
}
int Balok::ambil_tinggi()
{
return tinggi;
}
void Balok::hitung()
{
Kotak::hitung();
volume = panjang*lebar*tinggi;
}
void Balok::ambil(long& Luas, long& Keliling, long& Volume)
{
Kotak::ambil(Luas, Keliling);
Volume = volume;
}
Balok::Balok (int Panjang, int Lebar, int Tinggi):Kotak (Panjang, Lebar)
{
tinggi = Tinggi;
}
int Balok::ambil_tinggi()
{
return tinggi;
}
void Balok::hitung()
{
Kotak::hitung();
volume = panjang*lebar*tinggi;
}
void Balok::ambil(long& Luas, long& Keliling, long& Volume)
{
Kotak::ambil(Luas, Keliling);
Volume = volume;
}
// Program Utama
int main ()
{
Kotak A (12, 3);
Balok B (12, 3, 8);
std::cout << std::endl;
std::cout <<
"Menghitung luas, keliling, dan volume bangun" << std::endl;
std::cout << "==============================================="
<< std::endl;
A.hitung();
long l, k;
A.ambil(l, k);
std::cout << "Kotak
sisi-sisinya : " << std::endl;
std::cout << "Panjang =
" << A.ambil_panjang() << std::endl;
std::cout << "Lebar = "
<< A.ambil_lebar() << std::endl;
std::cout <<
"Memiliki luas " << l <<" dan keliling
"<< k << std::endl << std::endl;
long v;
B.hitung();
B.ambil(l, k, v);
std::cout << "Balok dengan rusuk-rusuknya
: " << std::endl;
std::cout << "Panjang =
" << B.ambil_panjang() << std::endl;
std::cout << "Lebar = "
<< B.ambil_lebar() << std::endl;
std::cout <<
"Tinggi = " << B.ambil_tinggi() << std::endl;
std::cout <<
"Memiliki luas " << l <<", keliling "<< k
<<", dan volume " << v <<std::endl;
std::cout <<
std::endl;
}
Outputnya:
& Kesimpulan
Dengan menggunakan OOP maka dalam melakukan
pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu
masalah tersebut(terstruktur) tetapi objek-objek apa yang dapat melakukan
pemecahan masalah tersebut.








