Object
Oriented Programing
1. Class, Attribute, dan Method
A. Class
Class adalah kumpulan atas definisi data
dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebuah class
adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang
non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode
yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan
independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP).
Dengan modularitas, struktur dari sebuah program akan terkait dengan
aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara
seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program
ataupun sebaliknya.
Ada
pengertian lain yang menjelaskan Class merupakan suatu blueprint atau cetakan
untuk menciptakan suatu instant dari object. class juga merupakan grup
suatu object dengan kemiripan attributes/properties, behaviour
dan relasi ke object lain. Contoh : Class Person, Vehicle, Tree, Fruit dan
lain-lain
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: }
B.
Attribute
Attribute
adalah segala sesuatu yang melekat pada
Object. Dalam penerapan di dalam program, atribut adalah
Variabel
Attributes merupakan nilai data yang
terdapat pada suatu object yang berasal dari class. Attributes
merepresentasikan karakteristik dari suatu object.
Contoh
: pada Class Fruit terdapat attribute : warna, berat pada object mangga :
-warna
berisi kuning dan berat misalkan 0.25 kg.
-pada
object apel : warna berisi merah dan berat misalkan 0.30 kg.
C.
Method
Method adalah suatu operasi berupa
fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan
pada class akan tetap dipanggil melalui object. Contoh : pada object mangga :
terdapat method ambilRasa , kupasKulit dan lain-lain.
Method
merupakan sarana bagi programmer untuk memecah program kompleks menjadi bagian
yang kecil-kecil,sehingga nantinya dapat digunakan berulang-ulang.
Method
didefinisikan pada class akan dipanggil melalui object. Dengan kata lain method
juga dikenal sebagai fungsi atau prosedur. Method memiliki 4 (empat) bagian
dasar :
1. Nama metode
2. Tipe Objek atau tipe primitive yang
dikembalikan metode.
3. Daftar parameter.
4. Badan atau isi metode.
Method adalah bagian dari tubuh
program yang mengimplementasikan suatu action sehingga class atau object bekerja.
· Static Methods
Method
dapat di overload, yaitu nama suatu method dapat dipakai berkali-kali selama
method tersebut memiliki sesuatu yang unik. Static method hanya bisa diakses
melalui classnya saja.
· Non static method
Non
static method adalah method yang dapat diakses melalui instance-nya.
2.
Object
Object adalah
instance dari class. Jika class secara umum merepresentasikan (template) sebuah
object, sebuah instance adalah representasi nyata dari class itu sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan
lainlain.
Object merupakan sebuah structure yang menggabungkan data
dan prosedur untuk bekerja bersama-sama. Objek merupakan dasar dari modularitas
dan struktur dalam sebuah program komputer berorientasi objek.
Dalam term OOP, object adalah sebuah structure
yang menggabungkan data dan prosedur untuk bekerja bersama-sama. Contoh, jika
kamu tertarik dalam pelacakan data yang dihubungkan dengan produk, kamu akan
menciptakan sebuah object produk yang bertanggung jawab untuk me-maintenance
dan bekerja dengan data yang bersinggungan dengan produk. Jika kamu ingin
kemampuan mencetak dalam aplikasi kamu, kamu harus bekerja dengan sebuah object
printer yang bertanggungjawab untuk data serta metode yang digunakan untuk berinteraksi
dengan printer anda.
3. Cara Membuat Class
1)
Buat
project baru dan pilih Console Aplication
2)
Untuk
membuat sebuah kelas baru, klik pada nama project anda yang terdapat pada
jendela Solution Explorer. Kemudian klik kanan, pilih menu Add Class.
3)
Maka
akan muncul jendela Add New Item. Pada nama class baru yang akan dibuat,
masukkan nama classnya.
4. Konstruktor
Konstruktor adalah method yang
namanya sama dengan nama class-nya. Konstruktor digunakan untuk inisialisasi
variabel ketika membuat instan class / objek baru. Sebenarnya setiap kali anda
membuat instant class / objek baru maka konstruktor dijalankan. Jika anda tidak
mendefinisikan konstruktor secara eksplisit maka tetap dianggap membuat
konstruktor kosong.
Perhatikan di bawah ini :
Baris ke-3 memiliki bentuk yang
mirip dengan baris definisi class di baris pertama. Perbedaannya adalah tidak
adanya kata “class” dan keberadaan () di akhir nama class. Bagian
inilah yang disebut sebagai constructor dari sebuah class.
Bentuknya sebuah fungsi yang tidak memiliki tanda kembalian (return type)
dan memiliki nama yang sama dengan nama class. Pengertian fungsi dan return
type akan kita bahas selanjutnya dalam artikel ini. Baris ke-4 s.d.
ke-6 menunjukkan definisi dari constructor yang dapat kita isi dengan code
tertentu yang kita perlukan. Pada umumnya, code di dalam constructor ini
melakukan proses inisialisasi setiap variabel atau property yang dimiliki oleh
class. Dalam contoh di atas, constructor melakukan inisialisasi
variabel _Name yang dimiliki oleh class GuestBook. Setiap constructor
dari sebuah class akan selalu dipanggil atau dijalankan secara otomatis ketika
sebuah sebuahinstance dari class tersebut dibuat. Perhatikan code
berikut:
1 // sebuah instance dibuat, diberi nama tamu1
2 GuestBook tamu1 = new GuestBook();
3 // satu instance lagi dibuat dan diberi nama tamu2
4 GuestBook tamu2 = new GuestBook();
5
6 // menampilkan isi property Name dari tamu1
7 lblName.Text = tamu1.Name;
8 // mengubah isi property Name dari tamu2
9 tamu2.Name = "Gatot Wahyudi";
10 // menampilkan isi property Name dari tamu2
11 lblName.Text = tamu2.Name;
Class dapat diibaratkan sebagai
sebuah pabrik objek sedangkan instance dari class adalah
setiap objek yang diproduksi oleh pabrik tersebut. Contoh di atas menunjukkan
bahwa GuestBook merupakan pabrik dari objek.
Adapun tamu1 dan tamu2 merupakan instance dari
class GuestBook. Setiap instance inilah yang nantinya
mempunyai ciri spesifik masing-masing. Contoh yang lain misalnya kita mempunyai
class Mobil maka instance yang dapat dibuat antara lain Honda
dan Ferrari dimana kita mengetahui masing-masing instance tersebut
adalah sama-sama objek Mobil namun memiliki ciri-ciri yang berbeda dari segi
nama, ukuran mesin, kecepatan maksimum, dll.
Pada
contoh cuplikan code di atas kita juga mencoba untuk menampilkan isi dari
property Namedari objek tamu1 pada label lblName. Dengan
perintah tersebut kita akan mendapati bahwa label lblName akan
menampilkan teks “Anonim”. Bagaimana bisa demikian sedangkan kita belum pernah
mengubah property Name dari objek tamu1? Jawabannya adalah
pengaruh dariconstructor. Seperti yang sudah dijelaskan sebelumnya,
ketika sebuah instance dibuat makaconstructor akan
dipanggil atau dijalankan secara otomatis. Dengan kata lain, setiap baris
perintah pada code di dalam constructor akan dieksekusi. Pada
code class GuestBook, pada awalnya property _Name didefinisikan untuk berisi
string kosong atau “” melalui perintahprivate string _Name = string.Empty;.
Selanjutnya, code di dalam constructor melakukan perubahan
nilai dari property _Name dengan teks “Anonim”. Dengan demikian,
secara otomatis setiap kita membuat instance dari class
GuestBook maka property _Name akan selalu berisi teks “Anonim”. Ini
berarti property _Name pada instance tamu2 juga
bernilai “Anonim” ketika pertama kali dibuat. Nilai property tersebut baru
berubah ketika code tamu2.Name = “Gatot Wahyudi”; dieksekusi.
5. Private, Protected, Public
Private,
protected, dan public merupakan identifier. Identifier adalah suatu pengenal atau pengidentifikasi yang
kita deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri dapat
berupa nama variabel, konstanta fungsi, kelas, template maupun namespace. Ada
perbedaan di antara private, protected, dan public.
·
Private: anggota publik
dari kelas dasar dapat diakses oleh anggota yang kelas
dasar,anggota kelas turunan serta anggota yang berada di
luar kelas dasar dan kelas turunan.
·
Protected: anggota dilindungi dari kelas
dasar dapat diakses oleh anggota kelas dasarserta anggota
kelas turunan.
·
Public: anggota
pribadi dari kelas dasar hanya dapat diakses oleh
anggota yang kelas dasar.
Untuk membuat nama identifier perlu memperhatikan hal-hal
berikut:
1. Membedakan huruf besar dan huruf
kecil (case sensitive).
2. Nama identifier bisa terdiri dari
satu atau beberapa karakter yang terdiri dari angka (0 – 9), huruf (A – Z, a –
z), dollar ($), garis-bawah/underscore(_).
3. Penamaan identifier harus dimulai dengan
huruf, underscore(_), atau karakter dollar ($). Tidak boleh dimulai dengan
angka. Simbol-simbol operator seperti (*), (+), (/), (-) tidak boleh digunakan.
4. Dalam penamaan identifier tidak
boleh menggunakan spasi.
5. Tidak diperbolehkan menggunakan
Kata-kata keyword dalam bahasa pemrograman (misalnya: public, class, static,
dsb).
6. Panjang nama identifier tidak
dibatasi.
Beberapa contoh penamaan identifier
yang benar:
·
Nama
·
$Nama
·
NamaSiswa
·
NomorInduk
·
namaSiswa
·
nomorInduk
·
nama_siswa
·
nomor_induk
Beberapa contoh penamaan identifier yang salah:
·
1Nama
·
/NomorInduk
·
Nama
Siswa
Contoh syntax pada C#:
1.
Double luas_segitiga;
2.
String namaMahasiswa;
3.
Int nilai;
6.
Karakteristik
OOP dan contohnya
a.
Inheritance
Inheritance/pewarisan
adalah kemampuan untuk membuat class turunan yang mewarisi property dan method
dari kelas induk.
Menggunakan inheritance
dalam OOP untuk mengklasifikasikan objects dalam program sesuai karakteristik
umum dan fungsinya. Hal ini akan membuat pekerjaan bersama object lebih mudah
dan lebih intuitif. Hal ini juga membuat programming lebih mudah karena
memungkinkan kita untuk mengkombinasikan karakteristik umum kedalam object
parent dan mewariskan karakteristik ini ke child object.
Keuntungan dari inheritance :
-
Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari
class induk
-
Memudahkan dan Mempercepat pemprogramman , mengurangi Code
Sample inheritance dalam C#:
Sample inheritance dalam C#:
public class A
{
public A() { }
}
public class B : A
{
public B() { }
}
b.
Polymorphisme
Polymorphism/banyak bentuk,
seorang programer bisa memakai method dengan nama yang sama pada class-class yang berbeda.
Polymorphisms
adalah kemampuan 2 buah object yang berbeda untuk merespon pesan permintaan
yang sama dalam suatu cara yang unik.
Bagaimana
hal ini berhubungan dengan OOP? Kamu dapat membuat objects yang dapat merespon
pesan yang sama dalam implementasi yang
unik. Contohnya, kamu
dapat mengirim pesan print ke object printer yang akan mencetak pada
printer, dan kamu juga dapat mengirim pesan yang sama ke object screen yang
akan menuliskan pada screen monitor. Dalam OOP, kamu menerapkan tipe
polymorphism melalui proses yang disebut overloading. Kamu dapat
mengimplementasikan metode yang berbeda pada sebuah object yang mempunyai nama
yang sama.
Contoh Polymorphisme :
public class BaseClass
{
public void DoWork() { }
public int WorkField;
public int WorkProperty
{
get { return 0; }
}
}
public class DerivedClass : BaseClass
{
public new void DoWork() { }
public new int WorkField;
public new int WorkProperty
{
get { return 0; }
}
}
c.
Encapsulation
Encapsulation/pembungkusan, merupakan
penyembunyian informasi melalui private danprotected.
Selain
dengan menggunakan metoda abstraksi dalam menyembunyikan method pada super
class, maka juga dapat dilakukan dengan proses pembungkusan suatu fungsi.
Dengan kata lain, sebenarnya proses pembungkusan itu sendiri merupakan salah
satu metoda atau mekanisme untuk melakukan abstraksi.
Dalam
pemrograman tradisional, proses semacam ini sering juga disebut dengan
penyembunyian informasi (information hiding).
Contoh encapsulation
untuk C#:
namespace BW_OOP2
{
class Program
{
public static void Main(string[] args)
{
Barang brg = new Barang();
Console.Write("Masukkan Nama barang = ");
brg.Nama_barang = Console.ReadLine();
brg.DataBarang();
Console.WriteLine();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Barang
{
public Barang()
{
Console.WriteLine("\t\t\t\t Data Barang\n\n");
}
private string nama_barang; //---> modifier private &
information hidding
private string kode_barang; //---> modifier private
protected int harga; //---> modifier protected
int stok; //--->
modifier default
public string Nama_barang // ---> properties getset
{
get { return nama_barang; }
set { nama_barang = value; }
}
public void DataBarang() //---> method dengan modifier
public
{
if(Nama_barang == "Acer 4741G")
{
kode_barang = "310051";
harga = 4750000;
stok = 20;
}
else if(Nama_barang == "Acer 4750")
{
kode_barang = "310052";
harga = 4490000;
stok = 20;
}
else
{
kode_barang = "Barang Tidak ada";
harga = 0;
stok = 0;
}
Console.WriteLine("\n\n");
Console.WriteLine("Nama Barang =
{0}",Nama_barang);
Console.WriteLine("Kode Barang =
{0}",kode_barang);
Console.WriteLine("Harga = {0}",harga);
Console.WriteLine("Stok = {0}",stok);
}
}
}
d.
Abstraction
Abtraction/abtraksi, adalah
sebuah konsep yang merupakan representasi abstrak dari konsep dalam pemograman,
misalnya objek mobil merupakan representasi abstrak dari mobil dalam dunia
nyata.
Abstraksi
merupakan pengabstrakan atau penyembunyian kerumitan suatu proses. Abstraksi
menjelaskan definisi dari objek pada class dalam suatu fungsi (method) atau
fungsi khusus (constructor). Sebuah kelas dapat dideklarasikan sebagai kelas
abstrak. Tujuan membuat kelas abstrak adalah agar satu kelas lain dapat
memperluasnya (extend) dengan jalan menjadi subclass darinya.
e.
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. emrograman visual memungkinkan pengguna untuk
lebih focus pada pemecahan masalah ketimbang cara menangani bahasa pemrograman.
7.
Overloading
Overloading adalah suatu cara untuk memberikan
nama yang sama kepada dua method yang berbeda meski dua method tersebut berada
dalam class yang sama. Hal ini dapat dilakukan dengan cara membedakan tipe
parameter, jumlah parameter dan susunan parameter, Manfaat penggunaan
overloading adalah agar method yang mempunyai tingkah yang hampir sama mudah
diingat oleh developer software.
Overloading
Merupakan Suatu Function yang memiliki parameter , dan function tersebut dapat
memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah
parameter mesti berbeda atau bisa kita bilang Situasi di mana beberapa rutin
dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter
dan/utau jenis return value.lebih Jelasnya Overloading secara singkat :
· Nama Method Boleh Sama , Tapi
Jumlah Parameter Mesti berbeda
· Nilai Yang Di Return Harus
memiliki Tipe yang sama
Sample Overloading pada function
TaxCalc pada C#.Net :
public static double TaxCalc(double pamt1, double prate1, double pamt2,
double prate2)
{
double taxamt;
Console.WriteLine(“Using method with 4 arguments”);
taxamt = (pamt1 * prate1) + (pamt2 * prate2);
return taxamt;
} // *** TaxCalc ***
// This method only takes two arguments: an amount and a rate
public static double TaxCalc(double pamt1, double prate1)
{
double taxamt;
Console.WriteLine(“Using method with 2 arguments”);
taxamt = pamt1 * prate1;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument: an amount
public static double TaxCalc(double pamt)
{
double taxrate = 0.15;
double taxamt = 0;
Console.WriteLine(“Using method with 1 argument”);
taxamt = pamt * taxrate;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument as well but it differs
// from the above in the argument type.
public static double TaxCalc(string whichtable)
{
double taxrate = 0;
Console.WriteLine(“Calling the method with 1 string argument”);
if (whichtable == “TaxTable1″)
taxrate = 0.15;
return taxrate;
}
public static double TaxCalc(double pamt1, double prate1, double pamt2,
double prate2)
{
double taxamt;
Console.WriteLine(“Using method with 4 arguments”);
taxamt = (pamt1 * prate1) + (pamt2 * prate2);
return taxamt;
} // *** TaxCalc ***
// This method only takes two arguments: an amount and a rate
public static double TaxCalc(double pamt1, double prate1)
{
double taxamt;
Console.WriteLine(“Using method with 2 arguments”);
taxamt = pamt1 * prate1;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument: an amount
public static double TaxCalc(double pamt)
{
double taxrate = 0.15;
double taxamt = 0;
Console.WriteLine(“Using method with 1 argument”);
taxamt = pamt * taxrate;
return taxamt;
} // *** TaxCalc ***
// This method only takes one argument as well but it differs
// from the above in the argument type.
public static double TaxCalc(string whichtable)
{
double taxrate = 0;
Console.WriteLine(“Calling the method with 1 string argument”);
if (whichtable == “TaxTable1″)
taxrate = 0.15;
return taxrate;
}
0 komentar:
Posting Komentar