KONSEP OOP

Sebelum kita kita back tentang bahasa Pemrograman, seperti telah kita ketahui ada 3 jenis bahasa Pemrograman yaitu:
1. Bahasa Pemrograman tingkat rendah, misalnya bahasa Assembly
2. Bahasa Pemrograman tingkat menengah
3. Bahasa Pemrograman tingkat tinggi, misalnya bahasa C##, Pascal, java dan lain sebagainya.
Perlu kita ketahui suatu bahasa Pemrograman semakin manusia sulit memahami maka tingkatnya semakin rendah.
OOP adalah salah satu metode dari sebuah sudut pandang pemrograman. Kita ketahui bahwa sebelum lahir konsep OOP orang-orang telah mengenal paradigma semodel functional programming kemudian procedural programming (C, Pascal). OOP juga dari beberapa sumber dapat dijelaskan sebagai korelasi dari beberapa obyek yang saling berinteraksi dimana class adalah unit dari pemrograman tersebut. OOP sendiri diusung oleh bahasa pemrogranan seperti Java dan C#. Satu hal yang mungkin bisa kita sepakati bahwa sebanrnya manusi itu sendiri menganut system OOP. Kenapa demikian? Contoh sederhana begini, jika kita melihat seorang manusia atau diminta untuk menggambarkan seorang manusia maka yang ada dikepala kita adalah dua punya mata, kaki, berpakaian, pakai topi misal dan sebagainya. Apa kita sebutkan diatas sebanrnya adalah kumpulan dari sebuah atribut yang dikenal dalam OOP. Sedangkan behaviour dari manusia tersebut yang juga komponen dari sebuah OOP adalah bagaimana cara jalan kedepan, mundur, kekiri atau kekanan. Oh ya hampir lupa bahwa atribut biasa juga disebut member atau variable dan behavior adalah method atau fungsi.
Sekarang coba kita bayangkan dari sebuah mobil. Apa yang menjadi atributnya dan behaviour. Ya benar atributnya pasti ada ban, stir, kopling, gas, warna mobiln tahun produksi dan lain-lain. Sedangkan behaviournya adalah cara menghidupkan mesin, menjalankan atau memundurkan mobil tersebut.
Sedikit mundur kebelakang, kita akan coba bandingkan apa sebenarnya perbedaan dari sebua paradma model prosedural dibandingkan dengan Object Oriented. Dulu, khususnya Bapak atau Ibu yang pernah mendalami konsep bahasa penrograman terstruktur missal Pascal dan semacamnya jika diminta untuk membuat model pemrograman untuk sebuah transaksi keuangan maka yang akan muncul dipikiran kita mungkin adalah kita butuh sebuah menu yang perlu form transaksi. Didalamnya mungkin akan kita masukkan inputan untuk debet, kredit dan prosedur untuk perhitungan pengecekan dan prosedur penyimpanan data. Di OOP konsep itu agak diubah dengan cukup miliki class akun missal dimana kita bisa memiliki turunan (inheritance dua buah, yakni chek akun dan saving akun.
Sekarang kita kembali ke OOP. Jadi sebenarnya dapat dikatakan bahwa pemrograman dengan OOP adalah bagaimana kita melihat sebuah system menjadi lebih sederhana, yakni sekumpulan subsistem (obyek) yang saling berinterkasi. Contohnya mobil tadi, mobil adalah sekumpulan system pengapian, system kemudi,system pengereman dan sebagainya.
Perlu dipahami adalah bahwa class masih bersifat abstrak. Pada saat mendefinisikan sebuah class baru, berarti kita telah mendefinisikan tipe data baru pula. Setelah didefinisikan, tipe data ini akan digunakan untuk mebuat sebuah object dari tipe tersebut. Jadi dapat dikatakan bahwa class adalah bentuk abstrak yang merupakan pola (template) sedangkan object adalah perwujudan nyata (instance) dari class.
Kemudian bagaimana sih cara untuk mendefinisikan class itu sendiri? coba kita lihat struktur berikut ini:
class MataKuliah {
tipe data1;
tipe data2;

tipe dataN;
tipe method1(parameter){
//kode untuk eksekusi method1
}
tipe method2(parameter){
//kode untuk eksekusi method2
}

tipe methodN(parameter){
//kode untuk eksekusi methodN
}
}
dari struktur diatas diperlihatkan bahwa nilai dari variabel didalam sebuah class tersebut akan diakses melalui method-method yang dipersiapkan. dengan demikian method sebenarnya digunakan sebagai antarmuka (interface) antara pemakai dan data-data yang terdapat didalam class tersebut.
Sekarang kita coba lihat sebuah contoh dari sebuah aplikasi class di java.
class Luas Trapesium{
double alas;
double tinggi;
}
disini diperlihatkan bahwa terdapat class LuasTrapesium dimana memiliki variable yakni alas dan tinggi. Melalui syntax diatas didefinisikan sebuah class yang merupakan template, bukan object. Setelah ini kita harus mendefinisikan objectnya yang dibuat sendiri seperti contoh berikut ini:
LuasTrapesium bangun=new Luas Trapesium();
Diperlihatkan bahwa LuasTrapesium adalah class dan bangun adalah object dari class tersebut. Melalui object bangun ini, kita bisa menggunakannya berdasarkan nantinya dengan data yang terdapat pada class LuasTrapesium, misalnya seperti contoh berikut ini:
bangun.alas=4;
bangun.tinggi=2;
nilai-nilai tersebut merupakan nilai yang akan dimasukkan pada variabel alas dan tinggi yang dimiliki oleh obejct bangun. Untuk lengkapnya dapat dilihat dari keseluruhan kode programan berikut ini:
 
class LuasTrapesium {
double alas;
double tinggi;
}
class HitungLuas {
public static void main(String[] args) {
double luas;
LuasTrapesium bangun=new Luas Trapesium();
bangun.alas=4;
bangun.tinggi=2;
//Menghitung luas Trapesium
luas= bangun.alas * bangun.tinggi;
//Menampilkan ke layar monitor
System.out.println(” Luas Trapesium = ” + luas);
}
}
kode program tersebut harus disimpan dalam bentuk file dengan mana HitungLuas.java, bukan LuasTrapesium.java karena method main() terletak pada class HitungLuas.java