Polymorphism Pertemuan 23-24

Slides:



Advertisements
Presentasi serupa
Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Advertisements

Object Oriented Programming
Polymorphism Viska Mutiawani, M.Sc.
Overriding, Overloading, Polymorphism
Overriding, Overloading, Polymorphism
POLIMORFISME 2 Imam Fahrur Rozi 01.
OPERATOR OVERLOADING The ability to provide the operators with a special meaning for a data type but its original meaning is not lost. Example: Operator.
Pemrograman Berorientasi Obyek Oleh Tita Karlita
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
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.
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
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.
STREAM INPUT/OUPUT Pertemuan 4 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
1 Pertemuan 17 Polymorphism 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
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
Polymorphism Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 5 Tahun : 2008 Versi : 1/0.
Fungsi, Array dan String
Try, Catch, Finally Throws
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.
Struktur Kendali Pengulangan Pertemuan 6 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
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
Matakuliah : T0456 / Algoritma dan Metode Object
Algoritma sorting dasar (lanjutan) Pertemuan 11
POLIMORFISME.
1 Pertemuan 8 Array & Pointer of Class 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 12 Polymorphism Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 10 Pemrograman Berorientasi Objek Matakuliah: >/ > Tahun: > Versi: >
Pengertian Algoritma Pemrograman Pertemuan 1
Outline: Pewarisan/Inheritance Polymorphism
POLYMORPHISM, ABSTRACT CLASS DAN INTERFACE
@kovazzevic | SMKN 24 Jakarta
Inheritance Pertemuan 8
Pewarisan Disusun Oleh: Reza Budiawan Untuk:
Constructor dan Destructor Pertemuan 17
Inheritance Pertemuan 21
Class dan Objek Lanjutan Pertemuan 18
Pertemuan 9 Pemrograman Berbasikan Objek
Sumber : repository.binus.ac.id/content/T0454/T ppt
Konsep Dasar Pemrograman Berorientasi Objek
Pemrograman Berorientsi Objek Pertemuan 15
Structure Data - Struct Pertemuan 8
Matakuliah : M0864/Programming I
Inheritance lanjutan Pertemuan 22
POLYMORPHISM.
Generic Data Type Pertemuan 25
Matakuliah : M0074/PROGRAMMING II Tahun : 2005 Versi : 1/0
Object Oriented Programming
INTRODUCTION TO C++
INTRODUCTION TO C++
(Object Oriented Programming)
Pemrograman Berbasis Objek
Teknik Pemrog. Terstuktur 2
Teknik OOP Abstract Class & Method, Object Interface dan Polimorfisme
Teknik Pemrog. Terstruktur 2
Teknik OOP Abstract Class & Method, Object Interface dan Polimorfisme
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
Transcript presentasi:

Polymorphism Pertemuan 23-24 Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007 Polymorphism Pertemuan 23-24

Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menguraikan konsep trivial polymorphism dan true polymorphism Mahasiswa dapat menunjukkan hubungan antara antara abstract class dengan fungsi virtual (Polymorphism) Buku Referensi: C++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: http://www.deitel.com 3 Bina Nusantara

Outline Materi Pengertian dan penggunaan Early dan Late Binding Trivial Polymorphism True Polymorphism Virtual Method Abstract Class 4 Bina Nusantara

Definisi 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 ). Bina Nusantara

Polymorphism Trivial Polymorphism True Polymorphism Disebut juga overloading function Parameter function beda. True Polymorphism Disebut juga overriding function Parameter function sama. Implementasi dalam inheritance Memungkinkan suatu class memiliki function tanpa isi/tugas fungsi. Bina Nusantara

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. Bina Nusantara

Early Binding VS Late 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. Bina Nusantara

Early Binding VS 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. Bina Nusantara

Early vs Late Binding Early Binding Function didefinisikan saat dilakukan kompilasi Telah dibuat link yang fixed (tetap) antara header function dan isi function Late Binding Function dapat didefinisikan saat eksekusi (run-time) Compiler membuat Virtual Method Table yang akan dipilih sesuai kebutuhan saat aplikasi dijalankan. Implementasi : dengan menggunakan virtual keyword Bina Nusantara

C++ Compiler Compile Link/Bind Execute Hello.cpp *.h (header file) Hello.obj Hello.exe Execute Hello Application ... Press any key to continue Bina Nusantara

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). Bina Nusantara

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. Bina Nusantara

Virtual Function Squasi Virtual Function Pure Virtual Function Virtual Function dengan isi fungsi. Pure Virtual Function Virtual Function tanpa isi fungsi. Menyebabkan suatu class menjadi abstract class Abstract class  class yang tidak dapat dijadikan object, karena mangandung pure virtual function yang memiliki function tanpa badan/isi fungsi. Constructor tidak dapat dijadikan virtual Destructor dapat dijadikan virtual Bina Nusantara

Pure Virtual Function Example class Shape{ public: virtual void draw() = 0; } class Triangle: public Shape{ void draw(){ cout<<“Triangle”; }; Void main{ Shape *ptr; Triangle Obj2; Shape Obj1; //ERROR } Bina Nusantara

Polymorphism Example Overloaded Overridden class Bird{ public: void peep(){ ... }; void peep(int song){ void fly(){ } class Eagle: public Bird{ Overloaded Overridden Bina Nusantara

True Polymorphism Example class Shape{ public: void show(){ cout<<“Shape”; }; virtual void draw(){ } class Triangle: public Shape{ cout<<“Triangle”; void draw(){ Void main{ Shape *ptr; Triangle Obj; ptr = &Obj; ptr->show(); //Shape ptr->draw(); //Triangle } Bina Nusantara

Contoh Program Polymorphism: //Program : Polymorphism implementation #include <conio.h> // 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 { void draw() { cout << “ Circle :: draw() ” ; } Bina Nusantara

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

// error!, because CShape is abstract class 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 ); } Bina Nusantara

Diskusi dan Tanya Jawab Latihan soal 21 Bina Nusantara