download

Matakuliah
Tahun
: T0456 / Algoritma dan Metode Object
Oriented Programming
: 2007
Class dan Objek Lanjutan
Pertemuan 18
Learning Outcomes
Pada akhir pertemuan ini, diharapkan:
Mahasiswa dapat menghasilkan program dengan static data member
dan object composition.
Buku Referensi:
C++ - How to program, Deitel & Deitel,
Prentice Hall, 2001.
Websites:
http://www.deitel.com
3
Bina Nusantara
Outline Materi
•
•
•
•
•
Constant Class
Static data member
Object local dan object global
Array of object
Nesting of object
4
Bina Nusantara
Constant Object & Function
• Constant object adalah object yang tidak dapat diubah
atributnya
• Hanya const function yang dapat dipanggil oleh constant
object
• Const function adalah function yang tidak mengubah
nilai data
• Keyword yang digunakan: const
5
Bina Nusantara
Constant in Class
#include <iostream.h>
Constant
class monster{
Member
public:
const int maxlevel;
void hit(const int damage){ …
};
Constant
};
Parameter
Bina Nusantara
Contoh program
#include <constrea.h>
class point {
private:
int x, y;
public:
point(int x1, int y1){x = x1; y = y1; }
void move(int new_x, int new_y){x = new_x; y = new_y;}
void print() const;
};
void point::print() const {
cout <<"x = "<<x<<", y = "<<y<<"\n";
}
void main(){
const point cp(10, 20);
point ncp(2, 25);
cp.print();
cp.move(5,65);
ncp.move(8,7);
getch();
}
Bina Nusantara
Static Data
• Untuk membuat hanya satu nilai data member untuk
seluruh object pada suatu class
• Keyword yang digunakan: static
• Static data member:
– Varibel yang memiliki nilai sama untuk semua object dari suatu
class.
– Harus ada inisialisasi yang ditulis di luar class.
8
Bina Nusantara
Contoh Static Data
class monster{
public:
...
static int counter;
...
};
Static data
member
Static int monster::counter=555;
Bina Nusantara
Initialization
Contoh program static
#include <constrea.h>
class point {
private:
int x, y;
static int jml_titik;
public:
point(int x1, int y1){x = x1; y = y1; jml_titik++;}
int get_jml_titik(){ return jml_titik; }
};
int point::jml_titik = 0; //inisialisasi variabel static
void main() {
point p1(10, 20);
point p2(2, 25);
point p3(4, 20);
cout<<"\nJumlah titik = "<<p1.get_jml_titik();
cout<<"\nJumlah titik = "<<p2.get_jml_titik();
cout<<"\nJumlah titik = "<<p3.get_jml_titik();
getch();
}
Bina Nusantara
Object global & Object lokal
• Seperti variabel pada umumnya, object juga dapat di
deklarasikan sebagai object local maupun object global
• Constructor object global dijalankan sebelum fungsi
main() dijalankan
• Dectructor object global dijalankan pada saat fungsi
main() berakhir
11
Bina Nusantara
Contoh program object global
#include <constrea.h>
#include <string.h>
class coba {
private:
char kata[20];
public:
coba (char kata1[20]);
~coba();
};
coba::coba(char kata1[20]) {
strcpy(kata, kata1);
cout<<"\nIni ada di dalam constructor "<<kata;
}
coba::~coba() {
cout<<"\nIni ada di dalam destructor "<<kata;
getch();
}
coba obj_global("global");
void main() {
cout<<"\nAwal fungsi main...\n";
coba obj_lokal1("lokal1");
coba obj_lokal2("lokal2");
cout<<"\nAkhir fungsi main...\n";
getch();
}
Bina Nusantara
Array Object
• Suatu array dengan elemen berupa object, contohnya
adalah:
Mahasiswa dataMhs[25];
• Merupakan statement untuk mendefinisikan array dari 25
object mahasiswa.
13
Bina Nusantara
Contoh Array object
#include <constrea.h>
#include <string.h>
Class Mahasiswa {
private:
char NIM[10], Nama[30];
float IPK;
public:
void input();
void display();
};
void Mahasiswa::input(){
cout << “input Nim? “; cin >> NIM;
cout << “input Nama? “; cin >> Nama;
cout << “input IPK? “; cin >> IPK;
}
void Mahasiswa:: display(){
cout << NIM << “
“ << Nama << “ “ << IPK << endl;
}
Void main() {
Mahasiswa dataMhs[10]; //deklarasi array object mahasiswa
for(int I=0; I<5; I++)
dataMhs[I].input();
cout << “Data yang sudah diinputkan “ << endl;
for(int I=0; I<5; I++)
dataMhs[I].display();
}
Bina Nusantara
Diskusi dan Tanya Jawab
Latihan soal
15
Bina Nusantara