Perbedaan Pemrograman terstruktur dengan Pemrograman Berbasis Objek

Posted: April 6, 2012 in Uncategorized

Tugas 2 PBO

Nama : Joshua Roham

NPM : 53410792

Kelas : 2 IA 13

 

 

Pertama kita harus mengetahui apa itu pemrograman Terstruktur

 

Pemrograman terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program. Prinsip dari pemrograman terstruktur adalah bahwa Apabila kita sudah sampai pada langkah tertentu, kita tidak boleh mengeksekusi langkah sebelumnya. Hal ini dikecualikan pada langkah-langkah untuk proses berulang

Tujuan Pemrograman Terstruktur Tujuan dari pemrograman terstruktur dapat diuraikan sebagai berikut

  • Untuk meningkatkan kualitas dan kehandalan program
  • Untuk memudahkan pemahaman terhadap isi program
  • Untuk menyederhanakan program
  • Untuk maintenance (pemeliharaan) program
  • Untuk meningkatkan produktifitas program Sifat-sifat Pemrograman Terstruktur

Sifat-sifat dari pemrograman terstruktur dapat diuraikan sebagai berikut :

 

  • Memuat teknik pemecahan masalah yang logis dan sistematis
  • Memuat algoritma yang efisien, efektif dan sederhana
  • Program disusun dengan logika yang mudah dipahami
  • Tidak menggunakan perintah GOTO
  • Biaya pengujian program relatif rendah
  • Memiliki dokumentasi yang baik
  • Biaya perawatan dan dokumentasi yang dbuthkan relatif rendah

Kemudian Apa itu pemrograman berbasis Objek ?

Pemrograman Berbasis Objek

• Konsep PBO
• Encapsulation
• Inheritance dan Polymorphism
• Constructor dan Destructor
• Operator Overloading
• Friend Function
Pemrograman
Procedural Murni
Objek

Variabel_1
…….
Variabel_n
Konstranta_1
Konstranta_n
Fungsi_1
….
Fungs

Ilustrasi

• Properti : data-data milik objek
contoh : Objek Orang
Properti : nama,berat badan, tinggi,dll
• Method:Perilaku yang dimiliki objek
contoh: berjalan,makan,marah,dll
• Event: Kejadian yang menimpa objek
contoh: dipukul,lapar,mengantuk,dll
>>> Model Pemrograman Property_method_event
‘Ketika lapar(event),orang melakukan pekerjaan yaitu makan(method)
• Konsep utama pemrograman berorientasi objek yaitu melakukan permodelan objek dari kehidupan nyata ke dalam tipe data abstrak.
Pemrograman berorientasi objek merupakan konsep pemrograman untuk memodelkan objek yang kita gunakan dalam kehidupan sehari-hari, dan konsep ini membawa perubahan yang mendasar dalam konsep pemrograman terstruktur
Perubahan dramatis dalam konsep dasar disebut paradigma, banyak orang yang menyebut “paradigma OOP” karena memang OOP membawa konsep yang sama sekali berbeda
dengan bahasa pemrograman generasi sebelumnya (bahasa pemrograman terstruktur).
Setiap objek dalam kehidupan nyata dapat kita pandang sebagai kelas, misalnya kelas Hewan, kelas Manusia,kelas Mobil.
• Objek dari kelas tersebut misalnya sapi dan ayam untuk kelas Hewan
• Budi dan Tono untuk kelas Manusia
Kesimpulan
Dengan OOP, kita dapat mengimplementasikan objekt data yang tidak hanya memiliki ciri khas (attribut), melainkan juga memiliki metode untuk memanipulasi attribut tersebut. Singkatnya, OOP memiliki keunggulan dari konsep pemrograman terstruktur, selain itu juga memiliki kemampuan untuk mengimplementasikan objek dalam kehidupan nyata

Struktur Kelas
• Sebagai langkah pertama dalam OOP akan kita bahas pendefinisian kelas di C++. 1.2
• Penulis telah mencontohkan beberapa kelas yang lazim kita temui dalam kehidupan sehari-hari. Amati contoh lain dari kehidupan kita, dengan mendeklarasikan sebuah kelas bernama BilanganRasional :

Contoh:Sebuah kelas :Bilangan Rasional
• class BilanganRasional
• {
• public :
• void assign (int,int);
• void cetak();
• private :
• int pembilang, penyebut;
• };
Penjelasan
• Perhatikan contoh di atas. Untuk mendefinisikan sebuah kelas, dipakai kata kunci class, diikuti dengan pendeklarasian nama kelas tersebut.
• Fungsi assign() dan cetak() disebut member function(member fungsi).
Sedangkan variabel pembilang dan penyebut disebut member data (member data atau member variabel). Disebut member karena kesemuanya merupakan anggota dari kelas BilanganRasional

• Perhatikan kata kunci Public dan Private. Member functions pada contoh di atas dideklarasikan sebagai fungsi global, sedangkan member data dideklarasikan sebagai lokal. Perbedaannya, member global dapat diakses dari luar kelas, sedangkan member lokal hanya dapat diakses dari kelas itu sendiri.
• Sekarang, dimana kita telah menciptakan kelas Bilangan Rasional, kita dapat mendeklarasikan sebuah objek dari kelas BilanganRasional sebagai berikut : BilanganRasional objekBilangan;
• objekBilangan = nama dari objek tersebut, dan BilanganRasional = nama kelas yang ingin kita buat objeknya.
• Proses pembuatan sebuah objek disebut penginstansian (bukan penginstalasian), dan sebuah objek disebut instans (instance) dari sebuah kelas.

class BilanganRasional
{
public :
void assign (int,int);
void cetak();
private :
int pembilang, penyebut;
};
void main()
{
//mendeklarasikan objekBilangan seperti telah dibahas di atas
BilanganRasional objekBilangan;
// member fungsi assign() dipanggil.
objekBilangan.assign (22,7);
// member fungsi cetak() dipanggil.
ObjekBilangan.cetak();
}

void BilanganRasional::assign(int pemb, int peny)
{
pembilang = pemb;
penyebut = peny;
}
void BilanganRasional::cetak()
{
cout<<pembilang<<‘ ‘<}

Ciri OOP
• 1. Inheritance
• 2. Encapsulation
• 3. Polymorphism
1. Inheritance(penurunan sifat)
2. Merupakan ciri Utama OOP
3. Sifat-sifat yang terdapat pada kelas induk (base class) akan dimiliki oleh kelas turunannya(derived class).
4. Tetapi bergantung juga kepada access specifier yang diberikan dalam proses penurunan kelas.

Sifat Access spesifier pada penurunan kelas

• Jika diturunkan sebagai Public, maka:
– Bagian Public yang terdapat pada kelas induk
akan tetap menjadi bagian public pada kelas
turunannya.
– Bagian Protected yang terdapat pada kelas
induk tetap akan menjadi bagian protected pada
kelas turunannya
– Bagian Private yang terdapat pada kelas induk
tetap tidak dapat diakses oleh kelas turunannya

Sifat Access spesifier pada penurunan kelas(lanjut)

• Jika diturunkan sebagai Private, maka:
– Bagian Public yang terdapat pada kelas induk
akan menjadi bagian private pada kelas
turunannya.
– Bagian Protected yang terdapat pada kelas
induk akan menjadi bagian privated pada
kelas turunannya
– Bagian Private yang terdapat pada kelas induk
tetap tidak dapat diakses oleh kelas turunannya

Bentuk Umum Inheritance

Class nama_kelas_turunan : access_specifier nama_kelas_induk{
Tingkat_akses;
deklarasi_data;
……
Deklarasi_fungsi;
…..
};

>>>Access_specifier : keyword public dan private

Inheritance
• Fungsi Virtual
• Kelas Abstrak
• Multiple Inheritance
Encapsulation(Pengkapsulan)
• Proses pembungkusan / penyederhanaan dari beberapa data serta fungsi menjadi sebuah kelas.
• Contoh:
Objek Persegi panjang, di dalamnya terdapat variabel panjang,lebar,fungsi set_sisi(),fungsi get_luas()
Contoh:
Class PERSEGI PANJANG {
int panjang;
int lebar;
public:
void set_sisi(int p, int l) {
panjang = p;
lebar = l;
}
int get_luas() { return panjang * lebar; }
};

Konstruktor

• Sebelumnya kita telah menggunakan member fungsi assign() untuk memasukkan nilai ke dalam member variabel pembilang dan penyebut.
• Sebuah konstruktor melakukan tugas yang sama dengan fungsi assign(), sehingga Anda tidak perlu repot-repot memanggil fungsi assign() untuk setiap objek yang Anda deklarasikan.
• Sebuah konstruktor harus mempunyai nama yang sama dengan kelas
dimana konstruktor tersebut berada, dan dideklarasikan tanpa return value (nilai balik), juga tanpa kata kunci void.

Mari kita kembangkan kelas BilanganRasional yang telah kita bahas sebagai berikut :
class BilanganRasional
{
public :
//KONSTRUKTOR BilanganRasional
BilanganRasional(int pemb, int peny)
{
pembilang = pemb;
penyebut = peny;
}
private :
int pembilang, penyebut;
};
Bandingkan struktur konstruktor dengan fungsi assign() yang di bahas
sebelumnya.
Konstruktor BilanganRasional melakukan tugas yang sama dengan
member fungsi assign().
Bedanya hanya terletak pada pemanggilan fungsi dan konstruktor tersebut.
Jika fungsi assign() harus kita panggil dengan didahului o/ pendeklarasian
sebuah objek, kemudian fungsi dari objek tersebut dipanggil dengan
operator titik disertai nilai yang ingin kita input, misal
BilanganRasional x;
x.assign(22,7);
maka konstruktor cukup dipanggil sebagai berikut :
BilanganRasional x(22,7);
Kedua varian tersebut melakukan hal yang sama, yakni menginitialisasikan
nilai 22 ke member variabel pembilang, dan nilai 7 ke variabel penyebut.

Konstruktor Dengan Initialization Lists
• Penulisan konstruktor dengan daftar initialisasi (initialization lists) merupakan fasilitas yang disediakan oleh C++ untuk menyederhanakan struktur konstruktor. Ini berarti, contoh konstruktor di atas dapat pula ditulis sebagai berikut :
• class BilanganRasional
• {
• public :
• BilanganRasional(int pemb, int peny) : pembilang(pemb),
• penyebut(peny) { }
• private :
• int pembilang, penyebut;
• };
• Contoh di atas menghasilkan fungsi yang sama dengan konstruktor yang kita bahas sebelumnya.

Overloading Constructors
Sama halnya seperti fungsi, constructor juga dapat mempunyai nama yang sama tetapi mempunyai jumlah dan tipe yang berbeda pada parameternya. Pada saat pemanggilan kompiler akan meng-eksekusi yang sesuai pada saat objek class di deklarasikan.
Pada kenyataannya, ketika dideklarasikan sebuah class dan tidak disebutkan constructornya, maka kompiler secara otomatis akan mengasumsikan dua constructor overloaded (“default constructor” dan “copy constructor”).
CopyConstructor

Kita telah mempelajari bagaimana struktur sebuah
konstruktor serta bagaimana membuat objek dari
konstruktor yang telah didefinisikan.Tetapi, coba
Bayangkan bila Anda telah mempunyai sebuah
objek x, kemudian Anda menginginkan membuat
sebuah objek y yang memiliki nilai member data
dan member fungsi yang sama.
Tentu saja Anda dapat mendeklarasikan objek baru
dengan memanggil konstruktor yang sama sebanyak
2 kali :
Contoh:
BilanganRasional x(22,7);
BilanganRasional y(22,7);
Perintah di atas mendeklarasikan 2 objek, yakni x dan y
yang masing-masing memiliki nilai 22 pada member
variabel pembilang dan 7 pada member variabel penyebut.
Akan tetapi, Anda dapat juga mempersingkat kode diatas
dengan perintah berikut :
BilanganRasional x(22,7);
BilanganRasional y(x);
Listing contoh copy constructor

class BilanganRasional
{
public :
BilanganRasional(int pemb, int peny) : pembilang(pemb),
penyebut(peny) { }
//CopyConstructor terdapat disini
BilanganRasional(const BilanganRasional& br) :
pembilang(br.pembilang), penyebut(br.penyebut) { }
private :
int pembilang, penyebut;
};
void main()
{
BilanganRasional x(22,7);
BilanganRasional y(x);
}

Deklarasi CopyConstructor otomatis dipanggil
ketika Anda mengkopi objek x ke objek y.
Perhatikan bahwa x menjadi parameter ketika
kita mendeklarasikan objek y.

Destruktor
Jika kita mendeklarasikan konstruktor untuk membuat sebuah objek, maka kita juga harus mendeklarasikan sebuah destruktor untuk menghapus sebuah objek.
Setiap kelas mempunyai tepat satu destruktor. Jika Anda tidak mendeklarasikan sebuah destruktor dalam sebuah kelas, maka destruktor otomatis akan diciptakan sendiri oleh compiler C++. Destruktor dapat kita definisikan
sendiri dengan simbol ~.

Disarankan untuk mendefinisikan sendiri destruktor walaupun secara otomatis compiler C++ akan mendeklarasikan sebuah destruktor pada saat program Anda dicompile, tetapi dengan mendefinisikan sendiri sebuah destruktor maka Anda mempunyai kontrol penuh
terhadap apa yang dilakukan destruktor dari kelas Anda.
Perhatikan listing di bawah :

class BilanganRasional
{
public :
BilanganRasional() {cout <<“Konstruktor dipanggil\n”;}
//Destruktor dari kelas BilanganRasional
~BilanganRasional() {cout <<“Destruktor dipanggil\n”;}
private :
int pembilang, penyebut;
};
void main()
{
BilanganRasional x;
cout<<“Disini main program\n” ;
}

Dari kedua definisi dan penjelasan diatas dapat disimpulkan bahwa pemrograman terstruktur lebih mudah dalam penggunaannya untuk program sederhana karena jelas strukturnya secara bagian per bagian , serta lebih mudah dalam maintenance dan murah. Namun program tersebut sulit untuk diterjemahkan selain oleh si pembuat program tersebut.

Pemrograman berbasis objek unggul pada kemudahan dalam maintenance karena program hanya merincikan bagian dari  program yang dibutuhkan programer.

selain itu pengubahan program / penambahan dapat dilakukan dengan cara lebih mudah dan efisien.

Pemrograman berbasis objek terbilang sangat sesuai untuk software yang kompleks. Namun disisi lain harga yang cukup mahal dalam pembuatan membuat Pemrograman berbasis objek mendapat sedikit nilai minus.

 

sumber : http://shandy-06shihab.blogspot.com/

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s