Karena semester ini kebetulan saya sedang mengajar C# Programming di kampus, saya ingin share juga materi yang saya buat agar bisa berguna juga untuk teman-teman mahasiswa yang lain yang ingin belajar C# Programming.
Topik yang dibahas kali ini
- Pengantar OOP
- Class dan Object
- C# Modifier
- Konstruktor
- Initilizer
- "this" keyword
- static dan instance member
Pengantar OOP
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.
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 / object.
Elemen Pada Class
Class pada C# terdiri dari :
· Instance Variable / Field
· Method
Method digunakan untuk merubah state pada field.
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 atau field
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(); //memanggil method dalam class
24: }
25: }
C# Modifier
C# memiliki beberapa modifier class yaitu:
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. Method juga dapat memiliki nama yang sama asal parameter / tipe datanya berbeda (Method Overloading).
1: class MyClass { 2: public void SomeMethod(int firstParam, double secondParam) { 3: Console.WriteLine("Parameter 1 : {0} dan parameter 2 : {1}", 4: firstParam, secondParam);
5: }
6:
7: //overload method
8: public void SomeMethod(int firstParam) { 9: Console.WriteLine("Parameter 1 : {0}", firstParam); 10: }
11:
12: public void SomeMethod(int firstParam, string secondParam) { 13: Console.WriteLine("Parameter 1 : {0} dan parameter 2 : {1}", 14: firstParam, secondParam);
15: }
16: }
17:
18: class MethodArgumen { 19: static void Main(string[] args) { 20: MyClass m1 = new MyClass(); //membuat instan object
21: m1.SomeMethod(12, 1.25);
22: m1.SomeMethod(34);
23: m1.SomeMethod(12, "Hello");
24: }
25: }
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, nilai defaultnya adalah
1: public class Time { 2: // private member variables
3: int Year;
4: int Month;
5: int Date;
6: int Hour;
7: int Minute;
8: int Second;
9:
10: // constructor
11: public Time(System.DateTime dt) { 12: Year = dt.Year;
13: Month = dt.Month;
14: Date = dt.Day;
15: Hour = dt.Hour;
16: Minute = dt.Minute;
17: Second = dt.Second;
18: }
19:
20: // public methods
21: public void DisplayCurrentTime() { 22: System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", 23: Month, Date, Year, Hour, Minute, Second);
24: }
25:
26: }
27:
28: class LatKonstruktor { 29: public static void Main(string[] args) { 30: DateTime currTime = DateTime.Now;
31: Time t = new Time(currTime); //memanggil constructor
32: t.DisplayCurrentTime();
33: }
34: }
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: }
“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: // private member variables, class variable
3: int year;
4: int month;
5: int date;
6: int hour;
7: int minute;
8: int second = 30;
9:
10: public void SetTime(year, month, date, newHour, newMinute, newSecond) { 11: this.year = year; // penggunaan "this" dibutuhkan
12: this.month = month; // dibutuhkan
13: this.date = date; // dibutuhkan
14: this.hour = hour; // penggunaan "this" optional
15: this.minute = newMinute; // optional
16: second = newSecond; // optional
17: }
18: }
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: public class Kucing { 2: private static int instances = 0;
3: public Kucing() { 4: instances++;
5: }
6: public static void BanyakKucing() { 7: Console.WriteLine("Banyak Kucing : {0}", instances); 8: }
9: }
10:
11: class StaticMember { 12: public static void Main(string[] args) { 13: Kucing meong1 = new Kucing();
14: Kucing.BanyakKucing();
15: Kucing meong2 = new Kucing();
16: Kucing meong3 = new Kucing();
17: Kucing.BanyakKucing();
18: }
19: }
bersambung next blog ^_^