Mempelajari konsep Objek oriented tidak berarti semata-mata mempelajari bahasa pemrogramannya saja. Idealnya, dengan memahami konsep Object Ortiented, maka bahasa apapun dapat dijadikan tools untuk memperjelas konsep tersebut. Adakalah, kita langsung mempraktekkan bahasa pemrograman, tanpa memahami konsep OO yang terkadung di dalamnya. Tulisan beriku tini merangkum kembali konsep OO yang harus dikuasai dengan baik oleh seorang pemrogram.

Terdapat 5 materi besar dalam mempelajari Pemrograman Beroientasi Objek. Yaitu:

  1. Kelas dan Objek
  2. Interaksi antar Objek
  3. Relasi antar Objek
  4. Collection
  5. Advance topics:
    1. Abstract dan Interface
    2. Polimorphism
    3. Static dan Final 

Menurut Grady Booch, objek adalah benda; yang memiliki id, state, dan behavior. State adalah kumpulan value untuk setiap atribut yang menempel pada objek tersebut. Sedangkan behavior menunjukkan perilaku objek, direpresentasikan dengan metode/fungsi yang dapat mengubah state. Sebagai contoh, kelas Student/Mahasiswa adalah objek. Mahasiswa memilik atribut nama dan nomor induk serta IPK. Mahasiswa memiliki perilaku belajar agar value dari IPK dapat berubah.

minions

Kelas digambarkan sebagai template atau cetak biru dari sebuah objek. Kelas menggambarkan struktur dari sebuah objek. Template atau cetak biru ini menjadi dasar pembuatan objek. Objek yang berasal dari Kelas yang sama, akan memiliki atribut dan metode/fungsi yang sama. DIkatakan bahwa objek adalah instansiasi dari Kelas.

Mengacu ke notasi Unified Modeling Language (UML), kelas digambarkan dalam bentuk diagram sebagai berikut. Terdiri dari 3 area. Area pertama menunjukkan Nama Kelas, area kedua menunjukkan kumpulan atribut, dan area ketiga menunjukkan kumpulan metode/fungsi

KelasMahasiswa

Kelas Mahasiswa, notasi UM
L

Berdasarkan digram kelas tersebut, kita dapat melakukan pemrograman dengan bahasa Java sebagai berikut:

public class Mahasiswa {

String nama;
String nim;
Double ipk;

}

Sedangkan di bahasa PHP, didapat kode sebagai berikut:

class Mahasiswa {

private $nama;
private $nim;
private $ipk;

}

Sedangkan dalam bahasa Pyhton:

class Mahasiswa:

nama = “”
nim = “”
ipk = 0

Habis meng-hajar, bukan deng, habis mengajar.

Saya tidak termasuk orang yang suka menghajar siapapun. Termasuk mahasiswa saya. Tidak akan ada yang mengatakan saya dosen killer (eh iya gitu? ha ha ha). Setidaknya, itu menurut saya hehehe.

Mata kuliah adalah Applied SW Engineering. Ini tahun kelima saya mencoba mengajar mata kuliah tersebut, dimana banyak memerlukan aspek praktis dibandingkan dengan teoritis. Ini mata kuliah yang saya bidani sejak mata kuliah ini lahir di kurikulum Teknik Informatika Unpas. Padahal saya baru saja bergabung saat itu. Kurang ajar yah, Dosen Baru dikerjain.. disuruh membina Mata Kuliah Baru.

Tidak ada asisten, tidak ada partner. Meskipun saya banyak rekan-rekan sesama dosen di universitas lain yang sebidang. Tapi saya sendirian move on di sini, padahal ada dosen jagoan OO yang sudah menerbitkan buku-buku seputar OO :D. Wah.

Tahun pertama, ternyata masa peralihan. Hanya ada sekitar 12 anak dari rencana 3 kelas / 180 anak yang harus saya ajar. Rupanya anak-anak angkatan 2001 itu adalah anak-anak yang tidak bisa konversi nilai dari Mata Kuliah Rekayasa Perangkat Lunak yang terpecah menjadi Rekayasa Perangkat Lunak Dasar dan Rekayasa Perangkat Lunak Terapan. Saya bersyukur, dosen baru – bener-bener baru loh, sebelumnya saya kan praktisi praktis plus emak-emak, diberi mata kuliah baru tapi kelas kecil. Main hajar dengan UML dan Rational Rose, terhenyak lah saya bahwa ternyata ouch.. waktu itu belum diperkenalkan UML. Jadinya kerja keras lah aku! Cape de.

Tahun kedua, hih mengerikan. 3 kelas bow. Mengambil konsep pendekatan terstruktur, berbekal dokumentasi analisisi, desain, implementasi yang saya dapat sewaktu saya kuliah S2 RPL di ITB. Dengan semangat integrasi dengan kuliah Perancangan Sistem Informasi, idenya adalah rancangan fungsionalitas sistem informasi ada di kuliah PSI, otomatisasi berbantukan perangkat lunak ada di kuliah saya. Saya mengalah karena asisten pendukung dan kuliah tersebut pendekatannya terstruktur (menggunakan SSADM), saya lupakan UML. Sayangnya, hehehe, karena kuliah PSI dan RPLT ada di semester yang sama, yaitu semester 6; ide integrasi tersebut tidak mulus 😛

Tahun ketiga, masih 3 kelas, bahkan 4 kelas paralel (karena ada 1 kelas yang mengulang). Ga mau tahu, saya putuskan: saya mau pake OO! RUP!. Berpisahlah saya dan kuliah PSI karena MEMANG penekanan kedua kuliah tersebut sangat berbeda. Ini kenapa ada 1 semester, bahkan dinaungi 1 lab. Ntah yang mendesain kurikulum  yang salah, atau yang menyusun kompetensi lah yang tidak tepat. Wah, bukannya sewaktu menyusun kurikulum justru yang difikirkan adalah kompetensinya dulu? hihihi. Ketauan deh, main lahirkan Mata Kuliah,  baru pikirkan belakangan kan? Mangkaning, saya yang ngisi. SUKA SUKA saya BANGET heuheuhue.

Tapi saya ga suka-suka, saya ga main-main. Analisis dan Perancangan Berorientasi Objek saya perkenalkan di Unpas. Dari mulai Notasi, karena ternyata belum faham UML, sampai dengan substansi memetakan requirement menjadi sebuah software. Ditambah paksaan (saya ga killer, tapi ternyata saya suka maksa. ih) bahwa pemrogramanya harus berorientasi objek. PADAHAL.. hihi, anak-anak hanya diperkenalkan OOP di semester 5 saja! 3 SKS. Boro-boro.

Tapi gak apa-apa, namanya juga tahun pertama memperjuangkan OO.

Tahun keempat, refining semua bahan materi dan model pengajaran. Alhamdulillah, sudah ada barisan asisten yang peduli dan memang minat. Cukup membantu di praktek, baik dari sisi tools, modelling maupun menerjemahkan substansi permasalah ke dalam dokumentasi.

Tahun kelima, semua lebih mudah. Asisten sudah lebih banyak. Mahasiswa persertanya pun ternyata sudah cukup dibekali bahan dasar OO/UML di kuliah sebelumnya. Dari sisi pemrogarman, sudah lebih semangat lagi belajar OO (Padahal, di sini, pemrograman adalah kuliah yang sangat tidak fave. Apalagi pemrograman berorientasi objek hehehehehehe).

Saya tetap jalankan sesuai misi saya: OO everywhere 😀

Tapi..

Ketika saya sampai ke materi kelas analisis, dengan pendekatan use-case driven; dimana kelas analisis diperoleh dari identifikasi skenario dan diagram interaksi (saya masih pake UML 1.4, diagram sekuens). Wajah-wajah mulai buyar, saatnya ganti suasana. Saya improve melempar pertanyaan, dan saya minta tiap baris diwakili seseorang untuk menjawabnya. Saya minta salah seorang merangkumkan semua jawaban atas pertanyaan saya tersebut. Ternyata proses cukup lama, beberapa jawaban putus-putus. Berarti pengetahuan yang parsial. Beberapa jawaban melenceng jauhhhh hehehehe, gak apa-apa. At least dia sudah menjawab. Beberapa tidak mau menjawab, yah, hari gini masih malu-malu? Padalah apapun jawabannya, saya tidak akan komentari. Toh, semua jawaban itu bahan masukan untuk disimpulkan. Akhirnya memang bisa disimpulkan, dan terpaksa saya sampaikan lagi bahan tersebut (padahal itu materi semester 5 dan semester 4!), melupakan bahan materi yang masih tersisa.

Padahal, pertanyaan saya itu adalah..

Objek itu apa sih?

Gile ya. Jauh-jauh analisis desain, bahas fase inception, elaboration. Amati skenario per use-case. Kelas control dan boundary bla bla bla bla..

Tapi

Objek itu apa sih?

hehehehehehehe

Beginilah jika bahan ajar disampaikan, tidak menggali pemahaman penerima bahannya. Salah saya kah? Salah materinya kah (yang muluk2)? Atau memang jika yang ditanyakan adalah definisi, sulit sekali menjabarkannya? Salah bahasa indonesia? (loh), salah kemampuan komunikasi? Yang jelas, tidak boleh menyalahkan anak-anaknya 😀

Tapi sih, emang, apa sih objek itu?