Inheritance dan Polimorfisme

dokumen-dokumen yang mirip
Inheritance dan Polimorfisme

PEMROGRAMAN BERORIENTASI OBJEK KONSEP PBO

Classes. class class_name { permission_label_1: member1; permission_label_2: member2;... } object_name;

Pertemuan Pemograman Berorientasi Objek. Obyektif Praktikum : 1. Memahami konsep Object Oriented Programming.

PENGENALAN DAN PENERAPAN OOP PADA C++

PEMROGRAMAN BERORIENTASI OBJEK STRUCTURE & CLASS

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

PEMROGRAMAN BERORIENTASI OBJEK OBJECT

Pointer dan Referensi

Sebagai contoh misalnya akan dibuat kelas turunan Silinder dari kelas dasar Lingkaran, maka dapat dituliskan :

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

Penggunaan Private dan Public dalam C++

Game Technology Design Course College of Multi Media Yogyakarta Spring Tri Anggraeni, S.Kom., M.Sc.

Pemrograman Berorientasi Obyek (C++) Departemen Ilmu Komputer FMIPA IPB 2013

Kurikulum Qt. Chapter 8 - Polymorphism. Polimorfisme. Problema Pewarisan Tunggal (Single Inheritance)

PEMROGRAMAN BERORIENTASI OBJEK

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

Komentar, Identifier, Konstanta dan Variabel

Object Oriented Programming LOGO

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Modul Bahasa Pemrograman 1

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

BAB VIII CLASS ABSTRACT & CLASS INTERFACE. //abstract class bisa, kelas biasa bisa System.out.println("Ini nama");

Fungsi 2. Ekohariadi FT Unesa

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Konsep Array dalam PBO

Kisi-Kisi Ujian Akhir Semester Algoritma dan Pemrograman Lanjut

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

TUGAS RESUME C++ Dosen pembimbing : Taufiqurrahman. Di susun Oleh : Ahmad Faisal Akbar ( ) Ahmad Tarjianto ( )

JOBSHEET 8 INHERITANCE (PEWARISAN)

BAB X. Struct Dalam C++, kita dapat membuat sebuah tipe data baru. Maka penulisan variabel baru kita akan menjadi:

STRUKTUR DENGAN ARRAY DAN FUNCTION

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Bahasa Pemrograman :: Polimorfism and Abstraction

BAB VII PEWARISAN FUNGSI VIRTUAL

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

BAB VII PEWARISAN. Dengan demikian, kesalahan indeks dalam program berikut akan terdeteksi:

Pewarisan atau Inheritance

REVIEW ARRAY. Institut Teknologi Sumatera

Notasi Algoritma Separator Special Character. Dasar Pemrograman. Yoannita, S.Kom.

Inheritance (Pewarisan) Pengertian dasar inheritance

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

MINGGU VI : PBO (LANJUTAN)

Bahasa Pemrograman :: Object Oriented Programming

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

Bahasa Pemrograman Sejarah singkat C++ Struktur program C++ Yoannita

PEMROGRAMAN BERORIENTASI OBJEK. Input / Output. Budhi Irawan, S.Si, M.T

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

STRUKTUR DASAR PEMROGRAMAN

Inheritance dan Kata Kunci static

Konsep Dasar Pemrograman Dan Pengenalan C++

Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita

Abstrak. Pendahuluan. cerita. Pemrograman. mewakili semua. Struktur Bahasa. dan deklarasi. Mari. ilmuti.org Seluruh disertakan dalam

LATIHAN SOAL (FUNGSI & PROSEDUR)

Chapter 9 Operator Types dan Operator Overloading

Paradigma Pemrograman Berorientasi Objek

Kurikulum Qt. Chapter 4 Function. Fungsi

Praktikum Minggu VI 1 dan 2 Dasar-dasar Object Oriented Programming PHP

INHERITANCE. Oleh: Rasim ILKOM-FPMIPA-UPI

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

Pemrograman C++ BAGIAN II PEMROGRAMAN BERORIENTASI OBJEK

FENOMENA ALAM DI DALAM DIMENSI PEMBUATAN PROGRAM DENGAN MENGGUNAKAN OBJECT ORIENTED PROGRAMMING

IKG2I4 / Software Project I

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

P3 Dasar Struktur Data TIF42/SIF42

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Pemrograman Berbasis Objek Inheritance

MINGGU VII : RELASI ANTAR KELAS

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

PEMROGRAMAN BERORIENTASI OBJEK

PENGENALAN FUNGSI C++

POLYMORPHISM. Oleh: Rasim Ilkom- FPMIPA Universitas Pendidikan Indonesia

C V.S. C++ Oleh : Rasim

INTERAKSI ANTAR OBJECT

subclass class manapun private default protected public package yang sama

LAPORAN RESMI. TIPE DATA ABSTRAK (TYPEDEF dan STRUCT)

BAB VI OBYEK DAN KELAS

BAB VI OBYEK DAN KELAS

Fungsi 1. Ekohariadi FT Unesa

Pemrograman Berorientasi Objek (PBO) By : Jeffry Montolalu, ST PERTEMUAN XIII POLYMORPHISM

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

Pemrograman Lanjut. Class, dan Instance Variable. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

Pemrograman Berbasis Objek (Polimorfisme)

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Pemograman Berorientasi Objek

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK MODUL 3 ABSTRAKSI

Inheritance. Topik 5/17/2013

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK

MODUL VI OBJECT ORIENTED PROGRAMMING (OOP)

Transkripsi:

PEMROGRAMAN BERORIENTASI OBJEK Inheritance dan Polimorfisme Budhi Irawan, S.Si, M.T

PENDAHULUAN Apa itu Inheritance, Derived Class, dan Base class? Pasti untuk seorang yang baru mengenal bahasa pemrograman berorientasi objek akan sangat membingungkan. Inheritance adalah sebuah keistimewaan bahasa yang berorientasi objek (PBO) yang tidak hanya C++ tetapi juga bahasa yang lain

KOMPONEN INHERITANCE Inheritance = Pewarisan Derived class = Kelas Turunan Base Class = Kelas Dasar Contoh : class Segitiga : public BangunDatar{ ; Artinya : Class Segitiga adalah derived class (kelas yang diturunkan). Class BangunDatar adalah base class (kelas dasar). Semua yang dimiliki oleh kelas dasar akan dimiliki juga oleh kelas turunannya

KOMPONEN INHERITANCE # include <iostream> using namespace std; class BangunDatar { ; class Segitiga : public BangunDatar{ int main (){ Segitiga segitigasiku; return 0;

INHERITANCE Di dalam inheritance tentu akan muncul pertanyaan mengenai, siapa yang mewariskan? siapa yang di warisi? dan warisannya itu apa? Sama seperti manusia, yang mewariskan adalah orang tua, yang diwarisi adalah anak, warisannya itu bisa berupa sifat dan tampak pisik dari kedua orang tua

BASE CLASS DAN DERIVATED CLASS Dalam PBO yang mewariskan disebut sebagai Base Class, yang diwarisi disebut sebagai Derived Class, dan warisannya itu berupa 'members' dari class yaitu variable dan function. Untuk lebih mudah di pahami, ditunjukan beberapa baris kode, dengan nama Segitiga dan Kotak Segitiga dan Kotak ini sama-sama bangun datar yang memiliki perbedaan bentuk tetapi sama-sama punya lebar dan tinggi.

BASE CLASS DAN DERIVATED CLASS Pertama-tama dibuat kelas pertama yang akan digunakan sebagai base class dan kelas ini kita berikan nama BangunDatar, dibuat member class yang berupa dua variables dan satu fungsi. Variable variable tersebut adalah lebar dan tinggi dengan type data adalah integer (int) dengan access specifier protected. Sedangkan untuk fungsi nya adalah set_values() yang diberikan void dan access specifier nya public.

BASE CLASS DAN DERIVATED CLASS // Inheritance # include <iostream> using namespace std; class BangunDatar { protected : int lebar, tinggi; Public : void set_values (int a, int b){ lebar = a; tinggi = b; ;

BASE CLASS DAN DERIVATED CLASS Sampai di sini pasti ada beberapa pertanyaan, diantaranya adalah Kenapa memakai protected? Kenapa int? Kenapa public? Kenapa void?

BASE CLASS DAN DERIVATED CLASS Protected access specifier akan mem-protect/ melindungi member/variable dari pengakses-san di luar kelas BangunDatar. Bila memiliki kelas lain yang tidak ada hubungannya dengan kelas BangunDatar maka tidak akan bisa mengakses variable ini terlebih mengubah nilainya. Tetapi jika menjadikan kelas lain sebagai Derived Class / Kelas Turunan, maka Kelas turunan tersebut akan memiliki hak akses ke variable dari Base Class ini.

BASE CLASS DAN DERIVATED CLASS Kenapa menggunakan type data int? karena nilai diinginkan masuk ke dalam variable lebar dan tinggi adalah angka (interger) Kenapa public? Tujuannya supaya function /method set_values() ini dapat di akses oleh Kelas apa saja Lalu kenapa void? Karena Function /Method set_values() tidak me-return apa pun, fungsi ini hanya untuk mengeset nilai dari lebar dan tinggi, sehingga cukup memakai void saja

BASE CLASS DAN DERIVATED CLASS Selanjutnya dibuat kelas baru Kotak yang merupakan Derived Class dari kelas BangunDatar. Tanda colon ( : ) / titik dua merupakan tanda inheritance dan kelas yang dibuat ini hanya memiliki member berupa fungsi luas() saja. Tetapi dari fungsi luas ini, kita bisa memanggil variable lebar dan tinggi miliknya kelas BangunDatar dan inilah gunanya inheritance Kelas Kotak ini nantinya akan memiliki semua member dari kelas BangunDatar termasuk fungsi set_values juga.

BASE CLASS DAN DERIVATED CLASS # include <iostream> using namespace std; class BangunDatar { protected : int lebar, tinggi; public : void set_values (int a, int b){ lebar = a; tinggi = b; class Kotak : public BangunDatar{ public : int luas () { return (lebar * tinggi); ;

BASE CLASS DAN DERIVATED CLASS Selanjutnya dibuat kelas Segitiga dengan menggunakan rumus luas segitiga yaitu rumus luas segitiga sama dengan rumus luas kotak dibagi dua. Karena kelas segitiga merupakan kelas turunan dari kelas BangunDatar, jadi tidak perlu membuat / mendefinisikan variable lebar dan tinggi yang baru, cukup menggunakan variable yang sudah ada pada kelas BangunDatar.

# include <iostream> using namespace std; class BangunDatar { protected : int lebar, tinggi; public : void set_values (int a, int b){ lebar = a; tinggi = b; class Kotak : public BangunDatar{ public : int luas () { return (lebar * tinggi); ; class SegiTiga : public BangunDatar public : int luas(){ return (lebar * tinggi / 2); ; BASE CLASS DAN DERIVATED CLASS

BASE CLASS DAN DERIVATED CLASS Selanjutnya kita dibuat sebuah objek baru (bukan variable atau function) yaitu kotakku dan segitigaku yang dibuat dari kelas nya masing masing. Dari objek tadi, dipanggil fungsi dari base class BangunDatar yaitu fungsi set_values dan semua member dari kelas BangunDatar (variable lebar, tinggi, fungsi set_values) akan diturunkan ke derived class nya Setelah di-set nilai untuk panjang dan lebar dari masing masing objek, maka kemudian dipanggil fungsi luas dari masing masing objek tersebut.

MAIN FUNCTION & OBJECT int main (){ Kotak kotakku; Segitiga segitigaku; kotakku.set_values(3,4); segitigaku.set_values(3,4); cout << kotakku.luas() << end; cout << segitiga.luas() << end; Return 0;

BASE CLASS, DERIVATED CLASS, & OBJECT #include <iostream> using namespace std; // Membuat Kelas Bangun Datar class BangunDatar{ protected: int lebar, tinggi; public: void set_values(int a, int b){ lebar = a; tinggi = b; ; // Membuat Kelas Turunan Bangun Datar yaitu Kotak class Kotak: public BangunDatar { public: int luas(){ return (lebar * tinggi); ;

BASE CLASS, DERIVATED CLASS, & OBJECT // Membuat Kelas Turunan Bangun Datar yaitu Segitiga class Segitiga: public BangunDatar { public: int luas(){ return (lebar * tinggi / 2); ; int main(){ Kotak kotakku; Segitiga segitigaku; kotakku.set_values(3,4); segitigaku.set_values(3,4); cout << "Luas Kotak : " << kotakku.luas() << endl; cout << "Luas Segitiga : " << segitigaku.luas() << endl; return 0;

POLIMORFISME Polimorfisme adalah suatu pemrograman yang memiliki banyak bentuk dalam arti gaya penulisan, bentuk penulisan atau ragam penulisan. Polimorfisme meliputi : 1. Pointer to Base Class 2. Virtual Member 3. Abstract Class

POINTER TO BASE CLASS // Pointer to Base Class #include <iostream> using namespace std; // Membuat Kelas CPolygon class CPolygon { protected : int panjang, lebar; public : void set_values (int a, int b){ panjang = a; lebar = b; ; // Membuat Kelas Turunan CRectangle dari Base Class CPolygon class CRectangle : public CPolygon { public : int luas(){ return (panjang * lebar); ;

POINTER TO BASE CLASS // Membuat Kelas Turunan CTriangle dari Base Class CPolygon class CTriangle : public CPolygon { public : int luas(){ return (panjang * lebar / 2); ; int main() { CRectangle Kotak; CTriangle SegiTiga; CPolygon *poly1 = &Kotak; CPolygon *poly2 = &SegiTiga; poly1-> set_values (5,8); poly2-> set_values (5,8); cout << "Luas Kotak : " << Kotak.luas () << endl; cout << "Luas Segi Tiga : " << SegiTiga.luas () << endl; return 0;

FUNGSIVIRTUAL Fungsi Virtual adalah fungsi yang mendukung adanya polymorphic function, artinya fungsi tersebut dapat didefinisikan ulang pada kelaskelas turunannya. Fungsi virtual ini biasanya terdapat pada kelas-kelas dasar, tetapi bisa juga dideklarasikan pada kelas-kelas turunan yang akan dijadikan sebagai kelas dasar bagi kelaskelas lainnya.

FUNGSIVIRTUAL Dalam C++, untuk mendefinisikan fungsi sebagai fungsi virtual adalah dengan menggunakan keyword virtual, yaitu dengan menempatkan didepan pendeklarasian fungsi tersebut. Pendefinsian fungsi virtual yang terdapat pada kelas dasar biasanya tidak begitu berarti artinya kode-kode yang terdapat didalamnya masih bersifat umum.

FUNGSI VIRTUAL // Pointer to Base Class #include <iostream> using namespace std; // Membuat Kelas CPolygon class CPolygon { protected : int panjang, lebar; public : void set_values (int a, int b){ panjang = a; lebar = b; // Membuat Virtual Member virtual int luas(){ return 0; ; // Membuat Kelas Turunan CRectangle dari Base Class CPolygon class CRectangle : public CPolygon { public : int luas(){ return (panjang * lebar); ;

FUNGSI VIRTUAL // Membuat Kelas Turunan CTriangle dari Base Class CPolygon class CTriangle : public CPolygon { public : int luas(){ return (panjang * lebar / 2); ; int main() { CRectangle Kotak; CTriangle SegiTiga; CPolygon *poly1 = &Kotak; CPolygon *poly2 = &SegiTiga; poly1-> set_values (5,8); poly2-> set_values (5,8); cout << "Luas Kotak cout << "Luas Segi Tiga return 0; : " << poly1->luas () << endl; : " << poly2->luas () << endl;

ABSTRACT BASE CLASS Kelas abstrak adalah sebuah kelas yang mempunyai fungsi virtual murni didalamnya, baik satu ataupun lebih. Maka dari itu kita tidak diizinkan untuk melakukan instansiasi terhadap kelas abstrak.

ABSTRACT BASE CLASS // Abstract Base Class #include <iostream> using namespace std; // Membuat Kelas CPolygon class CPolygon { protected : int panjang, lebar; public : void set_values (int a, int b){ panjang = a; lebar = b; // Membuat Pure Virtual Member virtual int luas()= 0;; // Membuat Kelas Turunan CRectangle dari Base Class CPolygon class CRectangle : public CPolygon { public : int luas(){ return (panjang * lebar); ;

ABSTRACT BASE CLASS // Membuat Kelas Turunan CTriangle dari Base Class CPolygon class CTriangle : public CPolygon { public : int luas(){ return (panjang * lebar / 2); ; int main() { CRectangle Kotak; CTriangle SegiTiga; CPolygon *poly1 = &Kotak; CPolygon *poly2 = &SegiTiga; poly1-> set_values (5,8); poly2-> set_values (5,8); cout << "Luas Kotak cout << "Luas Segi Tiga return 0; : " << poly1->luas () << endl; : " << poly2->luas () << endl;