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 : __________________________________________