Share Pengalaman Kuliah ( My Inspiration )

Wednesday, May 20, 2015

Abstract Dan Interface Dalam Pemrograman C++

No comments
Abstract Class merupakan Class yang khusus dibuat untuk keperluan inheritance. Tujuan dari pembuatan abstract class ini ialah untuk membuat definisi umum bagi class-class yang akan menjadi turunan darinya.
Abstract Class tidak bisa diinstansiasi. Abstract method tidak mempunyai implementasi, sehingga penulisannya dilakukan hanya dengan mengikutkan semikolon, bukan blok method {} seperti biasanya. Abstract method ini bisa digunakan oleh Class turunannya dengan melakukan override.
Abstract class hanya bisa digunakan sebagai super class, tapi juga bisa diturunkan dari class abstract lainnya. Untuk mendeklarasikan sebuah abstract class digunakan keyword abstract, [abstract] class [class_name] Sebuah abstract class pada dasarnya tidak hauh beda dengan class lainnya, yakni juga berisi method yang menggambarkan carakteristik dari kelas abstract tersebut, bedanya yakni sebuah abstract class bisa berisi method tanpa diimplementasikan artinya sebuah method tanpa body, method seperti ini disebut method abstract.
Ø  Kegunaan Class Abstract
1.      Class Abstract berisi beberapa method dan beberapa method abstract. ClassAbstract berisi sebagian implementasi, dan subclass yang melengkapiimplementasinya. Dengan kata lain Class Abstract memiliki beberapa kesamaan(Bagian yang diimplementasikan oleh subclass) dan memiliki perbedaan(method yang dimiliki sendiri oleh class abstract)
2.      Deklarasikan method abstract, jika ada satu atau lebih subclass yang diharapkanmempunyai fungsionalitas yang sama tapi implementasi berbeda.
3.      Gunakan class abstract untuk mendefinisikan behavior secara umum sebagaisuperclass, sedangkan subclass menyediakan implementasi detail.
4.      Jika class abstract semua method merupakan method abstract, sebaiknya classabstract tersebut diganti menjadi InterfaceAturan menggunakan kelas Abstrak :

5.      Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelasabstrak.
6.      Sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.
7.      Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua methodabstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelaskonkretnya dan diberi detail dari methodnya.
8.      Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak,maka tidak perlu menulis ulang method yang abstrak.

Ø  Konsekuensi penggunaan sifat abstract :
1.      Tidak dapat dibuat constructor yang abstract.
2.      Tidak dapat dibuat method yang static dan abstract (kedua sifat salingkontradiktif).
3.      Tidak diijinkan membuat method yang private dan abstract (kedua sifat ini jugasaling Kontradiktif)

Ø  Contoh Class Abstract
§       Kita dapat menggambar lingkaran, persegipanjang garis, kurva Bezier dan object object graphic lainnya Object tersebut Bezier danobject-object graphic lainnya. Object tersebut mempunyai state tertentu (seperti: position, orientation, line color,  fill color) dan behaviour secara umum(contoh: moveTo, rotate, resize, draw).Beberapastatedanbehaviorini samauntuksemua resize, draw). Beberapastate danbehavior ini sama untuk semua object graphic contoh: position, fill color, and moveTo. Implementasi yang berbeda sebagai contoh resize or draw. Semua Object Graphic harus mengetahui bagaimana cara draw dan resize.
Interface secara filosofis lebih berfungsi sebagai antar muka yang membentuk komunikasi dengan code lain. Misalnya membentuk hubungan antara sebuah object dengan object yang lain atau hubungan antara object sebagai penyedia dengan code pengguna. Karena itulah interface ini banyak digunakan dalam dunia design pattern. Sebab kebanyakan dari design pattern ini menekankan hubungan antar object.
Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant).  Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.

Ø  Implementasi Interface :
§  Bila sebuah class mengimplementasikan suatu interface, maka semua konstantadan method interface akan dimiliki oleh class ini.
§  Method pada interface harus diimplementasikan pada class yang meng-implementasikan interface ini.
§   Bila class yang mengimplementasikan interface tidak mengimplemetasikansemua method dalam interface, maka class tersebut harus dideklarasikan abstract

Ø  Beda interface dengan kelas abstrak :


  1. Kelas abstrak dapat mengandung method abstract maupun method tidak abstract, sedangkan interface hanya boleh mengandung method abstract.
  1. Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface hanya dapat mendeklarasikan konstanta.
  1.  Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan kata kunci extends, sedangkan sebuah interface diimplementasikan ke dalam suatu class dengan menggunakan kata kunci implements, dan sebuah kelas dapat mengimplementasikan lebih dari satu interface.

No comments :

Post a Comment