Konsep Bahasa Pemograman-BAB 9 – Object Oriented Programming

 

BAB 9

Object-Oriented Programming

1.Pengenalan Object-Oriented Programming

OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi setiap bagian dari suatu permasalahan adalah objek, dan objek itu sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Saya ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.

 

  1. Konsep OOP (Object Oriented Programming)

Sebuah bahasa pemograman dikatakan object oriented program harus memiliki 3 fitur yaitu :

  1. Abstract Data Type(telah dibahas pada bab sebelumnya)
  2. Pewarisan (Inheritance)
  • Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada.
  • Penurunan sifat ini bisa dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah kelas tersebut menjadi semakin spesifik.
  • Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan perilaku khusus dari kelas supernya.
  • Dengan konsep pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang semua kode-kode itu.

 

Tipe data abstrak biasanya disebut kelas (classes).Perumpanan dari kelas (classes) biasanya disebut objek (object).Sedangkan,sebuah kelas yang diturukan biasa disebut derived class atau subclass.Sebuah kelas yang diturunkan dari kelas yang telah diturunkan sebelumnya disebut sebagai superclass atau parent class.Sebuah subprogram yang mendefinisikan operasi pada objek disebut methods.

Message adalah istilah dimana adanya pemanggilan ke method.Keseluruhan kumpulan dari methods sebuag objek biasa dipanggil message protocol atau message interface.Message memiliki 2 bagian yaitu nama dari method dan objek tujuan.Pada kasus yang sederhana,sebuah classs menurunkan seluruh entisitas dari parent.

Inheritance dapat di komplikasikan dengan akses control terhadap enkapsulasi entities

o   Class dapat menyembunyikan entities dari subclass nya

o   Class dapat menyembunyikan entities dari client nya

o   Class dapat menyembunyikan entities dari client nya tetapi memperbolehkan subclass mengakses nya

 

Sebuah class juga  dapat memodifikasi method dari class turunan nya

o   Method yang baru melakukan override terhadap method yang lama

o   Method pada parent di overridden

 

Terdapat tiga cara membedakan dari class parent nya:

1.Class parent dapat mendefinisikan beberapa variabel atau method nya untuk memiliki private

akses, yang berarti mereka tidak akan terlihat oleh kelas turunan nya.

2.Subclass dapat menambahkan variable atau method untuk yang di wariskan dari parent.

3.Subclass dapat memodifikasi sikap dari satu atau banyak method yang diwariskan.

 

Terdapat 2 jenis variable pada sebuah class :

  1. Class variable – dimiliki oleh kelas daripada objek ,untuk itu hanya ada satu salinan untuk kelas .
  2. Instance variable – setiap objek dari suatu kelas memiliki variabel instancenya sendiri yang disimpan pada state objek.Satu-satunya perbedaan yang dimiliki setiap objek dari kelas yang sama hanya terdapat pada state variabel instancenya.

 

Terdapat 2 jenis method pada sebuah class :

  1. Class method – menerima pesan kepada class.
  2. Instance method – menerima pesan kepada objek.

 

Jika suatu class baru menjadi subclass dari sebuah single parent class (kelas induk tunggal),maka proses penurunannya disebut sebgai single inheritance.Namun,jika sebuah kelas memiliki lebih dari satu kelas induk(parent class) maka proses penurunannya disebut multiple inheritance.Ketika jumlah class yang terhubung pada single inheritance,maka hubungan antar keduanya akan ditampilkan pada derivation tree.Sebaliknya,pada multiple inheritance ,hubungan antar keduanya dapat dilihat pada derivation graph.Ada 1 kekurangan dari inheritance yang meningkatkan kemungkinan untuk pengunaan kembali yaitu pembentukan ketergantungan antar kelas pada hierarki inheritance.Contoh penggunaan inheritance pada bahasa pemograman C++ :

 

class base_class {

private:

int a;

float x;

protected:

int b;

float y;

public:

int c;

float z;

};

class subclass_1 : public base_class { … };

//     In this one, b and y are protected and

//     c and z are public

class subclass_2 : private base_class { … };

//    In this one, b, y, c, and z are private,

//    and no derived class has access to any

//    member of base_class

 

 

  1. Dynamic Binding
  • Polymorphic variable dapat di definisikan pada kelas yang dapat melakukan referensi

objek kelas dan objek dari turunan nya

  • Ketika hierarki kelas mengandung kelas yang override method biasanya disebut dengan

polymorphic variable, binding ke method akan dynamic

  • Mengizinkan system software lebih mudah di perpanjang ketika dikembangkan dan

maintenance

  • Abstrak method adalah salah satu yang tidak dimiliki pada definisi (hanya mendefinisikan

protocol)

  • Abstrak kelas memiliki setidak nya satu virtual method
  • Abstrak kelas tidak dapat di instansikan

 

  • Exclusivity dari objek

–          Semua adalah objek

o   Keuntungan : elegant dan purity

o   Kekurangan : lambat pada operasi objek yang sederhana

 

–          Menambah objek untuk menyempurnakan typing system

o   Kelebihan : cepatnya operasi simple objek

o   Kekurangan : hasil yang membingungkan berupa tipe sistem (2 tipe entities)

 

–          Memasukkan gaya imperative typing sistem untuk primitive tetapi membuat semua nya menjadi objek

o   Kelebihan : cepat operasi pada objek sederhana, system typing kecil secara relative

o   Kekurangan : masih membingungkan karena memiliki 2 tipe sistem

 

Jika kelas turunan adalah kelas parent. Maka objek pada kelas turunan harus bersifat sama dengan objek pada kelas parent.Subclass dapat menambah variable dan method dan override method turunan dengan cara compatible

 

  • Single dan multiple inheritance

Multiple inheritance mengizinkan kelas baru untuk di warisi dari 2 atau lebih kelas

–    Kekurangan multiple inheritance :

o   Bahasa dan implementasi yang kompleks

o   Potensial tidak efisien – dynamic binding memiliki biaya lebih disbanding dengan

multiple inheritance

–     Kelebihan :

o   Terkadang sangat diperlukan dan berguna

 

  • Alokasi dan dealokasi objek

–          Jika bersifat ADT, maka dapat di alokasikan dari semua tempat

o   Alokasi dari run-time stack

o   Secara explicit membuat pada heap

–          Jika heap-dynamic referensi dapat melalui pointer atau referensi variable

o   Memudahkan assignment – melakukan referensi ulang secara implicit

–          Jika objek stack dynamic, akan memiliki masalah pada subtype – object slicing

 

3.Implementasi Pembentukan OOP

Terdapat 2 bagian dari pendukung bahasa pemograman untuk OOP yang memunculkan pertanyaan menarik bagi pengguna bahasa pemograman yaitu : ruang penyimpanan untuk instance variable dan pesan dynamic binding kepada methods.

-Ruang penyimpanan untuk data instance

Pada,C++ ,kelas didefinisikan sebagai perpanjangan dari record structutre(kesamaan ini terletak pada pemberian saran struktur penyimpanan untuk variabel instance dari sebuah kelas instance) dari sebuah record.Format inilah yang disebut dengan class instance record (CIR).Struktur dari CIR bersifat statis sehingga hanya dibangun pada waktu kompilasi dan digunakan sebagai sebuah template untuk kreasi pembentukan data dari class instance.Ketika sebuah derivasi terjadi maka CIR dari subclass adalah salinan dari parent class,dengan masukan dari variabel baru instance yang ditambahkan pada akhir.Karena struktur CIR yang statis,akses ke semua variabel instance dapat diselesaikan sama halnya di record,menggunakan constant offset dari permulaan CIR .Hal ini membuat akses menjadi lebih efisien pada bidang records.

Dynamic Binding pada methods
Metode dalam kelas yang statis terikat kebutuhan tidak terlibat dalam CIR; metode yang akan secara dinamis terikat harus memiliki entri dalam CIR Panggilan untuk secara dinamis metode terikat dapat dihubungkan ke kode yang sesuai melalui pointer di CIR Struktur penyimpanan kadang-kadang disebut maya metode tabel (vtable) panggilan metode dapat direpresentasikan sebagai offset dari awal vtable

 

Oleh Kelompok 12

Referensi  Bab 9 :

Leave a Reply

Your email address will not be published. Required fields are marked *