Archive for 1 February, 2012

Pengenalan Pemrograman Berbasis Objek – Dari C ke C++

Ini adalah salah satu artikel dari seri Pengenalan Pemrograman Berorientasi Objek.

Sebelumnya kita telah membahas intro yang sebagian besar menjelaskan konsep kelas, objek, dan instansi dalam OOP, yang dapat diakses di: Pengenalan Pemrograman Berbasis Objek – Intro

Dalam artikel ini, gw nggak akan menjelaskan banyak tentang konsep OOP, namun lebih banyak ke penggunaannya dalam C++ yang terutama ditujukan untuk mempermudah programmer C untuk memahami cara pengimplementasian konsep OOP dalam C++.

Apa itu C++?

C++ adalah bahasa pemrograman menengah (intermediate-level language) yang menggabungkan fitur-fitur yang terdapat pada bahasa tingkat rendah (low-level language) dan bahasa tingkat tinggi (high-level language).

C++ pertama kali dikembangkan oleh Bjarne Stroustrup dan mulanya diberi nama C with Classes karena memang yang sangat membedakan antara C murni dengan C++ adalah dengan adanya kelas (class).

Under Construction!

Belum sempat dilanjutin lagi postnya hehe. Sabar yah 😀

Pengenalan Pemrograman Berorientasi Objek – Intro

Sebelum memulai membaca artikel intro ini dan lanjutannya, gw saranin pembaca udah terlebih dahulu menguasai atau setidaknya mengenal salah satu bahasa pemrograman prosedural (C, Pascal, dll.), tapi sangat disarankan sudah menguasai C karena dalam edisi ini gw akan lebih banyak membahas OOP dalam bahasa C++.

Hi! Dalam kesempatan ini gw mau berbagi pengetahuan gw mengenai Pemrograman Berbasis Objek (biasa disingkat PBO) atau bahasa keren-nya, Object Oriented Programming (biasa disingkat OOP). Artikel ini gw buat berhubung temen-temen gw juga di semester mendatang pasti bakalan berperang nih sama yang namanya OOP, jadi semoga artikel ini bisa bermanfaat 🙂

Oke, let's begin! Pengenalan ini bakalan gw bagi jadi beberapa bab dan pada kesempatan kali ini gw bakal tulis mengenai pengenalan singkat dari konsep OOP itu sendiri.

Anyhow, artikel ini gw buat 100% atas dasar keinginan untuk berbagi berdasarkan pengalaman gw sendiri dan dicocokkan dengan banyak referensi (baik buku maupun artikel yang bertebaran di Internet), jadi mohon maaf apabila ada kesalahan dalam penulisan, pemahaman, dan hal lain, supaya bisa dikomunikasikan ke gw jadi bisa segera dikoreksi. :]

Oh iya, karena syntax atau implementasi OOP dalam berbagai bahasa dapat berbeda-beda, dalam intro ini gw akan lebih menekankan konsep dari OOP itu sendiri, namun dalam seluruh seri ini gw akan lebih banyak membahas OOP dalam bahasa C++.

Apa itu Pemrograman Berorientasi Objek?

Pemrograman Berorientasi Objek atau Object-Oriented Programming (OOP) adalah sebuah paradigma pemrograman yang menggunakan "objek" yang berisi data-data serta metode-metode untuk berinteraksi dengan program. Untuk seterusnya, gw akan menggunakan istilah "OOP" karena untuk menuliskan "pemrograman berorientasi objek" memerlukan 10 kali tenaga lebih daripada menuliskan "OOP". 😛

Lihat area sekitar anda. Ada apa? Handphone? Secangkir teh/kopi? Mouse? Keyboard? Mereka semua adalah objek. Lalu apa hubungannya dengan OOP? Mengapa kita membutuhkan OOP? Sadarkah kita bahwa ketika kita membuat suatu program sebenarnya kita membuatnya agar seolah-olah dapat merepresentasikan hal yang ada di dunia nyata?

Dalam OOP, kita mengelompokkan segalanya kedalam objek-objek untuk memudahkan kita dalam menyelesaikan suatu masalah, sehingga jika dalam pemrograman prosedural kita hanya menggunakan tipe int, float, char, dan array, dalam pemrograman berorientasi objek kita juga dapat membuat tipe mobil, handphone, cangkir, dan banyak hal lain sesuai dengan kebutuhan.

Ada banyak bahasa pemrograman yang memungkinkan kita untuk menggunakan paradigma OOP, seperti C++ dimana kita masih dapat menggunakan paradigma prosedural didalamnya, atau bahkan bahasa yang hanya memperbolehkan kita untuk menggunakan paradigma OOP seperti Java atau C#.

Gw tekankan sekali lagi, karena syntax atau implementasi OOP dalam berbagai bahasa dapat berbeda-beda, dalam seri ini gw hanya akan membahas pemrograman berorientasi objek dalam bahasa C++, namun intinya dalam bahasa pemrograman manapun yang menggunakan paradigma OOP memiliki cara pandang yang kurang lebih sama, jadi jangan khawatir :].

Apa itu Objek?

Dalam istilah OOP, objek merepresentasikan sebuah kelas (class).

Berbeda dengan bahasa pemrograman prosedural, dalam OOP, segalanya kita buat menjadi objek-objek dimana masing-masing objek dapat melakukan hal-hal yang berkaitan dengan objek tersebut.

Untuk lebih memahami konsep "objek" itu sendiri, gunakan tubuh anda sebagai contoh. Tubuh anda memiliki kepala, tangan, dan kaki. Kita dapat menganggap bahwa tangan adalah sebuah objek yang dapat melakukan berbagai aktivitas seperti mengetik, menunjuk, meraba, dll. Begitu juga untuk kaki, kita dapat menganggap bahwa kaki adalah objek yang dapat melakukan aktivitas seperti berjalan, berlari, dll. Semua terhubung dengan tubuh melalui sekumpulan saraf yang digunakan tubuh untuk berkomunikasi dengan objek-objek tersebut.

Apa itu Kelas?

Kelas menjelaskan detil dari sebuah objek, yang membedakan antara satu objek dengan objek yang lain. Dengan kata lain, kelas adalah deskripsi, blueprint, karakteristik, atau sekumpulan sifat-sifat yang digunakan untuk membentuk sebuah "objek".

Simak kode berikut:

C++
1
Manusia yana = new Manusia();

Dari kode diatas, dapat dikatakan bahwa kita membuat sebuah instansi dari objek yang tergolong kedalam kelas Manusia yang kita beri nama yana.

Let's say, anda ingin membuat sebuah program pengolahan nilai siswa untuk memudahkan guru dalam mengolah nilai siswa. Seorang siswa dapat memiliki nama, dan nilai. Dalam pemrograman prosedural, anda akan membuat 1 variabel string untuk menyimpan nama dan 1 variabel integer untuk menyimpan nilai. Dalam OOP, kita dapat mengelompokkan data tersebut kedalam 1 kelas:

C++
1
2
3
4
5
class Siswa
{
int Nilai;
string Nama;
};

Variabel-variabel tersebut (Nilai dan Nama) dapat disebut field atau atribut atau variabel anggota (member variable) karena berada didalam sebuah kelas.

Dengan cara ini, anda dapat dengan mudah mengelompokkan semua siswa kedalam satu kelas, yaitu Siswa, dan setiap siswa merupakan instansi dari kelas tersebut.

Dalam dunia nyata, anda akan sering sekali menemui banyak objek dalam kelas yang sama. Contohnya, ada banyak orang di dunia ini, setiap orang merupakan objek yang merepresentasikan kelas Manusia, anda dan saya merupakan instansi dari objek tersebut.

Jadi.. Apa bedanya antara Kelas, Objek, dan Instansi?

Kelas menjelaskan detil dari sebuah objek, yang membedakan antara satu objek dengan objek yang lain. Dengan kata lain, kelas adalah deskripsi, blueprint, karakteristik, atau sekumpulan sifat-sifat yang digunakan untuk membentuk sebuah objek. Contoh: Manusia

Objek merepresentasikan sebuah kelas. Contoh: Semua hal yang ada di dunia ini yang memiliki ciri sama persis dengan Manusia.

Instansi adalah objek unik yang membedakan antara objek satu dengan objek yang lain yang dapat dibedakan dari nilai-nilai yang terdapat pada variabel anggotanya. Contoh: Anda dan saya memiliki nama dan umur yang berbeda, maka anda dan saya adalah dua instansi yang berbeda, namun tetap merupakan objek dari kelas Manusia.

Sebagai contoh, kita memiliki sebuah kelas "Manusia" dengan variabel anggota: nama dan tinggi badan; yang merepresentasikan manusia (objek). Dalam ruangan ini, terdapat 2 manusia, Giri dan Yana, yang masing-masing merupakan 2 instansi yang berbeda dari (kelas) Manusia, karena di antara 2 manusia tersebut terdapat perbedaan, dimana manusia yang pertama memiliki nama "Giri" dan tinggi badan 175, sementara manusia yang kedua memiliki nama "Yana" dan tinggi badan 180. (Hanya contoh, no offense :P)

Tapi walaupun kedua manusia tersebut memiliki nama dan tinggi badan yang sama, tetap saja dianggap 2 instansi yang berbeda, karena saat kita melakukan instansiasi 2 objek dari kelas Manusia dalam suatu program, program akan menempatkan kedua instansi tersebut dalam 2 alamat memori yang berbeda meskipun isi dari variabel anggotanya sama.

Banyak Istilah

Di dunia, banyak istilah-istilah berbeda yang digunakan namun tetap merujuk ke satu hal yang sama. Sebagai contoh, variabel anggota (member function) dapat juga disebut field atau atribut, namun keduanya tetap merujuk ke satu arti yang sama. Jadi, jangan terlalu diambil pusing. You'll get used to it. 🙂

Got it?

OK, kalau udah ngerti dan siap untuk lanjut ke bab selanjutnya, klik link dibawah. ;D

Kalau ada pertanyaan atau koreksi, silahkan tinggalkan komentar.

Bab Intermezzo (opsional): Pengenalan Pemrograman Berorientasi Objek – Dari C ke C++

atau langsung ke Bab Selanjutnya: Pengenalan Pemrograman Berorientasi Objek – Enkapsulasi