Selasa, 08 Oktober 2013

Object Oriented Programming (OOP) di C#



Object Oriented Programming (OOP) atau Pemrograman Berorientasi Objek sekarang telah menjadi menu wajib pada hampir semua bahasa pemrograman, termasuk C#. Karena itu, suka atau tidak suka programmer pemula juga harus menguasai.
Aplikasi berbasis windows dan web adalah program yang sangat kompleks yang menyajikan tampilan menarik kepada user dan menawarkan user interface yang kompleks dengan tombol, dropdown, popup menu, toolbox, dan masih banyak komponen yang lain. Dibelakang user interface tersebut masih ada hubungan bussiness prosess yang kompleks seperti misal hubungan antara Product, Customer, dan Order yang melibatkan banyak logika dan pengolahan data.
Untuk menangani berbagai kompleksitas yang terjadi maka programmer mengembangkan teknik yang diberi nama “Objcet Oriented Programming”, dengan tujuan yang sederhana yaitu mengatur kompleksitas dengan memodelkan aspek esensial yang ada. Jika model yang dikembangkan semakin mendekati problem yang akan dipecahkan maka semakin mudah, persoalan tersebut dapat dimengerti sehingga program lebih mudah ditulis dan di-maintain.
Problem yang akan dipecahkan dan semua informasi yang berhubungan dengan problem tersebut sering disebut sebagai problem domain. Misal jika anda ingin membuat program untuk keperluan Inventory dan Sales di suatu perusahaan maka problem domainnya adalah semua informasi tentang perusahaan tersebut yang berhubungan dengan pengaturan stok inventory, cara penjualan, pemasukan penjualan dan data lainnya. Manaager penjualan dan Manager bagian gudang akan menjadi problem domain expert yang dapat membantu anda dalam menyelesaikan masalah.
Design dari Object Oriented harus berisi objek-objek yang ada pada problem domain tersebut. Sebagai contoh jika problem domainnya adalah mesin ATM maka objek didalamnya seharusnya adalah customer, rekening, dll.


  1. Class, atribute, dan method                  

Class
Class merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi objek. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP).

Atribute
Attribute, merupakan perlengkapan yang dimiliki oleh sebuah object. Misalnya sapi memiliki attribute berat, tinggi, warna kulit, dll. Fungsi attribute yaitu untuk menerangkan object secara jelas.

Method
Method merupakan suatu aksi yang bisa dilakukan oleh suatu object. Misalnya sapi dapat berjalan dan makan.

  1. Object

Object didefinisikan sebagai membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; object merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.


3. Cara membuat object

Program.cs








4. Konstruktor

Konstruktor adalah method yang namanya sama dengan nama class-nya. Konstruktor digunakan untuk inisialisasi variabel ketika membuat instan class / objek baru. Sebenarnya setiap kali anda membuat instant class / objek baru maka konstruktor dijalankan. Jika anda tidak mendefinisikan konstruktor secara eksplisit maka tetap dianggap membuat konstruktor kosong.
Konstruktor juga dapat di-overload (anda dapat membuat konstruktor lebih dari satu asal parameternya jumlahnya beda atau tipe datanya beda). Variabel dalam class harus diinisialisasi


5. Private, Protected, dan Public


Private 
Private adalah kode yang sesuai dengan namanya, akses ini bersifat private. dengan kata lain data maupun method hanya dapat diakses oleh kelas yang dimilikinya saja.

Protected 
Protected adalah kode akses yang membuat suatu data atau method yang didefinisikan dengan tingkatan akses yang dapat diakses oleh kelas yang memilikinya saja dan juga kelas-kelas yang masih memiliki keturunan atau Encapsulation data

Public 
Public adalah kode akses yang bersifat umum. Dengan kata lain, data maupun method dalam suatu kodingan tersebut dapat diakses oleh semua bagian di dalam program.


6. Karakteristik OOP beserta Contohnya

Inheritance
Inheritance atau turunan atau pewarisan merupakan konsep yang sangat dekat sekali dengan keseharian kita. Sebagai ilustrasih, setiap dari kita pasti punya orang tua. Hubungan orang tua-anak adalah hubungan pewarisan. Apa yang ada pada anak umumnya juga ada pada orang tua. Suara anak kadang hampir sama dengan orang tua. Warna kulit, bentuk rambut, gigi, dan lain sebagainya juga mengikuti pola demikian. Jadi pewarisan adalah konsep yang sangat dekat sekali dengan keseharian kita.

Dalam OOP pola turunan ini dicoba untuk ditiru. Hubungan turunan orangtua-anak disebut sebagai hubungan “is a” atau yang dalam bahasa Indonesianya “ia adalah”. Jika Mamat adalah ayah Agus, maka dalam bahasa OOP boleh disebut sebagai “Agus adalah Mamat”. Sebab sebagian sifat Agus diambil/diturunkan dari Mamat.

Contoh penerapan inheritance

ClassTurunan.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using STS.Console;

namespace STS.Console



public class Mamat {
   public string BentukRambut {
       get {
           return “Kriting”;
       }
   }
}
public class Agus:Mamat {
}


Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
Enkapsulation – Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
Abstraction – Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

Aggregation 
Aggregation adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat.


7. Over Loading

Overloading merupakan suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya. Overloading juga merupakan suatu kemampuan dalam bahasa berorientasi objek untuk menggunakan suatu nama method untuk beberapa method yang memiliki parameter masukan yang berbeda (tipe maupun jumlah parameter). Overloading memodifikasi secara horizontal method maupun konstruktor milik kelas super, maupun kelas yang sama. Tujuan dibuatnya overloading yaitu memudahkan penggunaan method dengan fungsi yang hampir sama.

Sumber