Object Oriented Programming Bag.2 Pertemuan 24 Dasar Pemrograman Renni Angreni, S.Kom.
Merujuk ke Diri Sendiri Jika kita perlu menggunakan nama argumen method yang sama dengan nama variabel lokal suatu class, maka kita dapat menggunakan operator ruang lingkup untuk membedakannya. Misalkan suatu kelas memiliki properties nama dan sebuah method setNama(string nama), kita dapat merujuk pada : Properties nama dari kelas dengan cara : namaKelas::nama Argumen method dengan cara : nama Properties nama dari kelas dengan cara : this->nama
#include using namespace std; class Orang {private: string nama; public: void setNama(string nama) { Orang::nama = nama; } void cetakNama() { cout<<nama; } }; void main() {Orang si_A; si_A.setNama("Arnold"); si_A.cetakNama(); _getch(); }
#include using namespace std; class Orang { private: string nama; public: void setNama(string nama) { nama = nama; // tidak jalan } void cetakNama() { cout<<nama; } }; void main() {Orang si_A; si_A.setNama("Arnold"); si_A.cetakNama(); _getch(); }
#include using namespace std; class Orang { private: string nama; public: void setNama(string nama) { this->nama = nama; } void cetakNama() { cout<<nama; } }; void main() {Orang si_A; si_A.setNama("Arnold"); si_A.cetakNama(); _getch(); }
Operator " :: " disebut sebagai operator ruang lingkup, fungsinya untuk merujuk pada lingkup tertentu, misalkan lingkup kelas. Sedangkan " this-> " merupakan suatu variabel yang merujuk pada diri sendiri (objek yang dihasilkan oleh class tersebut).
#include using namespace std; class Robot { private: float X; float Y; public: void setLokasi(float X, float Y) { if (X 100.0) { cout<<"Nilai X di luar batas\n"; return; } if (Y 100.0) { cout<<"Nilai Y di luar batas\n"; return; } Robot::X = X; Robot::Y = Y; } Lanjut …
void tampilLokasi() { cout<<"Lokasi robot : ("<<X<<","<<Y<<")"<<endl; } }; void main() { Robot robo1; robo1.setLokasi(20,5); robo1.tampilLokasi(); robo1.setLokasi(150,30); robo1.tampilLokasi(); robo1.setLokasi(70,200); robo1.tampilLokasi(); robo1.setLokasi(120,120); robo1.tampilLokasi(); robo1.setLokasi(75,60); robo1.tampilLokasi(); _getch(); } … lanjutan
Static Member dan Function Jika suatu field di dalam suatu kelas didefinisikan dengan keyword static di depannya, maka field tersebut dapat digunakan bersama-sama oleh semua objek kelas tersebut. Member static sering dipakai untuk mendeklarasikan konstanta pada suatu kelas. Field static bisa diakses tanpa membuat suatu objek (diakses langsung dari kelas).
class Robot { public: static int jmlRobot; void tambahRobot() { jmlRobot++; } }; int Robot::jmlRobot = 0; void main() { Robot robo1, robo2, robo3; robo1.tambahRobot(); robo2.tambahRobot(); robo3.tambahRobot(); cout<<"Jumlah robot sekarang : “ <<Robot::jmlRobot<<endl; _getch(); }
CONSTRUCTOR Constructor adalah suatu fungsi yang dipanggil setiap kali suatu objek diwujudkan. Untuk membuat constructor suatu class, kita mendefinisikan fungsi dengan nama yang sama dengan nama kelasnya. Constructor dapat berjumlah lebih dari satu. Harus didefinisikan dengan access modifier public. Tidak memiliki nilai balik / return value. Biasanya berisi instruksi untuk inisialisasi data objek. Hanya bisa dipanggil pada saat objek baru dibuat.
class Kompleks { private: double real; double ima; public: Kompleks(); //ini constructor void info(); }; Kompleks() merupakan fungsi anggota yang bertindak sebagai constructor.
#include using namespace std; class manusia { private: string nama; int usia; string jenis; int tinggi; public: manusia();//mendefinisikan fungsi constructor void kepribadian(string n, string j, int u, int t) { nama = n; jenis = j; usia = u; tinggi = t; } Contoh Constructor Lanjut …
void cetak() { cout<<"=================================="<<endl; cout<<"Nama : "<<nama<<endl; cout<<"Jenis Kelamin : "<<jenis<<endl; cout<<"Usia : "<<usia<<endl; cout<<"Tinggi : "<<tinggi<<endl; cout<<"=================================="<<endl; } }; manusia::manusia() { cout<<"Selamat Datang!!!"<<endl; } void main() { manusia mdp; mdp.kepribadian("Angeline", "Perempuan", 20, 155); mdp.cetak(); _getch(); } … lanjutan
void main() { manusia mdp; mdp.kepribadian("Angeline", "Perempuan", 20, 155); mdp.cetak(); mdp.kepribadian("David", "Laki-Laki", 23, 175); mdp.cetak(); manusia mdp1; mdp1.kepribadian("Charlie", "Laki-Laki", 21, 168); mdp1.cetak(); manusia mdp2; mdp2.kepribadian("Betrice", "Perempuan", 20, 160); mdp2.cetak(); _getch(); }
Contoh Constructor dengan Argumen Lanjut … #include using namespace std; class Lingkaran { private: double radius; public: void setLingkaran(double r) { radius = r; } Lingkaran() { cout<<"Objek baru telah dibuat..."<<endl; } Lingkaran(double r) { radius = r; cout<<"Objek baru telah dibuat,”<<endl;
… lanjutan cout<<"dengan radius objek = "<<radius<<endl; cout<<"Keliling objek = "<<keliling()<<endl; cout<<"Luas objek = "<<luas()<<endl; } double luas() { return (radius * radius * 3.14); } double keliling() { return (2 * radius * 3.14); } void getLingkaran() { cout<<"================================="<<endl; cout<<"Panjang jari-jari : "<<radius<<endl; cout<<"Keliling Lingkaran : "<<keliling()<<endl; cout<<"Luas Lingkaran : "<<luas()<<endl; cout<<"================================="<<endl; } }; void main() {Lingkaran lingkaranKecil; lingkaranKecil.setLingkaran(10); lingkaranKecil.getLingkaran(); cout<<endl; Lingkaran lingkaranBesar(10); _getch(); }
DESTRUCTOR Destructor adalah suatu fungsi yang dipanggil / dijalankan secara otomatis ketika suatu objek dari suatu kelas tersebut dihancurkan / dibuang. Nama destructor sama seperti nama constructor, tetapi diawali karakter “ ~ “ Suatu objek dihancurkan dengan perintah : delete namaObjek; Contoh pada kelas : public: Bilangan(); //ini constructor ~Bilangan(); //ini destructor
Contoh Penggunaan Destructor Lanjut … #include using namespace std; class Bilangan { private: int i; public: Bilangan(); ~Bilangan(); void info_data(); }; void main() { Bilangan *x; x = new Bilangan(); delete x; cout<<endl; Bilangan y; y.info_data(); cout<<"Fungsi main() berakhir... "<<endl; _getch(); }
… lanjutan Bilangan::Bilangan() { cout<<"Konstructor dijalankan..."<<endl; i = 55; } Bilangan::~Bilangan() { cout<<"Destructor dijalankan... "<<endl; } void Bilangan::info_data() { cout<<"i = "<<i<<endl<<endl; }
Dasar Pemrograman Renni Angreni, S.Kom.