Pengantar Object Oriented
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 pula 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.
Pada level pertama untuk mendesain anda harus berpikir interaksi antar objek-objek tersebut, dilihat dari status, kapabilitas, dan tanggung jawabnya.
- Status : programmer harus mengacu pada kondisi status objek tersebut. Sebagai contoh anda mempunyai objek untuk merepresentasikan customer maka status dari customernya adalah customer address, phone number, email, sejarah pembelian customer, dsb.
- Kapabilitas / Hak : customer dapat memiliki kapabilitas tapi programmer harus memilih yang berhubungan dengan problem domainnya diantaranya untuk membuat rekening, menarik tabungan, menyimpan tabungan, transfer dsb.
- Tanggung Jawab: bersama dengan kapabilitas /hak ada pula tanggung jawab. Customer mempunyai tanggung jawab untuk mengisi informasi alamat tempat tinggalnya.
Class vs Object
Apa sich bedanya?. Jika anda ingin membangun rumah Class adalah blueprint / gambar (berisi spesifikasi lengkap dari rumah yang akan dibuat, ukuran, jumlah, dll).
Sedangkan object adalah bentuk fisik / rumah yang dibangun berdasarkan blueprint / class yang sudah ada, biasa disebut instan class.
Mendefinisikan Class
Class di C# dapat terdiri dari kumpulan variable (field), property dan method. Cara untuk menggunakan class adalah dengan membuat instan class-nya. Untuk menjalankan class maka harus ada satu method main pada class tersebut. contoh pendeklarasian class di C# sebagai berikut:
1: public class Time
2: {
3: // private variables
4: private int year;
5: private int month;
6: private int date;
7: private int hour;
8: private int minute;
9: private int second;
10:
11: // public methods
12: public void DisplayCurrentTime()
13: {
14: Console.WriteLine("Menampilkan Waktu..");
15: }
16: }
17:
18: class Program
19: {
20: static void Main(string[] args)
21: {
22: Time timeObject = new Time(); //membuat instan class
23: timeObject.DisplayCurrentTime();
24: }
25: }
Access Modifiers
Access Modifiers digunakan untuk menentukan hak akses dari class dan method, adapun access modifier yang ada pada C# sebagai berikut:
Method Arguments
Method pada C# dapat memiliki banyak argumen dengan tipe data yang berbeda
1: public class MyClass
2: {
3: public void SomeMethod( int firstParam, float secondParam )
4: {
5: Console.WriteLine("Here are the parameters received: {0}, {1}",
6: firstParam, secondParam );
7: }
8:
9: }
10:
11: public class Tester
12: {
13: static void Main( )
14: {
15: int howManyPeople = 5;
16: float pi = 3.14f;
17: MyClass mc = new MyClass( );
18: mc.SomeMethod( howManyPeople, pi );
19: }
20: }
Konstruktor
Konstruktor adalah method yang namanya sama dengan nama class-nya. Konstruktor digunakan untuk inisialisasi variabel ketika dibuat instan class / objek-nya. 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.
1: public class Time
2: {
3: // private member variables
4: int year;
5: int month;
6: int date;
7: int hour;
8: int minute;
9: int second;
10:
11: // public method
12: public void DisplayCurrentTime( )
13: {
14: System.Console.WriteLine( "{0}/{1}/{2} {3}:{4}:{5}",
15: month, date, year, hour, minute, second );
16: }
17:
18: // constructor
19: public Time( int theYear, int theMonth, int theDate,
20: int theHour, int theMinute, int theSecond )
21: {
22: year = theYear;
23: month = theMonth;
24: date = theDate;
25: hour = theHour;
26: minute = theMinute;
27: second = theSecond;
28: }
29: }
30:
31: public class Tester
32: {
33: static void Main( )
34: {
35: Time timeObject = new Time( 2008, 8, 1, 9, 35, 20 );
36: timeObject.DisplayCurrentTime( );
37: }
38: }
Initializer
Pada C# anda bisa menginisialisasi variabel dalam class secara langsung tanpa harus mengisialisasi-nya lewat konstruktor
1: public class Time
2: {
3: // private member variables
4: int year;
5: int month;
6: int date;
7: int hour;
8: int minute;
9: int second = 30; //initializer
10:
11: // public method
12: public void DisplayCurrentTime( )
13: {
14: System.Console.WriteLine( "{0}/{1}/{2} {3}:{4}:{5}",
15: month, date, year, hour, minute, second );
16: }
17:
18: // constructor
19: public Time( int theYear, int theMonth, int theDate,
20: int theHour, int theMinute )
21: {
22: year = theYear;
23: month = theMonth;
24: date = theDate;
25: hour = theHour;
26: minute = theMinute;
27: }
28: }
29:
30: public class Tester
31: {
32: static void Main( )
33: {
34: Time timeObject = new Time( 2008, 8, 1, 9, 35 );
35: timeObject.DisplayCurrentTime( );
36: }
37: }
“This” Keyword
This keyword digunakan untuk mengakses instan class / objek itu sendiri, penggunaan keyword this diperlukan untuk membedakan pengaksesan class variabel dan method variabel yang mempunyai nama yang sama.
1: public class Time
2: {
3: // private member variables, class variable
4: int year;
5: int month;
6: int date;
7: int hour;
8: int minute;
9: int second = 30;
10:
11: // public method
12: public void DisplayCurrentTime( )
13: {
14: System.Console.WriteLine( "{0}/{1}/{2} {3}:{4}:{5}",
15: month, date, year, hour, minute, second );
16: }
17:
18: public void SetTime(
19: year, month, date, newHour, newMinute, newSecond) //method variable
20: {
21: this.year = year; // penggunaan "this" dibutuhkan
22: this.month = month; // dibutuhkan
23: this.date = date; // dibutuhkan
24: this.hour = hour; // penggunaan "this" optional
25: this.minute = newMinute; // optional
26: second = newSecond; // optional
27: }
28: }
Static dan Instance Member
Field, property, dan method dalam suatu class bisa merupakan instance member atau static member. Instance member dibentuk ketika class tersebut dibuat instan-nya, secara default field, property, dan method yang tidak diberi keyword static merupakan instance member.
Static member tidak berhubungan dengan instan class melainkan langsung berhubungan dengan class tersebut. Dengan menggunakan keyword static anda dapat mengakses field, property, atau method pada suatu class tanpa harus membuat instan class-nya.
1: // mendeklarasikan Cat class
2: public class Cat
3: {
4: // private static member untuk counter
5: // banyak objek cat yang diciptakan
6: private static int instances = 0;
7: private int weight;
8: private String name;
9:
10: // cat constructor
11: // increments counter jumlah kucing
12: public Cat( String name, int weight )
13: {
14: instances++;
15: this.name = name;
16: this.weight = weight;
17: }
18:
19: // Static method untuk menampilkan jumlah cat saat ini
20: public static void HowManyCats( )
21: {
22: Console.WriteLine( "{0} cats adopted", instances );
23: }
24: public void TellWeight( )
25: {
26: Console.WriteLine( "{0} is {1} pounds", name, weight );
27: }
28: }
29:
30: class Tester
31: {
32: public void Run( )
33: {
34: Cat.HowManyCats( );
35: Cat frisky = new Cat( "Frisky", 5 );
36: frisky.TellWeight( );
37: Cat.HowManyCats( );
38: Cat whiskers = new Cat( "Whisky", 7 );
39: whiskers.TellWeight( );
40: Cat.HowManyCats( );
41: }
42:
43: static void Main( )
44: {
45: Tester t = new Tester( );
46: t.Run( );
47: }
48: }
bersambung ke Object Oriented Programming in C# (Part2)
pustaka: “Learning C# 2005”, Jesse Liberty, Brian MacDonald, O’Reilly 2006
artikel anda bagus dan menarik, artikel anda:
http://programing.infogue.com
http://programing.infogue.com/object_oriented_programming_in_c_part1_
anda bisa promosikan artikel anda di infogue.com yang akan berguna untuk semua pembaca. Telah tersedia plugin/ widget vote & kirim berita yang ter-integrasi dengan sekali instalasi mudah bagi pengguna. Salam!
contoh property dalam suatu class yang mana ya ???