Rabu, 09 September 2009

Tugas Bhs.Pemograman 2

Nama : Zandhi Yusrianto
NPM : 0834010119
Kelas : C



OOP (Object Oriented Programming)

OOP adalah paradigma pemrograman yang cukup dominan saat ini, karena mampu memberikan solusi kaidah pemrograman modern. Meskipun demikian, bukan berarti bahwa pemrograman prosedural sudah tidak layak lagi .
OOP diciptakan karena dirasakan masih adanya keterbatasan pada bahasa pemrograman tradisional. Konsep dari OOP sendiri adalah, semua pemecahan masalah dibagi ke dalam objek. Dalam OOP data dan fungsi-fungsi yang akan mengoperasikannya digabungkan menjadi satu kesatuan yang dapat disebut sebagai objek. Proses perancangan atau desain dalam suatu pemrograman merupakan proses yang tidak terpisah dari proses yang mendahului, yaitu analisis dan proses yang mengikutinya. Pembahasan mengenai orientasi objek tidak akan terlepas dari konsep objek seperti inheritance atau penurunan, encapsulation atau pembungkusan,
dan polymorphism atau kebanyakrupaan. Konsep-konsep ini merupakan fundamental dalam orientasi objek yang perlu sekali dipahami serta digunakan dengan baik, dan menghindari penggunaannya yang tidak tepat.
Jadi object menurut pemikiran salah kaprah ini adalah control atau widget yang ada dalam pemrograman visual seperti Visual Basic, Visual C#, Delphi, atau visual-visual lainnya. Memang benar, control/widget dalam pemrograman visual merupakan salah satu contoh bentuk dari object. Akan tetapi bukanlah itu yang dimaksud. Karena OOP itu paradigma pemrograman sehingga tidak terkait dengan bahasa apapun. Bahkan kita dapat memrogram dengan paradigma OOP ini dalam bahasa prosedural seperti C walaupun susah.

Dalam OOP ada beberapa fundamental yang harus dimengerti, saya akan menjelaskannya dalam bentuk analogi yaitu tentang makhluk hidup.

Class, class bisa dibilang adalah gambaran karakter dari sebuah benda/object. Sifat-sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
Dalam dunia makhluk hidup ada banyak jenis misalnya kucing, macan, manusia, singa, dan sebagainya. Anggaplah jenis makhluk hidup ini sebagai class. Maka misal kita ambil contoh manusia/orang, orang mempunyai properti nama, tempat tinggal, hobi, dst. Nah ini yang disebut dengan properties. Orang bisa melakukan kegiatan seperti berlari, berjalan, menulis, membaca, dan sebagainya. Ini yang disebut dengan method dalam satu object dalam paradigma pemrograman OOP

Object, merupakan suatu bentuk dari class.
Mengikuti analogi di atas, maka object dari class ORANG adalah Susan, Andi, Sari, Ari. Mereka adalah CONTOH dari class ORANG. Semua dari mereka adalah ORANG yang mempunyai nama, tempat tinggal, dst. Dan bisa berlari, membaca, menulis, dan sebagainya

Inheritance, yaitu salah satu teknis untuk membuat class lebih spesifik.
Contoh dari kasus ini menurut analogi di atas. Misalkan kita akan membuat class yang lebih spesifik dari orang yaitu siswa/student. Maka class ini mempunyai properti tambahan sekolah tempat dia belajar. Akan tetapi, semua properti sebagai orang ada juga pada class siswa ini.

Encapsulation, yaitu mem-pak suatu objek sehingga untuk memakai objek tersebut, kita tidak perlu tahu detail bagaimana suatu action terjadi.
Contoh dalam hal ini, misal si Susan (suatu object) sedang menulis (method). Maka detail dari cara dia menulis (bagaimana otot tangan Susan bekerja untuk menulis, bagaimana sistem saraf pusat Susan memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si Susan sedang menulis.

Polymorphism, yaitu suatu object bisa bertindak lain terhadap message/method yang sama.
Misalkan kita punya satu class orang dan diturunkan menjadi dua class orang_perancis dan orang_inggris. Ketika orang inggris melakukan method berbicara maka yang dilakukan adalah berbicara dengan bahasa inggris, dan ketika orang perancis juga berbicaramaka dia akan menggunakan bahasa perancis. Keduanya melakukan aksi yang sama yaitu berbicara akan tetapi hasilnya lain.

Berikut adalah code untuk analogi tentang class dan object:
#include
#include
using std::string;
using std::cin;
using std::cout;
using std::endl;
 
// class yang menggambarkan ORANG
class Orang
{
public:
// property
string nama;
string alamat;
string hobi;
 
//perintah untuk mengeluarkan info class
virtual void printinfo()
{
cout << "Informasi Object dari ORANG" << endl
<< "Nama:\t" << nama << endl
<< "Alamat:\t" << alamat << endl
<< "Hobi:\t" << hobi << endl;
}
};
 
int main( int argc, char **argv )
{
Orang Susi;
Susi.nama = "Susi";
Susi.hobi = "Memasak";
Susi.alamat = "Bintaro";
 
Susi.printinfo();
return 0;
}

Berikut code tentang inheritance:
#include
#include
using std::string;
using std::cin;
using std::cout;
using std::endl;
 
// class yang menggambarkan ORANG
class Orang
{
public:
// property
string nama;
string alamat;
string hobi;
 
//perintah untuk mengeluarkan info class
virtual void printinfo()
{
cout << "Informasi Object dari ORANG" << endl
<< "Nama:\t" << nama << endl
<< "Alamat:\t" << alamat << endl
<< "Hobi:\t" << hobi << endl;
}
};
 
// class siswa yang merupakan turunan class orang
class Siswa : public Orang
{
public:
// property tambahan
string sekolah;
 
// mengeluarkan perintah orang
virtual void printinfo( )
{
Orang::printinfo();
cout<< endl << "Orang ini adalah SISWA" << endl
<<"Sekolah\t: " << sekolah <

Analogi encapsulation:
#include
#include
using std::string;
using std::cin;
using std::cout;
using std::endl;
 
// class yang menggambarkan ORANG
class Orang
{
public:
 
// property
string nama;
string alamat;
string hobi;
 
//tambahan(utilities)
virtual void printinfo()
{
cout << "Informasi Object dari ORANG" << endl
<< "Nama:\t" << nama << endl
<< "Alamat:\t" << alamat << endl
<< "Hobi:\t" << hobi << endl;
}
 
// method menulis
void menulis()
{
cout << "\n<>" << nama << " menulis." << endl;
otakperintah();
ototimpulse();
tangannulis();
}
 
// detail cara menulis dimasukkan ke private (tidak bisa dipanggil
// dari perintah/scope di luar class itu sendiri
private:
void otakperintah()
{
cout << "\t<>"<<"\tOtak Memerintahkan Menulis"< << "\t<>"<<"\tOtot tangan mendapatkan impulse dr otak untuk menulis"< << "\t<>"<< "\tTangan mulai menulis"<

Berikut code tentang analogi polymorphism:
class Orang
{
public:
 
// property
string nama;
string alamat;
string hobi;
 
//tambahan(utilities)
virtual void printinfo()
{
cout << "Informasi Object dari ORANG" << endl
<< "Nama:\t" << nama << endl
<< "Alamat:\t" << alamat << endl
<< "Hobi:\t" << hobi << endl;
}

// dibuat pure virtual supaya tidak terdefinisi (abstract) dan harus diturunkan
virtual void bicara() = 0;
};
 
class OrangInggris : public Orang
{
public :
virtual void bicara()
{
cout << "I LOVE YOU" << endl;
}
};
 
class OrangPrancis : public Orang
{
public :
virtual void bicara()
{
cout << "J T'AIME" << endl;
}
};
 
int main( int argc, char **argv )
{
 
// Harus pake pointer untuk melakukan polimorfisme di C++
// tipe pointer dalam contoh di bawah tetap Orang*
Orang *pOrgIng = new OrangInggris;
Orang *pOrgPer = new OrangPrancis;
 
// Melakukan perintah yang sama yaitu bicara()
pOrgIng->bicara(); // lihat perintahnya tetep "BICARA"
pOrgPer->bicara(); // lihat perintahnya tetep "BICARA"

delete pOrgIng;
delete pOrgPer;
return 0;
}

Semoga penjelasan saya ini bisa dimengerti, dan HAPPY CODING makhluk hidup, Sekian terima kasih.

0 komentar:

Posting Komentar