Ringkasan Pert 11

Sabtu, 19 Desember 2009

POLYMORPHISM
==============

Salah satu fitur penting dalam OOP.
Pada dasarnya ada 2 tipe polymorphism, yaitu:

-->Static atau trivial
-->Dynamic atau true


Akan saya bahas satu per satu tipe dari polymorphism ini...

Trivial Polymorphism :
merupakan, function overloading yang terbagi dalam 3 signature yaitu:
-Jenis Array
-Letak Array
-Type Array

juga termasuk dalam
-C style
-Function didefinisikan saat compiling
-Link body function + function header / prototype


True Ploymorphhism:
merupakan, function overriding.
menggunakan virtual method, yg terbagi dalam 2:


  • Squasi
contohnya:
class myclass{vitual void foo(){;}}
maksud dari ; adalah no statement...



  • Pure
contohnya:
class myclass{vitual void foo()=0}
saat seperti ini akan menjadikan sebuah kelas abstrak..
kelas abstrak adalah klas yg tidak bisa dibuat sebuah objek.....


Apa itu overloading dan overriding????
overloading:penggunaan kembali nama fungi yang sama tapi dgn argumen yang berbeda..
contohnya:
class Motor : public Kendaraan{
public : void jalan()
{cout << "Motor Jalan" << endl;}
void jalan(int j) // overloading!!!!!.......
{cout << "Motor berparameter jalan" << endl; }
};

overriding:sebuah fungsi dalam class turunan yang memiliki nama, return type argumen function yang sama dengan fungsi dalam class induk..
contohnya:
class Kendaraan{
public : virtual void jalan()
{ cout << "Jalan" << endl;}
};

class Mobil :public Kendaraan{
public :
void jalan()// overriding!!!!!.........
{cout << "Mobil Jalan" << endl; }
};

Codingan rekursif

#include < iostream.h >

class rekursif{
private:
int a;

public:
rekursif(){
a=0;
}

void setA(int a){
a=a;
};

int getA(){
return 0;
};

void cetak(int a);
void cetak2(int a);
void fibo(int a,int b,int n);
int fibo2(int a);
int paskal(int i,int j);
int fakt(int a);
void biner(int n);
};


void rekursif::cetak(int a)
{
if(a<1) return;
else
{
cout << a;
cetak(a-1);
}
}

void rekursif::cetak2(int a)
{
if(a<1) return;
else
{
cetak2(a-1);
cout << a;
}
}

void rekursif::fibo(int a,int b,int n)
{
if(n==0) return;
else
{
cout << b;
fibo(b,b+a,n-1);
}
}

int rekursif::fibo2(int a)
{
if(a==1 || a==2) return 1;
return fibo2(a-1)+fibo2(a-2);
}

int rekursif::paskal(int i,int j)
{
if(j==0 || j==i) return 1;
return paskal(i-1,j-1)+paskal(i-1,j);
}

int rekursif::fakt(int a)
{
if(a==0)return 0;
if(a==1)return 1;
return a * fakt(a-1);
}

void rekursif::biner(int n){
if(n<2) cout << n;
else
{
biner(n/2);
cout << n%2;
}
}

void main()
{
int i,j,x;
rekursif obj;

cout << "masukkan angka = ";
cin >> x;
cin.sync(); cin.clear();
obj.setA(x);
cout << endl << "cetak terbalik dari " << x << endl;
obj.cetak(x);
cout << endl << endl << "cetak urut sampai " << x << endl;
obj.cetak2(x);
cout << endl << endl << "deret fibonacci sebanyak " << x << endl;
obj.fibo(0,1,x);
cout << endl << endl << "fibonacci ke- " << x << endl;
cout << obj.fibo2(x);
cout << endl << endl << "segitiga paskal" << x << "baris" << endl;
for(i=0;i {
for(j=x-1;j>i;j--)
cout << " ";
for(j=0;j<=i;j++)
cout << obj.paskal(i,j);
cout << endl;
}
cout << endl << endl << "faktorial ke-" << x << endl;
cout << obj.fakt(x);
cout << endl << endl << "cetak faktorial sebanyak " << x << endl;
for(i=1;i<=x;i++)
{
cout << obj.fakt(i);
}
cout << endl << endl << "bilangan biner dari" << endl;
obj.biner(x);

cin.get();
cin.get();
}

Pert 9 dan Pert 10

Sabtu, 12 Desember 2009

INHERITANCE DAN INHERITANCE LANJUTAN
====================================

The goal --> Reusability & Extenability
Proses pembentukan satu kelas baru (derived class) dari kelas lainnya (based class) ..

derived class=class turunan
based class=class induk

Cara jalan constructur tetap berurut dimulai dari constractor based class baru constructor derived class dijalankan untuk destructor sebaliknya...

Syntax:
class nama_turunan : level_akses , nama_induk
{anggota_klas}

level_akses maksudnya public,protected,private...

contohnya:
class induk
{ protected: int a;};

class anak : public , induk
{protected: char nama[23];}

yang dapat di turunkan hanya public dan protected..
level_akses berpengaruh dalam mengubah jenis akses pada kelas turunan.....

Class Induk ----------- Jenis akses class turunan
---------------------- Public-------Protected------Private
Public-------------- Public-------Protected------Private
Protected--------- Protected----Protected------Private
Private------------- Private------Private---------Private

untuk membuat Hierarki class tanda panah (->) menunjuk ke based class...


Multiple Inheritance
``````````````````
Yang membedakan nya adalah class turunan mendapatkan pewarisan dari klas..
misal class anak mendapat pewarisan dari class ibu dan class ayah...

Syntax:
class nama_turunan : level_akses , nama_induk1, nama_induk2
{anggota_klas}

dalam hal ini tidak ada batasan banyak induk bisa sebanyak apapun yang diinginkan..
constuctor pun dijalankan berurutan dari induk1 kemudian induk2 baru turunannya sedangkan destructor sebaliknya....

Dalam melakukan multiple inheritance terkadang dapat menimbulkan "diamond problem"
Apa itu diamond problem?????
adalah saat class induk memiliki nama method yang sama, misalnya:

class induk1
{ protected:
int a;
public:
void tes(){ cout << "induk1"; }
};

class induk2
{ public:
void tes(){ cout << "induk2"; }
};

class anak:public induk,public induk2
{ };

void main()
{
anak obj;
obj.tes(); // --> akan eror disini
// eror karena class anak bingung mau mengambil tes yg mna??
// karena itu yang eror seharunya diganti anak.induk1::tes();
//maksudnya anak akan mengambil tes yg ada pd class induk1..

cin.get();}

Ringkasan Pertemuan 8

Senin, 30 November 2009

Array & Pointer of Class
==================


Array
Suatu array dengan elemen berupa objek juga di mungkinkan untuk dibuat, misal:
Buku daftar_buku[5];
Ini merupakan pernyataan untuk mendefinisikan array yang berisi 5 objek kelas buku.

Pointer
Apabila kita bermaksud mendefinisikan suatu pointer yang menunjuk ke suatu objek, kita dapat memberikan peryataan sebagai berikut:
Buku *fiksi;

Seperti biasa tanda * diberikan didepan nama variable pointer.
Jika selanjutnya pointer fiksi diinginkan untuk menunjuk ke suatu objek dinamis yg berkelas Buku, pernyataan yg di perlukan adalah
fiksi = new Buku();
Kegunaan dari new sama seperti malloc yang biasa dalam sturct...

Oleh karena contoh diatas adalan pengalokasian dinamis, pernyataan delete dipoerlukan untuk mendealokasikan memory.
delete(fiksi);

contoh fungsi yang melewatkan objek sebagai pointer:
• Void info_buku(Buku *b)
{
Cout<<“INFORMASI BUKU”<< endl << endl;
(*b).info();
}


ATAU

• Void info_buku(Buku *b)
{
Cout<<“INFORMASI BUKU”<< endl << endl;
b->info();
}


Dan cara pemanggilannya adalah:
Buku novel; // deklarasi class
Info_
buku (&novel); // Tanda & di letakan di depan objek

contoh fungsi yang melewatkan berdasarkan referensi:
• Void info_buku(Buku &b)
{
Cout <<“INFORMASI BUKU”<< endl << endl;

b.info();
}

Dan cara pemanggilannya adalah:
Buku novel; // deklarasi class
Info_buku(novel);




Codingan menggunakan CLASS

Sabtu, 07 November 2009

#include "iostream.h" // harusnya pakai kurung siku

class mobil{
public :
mobil() // construktor
{
a=10;
setNama("xx");
}

~mobil() // destruktor
{
a=0;
}
// setter --> untuk mengubah isi atribut dlm private
void setA(int a)
{
this->a = a; // this dipakai karena menggunakan variabel nama yg sama
}
// getter --> untuk menambahkan isi atribut dlm private
int getA()
{
return a;
}

void setNama(char nama[])
{
strcpy(this->nama,nama);
}
char * getNama()
{
return nama;
}
void putarStir(); // outline function --> buat loop
private :
int a;
char nama[30];

};

void mobil :: putarStir()
{
for(int i=0;i<10;i++);
}

void main()
{
mobil obj1; // pgl constraktor
mobil obj2(obj1); // membuat obj2 isa diakses ke dlm class dgn inisialisasi obj1

obj1.setA(100); // akses pgl setter
obj1.setNama("AAA");

cout << obj1.getA() << endl; // akses pgl getter
cout << obj1.getNama() << endl;

cout << obj2.getA() << endl;
cout << obj2.getNama() << endl;
cin.get();
}

Ringkasan Pert 5 dan Pert 6

Kamis, 29 Oktober 2009

ENCAPSULATION & ENCAPSULATION LANJUTAN
======================================


Tujuan dari suatu Encapsulation ---> Information Hiding

Information hiding adalah dimana membuat prog tanpa harus mengetahui apa yang trjadi supaya bisa tampil gambar/informasi yang harus diketahui...
Cukup mengetahui apa yang dilakukan oleh objek dan bukan isi dari objek itu..

Encapsulation juga dikatakan sebagai pengkapsulan (dlm sebuah class terdiri dari data dan fungsi)

Contoh:
===========
----Class----
===========
int waktu; // biasa disebut atribut atau data member
...............
...............
===========
void menu() // biasa disebut method atau member function
..................
..................
===========

Dalam sebuah class memiliki:
-constructor=method yang pasti dijalankan ketika objek di buat.
Gunanya sebagai inisialisasi.
Cara penggunaan nya cukup seperti memanggil suatu function tapi nama class na misal:
class dota{}
di dalam nya dimasukan constuctor seperti berikut:
dota(){
hp=400;
mp=300;
strcpy(nama,"ligtning god");
}

-destructor=method yg pasti dijalankan ketika objek di delete
Cara penggunaan nya cukup dengan menambahkan ~, misal:
~dota(){}

Class memiliki 3 akses, yaitu:
Public = bagian class yang dapat diakses oleh umum baik didalam maupun luar class.
Protected = bagian class yang dapat diakses oleh lingkungan interclass dan class turunan.
Private = bagian class yang hanya dapat diakses oleh lingkungan internal class itu sendiri.

Friend function
``````````````
friend function di definisikan di luar dari class’s scope namun memiliki hak akses ke semua members dari class tersebut.
deklarasi nya cukup menanmbahkan keyword friend

contoh:
friend void setX( Count &, int );

Operator Overloading
```````````````````
untuk mengoperasikan data pada object menjadi mudah
deklarasinya cukup menambahkan keyword operator

contoh:
void operator - (data &a,data &b)
{
a.angka= a.angka+b.angka;
}

contoh penggabungan friend function dan operator overloading
#include
class data
{ private : int angka;
public :
data(){
angka=10;
}

int getangka(){
return angka;
}

friend void tes(data &a);
friend void operator -(data &a,data &b);
};

void tes(data &a){ cout<< a.angka;}

void operator - (data &a,data &b)
{ a.angka= a.angka+b.angka;}

void main(){
data obj1,obj2;
obj1-obj2;
cout << obj1.getangka();
cin.get();}

Untuk menghitung penjumlahan suatu perbelanjaan dengan menggunakan STRUCT

Senin, 26 Oktober 2009

#include "iostream.h" // harusnya pake kurung siku...

int no,n,total2;

struct barang{
char kode[7];
int satuan;
int jumlah;
int total;
};
barang pendapatan[10];

void menu()
{

cout << endl << "Novita MiniMarket" << endl;
cout << "===================" << endl;
cout << "1. Penjualan" << endl;
cout << "2. Lihat Total Pendapatan" << endl;
cout << "3. Exit" << endl;
cout << "Silahkan pilih : ";
}

void bersih() // sebagai pengganti clrscr
{
for(int i=0;i<25;i++){
cout << endl;}
}

void penjualan()
{
do{
cout << "Masukan kode barang [R****]: ";
cin.getline(pendapatan[n].kode,7);
cin.clear();
cin.sync();
}while(strlen (pendapatan[n].kode) != 5 || (pendapatan[n].kode[0])!= 'R');
do{
cout << "Masukan Harga Barang satuan [max 1000] :";
cin >> pendapatan[n].satuan;
cin.clear();
cin.sync();
}while(pendapatan[n].satuan > 1000);
do{
cout << "Masukan Jumlah Barang [max 100] :";
cin >> pendapatan[n].jumlah;
cin.clear();
cin.sync();
}while(pendapatan[n].jumlah > 100);
pendapatan[n].total=pendapatan[n].satuan*pendapatan[n].jumlah;
}

void main()
{
int pilih,i;
no=0;
do{
menu();
cin >> pilih;
//pilih=cin.get();
cin.clear();
cin.sync();

bersih();
switch (pilih)
{
case 1 :
no++;
cout << endl;
cout << "No transaksi : " << no << endl << endl;
penjualan();
cout << endl;
cout << "Kode Barang \t Harga \t Jumlah \t Total" << endl;
cout << "``````````` \t ````` \t `````` \t `````" << endl;
cout << pendapatan[n].kode << "\t\t ";
cout << pendapatan[n].satuan << "\t\t ";
cout << pendapatan[n].jumlah << "\t\t ";
cout << pendapatan[n].total << endl;
cout << endl;
cout << "Total penjualan "<< no;
cout << "adalah " << pendapatan[n].total << endl;
cout << "Press Any Key To Continue..." << endl;
++n;
cin.get();
bersih();
break;

case 2 :
cout << "Kode Barang \t Harga \t Jumlah \t Total" << endl;
cout << "``````````` \t ````` \t `````` \t `````" << endl;
for (i=0; i < n; i++){
cout << pendapatan[i].kode << "\t\t ";
cout << pendapatan[i].satuan << "\t\t ";
cout << pendapatan[i].jumlah << "\t\t ";
cout << pendapatan[i].total << endl;
cout << endl;
total2+=pendapatan[i].total;
}
cout << "Total Pendapatan dari " << no << " transaksi penjualan hari ini adalah " << total2;
cin.get();
bersih();
break;
}
}while(pilih!=3);
}

Ringkasan Pert 4...

Minggu, 18 Oktober 2009

ADT
====

Deklarasi struct:
struct mhs // struct tag
{ char nama[30]; // struct member
char nim[12];
int nilai;
};

Deklarasi Variabel struct:
mhs nilai_tm; //var biasa
mhs nimarray[ 12 ]; // var array
mhs *nilaiPtr; //var pointer
mhs &nilaiRef = nilai_tm; //reference

Cara Akses Variabel
• Operator dot (.) untuk mengakses member struct yang biasa / array.
cout << nilai_tm.nilai;
• Operator arrow (->) untuk mengakses member struct ponter
cout << nilaiPtr->nilai;

Contoh:
(untuk mengakses member struct yang biasa)
#include "iostream.h"

struct data
{
char nim[11]; //nim
char nama[31]; //nama
float ipk; //ipk
};

void main()
{
struct data mhs[2];
//hanya untuk mengimputkan 2 mhs kalo ntr input na 3 pas yg k3
//muncul di output na aneh-aneh.
int i;


for(i=0;i<2;i++)
{
do{
cout << "Masukan NIM [1...10]: ";
cin >> mhs[i].nim;
cin.clear();
cin.sync();
}while(strlen(mhs[i].nim)!=10);
}

for(i=0;i<2;i++)
{
do{
cout << "Masukan Nama : ";
cin >> mhs[i].nama;
cin.clear();
cin.sync();
}while(strlen(mhs[i].nama)<3 || strlen(mhs[i].nama)>20);
}
for(i=0;i<2;i++)
{
do{
cout << "Masukan ipk : ";
cin >>mhs[i].ipk;
cin.clear();
cin.sync();
}while(mhs[i].ipk<0 ||mhs[i].ipk>4);
}

cout << "Data yang diinputkan....." << endl;
for(i=0;i<2;i++)
{
cout <<"Nim : " << mhs[i].nim << endl;
cout <<"Nama : " << mhs[i].nama << endl;
cout <<"IPK : " << mhs[i].ipk << endl;
cout << endl;
}

cin.get();
}

Pert 3 -- OFC

Senin, 12 Oktober 2009

Nama : Novita Febriani
Kelas : 03 POT
NIM : 1200979386

Hari ini saya akan membahas tentang I/O stream..
dengan contoh misalnya:

#include "iostream.h"

void main()
{
int umur;

cout << "masukan umur: ";
cin >> umur;
cin.clear();
cin.sync();
cout << endl;

cout << "umur anda adalah : " << umur;

cin.get();

}

sekarang saya akan membahas codingan diatas...
===================================================
#include "iostream.h"

ini dimaksudkan untuk membuka library dari I/O stream dalam C++ tersebut.

===================================================
cout << "masukan umur: ";

cout maksudnya untuk mencetak kalimat "masukan umur".
atau biasa dalam C menggunakan printf("Masukan Umur : ");

===================================================
cin >> umur;

cin maksudnya untuk meminta user memasukan angka yang mau di input oleh user.
atau biasa dalm C menggunakan scanf ("%d",&umur);

===================================================
cin.clear();
cin.sync();


dimaksudkan untuk mengahapus buffer dalam cin jadi saat dicetak hasilnya seperti yg diinginkan user.
Jangan lupa untuk selalu menggunakan cin.clear(); dan cin.sync(); setiap menggunakan cin.
atau dalam C menggunakan fflush(stdin);

===================================================
cin.get();

dimaksudkan untuk menahan layar output saat di run.
atau dalam C menggunakan getchar();

===================================================
endl;

ini sama saja fungsinya dengan \n untuk menurunkan ke baris selanjutnya.

===================================================


SISTEM MANIPULATOR
--------------------------------

sistem manipulator dalam c++ ada banyak jadi saya hanya akan membahas sedikit saja tentang manipulator.

cout.setf(ios::left); // arti na cout nya akan rata dimulai dari kiri
cout.width(10); // di simpan 10 tempat yang dipesen
cout.fill('*'); // untuk mengisi tempat yang kosong
cout << "asd";

maka akan tercetak output:
asd*******

tapi kekurangan dari cout.width dan cout.fill hanya dapat dipakai sekali untuk cout dibawahnya.

untuk cout rata di sebelah kanan bisa digunakan cout.setf(ios::right);
untuk ios::right atau ios::left kekurangannya adalah akan terus terpakai sampai pemrograman selesai.
===================================================
float tes;
tes = 12.45284548;
cout.setf(ios::fixed);
//utk mencetak angka diblkg koma sbyk angka yg ada di precision(_)
cout.setf(ios::showpoint);
//utk mencetak angka sebanyak angka yg ada di percision(_)
cout.precision(5);
cout << tes << endl;

maka akan tercetak output:
12.45284 // untuk cout.setf(ios::fixed);
12.452 // untuk cout.setf(ios::showpoint);

===================================================
Demikian sedikit tentang I/O stream dalam C++....

ringkasan pert 2

Jumat, 09 Oktober 2009

POINTER
=======
Pointer--> menunjuk (alamat memorinya)
Bentuk Umum : tipe_data *nama_pointer;
Contoh : int *nilai;
char *huruf;

Pointer ke bagi dalam 2:
•& anaperson = alamat
•* asterisk = value

Contoh variable pointer:
# include

void main ()
{
int a,b;
int *p; // p adalah variable pointer

a=10; b=20;
p=&a;

cout << p << *p << endl;
*p=b +15;
cout << a << endl;
cin.get();
}

Dengan hasil output:
0x0012ff8810 -->ini merupakan alamat dari a
35 --> ini merupakan nilai dari a

untuk mengetahui deret ganjil,genap,prima

Rabu, 07 Oktober 2009

#include "iostream.h"
void main()
{
int tekan;
int i, j, k, x, y, bil;
do{
for(int k=0; k<80; k++) cout << "~";
cout << "Menu" << endl;
cout << "====" << endl;
cout << "1. Deret Bilangan Ganjil" << endl;
cout << "2. Deret Bilangan Genap" << endl;
cout << "3. Deret Bilangan Prima" << endl;
cout << "4. Exit" << endl;
cout << "Silahkan pilih : ";
tekan=cin.get();
switch (tekan){
case '1' :
i=1, j=1;
do{
bil=-1;
cout << "Masukkan Jumlah Bilangan Ganjil Yang ingin ditampilkan [1..20] : " ;
cin >> bil;
cin.clear();
cin.sync();
}while (bil<1||bil>20);
cout << endl;
while (i<=bil)
{
cout << " " << j; i++, j+=2;
}
cout << endl; break;
case '2' :
i=0, j=2;
do{
bil=-1;
cout << "Masukkan Jumlah Bilangan Genap Yang ingin ditampilkan [1..20] : ";
cin >> bil;
cin.clear();
cin.sync();
}while (bil<1||bil>20);
cout << endl;
while (i< bil)
{
cout << " " << j; i++, j+=2;
}
cout << endl; break;
case '3' :
x=0, y=0;
do{
bil=-1;
cout << "Masukkan Jumlah Bilangan Prima Yang ingin ditampilkan [1..20] : ";
cin >> bil;
cin.clear();
cin.sync();
}while (bil<1||bil>20);
cout << endl;
for(j=1;;j++){
x=0;
for(i=1;i<=j;i++){
if(j%i==0)x++;
}
if(x==2){
cout << " " << j;
y++;
}
if(y==bil) break;
}
cout << endl; break;
}
cin.get();
}while (tekan!='4');
}

Tugas PBO...

Rabu, 16 September 2009

Nama : Novita Febriani
NIM : 1200979386
Kelas : 03 POT

Pemrograman berorientasi objek (Object-Oriented Programming disingkat OOP) ====================================================================

Merupakan pemrograman yang berorientasikan kepada objek. Semua data dan class berada dalam class. Model data oop lebih fleksibel dibanding program lainnya. Seperti terdapat kemudahan dalam mengubah program. Bahkan para pendukung OOP pun mengklain bahwa OOp lebih mudah untuk dipelajari bagi para pemula.

Pengembangan OOP

Pemrograman Berorientasi Objek dimulai pertama kali dengan bahasa Simula yang dikembangkan di Scandinavia di pertengahan tahun 60-an. Simula memiliki sintak yang mirip dengan Pascal, tetapi programmer berfikir sedikit lebih berbeda ketika merancang suatu program yang akan dibuat dengan Simula. Sebuah ide dasar yang diperkenalkan dalam Simula adalah inheritance (pewarisan). Dalam Simula juga sudah dikenal objek (entitas) yang ada dalam sistem yang dimodelkan. Ada beberapa objek yang dikumpulkan kemudian disebut ”Class”, dan tugas utama dari seorang perancang program dengan Simula adalah menentukan behaviour dari class tersebut.

Setelah Simula, bahasa berikutnya yang diketahui mendukung untuk mengadopsi pemrograman berorientasi objek adalah Smalltalk yang dikembangkan tahun 70-an di Xerox PARC. Simula dan Smalltalk dirancang secara elegan, dan menawarkan sejumlah konep yang powerful yang memudahkan untuk dipelajari


Konsep Utama dari OOP:
-Encapsulation/ADT(Abstract Data Type)
suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem sekaligus menyederhanakan penggunaan system itu sendiri

Contoh : sepeda motor.
Pada sistem pemindahan gigi transmisi, pengendara tidak perlu mengetahui bagaimana proses pemindahan gigi itu dilakukan oleh mesin, cukup tahu bagaimana menekan gigi transmisi itu. Pedal gigi transmisi yang diinjak pengendara itu merupakan interface (antar muka) pengendara dengan sistem transmisi sepeda motor.

-Inheritance
Adalah proses pembentukan satu class dari class lainnya, proses ini memberikan keuntungan dalm daur ulang program.
Atau bisa dikatakan sebagai pewarisan dari suatu class ke class yang lain.

Contoh : mamalia.
Terdapat banyak class dalam mamalia seperti anjing,kucing, dan monyet. Setiap binatang tersebut memiliki sifat mamalia. Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari class binatang secara otomatis.


-Polymorphism
Dapat diartikan sebagai banyak bentuk, yang memungkinkan sebuah method yang mempunyai nama yang sama namun mempunyai tugas yang berbeda. Atau dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi.

Contoh :mobil.
Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis mobil dgn merk tertentu, maka orang itu akan dapat mengemudikan hampir semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama. Harus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama. Missal pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi bagaiman proses peningkatan kecepatan ini dapat berbeda-beda untuk setiap jenis mobil.

Keuntungan dari OOP:
- Problem Oriented Approach
- Information Hiding (Data Abstaction)
- Reusability & Extensibilty
- Improve Maintenaabilty

Minggu, 13 September 2009

Hahahaa.... ^o^
Akhir na punya bloQ.. hoho.
moga-moga keurus, sekarang mw ngedit.. >.<