Anda di halaman 1dari 50

Pemrograman Berorientasi Objek

- regular course -

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

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.

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

Daftar Isi
Pengenalan Evo Forum ........................................................................................5 BAB 1 Dasar Pemrograman C++ ..............................................................................7 1.1 1.2 1.3 2.1 2.2 2.3 2.4 2.5 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 5.1 5.2 5.3 5.5 6.1 6.2 7.1 7.2 7.3 8.1 8.2 Pengenalan C++ ...................................................................................7 Input / Output .....................................................................................7 Menggunakan format output ....................................................................8 Review Abstract Data Type.................................................................... 12 Konsep Encapsulation .......................................................................... 14 Deklarasi class dan Implementasi class...................................................... 14 Constructor dan Destructor.................................................................... 17 Member Initializer .............................................................................. 18 Overloading Function........................................................................... 19 Constructor Overloading ....................................................................... 19 Constructor Copy................................................................................ 21 Default value .................................................................................... 24 Static Class Members ........................................................................... 24 Friend Function.................................................................................. 26 Friend Class ...................................................................................... 26 Apa itu Operator Overloading ................................................................. 27 Cara membuat operator overloading ........................................................ 28 Penggunaan operator overloading............................................................ 29 Daftar operator yang bisa/tidak bisa dioverload........................................... 30 Konsep Inheritance ............................................................................. 31 Calling Base Class Constructor ................................................................ 32 Tipe-tipe inheritance........................................................................... 33 Multiple Inheritance ............................................................................ 34 Array in C++ ...................................................................................... 35 Array of Object .................................................................................. 35 Virtual Function ................................................................................. 36 Abstract Class - Pure Virtual Function ....................................................... 37 Penggunaan Polymorphism .................................................................... 38 Function Template.............................................................................. 39 Template Class .................................................................................. 39

BAB 2 Class (1)................................................................................................ 12

BAB 3 Class (2)................................................................................................ 19

BAB 4 Friend Function/Class dan Operator Overloading ............................................... 26

BAB 5 Inheritance ............................................................................................ 31

BAB 6 Array of Object ....................................................................................... 35

BAB 7 Polymorphism ......................................................................................... 36

BAB 8 Template Class........................................................................................ 39

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

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

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

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

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.

EVO FORUM http://forum.evopage.com

Students

Instructors

COMMUNICATE

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

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

Isi data registrasi kemudian Submit dan anda sudah dapat login.

Setelah itu login dan anda sudah dapat melakukan posting.

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

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 <constrea.h> void main(){ cout << Selamat datang; getch(); }

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. #include <constrea.h> constream ctk; void main(){ ctk.clrscr(); ctk << setxy(10,10) << Selamat datang; getch(); } 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).

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

#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(); }

1.3

Menggunakan format output

setw dan setfill setw digunakan untuk mengatur jumlah digit/space yang digunakan dalam mencetak. #include <constrea.h> constream ctk; void main(){ ctk.clrscr(); ctk << setxy(1,1) << setw(5) << 1; getch(); } Yang tercetak di layer adalah 1. Angka 1 dicetak dalam 5 digit, 4 digit pertama adalah spasi ( defaultnya adalah spasi ). #include <constrea.h> constream ctk; void main(){ ctk.clrscr(); ctk << setxy(1,1) << setw(5) << setfill(#) << 1; getch(); }

Yang tercetak di layer adalah ####1. Angka 1 dicetak dalam 5 digit, 4 digit pertama adalah # ( ditentukan dari setfill ).

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

clreol digunakan untuk menghapus satu baris, mulai dari posisi kursor terakhir. #include <constrea.h> constream ctk; void main(){ ctk << setxy(1,1) << clreol; //menghapus 1 baris mulai dari posisi (1,1) getch(); }

setclr,setbk,endl setclr digunakan untuk mengatur warna teks, sedangkan setbk digunakan untuk mengatur warna background. endl digunakan untuk pindah baris. #include <constrea.h> constream ctk; void main(){ ctk.clrscr(); ctk << setbk(1) << setclr(15) << setxy(1,1) << Hello << endl; getch(); }

cin digunakan untuk meminta input. #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(); } Untuk meminta input string dapat dilakukan dengan hal yang sama, tetapi tidak bisa menerima spasi, tab dan \n. Untuk itu kita gunakan fungsi getline

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

#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(); } 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. #include <constrea.h> constream ctk; void main(){ ctk.clrscr(); ctk << setxy(1,1) << setiosflags(ios::left) << setw(5) << 1; getch(); } 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 ios::left ios::right ios::scientific ios::fixed ios::dec ios::oct Keterangan Menampilkan rata kiri. Misalkan kita sudah menset jumlah digit dengan setw. Menampilkan rata kanan. Misalkan kita sudah menset jumlah digit dengan setw. Menampilkan dalam bentuk notasi exponensial contoh : 5.6e+00 Menampilkan kebalikan dari scientific, menampilkan dalam notasi decimal. contoh : 5.6 Menformat keluaran dalam basis 10 ( decimal ) Menformat keluaran dalam basis 8 ( octal )

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

Konstanta ios ios::hex ios::uppercase ios::showbase ios::showpoint ios::showpos setprecision

Keterangan Menformat keluaran dalam basis 16 ( hexadecimal ) Memformat huruf pada notasi hexadecimal dalam bentuk huruf capital. Menampilkan base jika bilangan octal maka akan diawali angka 0, jika hexadecimal diawali dengan angka 0x, sebelumnya harus di set dulu basisnya dengan setbase Menampilkan titik decimal pada bilangan pecahan yang tidak memiliki bagian pecahan. Untuk menampilkan tanda + pada bilangan positif.

untuk digunakan untuk mengeset berapa jumlah angka di belakang yang akan ditampilkan. #include <constrea.h> constream ctk; void main(){ float n = 6.712; ctk.clrscr(); ctk << setxy(1,1) << setprecision(2) << n; getch(); }

hex,oct,dec digunakan untuk menampilkan dalam bentuk heksadesimal, oktal atau decimal. #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(); }

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

BAB 2 Class (1)


2.1 Review Abstract Data Type Yang dimaksud dengan abstract data type adalah membuat tipe data baru dengan menggunakan struct. #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 << } getch();

Nama :

<< a.nama;

Bagaimana cara passing sebuah struct ke suatu fungsi. void cetak(struct mahasiswa val ){ ctk << NIM : << val.nim << } Nama : << val.nama;

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.

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

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. #include <constrea.h> void main(){ int a; int &b = a; //variable reference, harus langsung diinisialisasi } cout << 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> #include <string.h> constream ctk; struct mahasiswa { char nim[11]; char nama[21]; }; void cetak(struct mahasiswa & val ){ ctk << NIM : << val.nim << } 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(); Nama : << val.nama;

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

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 #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 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. 1st instance Class Design Template Blue-print nth instance 2nd instance

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

Sekarang kita akan melanjutkannya, class Person yang sudah dibuat akan kita buat objeknya. 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();

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

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

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. Private function

Private function

Public function user

Private function

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. void translate(int vx,int vy){ .. } 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 ?

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

Dalam pembuatan class kita dapat membuat implementasi secara terpisah seperti di bawah ini. class Person { private: int umur; public : void setUmur(int); int getUmur(); }; void Person::setUmur(int umur){ this->umur = umur; } int Person::getUmur(){ return umur; } 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: 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; }

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

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); }

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

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. 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); } 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.

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

class Person { private: char c; public : Person(); Person(char c); } Person::Person(){ c = ; } Person::Person(char c){ this->c = c; } 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. 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 Urutan pemanggilan constructor menggunakan konsep Stack. Jadi misalkan urutan pembuatan objeknya adalah a,b,c maka destructor yang dijalankan adalah c,b,a. void main(){ Person a,b,c; } 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

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

#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(); } 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(const Person &); //copy constructor };

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

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. class A { //Without copy constructor private: int x; public: A() {A = 10;} ~A() {}

};

Tetapi misalkan kita mempunyai class Person di mana namanya panjangnya bisa dinamis. Maka kita definisikan data membernya sebagai pointer. class Person //With copy constructor { private: char *name; public: Person(); ~Person(); //Copy constructor Person(const Person &b); }; Pendefinisian class-nya adalah sebagai berikut 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); };

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

Initialization 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 }

Passing parameter by value void cetak(Person temp) { cout << temp.getName(); } void main() { Person a; } cetak(a); //copy constructor is called

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

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

3.4 Default value Pada saat membuat constructor dengan parameter (constructor overloading), nilai-nilai dari parameter tersebut dapat diberi nilai default. 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 } 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. 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 cout << a.m = << a.m cout << b.n = << b.n cout << b.m = << a.m }

<< << << <<

endl; endl; endl; endl;

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

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

Class n

Object m

Object m

Object m

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.

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

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. 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); } 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. class add { private: int x,y; public: add( ) { x=y=4; } friend class support; //support is now a friend of add }; Dengan menambahkan friend class support; berarti class support adalah teman dari class add dan class support dapat mengakses data dari class add.

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

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; }

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 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; }

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

Kita akan membuat supaya coding di bawah ini menjadi mungkin.


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; }

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:
a += 2;

akan sama saja dengan


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

4.4 Cara membuat operator overloading Cara membuat operator overloading adalah sebagai berikut. Pada bagian deklarasi class tambahkan beberapa coding sebagai berikut:
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 &); };

Setelah itu setiap prototype fungsi tersebut kita definisikan lebih lanjut.

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

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); }

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
cout << a.getapel() << << a.getjeruk() << endl;

bisa diringkas menjadi sebagai berikut


cout << a << endl;

Cara membuatnya tambahkan beberapa baris berikut dalam deklarasi class.


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 &); };

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

Setelah definisikan fungsi tersebut.


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

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

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

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.
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; }

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.

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

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 (jarijari) dan fungsi getLuas() dan getKeliling()
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; }

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.
Lingkaran::Lingkaran(int x,int y,double radius) : Titik(x,y) {

this->radius = radius;

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.

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.3 Tipe-tipe inheritance Untuk melakukan inheritance, terdapat beberapa tipe. Member Type private protected public private private private private Inheritance Type 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.
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 }; 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 : 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(); };

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.

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

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; }

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.
class A : public B,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

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

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

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.
Titik *p = new Titik[5]; for(int i=0; i < 5; i++){ p[i].setx(0); p[i].sety(0); }

Untuk release memory gunakan sintaks delete sebagai berikut.


delete [] p;

Selain itu bisa dilakukan dengan cara berikut ini.


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 }

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

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: virtual void speak(); };

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

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. Animal makeVoice()

Cat makeVoice()

Dog makeVoice()

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 mengoverride fungsi makeVoice() tersebut.
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; }

Semua fungsi abstrak harus diberi keyword virtual di depannya. Selanjutnya class tersebut bisa digunakan dalam program.

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.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 berbedabeda 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; }

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

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 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);

8.2 Template Class 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; } };

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

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--; } }

Pada saat main program kita dapat menggunakan berbagai macam tipe data untuk class Stack ini. void main(){ Stack <double> doubleStack(5); //membuat stack untuk double Stack <int> intStack(5); //membuat stack untuk int .. ..

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.

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

Lampiran
TABEL KODE TOMBOL Tombol Enter Escape a z A Z 0-9 Spasi Tab Backspace F11 F12 Alt F11 Alt F12 Shift F11 Shift F12 Ctrl F11 Ctrl F12 F11 F12 Alt F11 Alt F12 Alt 0 Alt Alt = Kode 13 27 97-122 65-90 48-57 32 9 8 123 122 117 116 121 120 119 118 123 122 117 116 127 126 125 Secondary key Tombol Home Panah atas PgUp Panah kiri Panah kanan End Panah bawah PgDn Ins Del Tombol Alt Q ] Alt A Alt Z - / F1-F10 Alt F1-F10 Shift F1-F10 Ctrl F1-F10 Alt 1-9 Kode 71 72 73 75 77 79 80 81 82 83 Kode 16..27 30..40 44..53 59-68 104-113 84-93 94-103 120-128

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

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

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

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

90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 192

Z [ \ ] ^ _ ` a b c d e f G h i j k l m n o p q r s t u v w x y z { | } ~

141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 224

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

193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223

225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

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

Biografi Penulis
Nama Lengkap Latar belakang pendidikan : Ali Irawan, S.Kom : 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 : 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 : 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 : Email: ali@evopage.com boylevantz@gmail.com ali@evosoft.co.id YM: boylevantz

Bidang yang dikuasai Pengalaman Kerja

Contact

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

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
#4300 Symbian Basics Overview #5300 Series 60 C++ Intro #6300 S60 3rd Edition Update

J2ME Track
#5500 Java MIDP Introduction

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 nctc@evopage.com 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

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

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.

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

Struktur Data Materi ini merupakan lanjutan dari Algoritma dan Pemrograman, mempelajari konsepkonsep 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.

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

Copyright 2007

Pemrograman Beorientasi Objek 1.0 - 10 September 2007

50 / 50

Anda mungkin juga menyukai