Pemrograman Berorientasi Obyek Abstract Data Type Example (Stack or Queue Problem) Memerlukan data (array atau pointer) dan fungsi-fungsi untuk mengoperasikannya seperti enqueue and dequeue. data dan fungsinya saling ketergantungan menjadi suatu entity yang tak terpisahkan. Entity ini sering disebut sebagai ADT ADT = Abstract Data Structure + Operations (Interface) Dalam perkembangannya dibuatlah sesuatu yang dinamakan class (sejak dibuat C++) Sebuah entity dg properties-nya disebut sebagai abstract data type (ADT). Pemrograman Berorientasi Obyek
Pemrograman Berorientasi Obyek Contoh ADT (segitiga) #include <iostream.h> struct segitiga{ int alas, tinggi; }; double luassegitiga(segitiga pS){ return pS.alas * pS.tinggi * 0.5; Pemrograman Berorientasi Obyek
Pemrograman Berorientasi Obyek Encapsulation Dari kata “kapsul”. Sifat kapsul: isinya bermacam-macam jenis obat Biasanya untuk resep racikan Sifat kapsul: Information hiding Cukup tahu kegunaan, isi tidak perlu tahu secara detail Pemrograman Berorientasi Obyek
Pemrograman Berorientasi Obyek Encapsulation Data dan Fungsi dapat digabung dalam suatu class/object Information Hiding Cukup mengetahui header yang bersifat public dan protected. Tidak perlu mendetail melihat keseluruhan code untuk menggunakannya. Pemrograman Berorientasi Obyek
Pemrograman Berorientasi Obyek Class versus Object Class Global, Virtual, Can’t be accessed or manipulated Template to create object Object Specific/Unique, Real, Can’t be accessed or manipulated Pemrograman Berorientasi Obyek
Pemrograman Berorientasi Obyek Class Member Data Variable (common and user-defined) Constant Array Pointer Static Data Other Class (Nested Class) Function Pemrograman Berorientasi Obyek
Function Example (use struct) #include <iostream.h> struct segitiga{ int alas, tinggi; }; double luassegitiga(segitiga pS){ return pS.alas * pS.tinggi * 0.5; Void main(){ segitiga MyTriangle; MyTriangle.alas=10; MyTriangle.tinggi=5; cout<<luassegitiga(MyTriangle); Pemrograman Berorientasi Obyek
Function Example (use class) #include <iostream.h> class segitiga{ public: int alas, tinggi; double luas(){ return this->alas * this->tinggi; }; Void main(){ segitiga MyTriangle; MyTriangle.alas=10; MyTriangle.tinggi=5; cout<<MyTriangle.luas(); Pemrograman Berorientasi Obyek
Function Prototype (outside class) #include <iostream.h> struct segitiga{ int alas, tinggi; }; double luassegitiga(segitiga); Void main(){ segitiga MyTriangle; MyTriangle.alas=10; MyTriangle.tinggi=5; cout<<luassegitiga(MyTriangle); double luassegitiga(segitiga pS){ return pS.alas * pS.tinggi * 0.5; Pemrograman Berorientasi Obyek
Function Prototype (inside class) #include <iostream.h> class segitiga{ public: int alas, tinggi; double luas(); }; Void main(){ segitiga MyTriangle; MyTriangle.alas=10; MyTriangle.tinggi=5; cout<<MyTriangle.luas(); double segitiga::luas(){ return this->alas * this->tinggi; Pemrograman Berorientasi Obyek
Class Example (case: simple RPG character class) class karakter{ char* name; int level; int life, maxlife; int mp, maxmp; int damage, armor; void attack(); void hit(int lifepoint); void cure(int lifepoint); void levelup(); void usemagic(); void restoremp(int mppoint); }; Pemrograman Berorientasi Obyek