konsepdasarpbo
DESCRIPTION
MATERI PBOTRANSCRIPT
KONSEP DASAR PBO
KONSEP DASAR PBO PEWARISAN POLIMORFISME RELASI KELAS OPERATOR OVERLOADING
Model Objek Pewarisan Polimorfisme
Object, Attributes, Methods, Messages Encapsulation Class & Instance
Object = Attributes + Methods
message
message
message
message
attributes
method
method
method
method
Pemrograman Berorientasi Objek (PBO) Melakukan pembungkusan data (attributes)
dan fungsi (behavior) ke paket yang disebut kelas
Attributes : data yang menggambarkan status internal sebuah objek “member variables” in C++ Tidak dapatt diakses dari luar
Encapsulation Disebut juga sebagai “state”.
Methods : fungsi yang mengakses status internal sebuah objek “member functions” in C++ Dapat diakses dari luaar memanipulasi attributes Disebut juga “behavior”.
Warna
Berat
J Kelamin
menggonggong
berlari
berbaring
Mengerem
Ubah gir
- gir- kecepatan- putaran
Ubahputaran
Ubah gir
mengerem
Ubahputaran
UserUser harus menggunakan method untuk memanipulasi objek.User tidak boleh mengakses attributes secara langsung.Akses ke attributes dilakukan oleh method.Method dapat menjaga konsistensi attributes.
OK
OK
NO!
OK
- gir- kecepatan- putaran
Kelas (Class) Objek Model
Attributes (data members) Behaviors (member functions)
Didefinisikan dengan keyword class
Member functions Methods Dipanggil sebagai response terhadap
pesan
class Sepeda { };
Sepeda
Mode Akses private
Default mode akses Dapat diakses oleh member functions
public Dapat diakses oleh setiap Accessible fungsi
dalam program protected
Pewarisan
class Sepeda { }; Mengerem
Ubah gir
Ubahputaran
void mengubahPutaran(int);void mengubahGir(int); void mengerem();
public: Sepeda
class Sepeda { }; Mengerem
Ubah gir
Ubahputaran
void mengubahPutaran(int);void mengubahGir(int); void mengerem();
public:
private:- gir- kecepatan- putaranint gir;
int kecepatan; int putaran;
Sepeda
class Sepeda { }; Mengerem
Ubah gir
Ubahputaran
void mengubahPutaran(int);void mengubahGir(int); void mengerem();
public:
private:- gir- kecepatan- putaranint gir;
int kecepatan; int putaran;
SepedaSepeda (int); //konstruktor
Fungsi Constructor member function khusus
menginisialisasi data members Memiliki nama yang sama dengan nama
kelas Dipanggil saat membuat objek dari
kelas. Tidak memiliki tipe balikan
Member functions didefinisikan di luar kelas Binary scope resolution operator (::)
“mengikat” nama fungsi ke nama kelas Mengindentifikasi fungsi dari suatu kelas tertentu
FormatNilaiBalikan NamaKelas::NamaFungsi( ){…
}
Member functions didefinisikan di dalam kelas Tidak membutuhkan scope resolution operator
dan nama kelas
Sepeda::Sepeda() { gir = kecepatan = putaran = 0; } // constructor void Sepeda::mengubahPutaran(int p) { putaran = p; } // mengubahPutaran void Sepeda::mengubahGir(int g) { gir = g;} // mengubahGir
void Sepeda::mengerem(){ cout << "Kecepatan dan putaran berkurang ..." ;} // mengerem
void Sepeda::tampilInfo(){ cout << "Gir : " << gir << endl << "Kecepatan : " << kecepatan << endl << "Putaran : " << putaran << endl;} // mengerem
Class Instance-Blueprint sebuah objek-tidak ada alokasi memori (hanya deklarasi)
-Objek aktual yang dibuat -membutuhkan ruang memori untuk atribut dan fungsi
Instantiate
Mengerem
Ubah gir
Ubahputaran
- gir- kecepatan- putaran
Mengerem
Ubah gir
Ubahputaran
- gir = 2 - kecepatan = 10 [mph]- putaran = 40 [rpm]
sepeda1
- putaran = 60 [rpm]- gir = 3
Instance objek yang berbeda dapat memiliki nilai atribut yang berbeda
- kecepatan = 4 [mph]- putaran = 12 [rpm]- gir = 1
- kecepatan = 35 [mph]- putaran = 80 [rpm]- gir = 5
sepeda2
sepeda3
- kecepatan = 10 [mph]kelas Sepeda
int main(){ Sepeda sepeda1(10,60,3), sepeda2(4,12,1), sepeda3(35,80,5); // instantiasi objek kelas Sepeda sepeda1.tampilInfo(); sepeda2.tampilInfo(); sepeda3.tampilInfo(); //s.mengubahGir(2); //s.tampilInfo(); getch(); return 0; } // end main
class PersegiPanjang { };
PersegiPanjang
class PersegiPanjang { };
Ubah panjang
Ubahlebar
void ubahpanjan(int);void ubahlebar(int);
public:
private:- panjang- lebar
Int panjang;Int lebar;
PersegiPanjang
class PersegiPanjang { };
Ubah panjang
Ubahlebar
void UbahPanjang(int);void UbahLebar(int);
public:
private:- panjang- lebar
Int panjang;Int lebar;
PersegiPanjangPersegipanjang (int,int);//constructor
PersegiPanjang::PersegiPanjang() { panjang = lebar=1; } // constructor void PersegiPanjang::UbahPanjang(int p) { panjang = p; } // mengubahPanjang void PersegiPanjang::UbahLebar(int l) { lebar = l;} // mengubahLebar
class PersegiPanjang { }; Mengerem
Ubah gir
Ubahputaran
void HitungLuas(int,int);void HitungKeliling(int,int);
public:
private:- gir- kecepatan- putaranint panjang;
int luas;
Sepeda
class PersegiPanjang { }; Mengerem
Ubah gir
Ubahputaran
void HitungLuas();void HitungKeliling();
public:
private:- gir- kecepatan- putaranint panjang;
int lebar;
SepedaPersegiPanjang(int, int); // konstruktor
PersegiPanjang :: PersegiPanjang () { luas = keliling = 0; } // constructor void PersegiPanjang ::HitungLuas (int p, int l) { panjang = p; lebar = l; } // Hitung Luas void PersegiPanjang ::HitungKeliling(int p, int l) { panjang = p; lebar = l; } // Hitung Keliling