pemrograman berorientasi objek - · pdf filepemrograman beorientasi objek 1.0 ... evo forum...

50
Pemrograman Berorientasi Objek - regular course - Jl Kebon Jeruk Raya No 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Upload: phungmien

Post on 01-Feb-2018

232 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman

Berorientasi Objek - regular course -

Jl Kebon Jeruk Raya No 78B

Palmerah Jakarta Barat 11480 Ph. +62 21 53671612

www.evopage.com

Page 2: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 2 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Pengantar Evo Training Center adalah sebuah lembaga pendidikan komputer di Jakarta. Evo Training Center berdiri sejak 5 Juli 2005. Evo bergerak di bidang pelatihan komputer yang mempunyai visi untuk menyiapkan sumber daya manusia yang siap pakai dalam masyarakat. Sampai tahun 2007 telah membuka dua buah cabang dan menyerap murid sebanyak kurang lebih 2000 orang dalam waktu dua tahun. Evo mempunyai misi mengembangkan modul-modul materi yang berkualitas di mana sesuai dengan perkembangan teknologi saat ini, melatih dan menyiapkan tenaga-tenaga pengajar yang handal, melakukan revisi dan pembaharuan materi yang ada, dan menyediakan fasilitas-fasilitas yang mendukung. Evo menyediakan berbagai macam training dari programming (C, C++, Visual Basic.NET, Java, SQL), web design dan programming (HTML, CSS, Javascript, PHP, JSP, ASP.NET), design (Macromedia Flash, Adobe Photoshop, 3D Studio Max). Pada tahun 2007, Evo dipercaya oleh Nokia sebagai Nokia Certified Training Center, bekerja sama dengan pihak inTouch untuk mengadakan Mobile Developer Training.

Page 3: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 3 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Daftar Isi Pengenalan Evo Forum ........................................................................................5 BAB 1 Dasar Pemrograman C++ ..............................................................................7

1.1 Pengenalan C++ ...................................................................................7 1.2 Input / Output .....................................................................................7 1.3 Menggunakan format output ....................................................................8

BAB 2 Class (1)................................................................................................ 12 2.1 Review Abstract Data Type.................................................................... 12 2.2 Konsep Encapsulation .......................................................................... 14 2.3 Deklarasi class dan Implementasi class...................................................... 14 2.4 Constructor dan Destructor.................................................................... 17 2.5 Member Initializer .............................................................................. 18

BAB 3 Class (2)................................................................................................ 19 3.1 Overloading Function........................................................................... 19 3.2 Constructor Overloading ....................................................................... 19 3.3 Constructor Copy................................................................................ 21 3.4 Default value .................................................................................... 24 3.5 Static Class Members ........................................................................... 24

BAB 4 Friend Function/Class dan Operator Overloading ............................................... 26 4.1 Friend Function.................................................................................. 26 4.2 Friend Class ...................................................................................... 26 4.3 Apa itu Operator Overloading................................................................. 27 4.4 Cara membuat operator overloading ........................................................ 28 4.5 Penggunaan operator overloading............................................................ 29 4.6 Daftar operator yang bisa/tidak bisa dioverload........................................... 30

BAB 5 Inheritance ............................................................................................ 31 5.1 Konsep Inheritance ............................................................................. 31 5.2 Calling Base Class Constructor ................................................................ 32 5.3 Tipe-tipe inheritance........................................................................... 33 5.5 Multiple Inheritance ............................................................................ 34

BAB 6 Array of Object ....................................................................................... 35 6.1 Array in C++...................................................................................... 35 6.2 Array of Object .................................................................................. 35

BAB 7 Polymorphism ......................................................................................... 36 7.1 Virtual Function ................................................................................. 36 7.2 Abstract Class - Pure Virtual Function ....................................................... 37 7.3 Penggunaan Polymorphism .................................................................... 38

BAB 8 Template Class........................................................................................ 39 8.1 Function Template.............................................................................. 39 8.2 Template Class .................................................................................. 39

Lampiran....................................................................................................... 41 Biografi Penulis ............................................................................................... 46

Page 4: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 4 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Informasi Training............................................................................................ 47

Page 5: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 5 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Pengenalan Evo Forum Evo Training Center sebagai lembaga pelatihan komputer menyediakan berbagai fasilitas untuk membantu peserta training dalam belajar. Untuk itu Evo menyediakan Forum Discussion Board di mana setiap peserta dapat register secara gratis.

Students Instructors

Cara untuk registrasi mudah dapat langsung ke halaman forum dan pilih register atau melalui URL berikut ini: http://www.evopage.com/forum/profile.php?mode=register

EVO FORUM http://forum.evopage.com

COMMUNICATE

Page 6: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 6 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Isi data registrasi kemudian Submit dan anda sudah dapat login.

Setelah itu login dan anda sudah dapat melakukan posting.

Page 7: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 7 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 1 Dasar Pemrograman C++ 1.1 Pengenalan C++ C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C. Perbedaannya adalah C++ merupakan pemrograman berorientasi objek ( Object Oriented Programming ). C++ mendukung tiga fitur utama dari OOP yaitu encapsulation, inheritance, dan polymorphism. Berikut kita akan membahas satu per satu mengenai pemrograman berorientasi objek ini. 1.2 Input / Output Pertama-tama kita mempelajari terlebih dahulu operasi input/output dalam C++. Perhatikan coding di bawah ini. include yang digunakan adalah constrea.h #include <constrea.h> atau #include <iostream.h> #include <conio.h> Pada program akan menampilkan tulisan “Selamat datang” di layar dengan menggunakan objek cout. Untuk mencetak pada posisi x,y tertentu, sebelumnya kita harus membuat objek constream terlebih dahulu. Selanjutnya kita bisa menggunakan fungsi setxy. ctk.clrscr() digunakan untuk membersihkan layar, sedangkan setxy digunakan untuk mengeset posisi kursor pada layar. Untuk meminta input kita menggunakan cin. Berikut ini adalah contoh penggunaan cin untuk meminta input sebuah string (kalimat).

#include <constrea.h> void main() cout << “Selamat datang”; getch();

#include <constrea.h> constream ctk; void main() ctk.clrscr(); ctk << setxy(10,10) << “Selamat datang”; getch();

Page 8: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 8 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

1.3 Menggunakan format output setw dan setfill setw digunakan untuk mengatur jumlah digit/space yang digunakan dalam mencetak. Yang tercetak di layer adalah “ 1”. Angka 1 dicetak dalam 5 digit, 4 digit pertama adalah spasi ( defaultnya adalah spasi ). Yang tercetak di layer adalah “####1”. Angka 1 dicetak dalam 5 digit, 4 digit pertama adalah # ( ditentukan dari setfill ).

#include <constrea.h> constream ctk; void main() char input[21]; ctk.clrscr(); ctk << setxy(10,10) << “Masukkan nama anda : ”; cin >> input; ctk << setxy(10,12) << “Nama anda “ << input; getch();

#include <constrea.h> constream ctk; void main() ctk.clrscr(); ctk << setxy(1,1) << setw(5) << 1; getch();

#include <constrea.h> constream ctk; void main() ctk.clrscr(); ctk << setxy(1,1) << setw(5) << setfill(‘#’) << 1; getch();

Page 9: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 9 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

clreol digunakan untuk menghapus satu baris, mulai dari posisi kursor terakhir. setclr,setbk,endl setclr digunakan untuk mengatur warna teks, sedangkan setbk digunakan untuk mengatur warna background. endl digunakan untuk pindah baris. cin digunakan untuk meminta input. Untuk meminta input string dapat dilakukan dengan hal yang sama, tetapi tidak bisa menerima spasi, tab dan \n. Untuk itu kita gunakan fungsi getline

#include <constrea.h> constream ctk; void main() ctk << setxy(1,1) << clreol; //menghapus 1 baris mulai dari posisi (1,1) getch();

#include <constrea.h> constream ctk; void main() ctk.clrscr(); ctk << setbk(1) << setclr(15) << setxy(1,1) << ”Hello” << endl; getch();

#include <constrea.h> constream ctk; void main() int n; ctk.clrscr(); ctk << “masukkan sebuah angka : “; cin >> n; ctk << setxy(1,20) << “Angka yang dimasukkan adalah “ << n; getch();

Page 10: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 10 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

cin.sync() dan cin.clear() digunakan untuk membersihkan stdin ( input stream ). Sebagai pengganti fflush(stdin) pada pemrograman C. setiosflags dan resetiosflags digunakan untuk bermacam-macam keperluan. Salah satunya bila kita ingin mengeset supaya rata kiri. Program di atas akan menampilkan “1 “. Dengan setiosflags(ios::left) yang dicetak di layar adalah rata kiri. resetiosflags digunakan sebagai kebalikannya yaitu mematikan mode yang telah diset dengan setiosflags. Tabel konstanta ios Konstanta ios Keterangan ios::left Menampilkan rata kiri. Misalkan kita sudah menset jumlah

digit dengan setw. ios::right Menampilkan rata kanan. Misalkan kita sudah menset jumlah

digit dengan setw. ios::scientific Menampilkan dalam bentuk notasi exponensial

contoh : 5.6e+00 ios::fixed Menampilkan kebalikan dari scientific, menampilkan dalam

notasi decimal. contoh : 5.6

ios::dec Menformat keluaran dalam basis 10 ( decimal ) ios::oct Menformat keluaran dalam basis 8 ( octal )

#include <constrea.h> constream ctk; void main() char a[100],b; ctk.clrscr(); ctk << “masukkan sebuah kalimat: “; cin.getline(a,50); cin.sync(); cin.clear(); ctk << “masukkan sebuah huruf: “; cin >> b; getch();

#include <constrea.h> constream ctk; void main() ctk.clrscr(); ctk << setxy(1,1) << setiosflags(ios::left) << setw(5) << 1; getch();

Page 11: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 11 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Konstanta ios Keterangan ios::hex Menformat keluaran dalam basis 16 ( hexadecimal ) ios::uppercase Memformat huruf pada notasi hexadecimal dalam bentuk

huruf capital. ios::showbase Menampilkan base jika bilangan octal maka akan diawali

angka 0, jika hexadecimal diawali dengan angka 0x, sebelumnya harus di set dulu basisnya dengan setbase

ios::showpoint Menampilkan titik decimal pada bilangan pecahan yang tidak memiliki bagian pecahan.

ios::showpos Untuk menampilkan tanda + pada bilangan positif. setprecision untuk digunakan untuk mengeset berapa jumlah angka di belakang yang akan ditampilkan. hex,oct,dec digunakan untuk menampilkan dalam bentuk heksadesimal, oktal atau decimal.

#include <constrea.h> constream ctk; void main() float n = 6.712; ctk.clrscr(); ctk << setxy(1,1) << setprecision(2) << n; getch();

#include <constrea.h> constream ctk; void main() int n = 24; ctk.clrscr(); ctk << setiosflags(ios::showbase); ctk << “dalam hexadecimal: “ << hex << n << endl; ctk << “dalam oktal : “ << oct << n << endl; ctk << “dalam decimal : “ << dec << n << endl; getch();

Page 12: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 12 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 2 Class (1) 2.1 Review Abstract Data Type Yang dimaksud dengan abstract data type adalah membuat tipe data baru dengan menggunakan struct. Bagaimana cara passing sebuah struct ke suatu fungsi. Fungsi di atas menggunakan passing parameter by value. Hal ini tidak bagus performancenya karena data sebesar satu struct harus dicopykan ke variable lainnya. Hal ini dalam C++ ditangani dengan variable reference. Variable reference juga dikenal sebagai alias.

#include <constrea.h> #include <string.h> constream ctk; struct mahasiswa char nim[11]; char nama[21]; ; void main() ctk.clrscr(); struct mahasiswa a; do ctk << “Masukkan NIM [10 digit]: “; cin >> a.nim; while(strlen(a.nim)!=10); do ctk << “Masukkan Nama [max 20 digit]: “; cin >> a.nama; while(strlen(a.nama)==0||strlen(a.nama)>20); ctk << endl << endl; ctk << “NIM : “ << a.nim << “ Nama : “ << a.nama; getch();

void cetak(struct mahasiswa val ) ctk << “NIM : “ << val.nim << “ Nama : “ << val.nama;

Page 13: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 13 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Variabel Reference Pada program di bawah ini kita mendeklarasikan variabel bernama a, kemudian kita membuat variabel reference b sebagai alias / nama lain dari a. Sekarang kita dapat mengakses/mengubah nilainya melalui a ataupun b. Pada program di atas kita mendeklarasikan variabel bernama a, kemudian kita membuat variabel reference b sebagai alias / nama lain dari a. Sekarang kita dapat mengakses/mengubah nilainya melalui a ataupun b. Untuk passing struct ke dalam fungsi dengan menggunakan variabel reference akan lebih cepat karena tidak perlu mengcopy isi variable ke variable lainnya.

#include <constrea.h> void main() int a; int &b = a; //variable reference, harus langsung diinisialisasi cout << b;

#include <constrea.h> #include <string.h> constream ctk; struct mahasiswa char nim[11]; char nama[21]; ; void cetak(struct mahasiswa & val ) ctk << “NIM : “ << val.nim << “ Nama : “ << val.nama; void main() ctk.clrscr(); struct mahasiswa a; do ctk << “Masukkan NIM [10 digit]: “; cin >> a.nim; while(strlen(a.nim)!=10); do ctk << “Masukkan Nama [max 20 digit]: “; cin >> a.nama; while(strlen(a.nama)==0||strlen(a.nama)>20); cetak(a); getch();

Page 14: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 14 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

2.2 Konsep Encapsulation Yang membedakan antara C dan C++ adalah, C++ sudah dapat memenuhi criteria pemrograman berorientasi objek. Ciri-ciri dari pemrograman beorientasi objek adalah :

1. Encapsulation - penggabungan data dan method ke dalam suatu class.

2. Inheritance - pewarisan sifat dari class induk kepada class anaknya.

3. Polymorphism - objek dari sebuah class dapat memiliki implementasi yang berbeda-beda.

Kita akan mempelajarinya satu per satu bagian. Marilah kita membuat sebuah class sederhana. 2.3 Deklarasi class dan Implementasi class Class adalah design, template, atau blue-print. Dari suatu class dapat dibuat banyak objek/instance. Analoginya adalah seperti ini, bayangkan jika anda seorang arsitek, sebelum membangun rumah tentunya akan merancang dulu di kertas, jumlah dan letak pintu, jendela, dan semuanya, itulah class. Kemudian dari gambar rumah tersebut kita dapat membangun banyak rumah sesuai rancangan yang sudah dibuat. Masing-masing rumah jadi tersebut adalah yang disebut dengan objek/instance.

#include <constrea.h> #include <string.h> class Person private: char nama[21]; int umur; public : void setNama(char *s) strcpy(nama,s); void setUmur(int n) umur = n; char * getNama() return nama; int getUmur() return umur; ;

Class

Design Template Blue-print

1st instance

2nd instance

nth instance

Page 15: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 15 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Sekarang kita akan melanjutkannya, class Person yang sudah dibuat akan kita buat objeknya. Dari yang baru saja kita bahas, dapat kita simpulkan bahwa :

1. Sebuah class terdiri dari data dan method. 2. Sebuah class memiliki tipe akses, private yang hanya dapat diakses di class itu sendiri,

public yang dapat diakses di luar class, dan protected yang hanya dapat diakses oleh class itu dan keturunannya.

3. Jika ingin mengubah data yang bersifat private, ubahlah melalui method yang public, sebagai contoh jika kita ingin mengubah umur maka gunakan setUmur.

4. Dari satu Class dapat dibuat banyak objek. Mengapa data dibuat privat ? tentunya tidak dapat diakses dari luar class.

constream ctk; void main() ctk.clrscr(); //membuat objek dari class Person Person a; Person b; a.setNama(“Ali”); a.setUmur(21); b.setNama(“Adi”); b.setUmur(20); //cetak nama dan umur masing-masing ctk << a.getNama() << “ “ << a.getUmur() << endl; ctk << b.getNama() << “ “ << b.getUmur() << endl; getch();

class Person private: int umur; public : void setUmur(int n) if ( n < 0 ) umur=-n; else umur=n; void main() Person a; a.umur = 9; //ERROR: umur sifatnya privat //a.setUmur(9); adalah alternatifnya

Page 16: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 16 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Gunanya kita membuat private adalah information hiding, pengguna dari class tidak bisa langsung mengakses data dalam suatu objek, untuk menjaga agar data selalu valid, bayangkan jika variable umur kita buat public, bisa saja nilai umur di-set dengan nilai negatif ( umur tidak ada yang negatif ), dengan melalui fungsi setUmur kita bisa memberikan alternative penanganan jika hal itu terjadi seperti contoh di atas. Selain itu beberapa fungsi pun dapat dibuat privat, di mana kita ingin fungsi-fungsi tersebut tidak bisa diakses oleh pengguna class, sehingga class dapat dipandang lebih sederhana, karena hanya fungsi-fungsi public saja yang ditampilkan, dan tentunya class menjadi lebih mudah digunakan. Latihan

1. Buatlah sebuah class bernama Titik, memiliki dua buah data yaitu variable x sebagai integer dan y sebagai integer juga. Semua data bersifat private. Untuk mengubah data x dan y, menggunakan fungsi public setX dan setY, untuk mendapatkan nilai x dan y, melalui fungsi getX dan getY. Kemudian class Titik ini mempunyai fungsi translate ( translasi ) di mana memiliki bentuk fungsi sebagai berikut.

Fungsi ini akan menggeser nilai x sebesar vx dan nilai y sebesar vy.

2. Apakah variable reference sudah ada di pemrograman C ?

3. Apa yang dimaksud dengan member data dan member function ?

Private function

Private function

Private function

Public function

user

void translate(int vx,int vy) …..

Page 17: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 17 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Dalam pembuatan class kita dapat membuat implementasi secara terpisah seperti di bawah ini. this->umur digunakan untuk menunjuk ke objek yang aktif, menunjuk umur pada class ( member data ). 2.4 Constructor dan Destructor Constructor Constructor otomatis dipanggil pada saat objek/instance dibuat dari suatu class. Destructor Destructor otomatis dipanggil pada saat objek dihancurkan/dibuang dari memory.

class Person private: int umur; public : void setUmur(int); int getUmur(); ; void Person::setUmur(int umur) this->umur = umur; int Person::getUmur() return umur;

class Person private: char c; public : Person(); //constructor ~Person(); //destructor Person::Person() cout << “constructor dijalankan” << endl; Person::~Person() cout << “destructor dijalankan” << endl; void main() Person a; Person b;

Page 18: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 18 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

2.5 Member Initializer Untuk menginisialisasi data member dapat menggunakan member initializer.

class Titik private: int x,y; public : Titik(int a,int b); //constructor Titik::Titik(int a,int b) : x(a), y(b) void main() Titik p(8,7);

Page 19: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 19 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 3 Class (2) 3.1 Overloading Function Dalam pemrograman C++, developer dapat membuat fungsi yang namanya sama tetapi berbeda parameternya. Hal ini dikenal dengan Overloading Function / Method. Pada program di atas, fungsi cetak yang pertama akan memanggil fungsi cetak yang tanpa parameter, sedangkan cetak(5) digunakan untuk memanggil fungsi cetak dengan parameter sebuah integer. Fungsi yang dipanggil adalah Person::cetak(int n) 3.2 Constructor Overloading Constructor dalam suatu class juga dapat dioverloading. Sebagaimana diketahui secara default sebuah class memiliki 2 buah constructor yaitu Constructor default dan Constructor Copy dan 1 buah destructor. Selain itu kita bisa menambahkan Constructor lagi dengan membedakan parameternya.

class Person private: char c; public : void cetak(); void cetak(int n); void Person::cetak() cout << “Hello” << endl; void Person::cetak(int n) for(int i=0;i<n;i++) cout << “Hello” << endl; void main() Person a; a.cetak(); a.cetak(5);

Page 20: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 20 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Destructor tidak bisa dioverloading. Bentuk pemanggilan constructor adalah dilakukan otomatis pada saat pembuatan objek. Destructor dipanggil pada saat objek dihancurkan (di-unload dari memory). Pembuatan objek dapat dilakukan dengan dua cara, dengan pointer dan tanpa pointer. Urutan pemanggilan constructor menggunakan konsep Stack. Jadi misalkan urutan pembuatan objeknya adalah a,b,c maka destructor yang dijalankan adalah c,b,a. Pada program di atas dibuat tiga buah objek a,b,dan c. Maka constructor yang dipanggil adalah constructor untuk a, b, kemudian c. Pada saat akhir dari program, objek akan dibuang dari memory, destructor yang dijalankan adalah destructornya c, b, baru kemudian a. Jika objek dibuat dalam fungsi, constructornya pun akan tetap dipanggil. Perhatikan kembali program berikut ini dan perhatikan pemanggilan constructor dan destructornya

class Person private: char c; public : Person(); Person(char c); Person::Person() c = ‘ ‘; Person::Person(char c) this->c = c;

void main() Person a; //constructor dijalankan Person *b; b = new Person; //constructor dijalankan b->setName(“John”); //atau (*b).setName(“John”); delete b; //destructor b dijalankan //destructor a dijalankan

void main() Person a,b,c;

Page 21: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 21 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

3.3 Constructor Copy Constructor copy secara default sudah dimiliki oleh suatu class. Namun developer dapat mendefinisikan sendiri constructor copy. Constructor copy dijalankan pada beberapa kondisi yaitu:

1. Initialization 2. Passing parameter by value 3. Function Return

Cara mendefinisikan copy constructor adalah sebagai berikut:

#include <constrea.h> #include <string.h> class Person private: char s[31]; public: Person(char *); ~Person(); ; Person::Person(char *val) strcpy(s,val); cout << s << “ constructor…” << endl; Person::~Person() cout << s << “destructor…” << endl; //Objek global Person global(“global”); void fungsi() Person lokal(“lokal”); static Person statiklokal(“statiklokal”); void main() fungsi();

#include <constrea.h> #include <string.h> class Person private: char s[31]; public: Person(char *); Person(const Person &); //copy constructor ;

Page 22: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 22 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Kapan copy constructor harus didefinisikan ? Sebuah class harus kita buat copy constructornya pada saat di dalam class terdapat variabel pointer dan mempunyai alokasi yang dinamis. Berikut ini adalah class yang tidak membutuhkan pendefinisian copy constructor oleh developer bisa menggunakan default yang sudah ada saja. Tetapi misalkan kita mempunyai class Person di mana namanya panjangnya bisa dinamis. Maka kita definisikan data membernya sebagai pointer. Pendefinisian class-nya adalah sebagai berikut

class A //Without copy constructor private: int x; public: A() A = 10; ~A() ;

class Person //With copy constructor private: char *name; public: Person(); ~Person(); //Copy constructor Person(const Person &b); ;

Person::Person() name = new char[21]; Person::~Person() delete [] name; //Copy constructor Person::Person(const Person &temp) name = new char [ strlen(temp.name)+1 ]; strcpy(name,temp.name); ;

Page 23: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 23 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Initialization Passing parameter by value Function Return

void main() Person a; ... Person b(a); //copy constructor is called Person c = a; //copy constructor is called Person d; //default constructor d=a; //member wise copy, copy constructor is not called

void cetak(Person temp) cout << temp.getName(); void main() Person a; cetak(a); //copy constructor is called

Person get(Person temp) return temp; void main() Person a; Person b; b = get(a); //copy constructor is called

Page 24: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 24 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

3.4 Default value Pada saat membuat constructor dengan parameter (constructor overloading), nilai-nilai dari parameter tersebut dapat diberi nilai default.

3.5 Static Class Members Static class members adalah di mana data/function tersebut merupakan milik class bukan objeknya. Jadi nilainya hanya satu yang bisa digunakan untuk semua objek dari class tersebut. Dari contoh program di atas dapat disimpulkan nilai dari a.n dan b.n adalah sama, karena sebenarnya hanya ada stau variabel. Pengubahan nilai a.n sama saja merubah nilai b.n

class Titik private: int x; int y; public: Titik(int x=0,int y=0); ; Titik::Titik(int x,int y) this->x = x; this->y = y; void main() Titik a; //x=0, y=0 Titik b(5); //x=5, y=0 Titik c(8,9); //x=8, y=9

class SomeClass public: static int n; int m; ; void main() SomeClass a,b; a.n = 10; a.m = 20; b.n = 100; b.m = 40; cout << “a.n = “ << a.n << endl; cout << “a.m = “ << a.m << endl; cout << “b.n = “ << b.n << endl; cout << “b.m = “ << a.m << endl;

Page 25: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 25 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Pada ilustrasi di atas static class member akan ditempatkan di class dan hanya satu, tidak disimpan di dalam masing-masing objek. Nilai static ini digunakan secara bersama-sama untuk semua objek dari class tersebut.

Class n

Object

m

Object

m

Object

m

Page 26: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 26 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 4 Friend Function/Class dan Operator Overloading 4.1 Friend Function Friend Function adalah fungsi bukan anggota kelas yang dapat mengakses anggota kelas. Sebagai contoh perhatikan coding berikut ini. Fungsi cetak bukan merupakan anggota kelas, tetapi fungsi biasa tetapi fungsi ini bisa mengakses data dari class Titik. 4.2 Friend Class Dengan menggunakan friend class, kita dapat membuat suatu class menjadi friend dengan class lain sehingga class tersebut dapat mengakses semua data dalam class tersebut. Dengan menambahkan friend class support; berarti class support adalah teman dari class add dan class support dapat mengakses data dari class add.

class Titik private: int data; public: friend void cetak(const Titik &); ; void cetak(const Titik &p) cout << p.data << endl; void main() Titik a(8,9); //x=8, y=9 cetak(a);

class add private: int x,y; public: add( ) x=y=4;

friend class support; //support is now a friend of add ;

Page 27: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 27 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

4.3 Apa itu Operator Overloading Operator overloading adalah fitur di mana programmer dapat mendefinisikan sendiri arti dari suatu operator terhadap class yang dibuatnya.

class support public: void sum(add ob) //it can access private members of class 'add’ cout<<"The sum of the 2 members is : "<<(ob.x+ob.y);

;

int main( ) add ad; support sup; sup.sum(ad); return 0;

class keranjang private: int apel, jeruk; public: keranjang (int=0,int=0); void setapel(int); void setjeruk(int); int getapel(); int getjeruk(); ;

keranjang::keranjang(int apel=0, int jeruk=0) this->apel = apel; this->jeruk = jeruk; void keranjang::setapel(int n) apel = n; void keranjang::setjeruk(int n) jeruk = n; int keranjang::getapel() return apel; int keranjang::getjeruk() return jeruk;

Page 28: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 28 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Kita akan membuat supaya coding di bawah ini menjadi mungkin. Pada program di atas kita dapat mendefinisikan arti dari operator +=, --, + dan sebagainya. Banyak sekali operator yang dapat dioverloading. Keuntungannya dapat mempermudah penulisan coding dan lebih cepat. Misalkan untuk menambahkan apel dan jeruk sebanyak 2 buah bisa dilakukan dengan coding singkat sebagai berikut: akan sama saja dengan 4.4 Cara membuat operator overloading Cara membuat operator overloading adalah sebagai berikut. Pada bagian deklarasi class tambahkan beberapa coding sebagai berikut: Setelah itu setiap prototype fungsi tersebut kita definisikan lebih lanjut.

void main() keranjang a (5,6); keranjang b (2,3); keranjang c; a += 2; // penggunaan operator overloading terhadap += b--; // penggunaan operator overloading terhadap -- c = a + b; // penggunaan operator overloading terhadap + cout << a.getapel() << “ “ << a.getjeruk() << endl; cout << b.getapel() << “ “ << b.getjeruk() << endl; cout << c.getapel() << “ “ << c.getjeruk() << endl;

a += 2;

a.setapel ( a.getapel() + 2 );a.setjeruk ( a.getjeruk() + 2 );

class keranjang private: int apel, jeruk; public: keranjang (int=0,int=0); void setapel(int); void setjeruk(int); int getapel(); int getjeruk();

void operator += (int); void operator –- (); keranjang operator + (const keranjang &); ;

Page 29: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 29 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

4.5 Penggunaan operator overloading Operator overloading secara luas dipakai untuk meningkatkan efisiensi dalam penggunaan class tersebut dalam coding. Di mana user coding akan dapat ditulis dengan lebih sederhana dan ringkas. Salah satu fitur lain operator overloading dapat dilakukan terhadap tanda << dan >> yang digunakan oleh ostream dan istream untuk input output. Misalkan untuk menampilkan jumlah apel dan jeruk dapat ditulis dengan sebagai berikut bisa diringkas menjadi sebagai berikut Cara membuatnya tambahkan beberapa baris berikut dalam deklarasi class.

void keranjang :: operator += (int n) this->apel += n; this->jeruk += n;

void keranjang::operator –- () this->apel--; this->jeruk--;

keranjang operator + (const keranjang &p) int apel = this->apel + p.apel; int jeruk = this->jeruk + p.jeruk; return keranjang(apel,jeruk);

cout << a.getapel() << “ “ << a.getjeruk() << endl;

cout << a << endl;

class keranjang private: int apel, jeruk; public: keranjang (int=0,int=0); void setapel(int); void setjeruk(int); int getapel(); int getjeruk(); void operator += (int); void operator –- (); keranjang operator + (const keranjang &); friend ostream & operator << (ostream & , keranjang &); ;

Page 30: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 30 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Setelah definisikan fungsi tersebut. 4.6 Daftar operator yang bisa/tidak bisa dioverload Berikut ini adalah operator-operator yang tidak bisa dioverload.

• ?: (conditional) • . (member selection) • .* (member selection with pointer-to-member) • :: (scope resolution) • sizeof (object size information) • typeid (object type information)

Lebih detail tentang operator overloading bias dilihat di sini.

http://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading

ostream & operator << (ostream & out, keranjang & p) out << p.apel << “ “ << p.jeruk; return out;

Page 31: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 31 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 5 Inheritance 5.1 Konsep Inheritance Inheritance atau pewarisan sifat merupakan bagian yang sangat penting dalam Object Oriented Programming, dikarenakan kemampuan extensibility dan mempermudah peng-coding-an. Sebagai contoh misalkan kita mempunyai class Titik, di mana dideklarasikan sebagai berikut. Kemudian kita membuat class baru bernama Lingkaran di mana merupakan turunan dari class Titik, maka semua member dari class Titik akan diturunkan ke Lingkaran dan class Lingkaran dapat menambahkan data member baru yaitu radius. Semua data dan fungsi yang didefinisikan akan dimiliki oleh class Lingkaran pula tanpa harus mengcoding ulang lagi. Keuntungannya class dapat dibuat dengan mengembangkan class yang sudah ada.

class Titik private: int x,y; public: Titik(int=0,int=0); void setx(int); void sety(int); int getx(); int gety(); ;

Titik::Titik(int x,int y) this->x = x; this->y = y; void Titik::setx(int n) this->x = n; void Titik::sety(int n) this->y = n; int Titik::getx() return x; int Titik::gety() return y;

Page 32: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 32 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

5.2 Calling Base Class Constructor Sebagai contoh kita buat class Lingkaran sebagai turunan dari class Titik. Di mana class Lingkaran akan memiliki semua sifat dari class Titik dan kita tambahkan variabel radius (jari-jari) dan fungsi getLuas() dan getKeliling() Seperti contoh di atas pada bagian constructor, memanggil constructor class Titik, di mana constructor Titik akan memberikan nilai untuk x dan y, sedangkan constructor Lingkaran memberikan nilai untuk radiusnya. Hal ini dikarenakan class Lingkaran tidak mempunyai akses ke x dan y secara langsung karena dideklarasikan secara private. class Lingkaran hanya bisa mengakses lewat fungsi setx dan sety.

class Lingkaran : public Titik private: double radius; public: Lingkaran(int=0,int=0,double=0.0); void setradius(double); double getradius(); double getluas(); double getkeliling(); ;

Lingkaran::Lingkaran(int x,int y,double radius) : Titik(x,y) this->radius = radius; void Lingkaran::setradius(double n) this->radius = n; double Lingkaran::getradius() return radius; double Lingkaran::getluas() return 22.0 / 7 * radius * radius; double Lingkaran::getkeliling() return 22.0 / 7 * radius * 2;

Lingkaran::Lingkaran(int x,int y,double radius) : Titik(x,y) this->radius = radius;

Page 33: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 33 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

5.3 Tipe-tipe inheritance Untuk melakukan inheritance, terdapat beberapa tipe.

Inheritance Type Member Type private protected public

private private private private protected private protected protected public private protected public Pada saat membuat coding inheritance, dapat dispesifikasi tipe inheritancenya yang akan mengakibatkan perubahan level akses ke anggota kelas. Sebagai contoh sebuah class B diturunkan dari class A secara private, maka akan berdampak semua yang diturunkan ke class B bersifat private. 5.4 Overriding Method Overriding method adalah pembuatan sebuah fungsi dengan nama yang sama seperti yang sudah diturunkan dari class induknya. Sebagai contoh kita lanjutkan membuat class Tabung turunan dari Lingkaran. Class Tabung merupakan turunan dari class Lingkaran, di mana sudah diturunkan fungsi getLuas(), namun pada class Tabung melakukan overriding dengan membuat fungsi dengan nama getLuas() juga, maka fungsi yang baru akan menggantikan (override) fungsi dari induknya.

class A public: int data; ; class B : private A //data is inherited and become private ; class C : public B //data is inherited, but class C cannot access through it //because it is private ;

class Tabung : public Lingkaran private: double tinggi; public : Tabung(int=0,int=0,double=0.0,double=0.0); void settinggi(double); double gettinggi(); double getluas(); //overriding double getvolume(); ;

Page 34: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 34 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

5.5 Multiple Inheritance Sebuah class di C++ dapat diturunkan dari beberapa class (lebih dari satu class), dinamakan Multiple Inheritance. Sebagai contoh class A diturunkan dari class B dan C. Untuk lebih detail tentang Multiple Inheritance lihat di web berikut ini. http://en.wikibooks.org/wiki/C++_Programming/Classes/Inheritance#Multiple_inheritance http://en.wikipedia.org/wiki/Diamond_problem

Tabung::Tabung(int x,int y,double radius,double tinggi):Lingkaran(x,y,radius) this->tinggi = tinggi; void Tabung::settinggi(double tinggi) this->tinggi = tinggi; double Tabung::gettinggi() return tinggi; double Tabung::getluas() return 2*Lingkaran::getluas() + Lingkaran::getkeiling() * tinggi; double Tabung::getvolume() return Lingkaran::getluas() * tinggi;

class A : public B,C ... ;

Page 35: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 35 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 6 Array of Object 6.1 Array in C++ Array di C++ sangat erat kaitannya dengan pointer. Array adalah pointer. Cara membuat array adalah sebagai berikut. 6.2 Array of Object Cara membuat array of object sama dengan cara sebelumnya hanya yang digunakan adalah class yang sudah dibuat. Sebagai contoh kita buat array of Titik.

Untuk release memory gunakan sintaks delete sebagai berikut. Selain itu bisa dilakukan dengan cara berikut ini.

int * arr = new int[5]; //array of int for(int i=0; i < 5; i++) arr[i] = 0; delete [] arr; //delete the array – free memory arr = new int[10]; //array of int with new size

Titik *p = new Titik[5]; for(int i=0; i < 5; i++) p[i].setx(0); p[i].sety(0);

Titik *p[5]; for(int i=0; i < 5; i++) p[i] = new Titik; p[i]->setx(0); p[i]->sety(0); ... for(i=0;i<5;i++) delete p[i]; //release each object

delete [] p;

Page 36: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 36 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 7 Polymorphism 7.1 Virtual Function Virtual Function digunakan dalam program untuk memaksimalkan fungsi Polymorphism. Dengan polymorphism, programmer akan mem-program secara lebih umum ketimbang spesifik. Untuk memahami contoh polymorphism perhatikan coding berikut ini. Penggunaan Polymorphism adalah menggunakan pointer dari superclass untuk menunjuk pada objek dari subclass. Kemudian lewat pointer tersebut kita dapat memanggil method yang ada dalam objek tersebut. Seperti contoh di atas ptr->speak() memanggil fungsi speak, namun yang dijalankan justru adalah speak dari Person. Agar supaya fungsi speak() yang dijalankan adalah fungsi speak() dari Man, kita harus menambahkan kata kunci virtual pada fungsi speak di class Person.

class Person public: void speak(); ; class Man : public Person public: void speak(); //overriding ; void Person::speak() cout << “Person speak” << endl; void Man::speak() cout << “Man speak” << endl; void main() Person p; Man m; p.speak(); //out “Person speak” m.speak(); //out “Man speak” Person *ptr = new Man; //using Polymorphism ptr->speak(); //out “Person speak”

class Person public: virtual void speak(); ;

Page 37: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 37 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

7.2 Abstract Class - Pure Virtual Function Abstract class adalah class yang di dalam terdapat fungsi abstract. Fungsi abstract adalah fungsi tanpa implementasi, di mana dikarenakan sifatnya terlalu general sehingga tidak bisa diimplementasikan. Pada gambar di atas class Animal bersifat abstrak karena memiliki fungsi abstrak yaitu makeVoice(), di mana fungsi tersebut tidak bisa diberi implementasi. “Bagaimana binatang bersuara ?”, ini pertanyaan yang tidak bisa dijawab dengan pasti karena sifatnya masih terlalu umum. Kemudian class Cat dan Dog diturunkan dari class Animal, maka class Cat harus meng-override fungsi makeVoice() tersebut. Semua fungsi abstrak harus diberi keyword virtual di depannya. Selanjutnya class tersebut bisa digunakan dalam program.

Animal

makeVoice()

Cat

makeVoice()

Dog

makeVoice()

class Animal public: virtual void makeVoice()=0; //abstract method ; class Cat : public Animal public: void makeVoice(); ; class Dog : public Animal public: void makeVoice(); ; void Cat::makeVoice() cout << “miaw...miaw...” << endl; void Dog::makeVoice() cout << “guk...guk...” << endl;

Page 38: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 38 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

7.3 Penggunaan Polymorphism Polymorphism digunakan dengan membuat pointer dari class induk untuk menunjuk pada objek pada class anak. Di mana pada saat pemanggilan fungsi, implementasi yang dilakukan berbeda-beda sesuai dengan objek yang ditunjuk

void main() Animap * ptr; ptr = new Cat; ptr->makeVoice(); //out miaw...miaw... delete ptr; ptr = new Doq; ptr->makeVoice(); //out guk...guk... delete ptr;

Page 39: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 39 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

BAB 8 Template Class 8.1 Function Template Template dapat digunakan untuk membuat class yang generik, dan dapat diimplementasi untuk berbagai macam tipe data. Function Template 8.2 Template Class

template < class T > void printArray(const T *array, const int count ) for(int i = 0; i<count; i++) cout << array[i] << “ “; cout << endl; int main() const int aCount=5; const int bCount=7; const int cCount=6; int a[aCount]=1,2,3,4,5; double b[bCount]=1.1,2.2,3.3,4.4,5.5,6.6,7.7; char c[cCount]=”HELLO”; printArray(a,aCount); printArray(b,bCount); printArray(c,cCount);

template < class T > class Stack private : int size; int top; T *stackPtr; public : Stack(int = 10); ~Stack() delete [] stackPtr; void push(const T&); void pop(T&); int isFull() return top==size-1; int isEmpty() return top==-1;

;

Page 40: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 40 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Pada saat main program kita dapat menggunakan berbagai macam tipe data untuk class Stack ini. Stack double dapat digunakan sebagai stack di mana data-datanya berupa double, sedangkan yang satunya lagi berupa integer. Kita dapat membuat suatu class di mana datanya menggunakan template untuk dapat diimplementasi untuk tipe data yang berbeda-beda.

template <class T> Stack <T>::Stack(int s) size = (s>0) ? s : 10; top = -1; stackPtr = new T[size]; template <class T> void Stack<T>::push(const T &pushValue) if(!isFull()) top++; stackPtr[top]=pushValue;

template <class T> void Stack<T>::pop(T &popValue) if(!isEmpty()) popValue = stackPtr[top]; top--;

void main() Stack <double> doubleStack(5); //membuat stack untuk double Stack <int> intStack(5); //membuat stack untuk int ….. …..

Page 41: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 41 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Lampiran TABEL KODE TOMBOL Tombol Kode Enter 13 Escape 27 ‘a’ – ‘z’ 97-122 ‘A’ – ‘Z’ 65-90 ‘0’-‘9’ 48-57 Spasi 32 Tab 9 Backspace 8 F11 123 F12 122 Alt F11 117 Alt F12 116 Shift F11 121 Shift F12 120 Ctrl F11 119 Ctrl F12 118 F11 123 F12 122 Alt F11 117 Alt F12 116 Alt 0 127 Alt - 126 Alt = 125

Secondary key Tombol Kode Home 71 Panah atas 72 PgUp 73 Panah kiri 75 Panah kanan 77 End 79 Panah bawah 80 PgDn 81 Ins 82 Del 83 Tombol Kode Alt Q – ] 16..27 Alt A – ‘ 30..40 Alt Z - / 44..53 F1-F10 59-68 Alt F1-F10 104-113 Shift F1-F10 84-93 Ctrl F1-F10 94-103 Alt 1-9 120-128

Page 42: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 42 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

TABEL KONSTANTA WARNA Constant Value Background Foreground BLACK 0 Yes Yes BLUE 1 Yes Yes GREEN 2 Yes Yes CYAN 3 Yes Yes RED 4 Yes Yes MAGENTA 5 Yes Yes BROWN 6 Yes Yes LIGHTGRAY 7 Yes Yes DARKGRAY 8 No Yes LIGHTBLUE 9 No Yes LIGHTGREEN 10 No Yes LIGHTCYAN 11 No Yes LIGHTRED 12 No Yes LIGHTMAGENTA 13 No Yes YELLOW 14 No Yes WHITE 15 No Yes BLINK 128 No Yes

Page 43: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 43 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

TABEL KODE ASCII Nomor Karakter Nomor Karakter 0 45 - 1 46 . 2 47 / 3 ♥ 48 0 4 ♦ 49 1 5 ♣ 50 2 6 ♠ 51 3 7 • 52 4 8 53 5 9 54 6 10 55 7 11 56 8 12 57 9 13 58 : 14 59 ; 15 60 < 16 61 = 17 62 > 18 63 ? 19 ‼ 64 @ 20 ¶ 65 A 21 § 66 B 22 67 C 23 68 D 24 ↑ 69 E 25 ↓ 70 F 26 → 71 G 27 ← 72 H 28 ∟ 73 I 29 ↔ 74 J 30 75 K 31 76 L 32 77 M 33 ! 78 N 34 “ 79 O 35 # 80 P 36 $ 81 Q 37 % 82 R 38 & 83 S 39 ‘ 84 T 40 ( 85 U 41 ) 86 V 42 * 87 W 43 + 88 X 44 , 89 Y

Page 44: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 44 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

90 Z 141 ì 91 [ 142 Ä 92 \ 143 Å 93 ] 144 É 94 ^ 145 æ 95 _ 146 Æ 96 ` 147 ô 97 a 148 ö 98 b 149 ò 99 c 150 û 100 d 151 ù 101 e 152 ÿ 102 f 153 Ö 103 G 154 Ü 104 h 155 ¢ 105 i 156 £ 106 j 157 ¥ 107 k 158 ₧ 108 l 159 ƒ 109 m 160 á 110 n 161 í 111 o 162 ó 112 p 163 ú 113 q 164 ñ 114 r 165 Ñ 115 s 166 ª 116 t 167 º 117 u 168 ¿ 118 v 169 119 w 170 ¬ 120 x 171 ½ 121 y 172 ¼ 122 z 173 ¡ 123 174 « 124 | 175 » 125 176 126 ~ 177 127 178 128 Ç 179 129 Ü 180 130 É 181 131 Â 182 132 Ä 183 133 À 184 134 Å 185 135 ç 186 136 ê 187 137 ë 188 138 è 189 139 ï 190 140 î 191 192 224 α

Page 45: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 45 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

193 225 ß 194 226 Γ 195 227 Π 196 228 Σ 197 229 σ 198 230 µ 199 231 τ 200 232 Φ 201 233 Θ 202 234 Ω 203 235 δ 204 236 ∞ 205 237 φ 206 238 ε 207 239 ∩ 208 240 ≡ 209 241 ± 210 242 ≥ 211 243 ≤ 212 244 ⌠ 213 245 ⌡ 214 246 ÷ 215 247 ≈ 216 248 ° 217 249 · 218 250 · 219 251 √ 220 252 ⁿ 221 253 ² 222 254 223 255

Page 46: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 46 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Biografi Penulis Nama Lengkap : Ali Irawan, S.Kom Latar belakang pendidikan : 1990-1996, SD Tunas Keluarga Mulia Marsudirini Tg. Priok 1996-1999, SLTP Marsudirini Tg. Priok 1999-2002, SLTA Fons Vitae 2 Marsudirini Tg. Priok 2002-2006, Universitas Bina Nusantara Bidang yang dikuasai : C/C++, Visual Basic 6, Visual Basic .NET, ADO.NET, ASP.NET,

C#, Java, J2EE, J2ME, Symbian, Macromedia Flash, HTML, Javascript, PHP, MySQL, SQL Server

Pengalaman Kerja : Instruktur Programming Binus Center Instruktur dan Team Leader Programming Titans Instruktur Evo Traning Center Managing Director Evo Training Center Research and Development Manager PT Evosoft Indonesia Contact : Email: [email protected] [email protected] [email protected] YM: boylevantz

Page 47: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 47 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Informasi Training Professional Course Evo sebagai training center yang inovatif selalu menghadirkan training yang berbobot dan berguna untuk diterapkan di lapangan. Pada tahun 2007 Evo bekerja sama dengan inTouch, sebagai pemegang lisensi Nokia Developer Training di Indonesia, menghadirkan training-training resmi dari Nokia Developer Training. Training yang tersedia adalah Symbian/C++ Track (#4300,#5300,#6300) dan J2ME Track (#5500) di mana masing-masing akan mempelajari cara membuat aplikasi untuk micro device (mobile/handphone). Symbian Track merupakan gabungan dari beberapa modul terpisah dari Nokia Developer Training. Untuk info lebih detail syllabus materi, harga, dan benefit hubungi representatif kami melalui [email protected] Special Course Evo menghadirkan berbagai macam training untuk programming, web, dan design disesuaikan dengan minat pasar saat ini. Materi-materi yang tersedia adalah sebagai berikut:

Visual Basic 6.0 Materi ini mencakup dasar-dasar pemrograman dengan Visual Basic 6.0, sangat cocok bagi pemula yang belum pernah mengenal bahasa pemrograman Visual Basic, diperkaya dengan integrasi dengan database untuk membuat aplikasi database berbasiskan desktop, dan membuat laporan dengan menggunakan Crystal Report.

Visual Basic .NET Materi ini mencakup dasar pemrograman dengan menggunakan Visual Basic.NET, fokus pada penggunaan control-control untuk membuat aplikasi desktop. Sebagai langkah awal untuk masuk ke dunia pemrograman berbasiskan .NET

ADO.NET Materi ini mencakup pemrograman untuk membuat aplikasi database berbasikan ADO.NET. Fitur lebih dari ADO.NET dibahas di sini dan penggunaan Crystal Report untuk membuat laporan.

ASP.NET Materi ini mencakup training untuk membuat web dinamis dengan menggunakan ASP.NET 2.0, dan menggunakan database SQL Server 2000. Banyak web dikembangkan

Symbian Track

#4300 Symbian Basics Overview #5300 Series 60 C++ Intro

#6300 S60 3rd Edition Update

J2ME Track

#5500 Java MIDP Introduction

Page 48: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 48 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

menggunakan ASP.NET, diperkaya dengan berbagai macam fitur yang memudahkan developer untuk membuat web dengan cepat, rapi, dan mudah di-maintain.

Java Fundamentals Materi ini adalah sangat cocok bagi yang mau berkenalan dengan dunia Java. Dalam training menghadirkan topik-topik esensial dalam pemrograman Java, dari dasar-dasar pemrograman, penggunaan class-class librarynya, Swing, Thread, Input/Output, hingga JDBC(Java Database Connectivity). Training ini sebagai langkah awal sebelum masuk ke training J2EE atau J2ME.

Java Server Pages

Materi ini dirancang untuk developer yang membutuhkan mendevelop aplikasi web dinamis dengan menggunakan Java Server Pages (JSP). Sebagai dasar awal untuk masuk ke dunia J2EE.

PHP Web Development Materi ini sangat populer, di mana membahas cara membangun web dinamis dengan menggunakan PHP (Hypertext Preprocessor), dengan didukung dengan database MySQL Server. PHP sendiri sangat luas digunakan di dunia web untuk pengembangan situs web. Training ini membahas dasar-dasar pemrograman dengan PHP, koneksi ke MySQL, Upload Files, dan menggunakan PHP Extensions. Sebaiknya peserta kelas ini sudah cukup familiar dengan pemrograman C dan dasar HTML.

Adobe Photoshop Materi ini membahas dasar pengenalan Adobe Photoshop sebagai tool untuk digital grafis desain. Topik-topiknya mencakup pengenalan tool, penggunaan layer, filter, masking, channel, dan sebagainya.

Macromedia Flash Materi ini membahas dasar pembuatan animasi dengan menggunakan Macromedia Flash. Membahas bagaimana cara pembuatan motion, button, movie clip, teknik masking, penggunaan Scene, penggunaan Component, dan ActionScript.

3D Studio Max

Materi ini membahas teknik untuk membuat objek 3D (3 dimensi). Menggunakan materials untuk memberikan tekstur pada objek yang sudah dibuat, lighting untuk menambahkan pencahayaan, dan camera untuk mengatur sudut pandang yang diambil.

Web Basic Course

Materi ini membahas dasar tentang membuat web statis dengan menggunakan HTML (Hypertext Markup Language), penggunaan CSS (Cascading Stylesheet), dan Javascript.

Selain itu Evo Training Center juga menyediakan Customize Training di mana training akan dirancang sesuai kebutuhan dari peserta.

Regular Course Regular Course adalah training yang disesuaikan dengan mata kuliah untuk mahasiswa.

Algoritma dan Pemrograman Materi ini mencakup dasar pemrograman dengan menggunakan bahasa C. Input/Output,Control Flow, penggunaan fungsi, array, string, file, teknik sorting dan searching.

Page 49: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 49 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Struktur Data Materi ini merupakan lanjutan dari Algoritma dan Pemrograman, mempelajari konsep-konsep struktur data seperti linked list, stack, queue, dan tree dengan menggunakan bahasa pemrograman C.

Pemrograman Beorientasi Objek

Materi ini mengajarkan konsep pemrograman berbasiskan objek atau yang sering dikenal dengan Object Oriented Programming. Training ini menggunakan bahasa pemrograman C++.

Algoritma dan MOOP Materi ini mengajarkan dasar pemrograman dengan menggunakan C++. Input/Output, Control Flow, fungsi, array, string, dan penggunaan class dalam program.

Programming 1 (Visual Basic 6.0) Materi ini membahas dasar pemrograman dengan Visual Basic 6.0 hingga integrasinya dengan database Microsoft Access.

Programming 2 (Java)

Materi ini membahas dasar pemrograman Java, menggunakan tool Eclipse memudahkan peserta dalam membuat aplikasi Java. Mempelajari fundamental, input/output, file, dan Swing untuk pembuatan aplikasu GUI (Graphical User Interface).

Sistem Basis Data Materi ini mengajarkan dasar pemrograman SQL (Structured Query Language) sebagai bahasa komunikasi ke database yang konvensional. Menggunakan SQL Server 2000 sebagai salah satu database yang sangat banyak digunakan.

Web Programming

Mater ini mengajarkan cara membuat web dinamis dengan menggunakan Java Server Pages. Database yang digunakan adalah Microsoft Access.

Page 50: Pemrograman Berorientasi Objek -  · PDF filePemrograman Beorientasi Objek 1.0 ...   EVO FORUM ... C++ merupakan bahasa yang dikembangkan berdasarkan bahasa C

Pemrograman Beorientasi Objek 1.0 - 10 September 2007 50 / 50

Jl Kebon Jeruk Raya No. 78B Palmerah Jakarta Barat 11480 Ph. +62 21 53671612 www.evopage.com

Copyright © 2007