Pemrograman Berorientasi Objek (Object-Oriented Programming)
OOP atau yang
sering di sebut dengan Object-Oriented
Programming merupakan, Pemrograman prosedural. OOP adalah tentang menulis prosedur atau fungsi
yang melakukan operasi pada data, sedangkan pemrograman berorientasi objek
adalah tentang membuat objek yang berisi data dan fungsi. Pemrograman berorientasi objek memiliki beberapa keunggulan dibandingkan
pemrograman prosedural,yaitu:
- Lebih cepat dan lebih mudah untuk
mengeksekusi
- Menyediakan struktur yang jelas untuk
program
- Membantu menjaga kode C ++ DRY "Don't
Repeat Yourself", dan membuat kode lebih mudah untuk mempertahankan,
memodifikasi, dan men-debug
- Memungkinkan untuk membuat aplikasi yang
dapat digunakan kembali penuh dengan kode yang lebih sedikit dan waktu
pengembangan yang lebih pendek.
Prinsip "Jangan Ulangi Diri" (DRY) adalah tentang mengurangi
pengulangan kode. Kita harus mengekstrak kode yang umum untuk
aplikasi, dan menempatkannya di satu tempat dan menggunakannya kembali.
C ++
Apa itu Kelas dan Objek?
Kelas dan objek adalah dua aspek utama dari pemrograman berorientasi
objek. Lihat ilustrasi berikut untuk melihat
perbedaan antara kelas dan objek:
Class Buah |
Objek Apel Pisang Mangga |
Jadi, kelas
adalah template untuk objek, dan objek adalah contoh dari kelas. Ketika objek individu dibuat, mereka mewarisi semua variabel dan fungsi
dari kelas.
C++ Class/Objek
Segala sesuatu dalam Bahasa C ++
dikaitkan dengan kelas dan objek, bersama dengan atribut dan metodenya.
Misalnya: dalam kehidupan nyata, mobil adalah objek. Mobil ini memiliki
atribut, seperti berat dan warna, dan metode, seperti ban dan rem. Atribut dan metode pada dasarnya adalah
variabel dan fungsi yang termasuk dalam kelas. Hal ini sering disebut sebagai "anggota
kelas".
Kelas adalah tipe data yang ditentukan pengguna yang dapat kita gunakan
dalam program, dan berfungsi sebagai konstruktor objek, atau "cetak
biru" untuk membuat objek.
Membuat
Kelas
Untuk membuat
kelas, gunakan kata kunci class:
Contoh
Membuat kelas
yang disebut "MyClass":
class MyClass {
// Kelas
public: // Penentu akses
int myNum; // Atribut (int variable)
string
myString; // Atribut (string variable)
};
Keterangan:
- Kata kunci class digunakan untuk membuat kelas yang
disebut MyClass.
- Kata kunci public adalah penentu akses, yang
menentukan bahwa anggota (atribut dan metode) kelas dapat diakses dari
luar kelas.
- Di dalam class, ada variabel integer myNum dan variabel
string myString. Ketika variabel dinyatakan dalam kelas, mereka disebut
atribut.
- Akhiri definisi kelas dengan titik koma;.
Membuat
Objek
Dalam Bahasa C ++, sebuah objek dibuat dari class. Kita telah membuat
kelas bernama MyClass, jadi sekarang dapat menggunakan ini untuk membuat objek. Untuk membuat objek MyClass, tentukan nama kelas, diikuti dengan nama
objek. Untuk mengakses atribut kelas (myNum
dan myString), gunakan sintaks titik (.) pada objek:
Contoh
Membuat objek
yang disebut "myObj" dan mengakses atribut:
#include <iostream> #include <string> using namespace std; class MyClass {
public: int myNum; string
myString; }; int main() { MyClass
myObj; // Mengakses atribut dan mengatur nilai myObj.myNum = 15; myObj.myString =
"Some text"; // Mencetak nilai cout <<
myObj.myNum << "\n"; cout <<
myObj.myString; return 0; } |
Class Methods
Metode adalah fungsi yang termasuk dalam kelas. Ada dua cara untuk mendefinisikan fungsi yang termasuk dalam kelas:
- Definisi di dalam kelas
- Definisi di luar kelas
Dalam contoh berikut, kita mendefinisikan fungsi di dalam kelas, dan
kita menamakannya "myMethod".
Perlu di perhatikan untuk mengakses metode seperti kita mengakses atribut; dengan membuat objek kelas dan menggunakan sintaks
titik (.):
#include <iostream> using namespace std; class MyClass { public: void myMethod() { cout << "Hello World!"; } }; int main() { MyClass myObj; // Membuat objek dari MyClass myObj.myMethod(); // Memanggil method return 0; } |
Untuk menentukan fungsi di luar definisi kelas, Anda harus
mendeklarasikannya di dalam kelas dan kemudian mendefinisikannya di luar kelas.
Hal ini dilakukan dengan specifiying nama kelas, diikuti resolusi lingkup ::
operator, diikuti dengan nama fungsi:
#include <iostream> using namespace std; class MyClass { // public: // void myMethod(); // Deklarasi Metode/fungsi }; // Definisi metode/fungsi di luar kelas void MyClass::myMethod() { cout << "Hello World!"; } int main() { MyClass myObj; // Membuat objek dari MyClass myObj.myMethod(); // Memanggil method return 0; } |
Konstruktor
Konstruktor dalam bahas
C ++ adalah metode khusus
yang secara otomatis disebut ketika objek kelas dibuat. Untuk membuat konstruktor, gunakan nama yang sama dengan kelas, diikuti
dengan tanda kurung ():
Contoh
class MyClass { // Kelas
public: // Penentu akses
MyClass() { // Konstruktor
cout << "Hello World!";
}
};
int main() {
MyClass
myObj; //Buat objek MyClass (ini akan memanggil konstruktor)
return 0;
}
Catatan: Konstruktor memiliki nama yang sama dengan class, selalu public, dan tidak memiliki nilai pengembalian.
Parameter
Konstruktor
Konstruktor juga dapat mengambil parameter (seperti fungsi biasa), yang
dapat berguna untuk menetapkan nilai awal untuk atribut. Kelas berikut memiliki atribut merek, model dan tahun, dan konstruktor
dengan parameter yang berbeda. Di dalam konstruktor kami mengatur atribut yang sama
dengan parameter konstruktor (brand = x, dll). Ketika kita memanggil
konstruktor (dengan membuat objek kelas), kita meneruskan parameter ke
konstruktor, yang akan mengatur nilai atribut yang sesuai:
#include <iostream> using namespace std; class Car { public: string brand; string model; int year; Car(string x, string y, int z) { // Constructor dengan parameters brand = x; model = y; year = z; } }; int main() { // Buat objek Mobil dan panggil konstruktor dengan nilai yang berbeda Car carObj1("BMW",
"X5", 1999); Car carObj2("Ford",
"Mustang", 1969); // Mencetak nilai cout << carObj1.brand << "
" << carObj1.model << " " << carObj1.year
<< "\n"; cout << carObj2.brand << "
" << carObj2.model << " " << carObj2.year
<< "\n"; return 0; } |
Sama seperti fungsi, konstruktor juga dapat didefinisikan di luar kelas.
Pertama, nyatakan konstruktor di dalam kelas, dan kemudian definisikan di luar
kelas dengan menentukan nama kelas, diikuti oleh resolusi lingkup :: operator,
diikuti dengan nama konstruktor (yang sama dengan kelas):
#include <iostream> using namespace std; class Car { public: string brand; string model; int year; Car(string x, string y, int
z); }; // Definisi konstruktor di luar kelas Car::Car(string x, string y, int z) { brand = x; model = y; year = z; } int main() { // Buat objek Mobil dan
panggil konstruktor dengan nilai yang berbeda Car carObj1("BMW",
"X5", 1999); Car carObj2("Ford",
"Mustang", 1969); // Mencetak nilai cout << carObj1.brand
<< " " << carObj1.model << " " <<
carObj1.year << "\n"; cout << carObj2.brand
<< " " << carObj2.model << " " <<
carObj2.year << "\n"; return 0; } |
Akses
Penentu
Sekarang, kita cukup sering dengan kata kunci public yang muncul
di semua contoh class:
Contoh
class MyClass {
public:
// Anggota kelas pergi ke sini
};
Kata kunci publik adalah penentu akses. Penentu akses menentukan
bagaimana anggota (atribut dan metode) dari kelas dapat diakses. Dalam contoh
di atas, anggota bersifat publik - yang berarti bahwa mereka dapat diakses dan
dimodifikasi dari luar kode.
Namun, bagaimana jika kita
ingin anggota menjadi Private dan tersembunyi dari dunia luar?
Dalam Bahasa C ++, ada tiga penentu akses:
- public - Anggota dapat diakses dari luar kelas
- private - anggota tidak dapat diakses (atau
dilihat) dari luar kelas
- protected - Anggota tidak dapat diakses dari luar
kelas, namun, mereka dapat diakses di kelas pewarisan.
Dalam contoh berikut, menunjukkan perbedaan
antara public and private members:
Contoh
#include <iostream> using namespace std; class MyClass {
public: // Public access
specifier int
x; // Public attribute
private: // Private access
specifier int
y; // Private attribute }; int main() {
MyClass myObj;
myObj.x = 25; // Allowed (x is
public)
myObj.y = 50; // Not allowed (y
is private)
return 0; } |
Ade putri maharani_2155201110004
BalasHapusErni_2155201110002
BalasHapusElisa Fitriana_2155201110001
BalasHapusM. Sarif_2155201110031
BalasHapusAlfisah Damayanti_2155201110006
BalasHapusJauhar Latifah_2155201110015
BalasHapusmuhammad nur hafillurin 215520110033
BalasHapusAhmad Nawawi_2155201110030
BalasHapusIHSANUDIN_2155201110014
BalasHapusYulisa Suryana_2155201110029
BalasHapusMuhammad Noval_2155201110032
BalasHapusKayyisu Willyani_2155201110016
BalasHapusMuhammad Ubaidillah_2155201110003
BalasHapusAulia Fitri_2155201110008
BalasHapusMuhammad Tahrir_21552p1110022
BalasHapusMuhammad Zulfan Reva Maulana_2155201110024
BalasHapusNur Aina Susanti_2155201110027
BalasHapusNor Laila Hasanah_2155201110025
BalasHapusFiqri Pramudya Adiyatma_2155201110013
BalasHapusKhanda ahmad sukmawan_2155201110035
BalasHapusMuhamad Bagad Bimantara_2155201110018
BalasHapusThariq_2155201110028
BalasHapusMuhammad Iqbal adha_2155201110021
BalasHapusNovia rahmah 2155201110026
BalasHapus