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

dokumen-dokumen yang mirip
Classes. class class_name { permission_label_1: member1; permission_label_2: member2;... } object_name;

Pertemuan Function. Obyektif Praktikum : 1. Mengerti konsep dasar penggunaan Function

Inheritance dan Polimorfisme

3. Struktur Perulangan dalam Bahasa C++

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

Pertemuan Arrays. Obyektif Praktikum : 1. Memahami penggunaan Array. 2. Dapat menerapkan array dengan elemen multidimensi

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

BAB VI OBYEK DAN KELAS

BAB VI OBYEK DAN KELAS

Pemrograman Lanjut Review Class dan Object PTIIK

Pemrograman Lanjut. Constructor. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

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

INTERAKSI ANTAR OBJECT

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK KONSEP PBO

Pemrograman Lanjut. Class : Deeper Look 2

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD

Variabel Class. Pertemuan 5

C#, Programming, Object-oriented. Pengenalan C# Erick Pranata. Edisi I

Michael Lionardi

PEMROGRAMAN BERORIENTASI OBJEK

MODUL 1. Class, Object, Constructor dan Method

Pemrograman Berorientasi. Class dan Obyek 2

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

4. Arrays. int billy [5]; maka setiap elemen array billy akan di-inisialisasikan sebagai 0 :

Bahasa Pemograman II. Object Oriented Programming

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

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

Modul II Object Oriented Programming

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

Pertemuan 11 Object Oriented Program

FUNCTIONS. Function adalah satu blok instruksi yang akan dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

Praktikum 3 Konsep Class, Attribute dan Method

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

PERTEMUAN 2 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Membuat dan Menggunakan Class

Bahasa Pemrograman 2.

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

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

Pemrograman Dasar M E T H O D / F U N G S I

Kurikulum Qt. { Basic OOP } Chapter 4. Function

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

Kurikulum Qt. { Basic OOP } Chapter 6. Class dan Object

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

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

Algoritma Pemrograman [BS204]

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

MODUL 1 PENGENALAN OOP

MODUL 2 Constructor. Tujuan: Mahasiswa dapat mengenal dan memahami konsep constructor dan overloading constructor

BEKERJA DENGAN JAVA CLASS LIBRARY

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

MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK

STRUKTUR DENGAN ARRAY DAN FUNCTION

Bab 8. Dasar-Dasar OOP

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

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

Inheritance dan Kata Kunci static

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Function. // function example. #include <iostream.h> int addition (int a, int b) { int r; r=a+b; return (r); }

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

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

MODUL 1 PENGENALAN ENVIROMENT C++

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Pengenalan pemrograman berorientasi obyek

SUB PROGRAM (FUNGSI)

Object Oriented Programming LOGO

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

BAB 3 PERULANGAN DAN FUNGSI

Pemrograman Web. Object Oriented Programming in PHP 5

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

Komentar, Identifier, Konstanta dan Variabel

MODUL PRAKTIKUM I PEMOGRAMAN BERORIENTASI OBJEK DENGAN PHP

Fungsi : Dasar Fungsi

MODUL 3. Classes and Objects (part I)

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

PERTEMUAN 3 OBJEK DAN CLASS

Dasar-Dasar OOP di Java

Konsep Dasar Pemrograman Berorientasi Objek

Class C++ Dasar. Harimurti Widyasena Deklarasi dan Definisi

Penggunaan Private dan Public dalam C++

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

Dasar Pemrograman Java

Dasar-Dasar OOP di Java

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

Untuk mengurangi pengulangan program yang sama agar program menjadi terstruktur, rapi dan lebih mudah dikembangkan.

Pointer. ted = &andy;

Kurikulum Qt. Chapter 4 Function. Fungsi

Struktur Kontrol. Contoh, Akan tercetak x is 100 jika nilai yang disimpan pada variable x adalah 100:

PROCEDURE DAN FUNCTION

Transkripsi:

Pertemuan 7 7. Pemograman Berorientasi Objek Obyektif Praktikum : 1. Memahami konsep Object Oriented Programming. 2. Mengerti apa itu kelas, konstruktor dan desktruktor. 3. Dapat membedakan penggunaan batasan akses seperti private, public, dan protected terutama pada penerapan inheritance dan poly.

P.7.1 Kelas Class adalah metode logical untuk organisasi data dan fungsi dalam struktur yang sama. Class dideklarasikan menggunakan keyword class, yang secara fungsional sama dengan keyword struct, tetapi dengan kemungkinan penyertaan fungsi sebagai anggota, formatnya sbb : class class_name { permission_label_1: member1; permission_label_2: member2;... object_name; Dimana class_name adalah nama class(user defined type) dan field optional object_name adalah satu atau beberapa identifier objek yang valid. Body dari deklarasi berisikan members, yang dapat berupa data ataupun deklarasi fungsi, dan permission labels (optional), dapat berupa satu dari tiga keyword berikut : private:, atau protected:. Digunakan untuk menentukan batasan akses terhadap members yang ada : private, anggota class dapat diakses dari danggota lain pada kelas yang sama atau dari class "friend". protected, anggota dapat diakses dari anggota class yang sama atau class friend, dan juga dari anggota class turunannya(derived). public, anggota dapat diakses dari class manapun. Default permission label : private Contoh : int x, y; void set_values (int,int); int area (void); rect; Deklarasi class CRectangle dan object bernama rect. Class ini berisi empat anggota: dua variable bertipe int (x and y) pada bagian private (karena private adalah default permission) dan dua fungsi pada bagian public : set_values() dan area(), dimana hanya dideklarasikan propotype_nya. Perhatikan perbedaan antara nama classdan nama object. Pada contoh sebelumnya CRectangle adalah nama class(contoh, user-defined type), dan rect adalah object dari tipe CRectangle. Sama halnya dengan deklarasi berikut : int a; int adalah nama class (type) dan a adalah nama object(variable). Hal baru dari contoh diatas adalah operator :: dari lingkup yang disertakan dalam pendefinisian set_values(). Digunakan untuk mendeklarasikan anggota dari class diluar class tersebut. Scope operator (::) menspesifikasikan class dimana anggota yang dideklarasikan berada, memberikan

scope properties yang sama seperti jika dideklarasikan secara langsung dalam class. Perhatikan pemanggilan rect.area() tidak memberikan hasil yang sama dengan pemanggilan rectb.area(). Ini disebabkan karena objek dari class CRectangle mempunyai variable sendiri, x dan y, dan fungsi set_value() dan area(). Constructor dan destructor Objek biasanya memerlukan inisialisasi variable atau menentukan memori dinamik selama proses untuk mencapai hasil akhie yang diharapkan dan menghindari pengembalian nilai yang tidak diharapkan. Untuk mengatasinya dapat digunakan fungsi spesial : constructor, yang dapat dideklarasikan dengan pemberian nama fungsi dengan nama yang sama untuk class. Fungsi dari constructor ini akan dipanggil secara otomatis ketika instance baru dari sebuah class dibuat. Hasil dari contoh diatas sama seperti contoh sebelumnya. Dalam hal ini, hanya menggantikan fungsi set_values, yang sudah tidak ada dengan class constructor. Perhatikan cara parameter diberikan ke constructor pada saat instance class dibuat : CRectangle rect (3,4); CRectangle rectb (5,6); Destructor berfungsi kebalikannya. Secara otomatis akan dipanggil jika objek di keluarkan dari memory, ataupun karena keberadaannya telah selesai (contoh : jika didefinisikan sebuah objek local dalam function dan function tersebut selesai) atau karena merupakan objek yang secara dinamis ditetapkan dan dikeluarkan dengan menggunakan operator delete. Destuctor harus mempunyai nama yang sama dengan class, diberi awalan tile (~) dan tidak mengembalikan nilai. Overloading Constructors Sama halnya seperti fungsi, constructor juga dapat mempunyai nama yang sama tetapi mempunyai jumlah dan tipe yang berbeda pada parameternya. Pada saat pemanggilan kompiler akan meng-eksekusi yang sesuai pada saat objek class di deklarasikan. Pada kenyataannya, ketika dideklarasikan sebuah class dan tidak disebutkan constructornya, maka kompiler secara otomatis akan mengasumsikan dua constructor overloaded ("default constructor" dan "copy constructor"). Contoh : class CExample { int a,b,c; void multiply (int n, int m) { a=n; b=m; c=a*b; ; ; Jika tanpa constructor, Kompiler secara otomatis mengasumsikan anggota-anggota fungsi constructor berikut : Empty constructor Merupakan constructor tanpa parameters didefinisikan sebagai nop (blok instruksi kosong). Tidak melakukan apapun. CExample::CExample () { ; Copy constructor

Merupakan constructor dengan satu parameter dengan tipe yang sama yang ditetapkan untuk setiap anggota variable class nonstatik objek yang disalin dari objek sebelumnya. CExample::CExample (const CExample& rv) { a=rv.a; b=rv.b; c=rv.c; Penting untuk mengetahui, bahwa kedua constructor default : empty construction dan copy constructor ada jika tidak ada constructor lain yang dideklarasikan. Jika terdapat constructor dengan sejumlah parameter dideklarasikan, maka tidak satupun dari constructors default ini ada. Contoh diatas rectb dideklarasikan tanpa parameter, sehingga diinisialisasikan dengan constructor tanpa parameters, yang mendeklarasikan width dan height dengan nilai 5. Perhatikan jika dideklarasikan objek baru dan tidak diberikan parameter maka tidak diperlukan tanda kurung (): CRectangle rectb; // right CRectangle rectb(); // wrong! Relationships between classes Friend functions (friend keyword) Terdapat tiga akses berbeda untuk anggota class : public, protected dan private. Untuk anggota protected dan private, tidak dapat diakses dari luar fungsi dimana mereka dideklarasikan. Namun, aturan ini dapat di lewati dengan menggunakan keyword friend dalam class, sehingga fungsi eksternal dapat mengakses anggota protected dan private suatu class. Untuk itu, harus dideklarasikan prototype dari fungsi eksternal yang akan mengakses, Dari fungsi duplicate, yaitu friend dari CRectangle, dapat mengakses anggota width dan height untuk objek yang berbeda dari tipe CRectangle. Perhatikan bahwa dalam deklarasi duplicate() maupun main() tidak dipertimbangkan apakah duplicate merupakan anggota dari class CRectangle. Secara umum keguanaan fungsi friend diluar methodology pemrograman, jadi jika memungkinkan sebaiknya menggunakan anggota dari clas yang sama. Friend classes (friend) Selain dapat mendefinisikan fungsi friend, dapat juga didefinisikan class sebagai friend dari class lainnya, sehingga memungkinkan class kedua dapat mengakses anggota protected dan private class pertama. Pada contoh diatas, dideklarasikan CRectangle sebagai friend dari CSquare, sehingga CRectangle dapat mengakses anggota protected dan private dari CSquare, lebih jelasnya CSquare::side, Mendefinisikan lebar dari kotak. Juga terdapat empty prototype dari class CSquare diawal program. Merupakan hal yang penting karena dalam deklarasi CRectangle mengacu kepada CSquare (sebagai parameter dalam convert()). Pendefinisian CSquare disertakan nanti, jika tidak disertakan pada deklarasi sebelumnya untuk CSquare, maka class ini tidak akan terlihat dalam pendefinisian CRectangle. Inheritance between classes Inheritance memungkinkan kita untuk membuat objek dari objek sebelumnya, sehingga memungkinkan untuk menyertakan beberapa anggota objek sebelumnya ditambah dengan anggota objeknya sendiri. Contoh, membuat class untuk mengetahui apakah segi empat (CRectangle), atau (CTriangle). Masing-masing mempunyai hal yang sama yaitu, dasar dan tinggi. Dapat direpresentasikan dengan class CPolygon

kemudian diturunkan menjadi CRectangle dan CTriangle. Class CPolygon dapat berisi anggota yang dipakai untuk setiap polygon, dalam hal ini width dan height, dan CRectangle dan CTriangle adalah class turunannya. Class turunan akan menurunkan seluruh anggota yang dimiliki oleh class dasar(parent)nya. Jadi jika class paret mempunyai anggota A dan diturunkan pada class lain dengan anggota B,maka clas turunan ini akan memiliki A dan B. Untuk menurunkan class, menggunakan operator : (colon) pada saat deklarasi, syntax : class derived_class_name: public base_class_name; Dimana derived_class_name adalah nama dari derived class dan base_class_name adalah nama dari class asal. public dapat digantikan dengan tipe akses lainnya : protected atau private, Class CRectangle dan CTriangle masing-masing mengandung anggota dari CPolygon, yaitu : width, height dan set_values(). Rangkuman tipe akses dan anggota yang bisa mengaksesnya : Access public protected private members of the same class yes yes yes members of derived classes yes yes no not-members yes no no Dimana "not-members" merepresentasikan referensi dari luar class, seperti dari main(), dari class lain atau dari fungsi lain baik global ataupun local. Pada contoh diatas, anggota yang diturunkan kepada CRectangle dan CTriangle diikuti dengan hak akses yang sama dengan class asalnya, CPolygon: CPolygon::width // protected access CRectangle::width // protected access CPolygon::set_values() // public access CRectangle::set_values() // public access Ini diakibatkan karena menurunkan class sebagai public : class CRectangle: public CPolygon; What is inherited from the base class? Pada dasarnya setiap anggota dari class dasar diturunkan kepada class turunannya, kecuali : Constructor and destructor operator=() member friends

Jika class dasar tidak mempunyai default constructor atau akan melakukan pemanggilan terhadap constructor overloaded ketika objek turunan yang baru dibuat maka dapat dituliskan dalam setiap definisi constructor dari class turunan : derived_class_name (parameters) : base_class_name (parameters) { Terlihat perbedaan mana yang merupakan constructor dari mother yang dipanggil ketika objek daughter dibuat dan ketika objek son dibuat. Perbedaannya disebabkan dari deklarasi untuk daughter dan son: daughter (int a) // nothing specified: call default constructor son (int a) : mother (a) // constructor specified: call this one Multiple inheritance Dalam C++ memungkinkan untuk menurunkan field atau method dari satu atau lebih class dengan menggunakan operator koma dalam deklarasi class turunan. Contoh, akan dibuat class untuk menampilkan dilayar (COutput) dan akan diturunkan ke class CRectangle and CTriangle maka dapat dituliskan : class CRectangle: public CPolygon, public COutput { class CTriangle: public CPolygon, public COutput { P.7.2 Contoh Kasus classes example : // classes example int x, y; void set_values (int,int); int area (void) {return (x*y); ; void CRectangle::set_values (int a, int b) { x = a; y = b; CRectangle rect; rect.set_values (3,4); cout << "area: " << rect.area();

Output : area: 12 class example : // class example int x, y; void set_values (int,int); int area (void) {return (x*y); ; void CRectangle::set_values (int a, int b) { x = a; y = b; CRectangle rect, rectb; rect.set_values (3,4); rectb.set_values (5,6); cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; Output : rect area: 12 rectb area: 30 classes example // classes example int width, height; CRectangle (int,int); int area (void) {return (width*height); ;

CRectangle::CRectangle (int a, int b) { width = a; height = b; CRectangle rect (3,4); CRectangle rectb (5,6); cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; Output : rect area: 12 rectb area: 30 example on constructors and destructors // example on constructors and destructors int *width, *height; CRectangle (int,int); ~CRectangle (); int area (void) {return (*width * *height); ; CRectangle::CRectangle (int a, int b) { width = new int; height = new int; *width = a; *height = b; CRectangle::~CRectangle () { delete width; delete height; CRectangle rect (3,4), rectb (5,6); cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; return 0;

Output : rect area: 12 rectb area: 30 P.7.3 Latihan 1. Carilah output program di bawah ini : // overloading class constructors int width, height; CRectangle (); CRectangle (int,int); int area (void) {return (width*height); ; CRectangle::CRectangle () { width = 5; height = 5; CRectangle::CRectangle (int a, int b) { width = a; height = b; CRectangle rect (3,4); CRectangle rectb; cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; 2. Carilah output program di bawah ini : // friend functions int width, height; void set_values (int, int); int area (void) {return (width * height); friend CRectangle duplicate (CRectangle); ; void CRectangle::set_values (int a, int b) { width = a; height = b;

CRectangle duplicate (CRectangle rectparam) { CRectangle rectres; rectres.width = rectparam.width*2; rectres.height = rectparam.height*2; return (rectres); CRectangle rect, rectb; rect.set_values (2,3); rectb = duplicate (rect); cout << rectb.area(); 3. Carilah output program di bawah ini : // friend class class CSquare; int width, height; int area (void) {return (width * height); void convert (CSquare a); ; class CSquare { private: int side; void set_side (int a) {side=a; friend class CRectangle; ; void CRectangle::convert (CSquare a) { width = a.side; height = a.side; CSquare sqr; CRectangle rect; sqr.set_side(4); rect.convert(sqr);

cout << rect.area(); return 0; 4. Carilah output program di bawah ini : // multiple inheritance class CPolygon { protected: int width, height; void set_values (int a, int b) { width=a; height=b; ; class COutput { void output (int i); ; void COutput::output (int i) { cout << i << endl; class CRectangle: public CPolygon, public COutput { int area (void) { return (width * height); ; class CTriangle: public CPolygon, public COutput { int area (void) { return (width * height / 2); ; CRectangle rect; CTriangle trgl; rect.set_values (4,5); trgl.set_values (4,5); rect.output (rect.area()); trgl.output (trgl.area()); return 0;

5. Carilah output program di bawah ini : // derived classes class CPolygon { protected: int width, height; void set_values (int a, int b) { width=a; height=b; ; class CRectangle: public CPolygon { int area (void) { return (width * height); ; class CTriangle: public CPolygon { int area (void) { return (width * height / 2); ; CRectangle rect; CTriangle trgl; rect.set_values (4,5); trgl.set_values (4,5); cout << rect.area() << endl; cout << trgl.area() << endl; return 0; 6. Carilah output program di bawah ini : // constructors and derivated classes class mother {

mother () { cout << "mother: no parameters\n"; mother (int a) { cout << "mother: int parameter\n"; ; class daughter : public mother { daughter (int a) { cout << "daughter: int parameter\n\n"; ; class son : public mother { son (int a) : mother (a) { cout << "son: int parameter\n\n"; ; daughter cynthia (1); son daniel(1); return 0; P. 7.4 Daftar Pustaka 1. Ayuliana, modul pengenalan bahasa C++, Gunadarma Jakarta, February 2004 2. Hari, Konsep Dasar Objek Oriented Programming, FTI budiluhur Jakarta, 2003 3. r.hubbard, John, schaum's outline of theory and problems of programming with C++ second edition, mcgraw-hill, New York 2000 4. http://www.cplusplus.com/ 5. http://cs.binghamton.edu/~steflik/ 6. http://en.wikipedia.org/wiki/c++