Object Oriented Programming in C# (Part1)

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.

image

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:

image

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

2 thoughts on “Object Oriented Programming in C# (Part1)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s