Selasa, 08 Oktober 2013
OOP DI C#
1. Class
Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
· Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
contoh :
public class ApaMotormu
contoh :
Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
· Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
contoh :
public class ApaMotormu
{
public static void main(String[] args)
public static void main(String[] args)
{
Motor punyaku=new Motor();
punyaku.motorku();
}
}
Motor punyaku=new Motor();
punyaku.motorku();
}
}
Atribute
adalah segala sesuatu (data0yang berhubungan dengan karakteristik objec dalam setiap kelas. Tiap atribute memiliki nilai berbeda untuk setiap objek.
Method
Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
2. Object
Object adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.contoh :
public class Peliharaanmu
{
public static void main(String[] args)
public static void main(String[] args)
{
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
3. Cara membuat Object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
Contoh :
class Date
{
Date hari = new Date();
}
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date. Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
Contoh :
class Date
{
Date hari = new Date();
}
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date. Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().
4.
Senin, 07 Oktober 2013
Object Oriented Programing di C# (OOP)
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.
Sejarah singkat OOP
A.Class dan Objek
Untuk membuat Class dengan C# maka berikut adalah sintaks yang mesti diketahui.
[attribute]
[access-modifier] class nama_class [: [base-class [, interface(s)]]
{
class-body
}
Keterangan :
1. Attribute, adalah penanda untuk menerangkan class dan untuk kebutuhan tertentu.
2. Access-modifier dapat berupa public, private, protected, internal dan protected internal.
a. public, tidak ada batasan, class dapat digunakan oleh semua class.
b. private, terbatas tidak dapat digunakan pada class lain.
c. protected, terbatas digunakan oleh class turunannya.
d. internal, dapat digunakan secara internal di dalam class.
3. Tanda “:” untuk pengganti kata kunci extends bagi yang sudah mengenal OOP
pada Java atau PHP.
Contoh Listing Program :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
[Obsolete("Class ini sudah tidak digunakan lagi", true)]
public class VariableExample : CommonMath
{
}
}
Pada contoh di atas dapat dilihat class dengan nama VariableExample dengan accessmodifier
public. Class VariableExample merupakan turunan dari class CommonMath.
Class VariableExample mempunyai attribute seperti yang telah ditulis di atas, fungsi
attribute di atas sebagai penanda bahwa class ini sudah tidak bisa digunakan lagi dan akan
menghasilkan error bila digunakan.
Setelah class dibuat maka pada kondisi tertentu class tersebut dapat diinstansiasi menjadi
sebuah objek.
Berikut adalah contoh class dan cara instansiasi class tersebut menjadi objek pada C# :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
}
}
Berikut adalah contoh proses instansiasi class ClassExample :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
3-36
ClassExample classExample = new ClassExample();
}
}
}
Perbedaan Class dan Object
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:
public class Time
{
// private variables atau field
private int year;
private int month;
private int date;
private int hour;
private int minute;
private int second;
// public methods
public void DisplayCurrentTime()
{
Console.WriteLine(“Menampilkan Waktu..”);
}
}
class Program
{
static void Main(string[] args)
{
Time timeObject = new Time(); //membuat instan class
timeObject.DisplayCurrentTime(); //memanggil method dalam class
}
}
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:
B.Method dan Field
Ada dua jenis method, yaitu :
1. Method yang tidak melemparkan nilai biasanya disebut procedure.
Sintaks :
[access-modifier] void nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}
Contoh :
ClassExamle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public void Tambah(int bilanganA, int bilanganB)
{
int hasil = bilanganA + bilanganB;
System.Console.WriteLine(hasil);
}
}
}
Contoh penggunaan :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ClassExample classExample = new ClassExample();
classExample.Tambah(3, 10);
System.Console.ReadKey();
}
}
}
2. Method yang melemparkan nilai biasanya disebut function.
Sintaks :
[access-modifier] tipe_data nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}
Contoh :
ClassExamle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int Kurang(int bilanganA, int bilanganB)
{
return bilanganA - bilanganB;
}
}
}
Contoh penggunaan :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ClassExample classExample = new ClassExample();
System.Console.WriteLine(classExample.Kurang(17,4));
System.Console.ReadKey();
}
}
}
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).
class MyClass {
public void SomeMethod(int firstParam, double secondParam) {
Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
firstParam, secondParam);
}
//overload method
public void SomeMethod(int firstParam) {
Console.WriteLine(“Parameter 1 : {0}”, firstParam);
}
public void SomeMethod(int firstParam, string secondParam) {
Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
firstParam, secondParam);
}
}
class MethodArgumen {
static void Main(string[] args) {
MyClass m1 = new MyClass(); //membuat instan object
m1.SomeMethod(12, 1.25);
m1.SomeMethod(34);
m1.SomeMethod(12, “Hello”);
}
}
Field adalah property pada class seperti pada contoh kode berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
}
}
Dari contoh di atas maka field bilangan1 dan bilangan2 dapat diakses secara langsung
sebagai method dari objek di dalam class manapun karena menggunakan public sebagai
access-modifier.
Atau dapat dilihat pada gambar berikut :
Pada class ClassExample terdapat field yang menggunakan access-modifier private. Artinya
field ini hanya bisa digunakan di dalam class tersebut.
Field pada suatu class secara default mempunyai access-modifier private dan memang
seharusnya tetap seperti itu. Agar class lain dapat melakukan pengambilan (get) atau pengisian (set) nilai field tersebut maka perlu dibuat public method yang berfungsi untuk itu.
Public method ini dideklarasikan bukan seperti method yang telah dibuat sebelumnya,
istilah yang tepat sebagai pengganti nama ‘method’ untuk fungsi seperti di atas adalah Property.
Cara mendeklarasikan Property adalah sebagai berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
public string Hasil
{
get {return hasil;}
set {hasil = value;}
}
}
}
Dengan cara di atas maka field hasil dapat diberikan nilai (set) dan diambil nilainya (get)
oleh semua class.
public string Hasil
{
get {return hasil;}
set {hasil = value;}
}
Kode di atas dapat dipersingkat lagi penulisannya dengan cara berikut :
public string Hasil
{
get;
set;
}
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
public class Time {
// private member variables
int Year;
int Month;
int Date;
int Hour;
int Minute;
int Second;
// constructor
public Time(System.DateTime dt) {
Year = dt.Year;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
// public methods
public void DisplayCurrentTime() {
System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”,
Month, Date, Year, Hour, Minute, Second);
}
}
class LatKonstruktor {
public static void Main(string[] args) {
DateTime currTime = DateTime.Now;
Time t = new Time(currTime); //memanggil constructor
t.DisplayCurrentTime();
}
}
Initializer
Pada C# anda bisa menginisialisasi variabel dalam class secara langsung tanpa harus mengisialisasi-nya lewat konstruktor.
public class Time
{
// private member variables
int year;
int month;
int date;
int hour;
int minute;
int second = 30; //initializer
}
“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.
public class Time {
// private member variables, class variable
int year;
int month;
int date;
int hour;
int minute;
int second = 30;
public void SetTime(year, month, date, newHour, newMinute, newSecond) {
this.year = year; // penggunaan “this” dibutuhkan
this.month = month; // dibutuhkan
this.date = date; // dibutuhkan
this.hour = hour; // penggunaan “this” optional
this.minute = newMinute; // optional
second = newSecond; // optional
}
}
C.Static Member
Pada bagian sebelumnya telah dijelaskan cara membuat class, method dan field. Pada
contoh di atas terlebih dahulu harus dibuat instance dari class agar dapat mengakses
method atau field.
Pada bagian ini akan dijelaskan cara membuat method agar dapat digunakan tanpa harus
melakukan instansiasi class terlebih dahulu.
Caranya sangat mudah yaitu dengan menambahkan kata kunci static pada method yang
diinginkan seperti pada contoh berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public static void Kali(int bilanganA, int bilanganB)
{
int hasil = bilanganA * bilanganB;
System.Console.WriteLine(hasil);
}
}
}
Untuk menggunakan method ini cukup dengan menulis kode seperti berikut ini :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
ClassExample.Kali(3, 10);
System.Console.ReadKey();
}
}
}
Menggunakan Using Statement
Untuk memudahkan developer C# menyediakan statement using untuk memastikan bahwa method dispose dijalankan. (kadang kita lupa untuk memanggil method dispose ini). Penggunaan using hanya bisa digunakan untuk class yang mengimplementasikan IDisposable.
Passing Parameter
Parameter pada C# secara default yang dikirimkan kedalam method adalah nilainya, atau “pass by value”. jadi jika ada perubahan nilai parameter pada method tersebut tidak berpengaruh ke method.
Jika ingin mengirimkan parameter referenced / ‘pass by reference’ anda dapat menambahkan keyword ref sebelum tipe data pada method parameternya.
induk, dimana seluruh field dan method diturunkan kepada class anak, kecuali method atau
field dengan access-modifier private.
Contoh kasus inheritance ini adalah seperti kode berikut :
ClassTurunan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}
Pada kode di atas, yang menjadi class induk adalah ClassExample dan ClassTurunan
merupakan class anaknya. Baris berikut menyatakan cara membuat class ClassTurunan
sebagai turunan dari class ClassExample.
public class ClassTurunan : ClassExample
Polymorphism bila diartikan dengan melihat arti dari kata penyusunnya yaitu poly yang
berarti “banyak dan morph yang berarti “bentuk” maka secara keseluruhan artinya adalah
“banyak bentuk”. Masih berhubungan dengan inheritance atau penurunan, misalkan dibuat class yang akan
menjadi class induk seperti berikut :
CurveMath.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Common.Math
{
public class CurveMath
{
private int panjang;
private int lebar;
private int jejari;
public int Panjang
{
set{panjang = value;}
get { return panjang; }
}
public int Lebar
{
set { lebar = value; }
get { return lebar; }
}
public int Jejari
{
set { jejari = value; }
get { return jejari; }
}
public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}
}
}
Pada kode di atas dapat dilihat terdapat kata kunci virtual pada method berikut :
public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}
Artinya method ini dapat diubah menjadi bentuk lagi dengan cara di-override. Seperti yang
dilakukan oleh class Lingkaran.
Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
}
}
Pada kode di atas dapat dilihat digunakan kata kunci override, kata kunci ini hanya dapat
digunakan kepada method yang menggunakan kata kunci virtual.
Enkapsulasi data dengan Property
Enkapsulasi / penyembunyian informasi adalah konsep yang selama ini sering anda dengar. Pada OOP informasi dibungkus dalam sebuah Class sehingga orang yang menggunakan class tersebut tidak perlu tahu detail-nya, hanya cukup mengetahui method dan property apa saja yang ada dalam class tersebut beserta kegunaannya. Pada pemrograman berorientasi objek variabel dalam class biasanya diberi access modifier private, ini berarti hanya method dalam class tersebut yang dapat mengakses variabelnya.
Jika anda membuat variable tersebut public maka user yang menggunakan class tersebut bisa memasukan nilai yang tidak kita inginkan, maka anda harus mendeklarasikan variable tersebut secara private agar pada saat setMethod() anda dapat menambahkan validasi inputan dari user.Anda bisa membuat public method set dan get untuk memberi dan mengambil nilai variabel tersebut, misal:
Inheritance
Pada C# hubungan spesialisasi diimplementasikan menggunakan prinsip inheritance. Penulisan inheritance di C# sebagai berikut
public class ListBox : Window
Kode diatas berarti class ListBox adalah turunan dari class Window
Penggunaan inheritance dapat dilihat pada program dibawah ini
dahulu baris kode di bawah ini :
Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
/// <summary>
/// Tidak ada parameter
/// </summary>
public void Tambah()
{
System.Console.WriteLine(3 + 10);
}
/// <summary>
/// Terdapat satu parameter
/// </summary>
public void Tambah(int bilangan)
{
System.Console.WriteLine(3 + bilangan);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data int
/// </summary>
public void Tambah(int bilangan1, int bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data double
/// </summary>
public void Tambah(double bilangan1, double bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
}
}
Pada kode di atas dapat dilihat terdapat tiga method dengan nama yang sama yaitu Tambah
perbedaan tiap method adalah dilihat dari jumlah parameter dan tipe data yang digunakan.
Contoh kode di atas adalah praktik dari Method Overloading. Pada Visual Studio saat ingin
menambahkan method Tambah maka dapat dilihat tampilan seperti pada gambar berikut :
Array adalah suatu struktur data yang dapat menyimpan data dengan tipe yang sama dan
diakses dengan menggunakan suatu indeks yang menunjukan suatu elemen didalam array
tersebut.
Variabel yang disimpan di dalam array ini disebut juga dengan elemen array dan tipe
datanya disebut dengan tipe elemen dari array.
2.Inisialisasi Array
Untuk memberikan nilai ke dalam suatu variabel array dapat dilakukan dengan beberapa
cara. Pertama dengan menggunakan kata kunci new untuk menentukan jumlah elemen
yang dapat disimpan oleh array dilanjutkan dengan memberi nilai masing-masing elemen.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = new string[12];
namaBulan[0] = "Januari";
namaBulan[1] = "Februari";
}
}
}
Cara kedua dengan cara langsung memberi nilai pada saat deklarasi seperti contoh berikut :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = { "Januari", "Februari" };
}
}
}
Berikut ini adalah contoh program untuk mengakses array.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = { "Januari", "Februari", "Maret" };
for (int i = 0; i < namaBulan.Length; i++)
{
System.Console.WriteLine(namaBulan[i]);
}
System.Console.ReadKey();
}
}
}
3.Collection
Collection berfungsi sebagai kontainer untuk menyimpan sekumpulan objek. Collection
mirip dengan konsep array. Untuk mengakses data dalam collection biasanya dilakukan
dengan melakukan iterasi terhadap data yang ada dalam collection atau dapat juga diakses
dengan menggunakan indeks atau indexers.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
al.Add(p1);
Pegawai p2 = new Pegawai();
p2.Nama = "Faisal";
p2.Umur = 25;
al.Add(p2);
System.Console.WriteLine("Jumlah objek : " + al.Count);
for (int i = 0; i < al.Count; i++)
{
int j = i + 1;
Pegawai pegawai = (Pegawai)al[i];
System.Console.WriteLine(j + ". " + pegawai.Nama
+"("+pegawai.Umur+")");
}
System.Console.ReadKey();
}
}
}
4.Hashtable
Berbeda dengan ArrayList, Hashtable mempunyai key. Berikut contoh pemanfaatan Hashtable.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
ht.Add("P1", p1);
Pegawai p2 = new Pegawai();
3-46
p2.Nama = "Faisal";
p2.Umur = 25;
ht.Add("P2", p2);
System.Console.WriteLine("Jumlah objek : " + ht.Count);
IDictionaryEnumerator enumerator = ht.GetEnumerator();
while (enumerator.MoveNext())
{
Pegawai pegawai = (Pegawai)enumerator.Value;
System.Console.WriteLine(enumerator.Key.ToString() + " " +
pegawai.Nama
+ "(" + pegawai.Umur + ")");
}
System.Console.ReadKey();
}
}
}
http://lehaqueenzy.wordpress.com/about/. Pengertian OOP. Diakses tanggal 15 Mei 2013.
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.
Sejarah singkat OOP
Object-Oriented Programming (OOP) adalah sebuah pendekatan untuk pengembangan suatu software dimana dalam struktur software tersebut didasarkan kepada interaksi object dalam penyelesaian suatu proses/tugas. Interaksi tersebutmengambil form dari pesan-pesan dan mengirimkannya kembali antar object tersebut. Object akan merespon pesan tersebut menjadi sebuah tindakan /action atau metode. Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan mengetahui bahwa kita berinteraksi dalam sebuah object-oriented world.
Object-oriented programs terdiri dari objects yang berinteraksi satu sama lainnya untuk menyelesaikan sebuah tugas. Seperti dunia nyata, users dari software programs dilibatkan dari logika proses untuk menyelesaikan tugas.
Contoh, ketika kamu mencetak sebuah halaman di word processor, kamu berarti melakukan inisialisasi tindakan dengan mengklik tombol printer. Kemudian kamu hanya menunggu respon apakah job tersebut sukses atau gagal, sedangkan proses terjadi internal tanpa kita ketahui. Tentunya setelah kamu menekan tombol printer, maka secara simultan object tombol tersebut berinteraksi dengan object printer untuk menyelesaikan job tersebut.
Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa program SIMULA kemudian dilanjutkan di era 70-an dengan SMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan. Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer computer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang software menggunakan konsep OOP seperti Java dll. Di tahun 2002, versi terakhir dari Visual Studio, Microsoftmemperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp), C# adalah salah satu bahasa pemrograman yang berjalan diatas platform dotNet yang full OOP (object oriented programing/pemrograman berorientasi objek) serta upgrade Visual Basic, dan ini merupakan sebuah bahasa OOP sesungguhnya.
Apakah OOP (Object Oriented Programming) itu?
Untuk meningkatkan daya pengolahan komputer, perangkat lunak (software) yang dijalankan menjadi lebih kompleks. Dalam peningkatan kompleksitas ini, dibutuhkan biaya program yang besar dengan codebases besar yang sulit untuk dipahami. Oleh sebab itu, keberadaan OOP ditujukan untuk berusaha mengatasi masalah tersebut.
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi, setiap bagian dari suatu permasalahan adalah objek, objek itu sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
Konsep Object Oriented Programming
Konsep dari object oriented programming (OOP) adalah lebih dari sekedar sebuah konsep pemrograman, Object oriented programming adalah cara berpikir tentang aplikasi yang mempelajari untuk berpikir bahwa aplikasi bukan sekedar prosedur melainkan sebagai object dan real entity.
Object yang dimaksud disini memiliki pengertian suatu modul yangmengkombinasikan antara data dan kode program yang bekerja sama dalamprogram dengan melewatkan proses satu sama lain. Jadi object orientedprogramming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali.Object oriented programming lebih memfokuskan kepada manipulasi object. Kenapa seorang programmer harus mempelajari object oriented programming bahkan seorang programmer yang tidak pernah bekerja dengan object orientedprograming pun harus mempelajarinya juga. Hal ini dikarenakan pada suatu hari nanti semua bahasa pemrograman akan menambahkan kemampuan object oriented programming pada bahasanya.
Object-oriented programs terdiri dari objects yang berinteraksi satu sama lainnya untuk menyelesaikan sebuah tugas. Seperti dunia nyata, users dari software programs dilibatkan dari logika proses untuk menyelesaikan tugas.
Contoh, ketika kamu mencetak sebuah halaman di word processor, kamu berarti melakukan inisialisasi tindakan dengan mengklik tombol printer. Kemudian kamu hanya menunggu respon apakah job tersebut sukses atau gagal, sedangkan proses terjadi internal tanpa kita ketahui. Tentunya setelah kamu menekan tombol printer, maka secara simultan object tombol tersebut berinteraksi dengan object printer untuk menyelesaikan job tersebut.
Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa program SIMULA kemudian dilanjutkan di era 70-an dengan SMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan. Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer computer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang software menggunakan konsep OOP seperti Java dll. Di tahun 2002, versi terakhir dari Visual Studio, Microsoftmemperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp), C# adalah salah satu bahasa pemrograman yang berjalan diatas platform dotNet yang full OOP (object oriented programing/pemrograman berorientasi objek) serta upgrade Visual Basic, dan ini merupakan sebuah bahasa OOP sesungguhnya.
Apakah OOP (Object Oriented Programming) itu?
Untuk meningkatkan daya pengolahan komputer, perangkat lunak (software) yang dijalankan menjadi lebih kompleks. Dalam peningkatan kompleksitas ini, dibutuhkan biaya program yang besar dengan codebases besar yang sulit untuk dipahami. Oleh sebab itu, keberadaan OOP ditujukan untuk berusaha mengatasi masalah tersebut.
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi, setiap bagian dari suatu permasalahan adalah objek, objek itu sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
Konsep Object Oriented Programming
Konsep dari object oriented programming (OOP) adalah lebih dari sekedar sebuah konsep pemrograman, Object oriented programming adalah cara berpikir tentang aplikasi yang mempelajari untuk berpikir bahwa aplikasi bukan sekedar prosedur melainkan sebagai object dan real entity.
Object yang dimaksud disini memiliki pengertian suatu modul yangmengkombinasikan antara data dan kode program yang bekerja sama dalamprogram dengan melewatkan proses satu sama lain. Jadi object orientedprogramming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali.Object oriented programming lebih memfokuskan kepada manipulasi object. Kenapa seorang programmer harus mempelajari object oriented programming bahkan seorang programmer yang tidak pernah bekerja dengan object orientedprograming pun harus mempelajarinya juga. Hal ini dikarenakan pada suatu hari nanti semua bahasa pemrograman akan menambahkan kemampuan object oriented programming pada bahasanya.
Berikut empat konsep yang harus dapat dimiliki oleh suatu bentuk pemrograman yang berorentasi object :
1. Abstraction
Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction. Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
2. Encapsulation
Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlumenghubungkan semua benda-benda bersama, mungkin dapatmenambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu bekerja untuk menulis, bagaimana sistem saraf pusat memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}
3. Inherintance
Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.
1. Abstraction
Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction. Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
1: public abstract class Control {
2: private int top;
3: private int left;
4:
5: protected int Top {
6: get { return this.top;}
7: set { this.top = value;}
8: }
9: protected int Left {
10: get {return this.left;}
11: set {this.left = value;}
12: }
13: public Control(int top, int left) {
14: Top = top;
15: Left = left;
16: }
17: //abstract method harus diimplementasikan
18: public abstract void DrawWindow();
19: }
20:
21: public class ListBox : Control {
22: private string listBoxContent;
23: public ListBox(int top, int left, string contents)
24: : base(top, left) {
25: this.listBoxContent = contents;
26: }
27:
28: public override void DrawWindow() {
29: Console.WriteLine("Position :({0},{1})", Top, Left);
30: Console.WriteLine("Menuliskan string pada listbox: {0}",
31: listBoxContent);
32: }
33:
34: }
35:
36: public class Button : Control {
37: public Button(int top, int left) : base(top, left) { }
38: public override void DrawWindow() {
39: Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
40: }
41: }
42: class LatAbstract {
43: static void Main(string[] args) {
44: Control[] winArray = new Control[3];
45: winArray[0] = new ListBox(5, 10, "Pada ListBox");
46: winArray[1] = new Button(5, 6);
47: for (int i = 0; i < 2; i++) {
48: winArray.DrawWindow();
49: }
50: }
51: }
Tapi untuk kasus diatas abstract masih mempunyai keterbatasan, jika anda ingin membuat class DropDownList yang hendak diturunkan dari class ListBox, maka anda tidak dapat memaksakan method DrawWindow() harus ada di class tersebut.
Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlumenghubungkan semua benda-benda bersama, mungkin dapatmenambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu bekerja untuk menulis, bagaimana sistem saraf pusat memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}
3. Inherintance
Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.
Contoh:
Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.
Contoh :
class Binatang
{
public void info()
{
System.out.println(” Info tentang Hewan : “);
}
}
1: public class Window {
2: //variabel dideklarasikan private
sehingga tidak bisa diakses oleh kelas
3: //turunannya
4: private int top;
5: private int left;
6:
7: //objek konstruktor
8: public Window(int top, int left) {
9: this.top = top;
10: this.left = left;
11: }
12:
13: public void DrawWindow() {
14: Console.WriteLine(“Draw window pada ({0},{1})”,
15: top, left);
16: }
17: }
18:
19: public class ListBox : Window {
20: //member variable baru pada class anak
21: private string listBoxContent;
22: public ListBox(int top, int left, string contents):base(top,left) {
23: this.listBoxContent = contents;
24: }
25:
26: //versi baru karena override dari base classnya
27: public new void DrawWindow() {
28: base.DrawWindow();
29: Console.WriteLine(“Menuliskan string pada listbox: {0}”,
30: listBoxContent);
31: }
32: }
33:
34: class LatInheritance {
35: public static void Main(string[] args) {
36: Window objWindow = new Window(10, 15);
37: objWindow.DrawWindow();
38:
39: ListBox objList = new ListBox(15, 20, “Hello ListBox”);
40: objList.DrawWindow();
41: }
42: }
4. PolymorphismPolymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.
Contoh :
class Binatang
{
public void info()
{
System.out.println(” Info tentang Hewan : “);
}
}
class Herbivora extends Binatang
{
public void info()
{
System.out.println (“Info pada herbivora: Memakan makanan berupa tumbuh – tumbuhan”);
}
}
class Kelinci extends Herbivora
{
public void info()
{
System.out.println(“Info pada Kelinci: Memakan makanan berupa wortel”);
}
}
public class Polimorfisme
{
public static void main(String[] args)
{
Herbivora herbivora;
Kelinci kelinciku;
Binatang hewan;
herbivora=new Herbivora();
kelinciku=new Kelinci();
hewan=herbivora;
hewan.info();
hewan=kelinciku;
hewan.info();
}
}
6. Modularitas
{
public void info()
{
System.out.println (“Info pada herbivora: Memakan makanan berupa tumbuh – tumbuhan”);
}
}
class Kelinci extends Herbivora
{
public void info()
{
System.out.println(“Info pada Kelinci: Memakan makanan berupa wortel”);
}
}
public class Polimorfisme
{
public static void main(String[] args)
{
Herbivora herbivora;
Kelinci kelinciku;
Binatang hewan;
herbivora=new Herbivora();
kelinciku=new Kelinci();
hewan=herbivora;
hewan.info();
hewan=kelinciku;
hewan.info();
}
}
Aggregation
Aggregation adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects mesin, object pisau dan lain-lain. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat. Pemrograman visual membawa OOP ke level berikutnya. Tujuan pemrograman visual adalah agar pemrograman menjadi lebih mudah bagi para programmer dan lebih mudah diakses oleh kalangan nonprogrammer dengan meminjam bahasa OOP, dan mempraktikanya secara grafis atau visual. Pemrograman visual memungkinkan pengguna untuk lebih focus pada pemecahan masalah ketimbang cara menangani bahasa pemrograman.
6. Modularitas
Selain konsep yang dijelaskan di atas, pemrograman berorientasi objek juga memungkinkan peningkatan modularitas. Sedangkan arti katamodularitas adalah memecahkan sesuatu yang kompleks menjadi bagian-bagian kecil yang mudah dikendalikan. Kelas atau kelompok kelas terkait dapat dianggap sebagai modul kode yang dapat digunakan kembali dalam proyek perangkat lunak banyak. Hal ini mengurangi kebutuhan untuk membangun kembali fungsi yang sama dan karena itu dapat menurunkan waktu dan biaya pengembangan.
Dalam pemograman berorientasi Objek dikenal Ada beberapa pengertian dasar yang harus kita ketahui yaitu:
a. Class
Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
· Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
contoh :
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
Dalam pemograman berorientasi Objek dikenal Ada beberapa pengertian dasar yang harus kita ketahui yaitu:
a. Class
Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
· Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
contoh :
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
b. Object
Object adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.
contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
c. Method
Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
Object adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.
contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
c. Method
Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
d. Behavior
Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior merupakan kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.
Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior merupakan kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.
e. Contruktor
Contruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan constructor, hal mendasar yang perlu diperhatikan, yaitu :
1. Nama Constructor sama dengan nama Class.
2. Tidak ada return type yang diberikan kedalam Constructor Signature.
3. Tidak ada return stetement, didalam tubuh constructor.
Contruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan constructor, hal mendasar yang perlu diperhatikan, yaitu :
1. Nama Constructor sama dengan nama Class.
2. Tidak ada return type yang diberikan kedalam Constructor Signature.
3. Tidak ada return stetement, didalam tubuh constructor.
f. Constructor Overloading
Overloading adalah 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 adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
Berikut adalah penjelasan selengkapnya.
A.Class dan Objek
Untuk membuat Class dengan C# maka berikut adalah sintaks yang mesti diketahui.
[attribute]
[access-modifier] class nama_class [: [base-class [, interface(s)]]
{
class-body
}
Keterangan :
1. Attribute, adalah penanda untuk menerangkan class dan untuk kebutuhan tertentu.
2. Access-modifier dapat berupa public, private, protected, internal dan protected internal.
a. public, tidak ada batasan, class dapat digunakan oleh semua class.
b. private, terbatas tidak dapat digunakan pada class lain.
c. protected, terbatas digunakan oleh class turunannya.
d. internal, dapat digunakan secara internal di dalam class.
3. Tanda “:” untuk pengganti kata kunci extends bagi yang sudah mengenal OOP
pada Java atau PHP.
Contoh Listing Program :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
[Obsolete("Class ini sudah tidak digunakan lagi", true)]
public class VariableExample : CommonMath
{
}
}
Pada contoh di atas dapat dilihat class dengan nama VariableExample dengan accessmodifier
public. Class VariableExample merupakan turunan dari class CommonMath.
Class VariableExample mempunyai attribute seperti yang telah ditulis di atas, fungsi
attribute di atas sebagai penanda bahwa class ini sudah tidak bisa digunakan lagi dan akan
menghasilkan error bila digunakan.
Setelah class dibuat maka pada kondisi tertentu class tersebut dapat diinstansiasi menjadi
sebuah objek.
Berikut adalah contoh class dan cara instansiasi class tersebut menjadi objek pada C# :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
}
}
Berikut adalah contoh proses instansiasi class ClassExample :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
3-36
ClassExample classExample = new ClassExample();
}
}
}
Perbedaan Class dan Object
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:
public class Time
{
// private variables atau field
private int year;
private int month;
private int date;
private int hour;
private int minute;
private int second;
// public methods
public void DisplayCurrentTime()
{
Console.WriteLine(“Menampilkan Waktu..”);
}
}
class Program
{
static void Main(string[] args)
{
Time timeObject = new Time(); //membuat instan class
timeObject.DisplayCurrentTime(); //memanggil method dalam class
}
}
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:
B.Method dan Field
Ada dua jenis method, yaitu :
1. Method yang tidak melemparkan nilai biasanya disebut procedure.
Sintaks :
[access-modifier] void nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}
Contoh :
ClassExamle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public void Tambah(int bilanganA, int bilanganB)
{
int hasil = bilanganA + bilanganB;
System.Console.WriteLine(hasil);
}
}
}
Contoh penggunaan :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ClassExample classExample = new ClassExample();
classExample.Tambah(3, 10);
System.Console.ReadKey();
}
}
}
2. Method yang melemparkan nilai biasanya disebut function.
Sintaks :
[access-modifier] tipe_data nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}
Contoh :
ClassExamle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int Kurang(int bilanganA, int bilanganB)
{
return bilanganA - bilanganB;
}
}
}
Contoh penggunaan :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ClassExample classExample = new ClassExample();
System.Console.WriteLine(classExample.Kurang(17,4));
System.Console.ReadKey();
}
}
}
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).
class MyClass {
public void SomeMethod(int firstParam, double secondParam) {
Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
firstParam, secondParam);
}
//overload method
public void SomeMethod(int firstParam) {
Console.WriteLine(“Parameter 1 : {0}”, firstParam);
}
public void SomeMethod(int firstParam, string secondParam) {
Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
firstParam, secondParam);
}
}
class MethodArgumen {
static void Main(string[] args) {
MyClass m1 = new MyClass(); //membuat instan object
m1.SomeMethod(12, 1.25);
m1.SomeMethod(34);
m1.SomeMethod(12, “Hello”);
}
}
Field adalah property pada class seperti pada contoh kode berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
}
}
Dari contoh di atas maka field bilangan1 dan bilangan2 dapat diakses secara langsung
sebagai method dari objek di dalam class manapun karena menggunakan public sebagai
access-modifier.
Sedangkan field nama, karena menggunakan access-modifier protected maka hanya dapat
digunakan oleh class yang merupakan class turunan dari ClassExample.
digunakan oleh class yang merupakan class turunan dari ClassExample.
Contoh :
ClassTurunan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}
ClassTurunan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}
Atau dapat dilihat pada gambar berikut :
Pada class ClassExample terdapat field yang menggunakan access-modifier private. Artinya
field ini hanya bisa digunakan di dalam class tersebut.
Field pada suatu class secara default mempunyai access-modifier private dan memang
seharusnya tetap seperti itu. Agar class lain dapat melakukan pengambilan (get) atau pengisian (set) nilai field tersebut maka perlu dibuat public method yang berfungsi untuk itu.
Public method ini dideklarasikan bukan seperti method yang telah dibuat sebelumnya,
istilah yang tepat sebagai pengganti nama ‘method’ untuk fungsi seperti di atas adalah Property.
Cara mendeklarasikan Property adalah sebagai berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
public string Hasil
{
get {return hasil;}
set {hasil = value;}
}
}
}
Dengan cara di atas maka field hasil dapat diberikan nilai (set) dan diambil nilainya (get)
oleh semua class.
public string Hasil
{
get {return hasil;}
set {hasil = value;}
}
Kode di atas dapat dipersingkat lagi penulisannya dengan cara berikut :
public string Hasil
{
get;
set;
}
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
public class Time {
// private member variables
int Year;
int Month;
int Date;
int Hour;
int Minute;
int Second;
// constructor
public Time(System.DateTime dt) {
Year = dt.Year;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
// public methods
public void DisplayCurrentTime() {
System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”,
Month, Date, Year, Hour, Minute, Second);
}
}
class LatKonstruktor {
public static void Main(string[] args) {
DateTime currTime = DateTime.Now;
Time t = new Time(currTime); //memanggil constructor
t.DisplayCurrentTime();
}
}
Initializer
Pada C# anda bisa menginisialisasi variabel dalam class secara langsung tanpa harus mengisialisasi-nya lewat konstruktor.
public class Time
{
// private member variables
int year;
int month;
int date;
int hour;
int minute;
int second = 30; //initializer
}
“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.
public class Time {
// private member variables, class variable
int year;
int month;
int date;
int hour;
int minute;
int second = 30;
public void SetTime(year, month, date, newHour, newMinute, newSecond) {
this.year = year; // penggunaan “this” dibutuhkan
this.month = month; // dibutuhkan
this.date = date; // dibutuhkan
this.hour = hour; // penggunaan “this” optional
this.minute = newMinute; // optional
second = newSecond; // optional
}
}
C.Static Member
Pada bagian sebelumnya telah dijelaskan cara membuat class, method dan field. Padacontoh di atas terlebih dahulu harus dibuat instance dari class agar dapat mengakses
method atau field.
Pada bagian ini akan dijelaskan cara membuat method agar dapat digunakan tanpa harus
melakukan instansiasi class terlebih dahulu.
Caranya sangat mudah yaitu dengan menambahkan kata kunci static pada method yang
diinginkan seperti pada contoh berikut :
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public static void Kali(int bilanganA, int bilanganB)
{
int hasil = bilanganA * bilanganB;
System.Console.WriteLine(hasil);
}
}
}
Untuk menggunakan method ini cukup dengan menulis kode seperti berikut ini :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
ClassExample.Kali(3, 10);
System.Console.ReadKey();
}
}
}
Menggunakan Using Statement
Untuk memudahkan developer C# menyediakan statement using untuk memastikan bahwa method dispose dijalankan. (kadang kita lupa untuk memanggil method dispose ini). Penggunaan using hanya bisa digunakan untuk class yang mengimplementasikan IDisposable.
class LatDispose {
public static void Main(string[] args) {
using (Testing t1 = new Testing()) {
Console.WriteLine("Menggunakan Keyword Using..");
}
}
}
Passing Parameter
Parameter pada C# secara default yang dikirimkan kedalam method adalah nilainya, atau “pass by value”. jadi jika ada perubahan nilai parameter pada method tersebut tidak berpengaruh ke method.
public class Time {
// private member variables
private int Year;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
public void DisplayCurrentTime() {
System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
Month, Date, Year, Hour, Minute, Second);
}
public int GetHour() {
return Hour;
}
public void GetTime(int h, int m, int s) {
h = Hour;
m = Minute;
s = Second;
}
public Time(System.DateTime dt) { //konstruktor
Year = dt.Year;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
class MethodByReference {
public static void Main(string[] args) {
System.DateTime currentTime = System.DateTime.Now;
Time t = new Time(currentTime);
t.DisplayCurrentTime();
int theHour = 0;
int theMinute = 0;
int theSecond = 0;
t.GetTime(theHour, theMinute, theSecond);
System.Console.WriteLine("Current time: {0}:{1}:{2}",
theHour, theMinute, theSecond);
}
}
}
Jika ingin mengirimkan parameter referenced / ‘pass by reference’ anda dapat menambahkan keyword ref sebelum tipe data pada method parameternya.
//tambahkan keyword ref pada parameter
public void GetTime(ref int h,ref int m,ref int s) {
h = Hour;
m = Minute;
s = Second;
}
//pada method main tambahkan ref pada method pemanggil
int theHour = 0;
int theMinute = 0;
int theSecond = 0;
t.GetTime(ref theHour, ref theMinute, ref theSecond);
System.Console.WriteLine("Current time: {0}:{1}:{2}",
theHour, theMinute, theSecond);
D.Inheritance dan Polymorphism
Inheritance atau penurunan adalah kemampuan membuat suatu class anak dari suatu classinduk, dimana seluruh field dan method diturunkan kepada class anak, kecuali method atau
field dengan access-modifier private.
Contoh kasus inheritance ini adalah seperti kode berikut :
ClassTurunan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}
Pada kode di atas, yang menjadi class induk adalah ClassExample dan ClassTurunan
merupakan class anaknya. Baris berikut menyatakan cara membuat class ClassTurunan
sebagai turunan dari class ClassExample.
public class ClassTurunan : ClassExample
Polymorphism bila diartikan dengan melihat arti dari kata penyusunnya yaitu poly yang
berarti “banyak dan morph yang berarti “bentuk” maka secara keseluruhan artinya adalah
“banyak bentuk”. Masih berhubungan dengan inheritance atau penurunan, misalkan dibuat class yang akan
menjadi class induk seperti berikut :
CurveMath.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Common.Math
{
public class CurveMath
{
private int panjang;
private int lebar;
private int jejari;
public int Panjang
{
set{panjang = value;}
get { return panjang; }
}
public int Lebar
{
set { lebar = value; }
get { return lebar; }
}
public int Jejari
{
set { jejari = value; }
get { return jejari; }
}
public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}
}
}
Pada kode di atas dapat dilihat terdapat kata kunci virtual pada method berikut :
public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}
Artinya method ini dapat diubah menjadi bentuk lagi dengan cara di-override. Seperti yang
dilakukan oleh class Lingkaran.
Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
}
}
Pada kode di atas dapat dilihat digunakan kata kunci override, kata kunci ini hanya dapat
digunakan kepada method yang menggunakan kata kunci virtual.
Enkapsulasi data dengan Property
Enkapsulasi / penyembunyian informasi adalah konsep yang selama ini sering anda dengar. Pada OOP informasi dibungkus dalam sebuah Class sehingga orang yang menggunakan class tersebut tidak perlu tahu detail-nya, hanya cukup mengetahui method dan property apa saja yang ada dalam class tersebut beserta kegunaannya. Pada pemrograman berorientasi objek variabel dalam class biasanya diberi access modifier private, ini berarti hanya method dalam class tersebut yang dapat mengakses variabelnya.
Jika anda membuat variable tersebut public maka user yang menggunakan class tersebut bisa memasukan nilai yang tidak kita inginkan, maka anda harus mendeklarasikan variable tersebut secara private agar pada saat setMethod() anda dapat menambahkan validasi inputan dari user.Anda bisa membuat public method set dan get untuk memberi dan mengambil nilai variabel tersebut, misal:
// private member variables
private int Year;
public int getYear() //get method
{
return this.Year;
}
public void setYear(int Year) //set method
{
this.Year = Year;
}Selain menggunakan cara tersebut diatas pada C# disediakan object property untuk memberi nilai dan mengambil nilai dari private variabel dalam suatu class. Penggunaan object property lebih memudahkan anda dalam penulisan kode dibandingkan harus membuat dua method set dan get untuk mengakses satu variabel private. Contoh penggunaan property dapat dilihat pada contoh kode dibawah ini.
class Mahasiswa {
private string nim;
private string nama;
public string Nim {
get {
return nim;
}
set {
this.nim = value;
}
}
public string Nama {
get {
return nama;
}
set {
this.nama = value;
}
}
public string DisplayInfo() {
return Nim + " " + Nama;
}
}
class ClassProperty {
public static void Main(string[] args) {
Mahasiswa mhs1 = new Mahasiswa();
mhs1.Nim = "22002321";
mhs1.Nama = "Erick";
Console.WriteLine(mhs1.DisplayInfo());
}
}
Inheritance
Pada C# hubungan spesialisasi diimplementasikan menggunakan prinsip inheritance. Penulisan inheritance di C# sebagai berikut
public class ListBox : Window
Kode diatas berarti class ListBox adalah turunan dari class Window
Penggunaan inheritance dapat dilihat pada program dibawah ini
public class Window {
//variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas
//turunannya
private int top;
private int left;
//objek konstruktor
public Window(int top, int left) {
this.top = top;
this.left = left;
}
public void DrawWindow() {
Console.WriteLine("Draw window pada ({0},{1})",
top, left);
}
}
public class ListBox : Window {
//member variable baru pada class anak
private string listBoxContent;
public ListBox(int top, int left, string contents):base(top,left) {
this.listBoxContent = contents;
}
//versi baru karena override dari base classnya
public new void DrawWindow() {
base.DrawWindow();
Console.WriteLine("Menuliskan string pada listbox: {0}",
listBoxContent);
}
}
class LatInheritance {
public static void Main(string[] args) {
Window objWindow = new Window(10, 15);
objWindow.DrawWindow();
ListBox objList = new ListBox(15, 20, "Hello ListBox");
objList.DrawWindow();
}
}
E.Method Overloading
Method overloading, untuk mengetahui arti dari istilah ini maka bisa melihat terlebihdahulu baris kode di bawah ini :
Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
/// <summary>
/// Tidak ada parameter
/// </summary>
public void Tambah()
{
System.Console.WriteLine(3 + 10);
}
/// <summary>
/// Terdapat satu parameter
/// </summary>
public void Tambah(int bilangan)
{
System.Console.WriteLine(3 + bilangan);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data int
/// </summary>
public void Tambah(int bilangan1, int bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data double
/// </summary>
public void Tambah(double bilangan1, double bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
}
}
Pada kode di atas dapat dilihat terdapat tiga method dengan nama yang sama yaitu Tambah
perbedaan tiap method adalah dilihat dari jumlah parameter dan tipe data yang digunakan.
Contoh kode di atas adalah praktik dari Method Overloading. Pada Visual Studio saat ingin
menambahkan method Tambah maka dapat dilihat tampilan seperti pada gambar berikut :
Pada C# anda dapat mendeklarasikan method atau konstruktor dengan nama
yang sama pada sebuah class, tetapi parameter method tersebut harus
berbeda bisa jumlah atau tipe datanya.
F.Collection
1.ArrayArray adalah suatu struktur data yang dapat menyimpan data dengan tipe yang sama dan
diakses dengan menggunakan suatu indeks yang menunjukan suatu elemen didalam array
tersebut.
Variabel yang disimpan di dalam array ini disebut juga dengan elemen array dan tipe
datanya disebut dengan tipe elemen dari array.
Mendeklarasikan Array
Adapun sintaks yang digunakan untuk mendeklarasikan array adalah :
type_data[] namaVariable;
Contoh :
string[] namaBulan;
Contoh :
string[] namaBulan;
2.Inisialisasi Array
Untuk memberikan nilai ke dalam suatu variabel array dapat dilakukan dengan beberapa
cara. Pertama dengan menggunakan kata kunci new untuk menentukan jumlah elemen
yang dapat disimpan oleh array dilanjutkan dengan memberi nilai masing-masing elemen.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = new string[12];
namaBulan[0] = "Januari";
namaBulan[1] = "Februari";
}
}
}
Cara kedua dengan cara langsung memberi nilai pada saat deklarasi seperti contoh berikut :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = { "Januari", "Februari" };
}
}
}
Berikut ini adalah contoh program untuk mengakses array.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
string[] namaBulan = { "Januari", "Februari", "Maret" };
for (int i = 0; i < namaBulan.Length; i++)
{
System.Console.WriteLine(namaBulan[i]);
}
System.Console.ReadKey();
}
}
}
3.Collection
Collection berfungsi sebagai kontainer untuk menyimpan sekumpulan objek. Collection
mirip dengan konsep array. Untuk mengakses data dalam collection biasanya dilakukan
dengan melakukan iterasi terhadap data yang ada dalam collection atau dapat juga diakses
dengan menggunakan indeks atau indexers.
ArrayList
Berikut adalah contoh penggunaan ArrayList.Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
al.Add(p1);
Pegawai p2 = new Pegawai();
p2.Nama = "Faisal";
p2.Umur = 25;
al.Add(p2);
System.Console.WriteLine("Jumlah objek : " + al.Count);
for (int i = 0; i < al.Count; i++)
{
int j = i + 1;
Pegawai pegawai = (Pegawai)al[i];
System.Console.WriteLine(j + ". " + pegawai.Nama
+"("+pegawai.Umur+")");
}
System.Console.ReadKey();
}
}
}
4.Hashtable
Berbeda dengan ArrayList, Hashtable mempunyai key. Berikut contoh pemanfaatan Hashtable.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
ht.Add("P1", p1);
Pegawai p2 = new Pegawai();
3-46
p2.Nama = "Faisal";
p2.Umur = 25;
ht.Add("P2", p2);
System.Console.WriteLine("Jumlah objek : " + ht.Count);
IDictionaryEnumerator enumerator = ht.GetEnumerator();
while (enumerator.MoveNext())
{
Pegawai pegawai = (Pegawai)enumerator.Value;
System.Console.WriteLine(enumerator.Key.ToString() + " " +
pegawai.Nama
+ "(" + pegawai.Umur + ")");
}
System.Console.ReadKey();
}
}
}
REFERENSI
file:///C:/Users/user/Downloads/oop-di-pemograman-c.html
http://id.wikipedia.org/w/index.php?title=Pemrograman_berorientasi_objek&oldid=6620271. Pemrograman Berorientasi Objek. Diakses tanggal 15 Mei 2013.
Carr,Richard . 2010. Konsep Pemrograman Berorientasi Objek pada C#.Terjemah
Carr,Richard . 2010. Konsep Pemrograman Berorientasi Objek pada C#.Terjemah
http://www.blackwasp.co.uk/ObjectOrientedConcepts.aspx. Diakses tanggal 15 Mei 2013.
Oktavia, Elvi. 2010. Konsep Object Oriented Programming (OOP) dalam Pemrograman Visual. Fakultas Ilmu Komputer Jurusan Sistem Informasi:Universitas Sriwijaya.
Oktavia, Elvi. 2010. Konsep Object Oriented Programming (OOP) dalam Pemrograman Visual. Fakultas Ilmu Komputer Jurusan Sistem Informasi:Universitas Sriwijaya.
Langganan:
Postingan (Atom)