1 Pertemuan 17 Polymorphism Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.

Slides:



Advertisements
Presentasi serupa
Pemrograman Berorientasi Objek
Advertisements

Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Object Oriented Programming
Polymorphism Viska Mutiawani, M.Sc.
Inheritance ImamFahrur Rozi.
Object Oriented Programming. Kemampuan untuk memelihara dan mengimplementasikan perubahan di dalam program lebih efektif dan cepatKemampuan untuk memelihara.
Class, Inheritance, Encapsulation & Interface
Pemrograman Berorientasi Obyek Oleh Tita Karlita
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
1 Pertemuan 14 Operator Overloading Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Operator Overloading Pertemuan 20 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Object Oriented Programming Bag.2 Pertemuan 24 Dasar Pemrograman Renni Angreni, S.Kom.
1 Pertemuan 4 ELEMEN DASAR C++ Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Bag.3 Object Oriented Programming Pertemuan 25 Dasar Pemrograman
1 Pertemuan 6 Encapsulation Lanjutan Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Teknik Pemrograman Terstruktur Linked lis & Inheritance 1/12 Pointer (Lanjutan…) Pemrograman Berorientasi Objek.
1 Pertemuan 5 STREAM INPUT/OUPUT Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
1 Pertemuan 1 Algoritma Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
1 Pertemuan 9 Inheritance Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
1 Pertemuan 2 Function & Pointer Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
OPERASI JUMP DAN EXCEPTION HANDLING
Polymorphism Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 5 Tahun : 2008 Versi : 1/0.
Pertemuan 6 PEWARISAN AND POLYMORPHISM
METHODS Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
1 Pertemuan 18 Template Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Polymorphism Pertemuan 9 Matakuliah: M0864/Programming I Tahun: 2009.
Matakuliah : T0044/Pemrograman Berorientasi Obyek
1 Pertemuan 5 Encapsulation Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Pertemuan 10 Constructor dan Destructor
POLIMORFISME.
Pertemuan 5 Balok Keran dan Balok Konsol
1 Pertemuan 7 Review 1 – 6 Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
1 Pertemuan 12 Template Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
1 Pertemuan 13 Pembahasan Kasus Matakuliah: M0462/Programming I Tahun: 2005 Versi: >
1 Pertemuan 12 Polymorphism Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 07 Control Object Lanjutan Matakuliah: T0063/Pemrograman Visual Tahun: 2005 Versi: 1/0.
1 Pertemuan 10 Pemrograman Berorientasi Objek Matakuliah: >/ > Tahun: > Versi: >
Pertemuan 2 SINTAKS BAHASA, TIPE DATA, DAN OPERATOR
POLYMORPHISM, ABSTRACT CLASS DAN INTERFACE
Inheritance Pertemuan 8
Object Oriented Programming.
Pewarisan Disusun Oleh: Reza Budiawan Untuk:
POLYMORPHISM.
Polymorphism Pertemuan 23-24
Inheritance Pertemuan 21
Class dan Objek Lanjutan Pertemuan 18
Object Oriented Programming.
Pertemuan 4 Modularitas
Pertemuan 9 Pemrograman Berbasikan Objek
Pemrograman Berorientsi Objek Pertemuan 15
Matakuliah : M0864/Programming I
Pertemuan 12 Structure Class
Object Oriented Programming
POLYMORPHISM.
Pemrograman Berorientasi Object
Generic Data Type Pertemuan 25
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Matakuliah : M0074/PROGRAMMING II Tahun : 2005 Versi : 1/0
Object Oriented Programming
(Object Oriented Programming)
TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT (OOP)
Teknik OOP Abstract Class & Method, Object Interface dan Polimorfisme
Teknik OOP Abstract Class & Method, Object Interface dan Polimorfisme
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
Transcript presentasi:

1 Pertemuan 17 Polymorphism Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5

2 Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat Membuat diagram / skema sebuah abstract class dengan fungsi virtual (Polymorphism)

3 Outline Materi Polymorphism (pengertian & penggunaan) Early Binding VS Late Binding Trivial Polymorphism True Polymorphism Virtual Method Abstract Class

4 Polymorphism Poly : “many”, morph : “shape” Poly + morph = POLYMORPHISM : “manyshapes” Polymorphism memungkinkan sebuah method yang mempunyai nama yang sama, namun mempunyai aksi (tugas) yang berbeda. (analogi dengan bunglon) Dengan polymorphism dimungkinkan dirancang suatu fungsi yang implementasi detilnya belum ada. (isi fungsi belum ditulis ).

5 Early Binding VS Late Binding Early binding: Pada proses pembuatan program konvensional, pada proses kompilasi kompiler akan mengubah source program ke bentuk file object (.obj), kemudian linker akan menggabungkan (linking / binding) fungsi yang dipakai oleh program dengan library. Proses penggabungan deklarasi fungsi dengan isi fungsi (function body) terjadi pada saat kompilasi disebut early binding. Pada early binding, tugas dari suatu fungsi sudah dapat ditentukan pada saat kompilasi.

6 Early Binding VS Late Binding Late binding: Late binding memungkinkan saat aksi (tugas) suatu fungsi ditentukan pada saat program berjalan (run time), sesuai dengan kebutuhan. Untuk membentuk late binding dibutuhkan virtual method.

7 Trivial Polymorphism Trivial Polymorphism (Polimorfisme semu) merupakan bentuk polymorphism sederhana yang dapat diimplementasikan tanpa harus menggunakan teknik encapsulation dan inheritance. Implementasi dari Trivial Polymorhyms pada C++ adalah function overloading dan operator overloading.

8 Contoh Program /* Program: counter.cpp Purpose: Overloading operator Implementation */ #include class CCounter{ int index; // private default public: CCounter(int i=0) {index = i;} CCounter& operator ++() { if (index<INT_MAX) index++; return (*this); } CCounter& operator --() { if (index>0) index--; return (*this); }

9 CCounter& operator +(CCounter& ctr) { index += ctr.index; return (*this); } CCounter& operator =(CCounter& ctr) { index = ctr.index; return (*this); } friend ostream& operator << ( ostream& os, CCounter& c); }; ostream& operator << (ostream& os, CCounter& c) { os << “Counter content: “; os << dec << c.index << endl; return os; }

10 void main() { CCounter c1, c2, c3; c3 = 10; c1 = 7; c2 = c1++ + c3--; cout << c1 << c2 << c3; }

11 True Polymorphism Merupakan polimorfisme sejati yang pada implementasinya membutuhkan teknik encapsulation dan inheritance. Dengan polymorphism dimungkinkan dibuat suatu fungsi yang generik, yang mampu menangani suatu object baru yang dimasukkan ke dalam sistem melalui teknik inheritance. Implementasi dalam bentuk virtual method (disebut juga function overriding).

12 Virtual Method Virtual Method mempunyai deklarasi (nama, return type, argumen) fungsi yang sama, namun tidak berada pada lingkup class yang sama dan diawali dengan keyword virtual. Suatu class yang mempunyai virtual method, maka compiler akan membuat suatu VMT (Virtual Method Table) yang spesifik untuk class tersebut.

13 Virtual Method terdiri atas 2 jenis: 1.Pure Virtual Method –Virtual Method hanya mendeklarasikan function prototipes saja, dan tidak mempunyai function body (tugas dari fungsi belum didefinisikan). –Suatu class yang mempunyai pure virtual method disebut abstract class. Instance (object) tidak dapat dibuat dari suatu abstract class, karena masih ada fungsi yang tidak mempunyai function body. –Ciri dari pure virtual method adalah pada deklarasi ditulis fungsi() = 0

14 Contoh deklarasi: class abstract { virtual int compare(*item1, *item2) =0; } 2.Squasi Virtual Method –Adalah suatu virtual method yang menyediakan fungsi minimal yang harus dikerjakan oleh suatu method.

15 Contoh Program Polymorphism: //Program : Polymorphism implementation #include // shape is abstract class class CShape { protected : virtual void draw() = 0; // pure virtual public : void drawxy( int x, int y ) { gotoxy( x,y ); draw(); } }; class Ccircle : public CShape { protected : void draw() { cout << “ Circle :: draw() ” ; } };

16 class Csquare : public CShape { protected : void draw() { cout << “ Square :: draw() ” ; } }; class Ctriangle : public CShape { protected : void draw() { cout << “ Triangle :: draw() ” ; } }; class Cline : public CShape { protected : void draw() { cout << “ Line :: draw() ” ; } };

17 void main() { // CShape s; // error!, because CShape is abstract class Cshape * list[4] = { new CCircle, new CSquare, new CTriangle, new CLine }; // call the same function for draw all kind of object for ( int i = 0; I < 4; i++ ) list [i] -> drawxy( 0, i ); }

18 Contoh Program Lainnya: // progam c++ dengan polymorphism #include class FIGURE { public: virtual double area()=0; //pure virtual virtual double keliling()=0; virtual void inputData()=0; }; class Ccircle : public FIGURE { private: double r; protected: void inputData(){

19 cout << "\nEnter radius Lingkaran: "; cin >> r;} double keliling() { return(2*3.14*r);} double area(){ return(3.14*r*r);} }; class Csquare : public FIGURE { private: double sisi; protected: void inputData(){ cout <<"\nEnter sisi Bujursangkar: "; cin >>sisi;} double keliling() { return(4*sisi);} double area() { return(sisi*sisi);} };

20 class Ctriangle : public FIGURE { private: double sisi; protected: void inputData(){ cout <<"\nEnter sisi Segitiga: "; cin >>sisi;} double keliling() { return(3*sisi);} double area() { return(sisi*sisi*sqrt(3)/4);} };

21 void main(){ clrscr(); FIGURE *list[3] ={new Ccircle, new Csquare, new Ctriangle}; for (int i=0; i<3; i++){ list[i]->inputData(); cout area(); cout keliling(); } getch(); }

22 Penutup Untuk dapat Membuat diagram / skema sebuah abstract class dengan fungsi virtual (Polymorphism), mahasiswa membahas tugas pertemuan 17 no 1, 2, dan 3. (diskusikan dalam kelompok)