Thursday 3 July 2014

Prinsip utama OOP : Abstraction

Entri sebelum ini kita telah belajar tentang Encapsulation. Dalam entri kali ini pula kita akan belajar mengenai Abstraction yang mana mempunyai persamaan dengan encapsulation dari segi objektifnya akan tetapi sebenarnya adalah dua konsep yang berbeza.

Secara umumnya,  Abstraction adalah satu cara untuk menunjukkan data yang relevan atau diperlukan sahaja kepada pengguna yang berkaitan.

Data yang tidak relevan pula akan di sembunyikan atau di hadkan capaiannya dengan menggunakan access modifiers atau dengan menggunakan abstract class / interface.

Nampak macam sama dengan encapsulation yang mana objektifnya juga adalah untuk menyembunyikan data dan menghadkan capaian. Tapi di mana kah perbezaan nya?


Abstraction
Encapsulation
Menyembunyikan data yang tidak relevan / tidak diperlukan
Menyembunyikan kompleksiti
Di applikasikan semasa proses design
Di applikasikan semasa proses implementasi
Perbezaan Abstraction dan Encapsulation


Untuk lebih memahami perbezaan ini, kita akan lihat applikasi abstraction dan encapsulation dalam class Kereta yang telah di bangunkan sebelum ini.


Contoh kod di bawah menunjukkan prinsip Abstraction telah di applikasi semasa proses design. Di sini kita tetapkan data warna sebagai private dan property Warna hanya boleh di capai dan di baca tetapi tidak boleh di ubah data nya.



Kemudian, kita lakukan modifikasi pada method Drive() untuk memaparkan model dan warna kereta.



Dalam class Program, kita akan mengimplementasi abstraction yang telah di applikasikan semasa dalam proses design tadi.

Disini, kita telah menyembunyikan data yang tidak relevan iaitu data Warna daripada class Program dan kita hanyalah perlu meng set kan data untuk entiti Model sahaja. 

Kemudian kita mengimplementasi method Drive( ) pula yang mana class Program tidak perlu tahu akan kompleksiti nya dan cara method Drive() ini menjalankan kerjanya. Di sini lah berlakunya proses encapsulation.



Kesimpulannya, apa yang class Program perlukan hanyalah value untuk entiti Model  dan implementasi method Drive() untuk mendapatkan hasil paparan seperti di bawah:



Mudah bukan?





Wednesday 4 June 2014

Prinsip utama OOP : Encapsulation

Salah satu prinsip utama dalam OOP adalah "Encapsulation".

Mengikut buku, definisi encapsulation adalah suatu proses dalam menggabungkan data dan method menjadi satu single unit iaitu Class.

Kalau baca definisi saje memang takkan faham dan tak jelas. Untuk lebih memahaminya, dari segi praktikal nya pula encapsulation adalah suatu proses untuk:

1) Menyembunyikan segala informasi tentang data daripada classes atau assemblies di luar daripada lingkungan code yang tidak berkaitan.
2) Melindungi data daripada di capai dan di manipulasi oleh classes atau assemblies yang tidak sepatutnya mendapat akses.

Inilah dua objektif utama dalam prinsip encapsulation. Tapi kenapa perlu di buat begini?
- Supaya data dapat di lindungi daripada sebarang kesilapan programming yang akan memberi kesan kepada data itu.
- Supaya kita dapat mengawal bagaimana data itu di manipulasi supaya tidak di modifikasi melalui cara yang tidak sepatutnya.

Dalam proses application development, kadang-kala kita tak perlu mendedahkan cara bagaimana kita mengimplementasi sesuatu method class itu, namun cukuplah sekadar method itu di panggil. Contohnya, dalam .Net ada method untuk Sort(), tapi tak perlu lah kita ketahui lebih lanjut bagaimana method Sort() yang kompleks itu menyusun senarai item dalam list kita. Tugas kita di limitkan hanyalah untuk memanggil method itu sahaja.

Ada beberapa cara untuk melakukan encapsulation dan salah satunya adalah dengan menggunakan Properties. Untuk pemahamam yang lebih mendalam, kita akan apply encapsulation dalam class Kereta yang telah dibuat dalam entri sebelum ini:

Lakukan sedikit modifikasi ke atas property Model, Warna dan Enjin seperti dibawah:


Tapi jikalau kita menggunakan code main program yang sama, kita akan mendapat 2 compilation error berpunca daripada encapsulation yang telah kita lakukan kepada property tadi.



Bagi error 1, oleh kerana kita telah set kan property Warna sebagai ReadOnly, dalam main program kita dah tak boleh mengubah value untuk property Warna itu lagi. Kita hanya dapat memaparkannya sahaja.

Bagi error 2, oleh kerana kita telah set kan property Enjin sebagai WriteOnly, dalam main program kita dah tak boleh memaparkan value Enjin itu lagi di mana kita hanya dapat mengubah value nya sahaja.


Di sini kita boleh lihat 2 objektif utama dalam prinsip encapsulation telah tercapai. Untuk membolehkan Main program kita boleh di compile semula, kita perlu buat sedikit perubahan seperti di bawah.


Dan inilah hasil nya..

Monday 14 April 2014

OOP - Konsep Asas

Apakah itu OOP (Object Oriented Programming) ?

- OOP adalah pengaturcaraan berdasarkan sesuatu Object.
- Manakala Object itu adalah hasil implementasi gabungan Data dan Method dalam suatu Class.
- Oleh itu,  komponen utama bagi OOP adalah Class dan Object.

Lihat contoh Class bagi Kereta ini:

Class
Kereta
Data / Entiti
- Model
- Warna
- Enjin
Method / Function
- Drive()
- Stop()

Daripada contoh di atas, boleh lah kita menghasilkan Class untuk Kereta ini:

















Kemudian boleh lah kita menghasilkan Object untuk Class Kereta seperti ini:




ObjKereta adalah Object yang dihasilkan daripada Class Kereta.
Tapi bagaimana nak memanipulasi dan menggunakan ObjKereta ini?

Katakan anda ada sebuah Class Program sebagai Class utama aplikasi anda:


















Beginilah Output yang bakal dihasilkan oleh program ini:










Mudah kan?

Wednesday 19 February 2014

Hello dunia!

Saya rasa sudah tiba masanya untuk saya kongsikan segala ilmu dan pengalaman saya dalam industri IT atau teknologi maklumat ni sejak dari tahun 2008 lagi.

Bak kata pujangga, lagi banyak kita beri, lagi banyak kita akan dapat.

Secara lebih spesifiknya, blog ini akan sarat dengan tutorial, info, dan tips tentang pengaturcaraan dalam platform Microsoft .Net dan bahasa C#.

Setiap entri juga akan saya gunakan dalam bahasa Malaysia supaya orang-orang tempatan saya sendiri akan dapat manfaatnya. Dan saya dapati teramat kurangnya tutorial, tips dan maklumat berkaitan pengaturcaraan .Net berinteraksi dalam bahasa Malaysia.

Saya juga harap dapat berkongsi bukan sahaja tentang dunia pengaturcaraan, malahan semua aspek kehidupan dalam meniti kerjaya di dalam bidang IT yang amat luas ini sebenarnya.

Bismillah..