Object Oriented Pemrograman (OOP)
Karakteristik
Kelas OOP C++
Di
dalam penggunaan konsep pemrograman yang berbasis objek atau yang disebut
Object Oriented Pemrograman(OOP),haruslah memiliki karakteristik.Adapun
karakteristik tersebut adalah memiliki sifat turunan atau pewarisan(inheritance),satu
nama memiliki banyak sifat atau perilaku(polymorphism),pembungkusan sifat
dari objek yang berbeda(encapsulation).
1. Inheritance
Mendefinisikan suatu kelas dan kemudian menggunakannya untuk
membangun hirarki kelas turunan,yang mana masing-masing turunan mewarisi semua
akses kode maupun data kelas dasarnya. Inheritance
memungkinkan programmer untuk "menurunkan" sebuah class menjadi class
lain yang lebih spesifik dan memiliki fungsi yang lebih komplit. Inheritance
merepresentasikan hubungan "seperti" atau "sejenis" (a kind
of).
a) Konsep
·
Suatu kelas dapat diciptakan
berdasarkan kelas lain
·
Kelas baru ini mempunyai sifat-sifat
yang sama dengan kelas pembentuknya,ditambah sifat-sifat khusus lainnya
·
Dengan pewarisan kita dapat
menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus
menulis ulang bagian-bagian yang sama
·
Pewarisan merupakan unsur penting
dalam pemrograman berorientasi objek dan merupakan blok bangunan dasar pertama
penggunaan kode ulang(code reuse)
b)
Pembatasan inheritance
·
Data dan fungsi yang dapat
diwariskan hanya yang bersifat public dan protected
·
Untuk data dan fungsi private tetap
tidak dapat diwariskan.Hal ini disebabkan sifat private yang hanya dapat
diakses dari dalam kelas saja
c)
Sifat inheritance
·
Sifat pewarisan ini menyebabkan
kelas-kelas dalam pemrograman berorientasi objek membentuk hirarki kelas mulai
dari kelas dasar,kelas turunan pertama,kelas turunan kedua dan seterusnya
Contoh Source Kode C++:
#include
<iostream>
using
namespace std;
class
Person // konsep inheritance
{
public:
string profesi;
int usia;
Person():
profesi("unemployed"), usia(18) { }
void display()
{
cout << "Saya adalah
seorang: " << profesi << endl;
cout << "Umur saya
sekarang adalah: " << usia << endl;
walk();
talk();
}
void walk() { cout << "Saya
berasal dari Karangasem" << endl; }
void talk() { cout << "Saya
tinggal di Jimbaran" << endl; }
};
//
class mahasiswax diturunkan dari dasar class Person
class
mahasiswax : public Person
{
public:
void maba() { cout << "Saya
mahasiswa dari Unud" << endl; }
};
//
class Programmer diturunkan dari dasar class Person
class
Programmer : public Person
{
public:
void playProgrammer() { cout <<
"Saya bisa membuat aplikasi" << endl; }
};
int
main()
{
mahasiswax mahasiswa ;
mahasiswa.profesi = "Mahasiswa";
mahasiswa.usia = 18;
mahasiswa.display();
mahasiswa.maba();
Programmer programmerY;
programmerY.profesi =
"Programmer";
programmerY.usia = 23;
programmerY.display();
programmerY.playProgrammer();
return 0;
}
Tanpa inheritance,kelas merupakan
sebuah unit yang berdiri sendiri.Inheritance akan membentuk suatu konsep dimana
jika konsep yang diatas berubah maka perubahan akan juga berlaku pada yang ada
dibawahnya.Manakala suatu kelas menerima warisan,semua anggota data dan fungsi
juga akan menerima warisan,walapun tidak semuanya akan dapat diakses oleh
anggota fungsi dari kelas.
Di dalam C++ penentuan akses pada
inheritance ada tiga macam,yaitu:
1)
Public
Penentuan akses berbasis public
menyebabkan anggota dari public dari sebuah kelas utama akan menjadi anggota
public kelas turunan dan menyebabkan juga anggota protect kelas utama menjadi
anggota protect kelas turunan.Namun,untuk anggota kelas private tetap pada
private kelas utama
2)
Private
Penentu akses berbasis private
menyebabkan anggota public dari kelas utama akan menjadi anggota protect kelas
turunan dan menyebabkan anggota dari kelas utama menjadi anggota protect kelas
turunan.Namun,untuk anggota kelas kelas private tetap pada private kelas utama
3)
Protected
Penentu
akses berbasis protected menyebabkan anggota dari anggota protect dani public
dari kelas utama akan menjadi anggota private dari kelas turunan.Anggota
private dari kelas utama selalu menjadi anggota private kelas utama.
2.
Encapsulation
Ciri penting lainnya dari OOP adalah
encapsulation.Encapsulation adalah sebuah proses dimana tidak ada akses
langsung ke data yang diberikan,bahkan hidden.Jika ingin mendapat data,maka
harus berinteraksi dengan objek yang bertanggung jawab atas dara tersebut.
Berikut ciri dari encapsulation:
1.
Variabel dan method dalam suatu
obyek dibungkus agar terlindungi
2.
Untuk mengakses,variabel dan method
yang sudah dibungkus tadi perlu interface
3.
Setelah variabel dan method
dibungkus,hak akses terhadapnya dapat ditentukan
4.
Konsep pembungkusan ini pada
dasarnya merupakan perluasan dari tipe data struktur
Dua hal dalam enkapsulasi:
1.
Informasi hiding
2.
Menyediakan perantara(method) untuk
mengakses data
Pada intinya,encapsulation adalah
pemisahan antara bagian private dan public pada sebuah objek atau dapat
dipandang sebagai pemisahan antara interface(bagian private) dan
implementation(bagian public).Objek-objek lain yang hendak berinteraksi dengan
objek ini akan mengirimkan sebuah pesan(message) dan objek ini akan mengerjakan
sesuatu dan mengirimkan pesan balik sebagai jawaban jika diperlukan.Keuntungan
utama dari encapsulation tentu saja adalah penyembunyian
implementasi(implewmentation hiding).Dengan implementation hiding,kita dapat
memperbaiki bagaimana objek kita bekerja tanpa harus khawatir bagaimana
menginformasikan perubahan tersebut ke objek-objek yang lain.Selama kita tidak
merubah interface dari objek kita,objek-objek yang lain akan tetap dapat menggunakan
objek kita.
Contoh code C++:
#include <iostream>
#include <conio.h>
using namespace std;
class enkapsulasi
{
public :
char *Nama;
char *NIM;
int nilaiku;
void setNilai(int nilai)
{//methode yang digunakan untuk input
nilaiku=nilai;
}
int getNilai( )
{ // methode yang digunakan untuk
output
return nilaiku;
}
};
int main( )
{
enkapsulasi data; // pembuatan objek class
//input datanya
data.Nama = "I Nyoman Tri Aditya";
data.NIM = "1705551117";
data.setNilai(100);
//output datanya
cout << "Nama = " << data.Nama << endl;
cout << "NIM = " << data.NIM << endl;
cout << "Nilai = " << data.getNilai( );
getch( );
}
3. Polymorphism
Memberikan satu aksi untuk satu nama
yang dipaki bersama pada suatu hirarki kelas,yang mana masing-masing kelas
hirarki menerapkan cara yang sesuai dengan
dirinya.Poly(many)+morph(shape)=POLYMORPHISM:banyak bentuk(many shapes).
Polymorphism sangat berhubungan
dengan konsep inheritance
Implementasi polymorphism dengan 2
cara:
1.
Overloading function: penggunaan
kembali nama fungsi yang sama tapi dengan argument yang berbeda
2.
Overriding function: sebuah fungsi
dalam class turunan yang memiliki nama,return type dan argument function yang
sama dengan fungsi dalam class induk
Konsep
1.Polimorfisme merupakan fitur pemrograman berorientasi objek
yang penting setelah pengkapsulan dan pewarisan,Polimorfisme berasal dari
bahasa Yunani,poly(banyak) dan morphos(bentuk)
2.Polmorfisme menggambarkan kemampuan kode C++ berperilaku
berbeda tergantung situasi pada waktu run(program berjalan)
3.Konstruksi ini memungkinkan untuk mengadakan ikatan
dinamis(juga disebut ikatan tunda,atau ikatan akhir)
4.Kalau fungsi-fungsi dari suatu kelas dasar didefinisikan
ulang atau ditindih pada kelas turunan,maka objek-objek yang dihasilkan hirarki
kelas berupa objek polimorfik
5.Polimorfik artinya mempunyai banyak bentuk atau punya
kemampuan untuk mendefinisi banyak bentuk
Contoh
Source kode C++ :
#include
<iostream>
#include
<conio.h>
using
namespace std;
class
HewanPeliharaan
{
public:
void lucu()
{
cout << " Lucunya hewan
peliharaan"<<endl;
}
virtual void makan()//konsep polymorphism
{
cout << " makan... dibutuhkan
hewan"<<endl;
}
};
class
Jinak : public HewanPeliharaan
{
public:
void lucu()
{
cout<<"lucu dan
jinak"<<endl;
}
virtual void makan()//konsep polymorphism
{
cout<<"diberi makan agar
jinak"<<endl;
}
};
class
Kucing : public Jinak
{
public:
void lucu()
{
cout<<"lucunya
kucing"<<endl;
}
virtual void makan()//konsep polymorphisme
{
cout<<"makanan dibutuhkan
kucing"<<endl;
}
};
int
main()
{
//definisi objek jinak dan kucing puma
Jinak jinak;
Kucing puma;
//definisi poiter ke objek
HewanPeliharaan *hewan;
hewan=&jinak;
hewan->lucu();
hewan->makan();
cout<<"--------------------"<<endl;
getch();
}
*Optional (Java)
4.
Class
Class adalah kumpulan
atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan
tertentu. Sebagai contoh ‘class of dog’ adalah suatu unit yang terdiri atas
definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam
perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan
struktur dalam pemrograman berorientasi objek. Sebuah class secara tipikal
sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan
domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class
sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut
digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah
program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan
melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari
masalah ke sebuah program ataupun sebaliknya.
Contoh source code Java:
class Pegawai {
String nama; // property nama dengan
tipe data String
String nip; // property nip dengan tipe
data String
String jabatan; // property jabatan
dengan tipe data String
}
class AksesClass {
public static void main(String[] args)
{ // awal eksekusi (method main)
Pegawai pgw = new Pegawai(); // membuat
objek dari class Pegawai
pgw.nama = “saya”; // mengisikan
property nama
pgw.nip = “2004470099”; // mengisikan
property nip
pgw.jabatan = “Kabid”; // mengisikan
property alamat
System.out.println(“Nama Pegawai : “ +
pgw.nama); // menampilkan nama
System.out.println(“Nip Pegawai : “ +
pgw.nip); // menampilkan nim
System.out.println(“Jabatan pegawai : “
+ pgw.jabatan); // menampilkan jabatan
}
}
5. Abstraction
Kemampuan sebuah program untuk
melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus
pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku”
abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan
berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana
kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak,
dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
Contoh source kode Java:
abstract class SuperHero {
String
superPowers[];
void
setSuperPowers(String superPowers[]) {
this.superPowers =
superPowers;
}
void printSuperPowers() {
for (int i = 0; i
< superPowers.length; i++) {
System.out.println(superPowers[i]);
}
}
abstract void displayPower();
}
class UnderwaterSuperHero extends SuperHero {
void displayPower() {
System.out.println("Communicate with sea
creatures…");
System.out.println("Fast swimming ability…");
}
}
class FlyingSuperHero extends SuperHero {
void displayPower() {
System.out.println("Fly…");
}
}
}
Komentar
Posting Komentar