Friday, October 21, 2011

Object-Oriented Programming-1

Paradigma OO
  • Pra Kehidupan: ada dunia "sebelum" jagat raya dan objek dihidupkan, definisi "statis" [kelas, hubungan antar kelas, kontrak]. Programmer berfungsi sebagai perancang kelas
  •  Saat run time: dimulailah kehidupan (biasanya dengan mulai hidupnya SANG OBJEK UTAMA, yaitu aplikasi yang akan menghidupkan objek lain). Setiap objek akan hidup dan berinteraksi dengan objek lain sesuai dengan definisinya. Setelah tugas menghidupkan selesai, SANG OBJEK UTAMA "tidur". Objek saling berinteraksi dan mengirimkan pesan sesuai dengan definisinya. Objek yang sudah tidak dibutuhkan dihancurkan atau menghancurkan diri.
  • Akhir Kehidupan: SANG OBJEK UTAMA terbangun, dan lenyap bersama jagat raya beserta seluruh objek tersisa.
OOP : Class vs Object
  • Class : entitas statik, didefinisikan dalam teks program.
  • Objek : entitas dinamik, instansiasi dari class, ada pada saat run time.
  • Kehidupan Objek : creation, manipulatopm, destruction.
  • Memrogram Object-Oriented:
    • Controller : melahirkan objek, mengendalikan kehidupan objek, dsb.
    • Objek lain : saling mengirimkan message dan melaksanakan operas.
Cataran Penting:
  1. Class mempunyai "feature":
    1. Method
    2. Atribut
  2. Implementasi prosedur dan fungsi dalam sebuah kelas, pelajari perbedaan denghan prosedural (akan diberikan contoh):
    1. Perhatikan penulisan prototype / signature,
    2. Perhatikan parameter input, output dan input / output,
    3. Perhatikan passing parameter, by value dan by ref
    4. Perhatikan invokasi (bukan CALL)
INVOKASI / MESSAGE PASSING

Object-Oriented
Procedural

Berpikir secara Object-Oriented

Lanjut lagilah tentang object-oriented nya yah.. Selagi aku masih semangat belajar object-oriented nya.. hehhehehe.. #selagirajin

Pertanyaan Praktis
Apakah sebuah program diprogram "secara" Object-Oriented?????
  1. OO adalah sebuah "paradigma", cara berpikir, sudut pandang. Cara berpikir bukan "produk" (source code). Source code adalah "HASIL".
  2. Walaupun ditulis dalam sebuah bahasa OO, sebuah program mungkin saja:
    • Merupakan sebuah program Prosedural dan sekuensial. Salah satu ciri: tidak ada definisi CLASS dibuat oleh programmer.
    • Programmer mendefinisikan kelas, namun hanya sebatas membungkus ADT. Ada definisi kelas, namun programnya prosedural.
    • Program menggunakan library Class yang bukan / maupun merupakan GUI Object, sehingga ada pemakaian kelas yang disediakan.
    • Program memang dirancang berparadigma OO. Untuk mampu mengetahui hal ini, diperlukan "persepsi" khusus... :) :) :)
Studi Kasus (Ilustrasi: Bola dalam Bidang)
  • Sebuah bidang mengandung sekumpulan bola. Setiap bola mempunyai arah.
  • Bola bergerak sesuai dengan arahnya
  • Jika "bertabrakan", maka bola akan mati
  • Jika bola habis sama sekali, system yang akan mati
  • Jika bola tersisa "sedikit", akan lahir bola-bola bar hingga jumlah tertentu.
    
 Solusi prosedural sekuensial dengan ADT list of bola dan sebuah main program adalah:
  1. Main program mengendalikan pergerakan setiap bola secara sekuensial.
  2. Main program mengirim pesan kepada setiap bola, supaya "menggerakkan dirinya saat diberi pesan untuk bergerak".
Solusi dengan proses konkuren dan ADT sederhana, idem di atas namun misalnya menggunakan satu "thread" untuk setiap pergerakan bola.
Solusi dengan proses konkuren dan ADT generik (list of list) : list of cell (posisi), list of bola, ......
Solusi di mana penggerak bola dan viewer yang diimplementasikan dengan mesin gambar, ada satu atau empat mesin gambar.
Solusi lainnya : __________________________________________

Pengenalan Object Oriented Programming

 Untuk saat ini aku maw membagikan ilmu tentang Object-Oriented Programming dulu lah. Walaupun aku belum terlalu jago, tapi sekedar share yang aku dapat selama belajar kan bisa aja..:) Aku juga masih belajar dari slide nya dosen..:D
Okelah,, langsung aja ke materinya...

Apa sih OOP???
[Meyer98]: Sebuah sistem yang dibangun berdasarkan metoda berorientasi objek adalah sebuah sistem yang komponennya di-enkapsulasi menjadi kelompok data dan fungsi, yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut saling berinteraksi.


Karakteristik OOP
  • Abstraksi
  • Spesialisasi - Generalisasi
  • Enkapsulasi
  • Komunikasi antar objek
  • Generik / Templates
  • Reusability
  • Pewarisan (inheritance)
  • Component
  • Polymorphisme
  • Pattern

 "Tingkatan" Object-Oriented Programming
  1. OOP "hanya" untuk enkapsulasi, jadi simplenya adalah ADT (Abstract Data Type) pada pemrograman prosedural
  2. OOP adalah genericity
  3. OOP dengan inheritance, multiple inheritance, repeated inheritance
  4. OOP dengan polymorphism
  5. OOP secara konkuren
  6. OOP dengan design pattern, component, dan framework.
 Bahasa OO (OOL)
- Murni   : Smalltalk, Eiffel, Java
- Procedural - OO : C ++
- Functional - OO : Object LISP
- Deklarative - OO : BEBERAPA VERSI OO

Memprogram secara Object-Oriented tidak harus menggunakan bahasa OO,
Contoh: ADT dalam bahasa C.

Udah...
Itu dulu yang bisa aku bagi, nanti kalo ada yang kelanjutannya, ditunggu aja ya..:D 

Jadi Pembimbing Mahasiswa Lomba Programming

Waaah...
Ga terasa dah lama aku jd Teaching Assistant di Politeknik Informatika Del.

Tiba-tiba aja bu Arlinta datang ke meja ku,,, "Carolin, kamu besedia ga jadi pembimbing mahasiswa yang ikut lomba programming.." Whaaaat???????

Benar-benar kaget lah aku waktu itu. Sangkin ga percaya nya, aku asal bilang "IYA" aja. Ga ku pikirkan kalo aku ga pantas jadi pembimbing mahasiswa....

Huff...aku harus mengikuti keputusanku.
Aku dah bilang iya, itu berarti aku ga bisa berkata tidak pada diriku sendiri..:) #lebay

Semakin hari, tiba lah di hari petama aku harus ketemu sama bu Inge lagi. Karena sebenarnya yg jadi pembimbing itu bu Inge, tapi karna Ibu ga bisa, jd harus ada yang membantunya, makanya aku dipilih. Waktu ketemu sama Ibu, aku bisa nya cuma ngangguk-ngangguk aja,,, Padahal sebenarnya Ibu ngomongnya cepat banget... Tapi aku berusaha ngerti apa yang dibilangnya..:D

Aku sebenarnya bangga bisa jd pembimbing mahasiswa yang ikut lomba programming ini. Aku juga senang, karena aku bisa belajar lebih banyak lagi tentang programming. :) Yang awalnya dulu aku susaaah banget ngerti, aku jadi gampang ngerjain sekarang.

Nah,,,,
Ternyata ada 10 org mahasiswa yang harus dibimbing untuk lomba programming..:( Aku kaget, untungnya bu Inge udah ngasih link TOKI Learning Centre buat dibagiin sama mahasiswa yg ikut lomba... Jadi belajarnya lebih gampang, karena mereka jd bisa belajar sendiri dari sana...:))

Aku berharap ada salah satu dari mereka yang bisa buat Politeknik Informatika Del bangga sebagai pemenang nantinya,,, biar aku bisa ikutan bangga... #nebeng

Semangat buat semua peserta lomba..:D

Thursday, October 20, 2011

Belajar Algoritma dan Pogramming

Awal belajar programmin tuh waktu tingkat 1. Huaaah....
Dulu belajarnya minta ampun susahnya. Ga tau apa-apa. Mana yang masuk ngajari Algoritma Programming tuh Ibu Inge lagi, bahasanya Ibu itu tinggi kali. Kadang susah dimengerti. (Susah dimengerti ato memang aku yang bodoh ga bisa ngerti)... #hahhaha

Kalo ditanya algoritma dan programming tuh, asyik,, kalo dah dapat taste nya, pasti jd lancar..
Masalahya dulu susaaah banget dapet taste nya.. Mpe nangis darah dulu baru bisa ngerti algoritma.... #lebay

Puji Tuhan lah,,sekarang dah mulai ngerti tentang algoritma dan pemrograman, walaupun mikir logikanya susah, yang penting aku bersyukur bisa jadi Teaching Assistant pelajaran Algoritma dan Pemrograman. Jadi bisa lebih banyak lagi belajarnya....




SEMANGAT OLIIIIIN.......