documentgo
DESCRIPTION
rTRANSCRIPT
-
5/24/2018 go
1/29
go! go! go! semangat!!!!!!
Selasa, 08 Oktober 2013
Rangkuman tentang OOP pada C#
Object Oriented Progamming
1. Class, Atribut, dan Object
A. Class
Dalam object oriented programming kita mulai mengenal adanya class & object. Secara
umum, Class adalah penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang
bisa dilakukan oleh objek tersebut. Class digunakan untuk membuat objek, dan berperan sebagai
tipe data dari objek. Class merupakan bagian dari program, yang memiliki semua atribut- atribut
seperti halnya yang dimiliki oleh program biasa, akan tetapi class tidak bersifat Main atau
utama, sehingga sebuah class tidak akan bisa dirun dan dieksekusi tanpa menggunakan main
class, atau class utama. Pada pemrograman struktural kita menaruh kodingan kita pada main
class sehingga kita langsung bisa mengkompile dan mengeksekusi program kita tersebut, dimana
pada pemrograman berorientasi object sekarang ini kita akan mulai menggunakan class untuk
menaruh program kita, sehingga program kita dapat digunakan kembali dan dipadukan dengan
program-program lain oleh orang lain.
Ketika menggunakan class, kita tidak dapat menyamakannya seperti saat kita memprogramdengan basis pemrograman struktural. Class disini hanya bersifat sebagai cetakan atau
blueprint dari program yang kita buat, untuk dapat mengeksekusi sebuah class kita harus
melakukan instansiasi yaitu membuat sebuah object dari class yang telah kita buat. Untuk lebih
mudahnya kita ibaratkan sebuah class adalah sebuah cetakan roti dan roti adalah sebuah object
dimana proses pembuatan roti disebut sebagai instansiasi. Dalam hal ini sama halnya seperti
cetakan roti, sebuah class juga bisa digunakan berkali kali untuk membuat sebuah object, dimana
satu object dengan yang lainnya tidaklah memiliki keterkaitan meskipun berasal dari kelas yang
sama. Dalam pembuatan suatu class kita bisa jadikan satu file dengan main class atau juga bisa
kita pisahkan menjadi file sendiri. Dimana dalam menaruh program kita di class tersebut, kita
tidak bisa sembarang menaruh dalam class tersebut, melainkan kita harus membuat fungsi-
fungsi, yang nantinya akan bisa kita eksekusi melalui instance object yang telah kita buat.
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
http://dhiaheka.blogspot.com/http://dhiaheka.blogspot.com/ -
5/24/2018 go
2/29
kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya
mempunyai nomor 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.
Elemen Pada Class
Class pada C# terdiri dari :
Instance Variable / Field : atribut / hal-hal yang akan dimiliki oleh objek dari class tersebut.
Method : aksi / tindakan yang dapat dilakukan oleh objek dari class tersebut.
Method digunakan untuk merubah state pada field.
Untuk lebih jelasnya perhatikan contoh dibawah ini :
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Penjumlahan p = new Penjumlahan(5, 9);Penjumlahan q = new Penjumlahan(7, 9);
Console.WriteLine(p.hitungPenjumlahan());
Console.WriteLine(q.hitungPenjumlahan());
}
}
-
5/24/2018 go
3/29
class Penjumlahan
{
int a;
int b;
public Penjumlahan(int a, int b)
{
this.a = a;
this.b = b;
}
public int hitungPenjumlahan()
{
return a + b;
}
}
}
Dalam contoh tersebut Penjumlahan adalah suatu class yang memiliki constructor(fungsi
yang pertama kali dieksekusi ketika class diinstansiasi) yang membutuhkan passing 2 variable
integer. Dimana dalam class tersebut juga terdapat Method untuk menjumlahkan dua bilangan
yang telah dipassing pada constructor tersebut.
Keterangan dari contoh tersebut adalah:
Class Penjumlahan adalah pendefinisian nama class public Penjumlahan(int a, int b) merupakan
constructor dari class penjumlahan tersebut int hitungPenjumlahan() merupakan method yang
digunakan untuk menjumlahkan dua variabel integer yang telah dipassingkan pada constructor
tadi Penjumlahan p = new Penjumlahan(5,9) proses instansiasi dari class penjumlahan yang
membentuk object p, dimana object p mengacu pada struktur yang ada dalam class penjumlahan.
Keyword new adalah keyword yang digunakan untuk menginstansiasi sebuah object dari sebuah
class dimana berikutnya diikuti oleh construcor dari class tersebut.
Operator this adalah operator yang digunakan untuk mengakses variabel yang paling global dari
suatu class jika terdapat dua variabel yang memilki nama yang sama dam scope yang berbeda. Operator (.) dot adalah operator yang digunakan untuk mengakses atribut atribut yang terdapat
didalam class yang telah diinstansiasi tersebut.
Didalam contoh tersebut akan menghasilkan dua output yang berbeda yaitu 14 & 16,
meskipun berasal dari class yang sama akan tetapi dalam contoh tersebut terdapat dua object
yang berbeda. Hal ini membuktikan bahwa tidak ada keterkaitan pada satu object dengan object
lainnya meski berasal dari class yang sama.
-
5/24/2018 go
4/29
B. Atribut
Atributmerupakan nilai data yang terdapat pada suatu object yang berasal dari class.
Atribut merepresentasikan karakteristik dari suatu object. Penerapan didalam program, atribut
adalah variabel.
Penamaan atribut diawali dengan huruf kecil. Jika nama atribut lebih dari 2 kata, maka
huruf awal kata kedua dst diawali dengan huruf besar dan penulisan tetap disambung.
Contoh:
public String nama;public String mataKuliah;
C. Method
Method merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu
object. Method didefinisikan pada class akan tetapi dipanggil melalui object. Metode
menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi
yang dapat dilakukan objek sepanjang hidupnya. Method diimplementasikan didalam class dan
menyediakan informasi tambahan yang mana class tidak dapat menangani sendiri. Method juga
merupakan sarana bagi programmer untuk memecah program kompleks menjadi bagian yang
kecil-kecil,sehingga nantinya dapat digunakan berulang-ulang. Contoh pada object
manggaterdapat method ambilRasa , kupasKulit dll.
Method dapat dibagi menjadi 2, yaitu: fungsi dan prosedur.
Fungsiadalah bagian atau sub dari program yang mempunyai algoritma tertentu dalammenyelesaikan suatu masalah dengan mengembalikan hasil.
Proseduradalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam
menyelesaikan suatu masalah tanpa mengembalikan suatu nilai hasil.
Secara umum pada konsep Object Oriented Programming, Function lebih dikenal dengan
istilah Method, dimana merupakan suatu bagian dari Object yang mendefinisikan apa yang bisa
Object tersebut lakukan. Setiap method menghasilkan suatu nilai dengan tipe data tertentu yang
dinamai Return Type. Apabila terdapat suatu fungsi yang tidak menghasilkan suatu nilai apapun
maka bagian return type ini diganti dengan void. Penamaan method mengikuti kaidah penamaan
seperti pada penamaan variabel. Bagian parameter pada method diisi dengan parameter-
parameter fungsi yang diperlukan. Passing Parameter dilakukan dengan cara pass by value dan
pass by reference.Dengan analogi tersebut, otomatis beberapa hal umum seperti local variable,
pemanggilan method, pendefinisian return value type, dsb adalah sama.
Metode memiliki 4 (empat) bagian dasar :
1. Nama metode
-
5/24/2018 go
5/29
2. Tipe Objek atau tipe primitive yang dikembalikan metode.
3. Daftar parameter.
4. Badan atau isi metode.
Tiga bagian pertama mengindikasikan informasi penting tentang metode itu sendiri. Dengan kata
lain, nama metode tersebut=metode lain dalam program.
Macammacam Method:
Method void
Method void adalah bagian atau sub dari program yang mempunyai algoritma tertentu
dalam menyelesaikan suatu masalah tanpa mengembalikan suatu nilai hasil. Secara umum
method dalam java adalah sebuah fungsi.
Method Function
Method Function adalah bagian atau sub dari program yang mempunyai algoritma tertentudalam menyelesaikan suatu masalah dengan mengembalikan hasil.
Method dasar ada dua jenis yaitu getter() dan setter().
Method getteradalah untuk mengambil informasi isi attribut dalam suatu class.
Method setteradalah untuk memberikan isi attribut dalam suatu class.
2. Object
A. Pengertian Object
Object merupakan suatu bentuk nyata dari class, object ini memiliki Attribute (Properties)
dan memiliki Method (Behavior). 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.
B. 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.
-
5/24/2018 go
6/29
Ilustrasi gambar
Contoh perbedaan Class dan Object
Class: Manusia
Attribute: Berat Badan, Tinggi Badan, Jenis Kelamin
Method: Bernafas, Makan, Minum, Bekerja, Belajar, Tidur
Object: Budi
Attribute: 75 kg, 175 cm, Pria
Method: Bernafas, Makan, Minum, Bekerja, Belajar, Tidur
Dapat dilihat perbedaan antar Class dan Object, dimana Class merupakan abstraksinya dan
Object adalah bentuk nyata (instance) dari Class yang sudah mempunyai nilai.
3. Cara Membuat Object
Object Oriented Programming (OOP)atau yang lebih dikenal dengan pemrograman berorientasi
objek adalah suatu teknik baru dalam dunia pemrograman. Salah satunya bahasa pemrograman C#. Untuk
lebih memahami pengertian class pada pemrograman C# rekan dapat membaca atau mendownload
postingan terdahulu tentangObject Oriented Programming using C#, berikut ini adalah contoh
programnya:
1. Buat project baru, dan pilih Console Application.
http://www.galih-afm.com/search/label/OOPhttp://www.galih-afm.com/search/label/OOPhttp://www.galih-afm.com/2012/07/e-book-object-oriented-programming_11.htmlhttp://www.galih-afm.com/2012/07/e-book-object-oriented-programming_11.htmlhttp://www.galih-afm.com/2012/07/e-book-object-oriented-programming_11.htmlhttp://www.galih-afm.com/2012/07/e-book-object-oriented-programming_11.htmlhttp://www.galih-afm.com/search/label/OOP -
5/24/2018 go
7/29
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 kendaraan.cs.
-
5/24/2018 go
8/29
4. Kemudian kita Add. Maka akan tampil unit class baru dengan nama kendaraan. Selanjutnya kita
tuliskan listing dibawah ini pada unit kendaraan tersebut.
Contoh Program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Kendaraan
{
public string NoKendaraan;
public string Merk;
public int kecepatan;
}
}
Kemudian, tuliskan pula listing program dibawah ini pada unit utama aplikasi yang kita
buat.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
-
5/24/2018 go
9/29
{
class Program
{
static void Main(string[] args)
{
Kendaraan Motor = new Kendaraan();
Motor.Merk = "YAMAHA";
Motor.kecepatan = 110;
Motor.NoKendaraan = "Z 8882AA";
Console.WriteLine("Motor: " + Motor.Merk + " Mempunyai
Kecepatan " + Motor.kecepatan + " Km/Jam, Nomor Plat " +
Motor.NoKendaraan);
Console.ReadLine();
}
}}
RUN. Dan inilah tampilan output dari program di atas.
Jika Anda mengikuti langkah-langkah di atas, pertama kali rekan-rekan akan diminta untuk
membuat sebuah class bernama kendaraan. File kendaraan.cs adalah file class yang akan
dipergunakan juga pada program utama, yaitu program.cs.
4. KonstruktorKonstruktor adalah method yang secara langsung/otomatis dieksekusi ketika object itu
dipanggil. Untuk membuat konstruktor, nama method haruslah sama dengan nama Class-nya
,tidak ada kata kunci void atau pun nilai kembalian(return value) dan dapat diberi modifier akses
(public, protected, default, private). 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
-
5/24/2018 go
10/29
dapat membuat konstruktor lebih dari satu asal parameternya jumlahnya beda atau tipe datanya
beda). Kontruktor akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program
dijalankan, konstruktor akan langsung memberikan nilai awal pada saat perintah new, membuat
suatu objek.
Fungsi dari Konstruktor:
Mengalokasikan sebuah objek saat program dieksekusi.
Memberikan nilai awal sebagai inisialisasi dari semua atribut yang perlu diinisialisasi.
Mengerjakan proses-proses yang diperlukan saat sebuah objek dibuat.
Pada saat kita bekerja dengan konstruktor, hal mendasar yang perlu diperhatikan, yaitu:
1. Nama Konstruktor sama dengan nama Class.
2. Tidak ada return type yang diberikan kedalam Konstruktor Signature.
3. Tidak ada return stetement, didalam tubuh konstruktor.
Sedangkan pengertian Destruktor adalah (penghancur atau pelenyap) yang secara otomatis
akan dijalankan pada saat berakhirnya objek. Syarat dari konstruktor dan destruktor adalah
namanya harus sama dengan nama Class nya,,khusus konstruktor boleh mempunyai banyak
bentuk (maksudnya dlm satu Class boleh ada lebih dari satu konstruktor) yang di bedakan
dengan parameternya.
Contoh program:
class Program
{
public static void Main(string[] args)
{Konstruk kon = new Konstruk();
kon.Show();
Console.WriteLine();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Konstruk{
public int A,B;
public Konstruk() //
-
5/24/2018 go
11/29
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
//inisialisasi
A = B = 10;
}~Konstruk() //
-
5/24/2018 go
12/29
Umumnya atribut yang menggambarkan sifat objek diberi akses private. Hal ini dilakukan untuk
melindungi validitas data dan keperluan error handling. Karena itulah, ditambahkan fungsi
accessor dan/atau modifier untuk setiap atribut private. Fungsi accessor atau yang sering disebut
fungsi getter dibuat untuk mengambil properti kelas tanpa bisa mengubahnya. Jadi fungsi
accessor ini tipe datanya sama seperti atribut yang akan diambil nilainya, dan isinya hanya return
value dari atribut yang bersangkutan saja. Sedangkan fungsi modifier atau yang disebut setter
dibuat untuk mengubah nilai atribut kelas. Tentunya, dengan disertai error handling dan batasan
lain didalamnya. sehingga atribut kelas tetap bisa diubah namun terkontrol dan tepat. Sama
halnya dengan fungsi yang tidak selalu diberi akses public, atribut juga tidak harus dan tidak
selalu diberi akses private, public, atau protected.
C. Protected
Protected merupakan access modifier yang hanya akan muncul jika ada lebih dari 1 kelas
dalam suatu soalus permasalahan dan ada kelas yang mendapat pewarisan sifat(inheritance) darikelas lain. Jadi, dengan memberi akses protected, suatu atribut dan/atau fungsi bisa diakses
penuh dari kelas turunan(child).
D. Perbedaan Public, Private dan Protected
Public: anggota pribadi dari kelas dasar hanya dapat diakses oleh anggota yang kelas dasar.
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.
Perbedaan public, private, protected, dan tanpa penentu akses pada variabel :
public : variabel dapat di akses pada semua kelas yang menggunakan kelas yang berisi variabel
tersebut.
Private : Hanya dapat diakses oleh metode2 dalam kelas itu sendiri.
Protected : Variabel instan dapat diakses pada kelas sendiri dan subkelasnya.
Tanpa Penentu akses : variabel dapat diakses oleh kelas yang berada dalam package yang
sama. Perbedaan public, private, protected, dan tanpa penentu akses pada metode :
Public : Metode dapat diakses oleh sembarang kelas.
Private : Hanya dapat diakses pada metode2 dalam kelas yang sama.
-
5/24/2018 go
13/29
Protected : Metode dapat diakses pada kelas sendiri dan pada subkelasnya.
6. Karakteristik OOP dan Contohnya
A. Inheritance
Pengertian Inheritance (Penurunan/Pewarisan) ini merupakan ciri khas dari oop yang tidak terdapatdalam pemrograman prosedural gaya lama. Inheritance adalah turunan atau pewarisan suatu class ke
class baru dengan mewakili semua function yang ada di class utama (parent class). Inheritance sering
sekali digunakan di dalam pemrograman berorientasi objek atau OOP. Dengan kata lain, class utama
(parent class) dengan classes turunannya berhubungan satu sama lain. Inheritanceatau pewarisan pada
pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada
kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode
tambahan yang merupakan sifat khusus kelas yang menjadi turunannya.Inherintance adalah salah satu
bentuk penggunaan kembali perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada
sebelumnya dengan memakai variabel data method dari kelas yang sudah ada, serta menambah
atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal.
Tujuannya yaitu membentuk obyek baru yang memiliki sifat sama dengan obyek yang sudah ada
sebelumnya.
Keuntungan Inheritance:
Saat anda ingin membuat class baru, dan ternyata pada class lain telah ada code yang ingin
anda gunakan, maka anda tinggal meng-extend class lain tersebut.
tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja,
karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas
dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang
memiliki izin aksespublicdanprotectedke kelas turunannya dengan izin akses yang sama dengan
pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor
kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu
juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru
kemudian destruktor kelas dasar dijalankan.
Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari class
induk.
Memudahkan dan Mempercepat pemprogramman , mengurangi Code
Sample inheritance dalam C#.Net
Contoh yang sangat sederhana dengan mengambil Class Manusia sebagai contoh, perhatikan penjelasan
di bawah ini:
-
5/24/2018 go
14/29
Class: Manusia
Attribute: Berat Badan, Tinggi Badan, Jenis Kelamin
Method: Bernafas, Makan, Minum, Bekerja, Belajar, Tidur
Class ini dapat diwariskan menjadi SubClass Dosen dan SubClass Mahasiswa. Dan kedua SubClass
tersebut dapat memiliki Attribute dan Method tambahan seperti pada contoh di bawah ini:
SubClass: Dosen
Attribute: Berat Badan, Tinggi Badan, Jenis Kelamin, NIP, Kemampuan
(Skill), Gelar
Method: Bernafas, Makan, Minum, Bekerja, Belajar, Tidur, Mengajar
SubClass: MahasiswaAttribute: Berat Badan, Tinggi Badan, Jenis Kelamin, NIM, Kemampuan
(Skill)
Method: Bernafas, Makan, Minum, Bekerja, Belajar, Tidur
Contoh syntax inheritance pada c#:1:publicclassWindow2: {3: //objek konstruktor4: publicWindow(inttop, intleft)
5: {6: this.top = top;7: this.left = left;8: }9:10: // simulasi menggambar pada windows11: publicvoidDrawWindow()12: {13: Console.WriteLine("Drawing Window at {0}, {1}",14: top, left);15: }16:17: //variabel didefinisikan private sehingga18: //tidak dapat digunakan pada kelas turunannya19: privateinttop;20: privateintleft;21: }22:23: // ListBox diturunkan dari class Window24: publicclassListBox : Window25: {26: // menambahkan parameter pada konstruktor
-
5/24/2018 go
15/29
27: publicListBox(inttop, intleft, stringtheContents) :28: base(top, left) // call base constructor29: {30: mListBoxContents = theContents;31: }32:
33: // new version (new keyword) karena34: // pada method di kelas turunan dirubah isinya35: publicnewvoidDrawWindow()36: {37: base.DrawWindow(); // memanggil dari base class38: Console.WriteLine("Writing string to the listbox: {0}",39: mListBoxContents);40: }41: privatestringmListBoxContents; // member variabel baru42: }43:44: publicclassTester45: {46: publicstaticvoidMain()47: {48: // membuat instan class baru49: Window w = newWindow(5, 10);50: w.DrawWindow();51:52: // membuat instan dari class turunan53: ListBox lb = newListBox(20, 30, "Hello world");54: lb.DrawWindow();55: }56: }
B. PolymorphismePolymorphism berarti banyak bentuk, maksudnya adalah suatu obyek dapat memiliki
berbagai bentuk, sebagai obyek dari Classnya sendiri atau obyect dari Superclassnya.
Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe
argumen atau 2 object yang berbeda untuk merespon pesan permintaan yang sama dalam suatu
cara yang unik. Contoh, saya melatih anjing saya dengan perintah untuk menggonggong dan juga
saya melatih kuda untuk merespon perintah saya untuk meringkik. Saya lakukan latihan untuk
merespon kepada mereka dengan perintah lisan. Melalui polymorphism saya tahu bahwa anjing
dan kuda akan merespon dengan gonggongan atau ringkikan.Polymorphism itu sendiri terbagi dua yaitu: Overloadingdan Overiding
Overloading: adalah pemakaian beberapa methods ataupun properties dengan nama yang sama,
tetapi memiliki daftar parameter/argument yang berbeda. Perbedaan yang dimaksud adalah beda
jumlah parameter, beda tipe data, atau beda keduanya (jumlah parameter dan tipe data). Methods
ataupun properties yang hanya beda return value (nilai balik) tidak bisa dikatakan sebagai
overloading. Keyword yang dipakai adalah Overloads. Jika dalam satu class, keyword ini
-
5/24/2018 go
16/29
bersifat optional artinya kita tidak harus menambahkan keyword Overloads ketika
mendefinisikan beberapa methods ataupun properties yang menerapkan konsep overloading.
Apabila kita tetap ingin memakainya, maka keyword Overloads harus digunakan di semua
methods ataupun properties tadi. Apabila beda class, keyword Overloads ini harus digunakan.
Misalnya method menghitung Luas:
HitungLuas (int panjang, int lebar)
Method ini digunakan untuk menghitung luas persegi
HitungLuas (int alas, int tinggi)
Method ini digunakan untuk menghitung luas segitiga
Overriding: kemampuan class turunan untuk memodifikasi methods atau properties dari class
induk. Dengan overriding kita bisa membuat implementasi baru pada methods atau properties di
class turunan yang berbeda dengan methods atau properties yang ada pada class induk.
Perbedaan utama antara Overloading dengan Overriding adalah pada pemakaianparameter. Pada overloading kita bisa mengubah parameter, sedangkan pada overriding kita
tidak boleh mengubah parameter.
Ada beberapa keyword yang bisa dipakai di overriding, antara lain:
Keyword Overridable
Keyword ini digunakan pada methods atau properties di class induk yang menandakan bahwa
methods atau properties tadi bisa di-override pada class turunan.
Keyword Overrides
Keyword ini digunakan pada class turunan yang menandakan bahwa methods atau properties tadi
meng-override methods atau properties yang ada di class induk.
Keyword Not Overridable
Keyword ini digunakan pada methods atau properties di suatu class yang menandakan bahwa
methods atau properties tadi tidak bisa di-override pada class turunan.
Keyword MustOverride
Keyword ini digunakan untuk mendeklarasikan abstract methods atau abstract properties. Hanya
ada deklarasi header di sini, tanpa ada pendefinisian implementasi. Class yang mempunyai
abstract methods atau abstract properties harus didefinisikan juga sebagai abstract class dengan
keyword MustInherit.Aspek kedua yang tidak kalah penting dari inheritance adalah polymorhism, poly berarti
banyak dan morph berarti bentuk, jadi polymorphism dapat berarti dapat menggunakan banyak
bentuk tanpa harus mengacu details yang sama. Anda dapat mengimplementasikan
polymorphism dengan dua cara yaitu:
Membuat virtualmethod pada base class (class induk)
-
5/24/2018 go
17/29
Membuat class turunan yang mempunyai method dengan keywordoverrideyang mengganti isi
dari method dengan keyword virtualyang ada pada base class-nya.
Penggunaan prinsip polymorphism dapat dilihat pada contoh program dibawah ini.
contoh syntax polymorphisme :
1:publicclassWindow2: {3: //deklarasi konstruktor dengan dua parameter4: publicWindow(inttop, intleft)5: {6: this.top = top;7: this.left = left;8: }9:10: //method untuk draw window11: publicvirtualvoidDrawWindow()12: {
13: Console.WriteLine("Window: drawing Window at {0}, {1}",14: top, left);15: }16:17: //member variabel dideklarasikan protected18: //berarti dapat diakses dari class turunannya19: protectedinttop;20: protectedintleft;21:22: } // end Window23:24: // class ListBox diturunkan dari class Window
25: publicclassListBox : Window26: {27: //konstruktor yang menmanggil konstruktor dari base class nya28: publicListBox(inttop,intleft,stringcontents): base(top, left)29: {30: listBoxContents = contents;31: }32:33: //method yang di override dari base class-nya34: //karena mempunyai implementasi yang berbeda35: publicoverridevoidDrawWindow()36: {37: base.DrawWindow(); // invoke the base method38: Console.WriteLine("Writing string to the listbox: {0}",39: listBoxContents);40: }41:42: privatestringlistBoxContents; // member variabel baru43: } // end ListBox44:45: publicclassButton : Window46: {
-
5/24/2018 go
18/29
47: publicButton(48: inttop,49: intleft)50: : base(top, left)51: { }52:
53: // an overridden version (note keyword) because in the54: // derived method we change the behavior55: publicoverridevoidDrawWindow()56: {57: Console.WriteLine("Drawing a button at {0}, {1}\n",58: top, left);59: }60: } // end Button61:62: publicclassTester63: {64: staticvoidMain()65: {66: Window win = newWindow(1, 2);67: ListBox lb = newListBox(3, 4, "Stand alone list box");68: Button b = newButton(5, 6);69: win.DrawWindow();70: lb.DrawWindow();71: b.DrawWindow();72:73: Window[] winArray = newWindow[3];74: winArray[0] = newWindow(1, 2);75: winArray[1] = newListBox(3, 4, "List box in array");76: winArray[2] = newButton(5, 6);77:78: for(inti = 0; i < 3; i++)79: {80: winArray[i].DrawWindow();81: } // end for82: } // end Main83: } // end Tester
Jika dijalankan akan diperoleh output sebagai berikut:
1:Window: drawing Window at 1, 22:Window: drawing Window at 3, 43:Writing stringto the listbox: Stand alone list box4:Drawing a button at 5, 65:6:Window: drawing Window at 1, 27:Window: drawing Window at 3, 48:Writing stringto the listbox: List box inarray9:Drawing a button at 5, 6
C. Encapsulation
-
5/24/2018 go
19/29
Encapsulationmerupakan suatu cara pembungkusan data dan method yang menyusun
suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaimana
menyembunyikan informasi detail dari suatu class (information hiding) dengan tujuan untuk
menghindari interferensi dan menyederhanakan penggunaan sistem itu sendiri. Dalam
OOP, Enkapsulasi sangat penting untuk keamanan serta menghindari kesalahan
permrograman,pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak
dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi
sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-
waktu, sekaligus menjaga program tersebut. maksudnya secara lebih jelas agar memastikan agar
object hanya dapat di ubah oleh object yang mendapat ijin untuk mengubahnya , bila tidak
memiliki ijin maka tidak dapat mengubahnya atau membacanya.
Dua hal yang mendasar dalam encapsulasi yakni :
Information hiding.Kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung
dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang
diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah public. Kita
dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat
diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol private ketika
mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.
Interface to access data.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada
generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik
tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena
didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran
generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula
dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala
atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses
ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan
program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.Contoh syntax encapsulation pada c#:
using System;
namespace Test
{
class Program
-
5/24/2018 go
20/29
{
static void Main(string[] args)
{
Penjumlahan p = new Penjumlahan(5, 9);
Penjumlahan q = new Penjumlahan(7, 9);
Console.WriteLine(p.hitungPenjumlahan());
Console.WriteLine(q.hitungPenjumlahan());
}
}
class Penjumlahan
{
private int a;
private int b;
public Penjumlahan(int a, int b)
{
this.a = a;
this.b = b;
}
public int hitungPenjumlahan()
{
return getA() + getB();
}
public int getA()
{
return a;
}
public void setA(int a)
{this.a = a;
}
public int getB()
{
return b;
-
5/24/2018 go
21/29
}
public void setB(int b)
{
this.b = b;
}
}
}
Dalam contoh sebelumnya variable a dan b tidak memiliki access modifier, sehingga
dianggap public oleh C#, sekarang kita meletakan access modifier private pada variable tersebut
sehingga varibel tersebut tidak dapat dengan bebas diakses dari luar class, sehingga untuk
merubah variable tersebut kita memerlukan Method yang bernama mutator yaitu public int
getA() & public int getB() yang mereturn nilai a dan b. Dan untuk dapat mendapatkan /
mengetahui nilai dari a & b kita menggunakan Method yang bernama Accessor yaitu public void
setA(int a) & public void setB(int b) dimana Method tersebut akan meng-assign nilai a dengan
nilai a baru yang kita passingkan pada variable tersebut. Encapsulation ini berfungsi untuk
membatasi akses pada variable-varibel yang ada didalam class secara bebas dari luar class,
sehingga kita dapat membuat program yang lebih efektif dan efisien.
D. AbstractionAbstraksi adalah kemampuan sebuah program untuk melewati aspek informasi yang diproses
olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayanisebagai model dari pelaku abstrak yang dapat melakukan kerja, laporan dan perubahan
keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan
bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan
beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan. Abstraction ini
merupakan cara kita melihat suatu sistem secara sederhana dimana sistem tersebut terdiri dari
subsistem-subsistem yang saling berhubungan satu sama lainnya. Abstraction 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.
Pada Obyek Motor terdiri dari Sistem Kemudi, Sistem Pengereman, Sistem Pembakaran,
Sistem Pengapian. Pada Sistem Pembakaran terdiri dari Subsistem Energi, Subsistem Udara,
Subsistem Bahan Bakar. Kita memandang bahwa Obyek Motor terdiri dari Banyak Sistem dan
Subsistem yang saling berhubungan.
http://id.wikipedia.org/w/index.php?title=Abstraksi_%28ilmu_komputer%29&action=edit&redlink=1http://id.wikipedia.org/w/index.php?title=Abstraksi_%28ilmu_komputer%29&action=edit&redlink=1http://id.wikipedia.org/w/index.php?title=Abstraksi_%28ilmu_komputer%29&action=edit&redlink=1 -
5/24/2018 go
22/29
E. Aggregation
Aggregation adalah kondisi ketika objectberisi gabungan dari object-object yang
berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects
mesin, object pisau dll. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan
untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang
memungkinkan model menjadi akurat.
7. Overloading
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.
Untuk 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 :
>>>OverloadingC#12345678910111213
14151617181920212223
namespace csharp_polymorpism{
public class KelilingSegi{
public double sisiA;public double sisiB;public double sisiC;//Constuctor satupublic void Keliling (double a){
this.sisiA=a;this.sisiB=1;this.sisiC=1;
}
//Constuctor duapublic void Keliling (double a, double b){this.sisiA=a;this.sisiB=b;this.sisiC=1;}//Constuctor tigapublic void Keliling (double a, double b, double c){
this.sisiA=a;this.sisiB=b;
-
5/24/2018 go
23/29
2425262728293031323334353637383940414243
44454647484950515253
this.sisiC=c;}
}class Program{
public static void Main(string[] args){
KelilingSegi tampil = new KelilingSegi();KelilingSegi tampil_dua = new KelilingSegi();KelilingSegi tampil_tiga = new KelilingSegi();Console.WriteLine("Tampil Constructor Pertama");tampil.Keliling(10);Console.WriteLine("Sisi A = "+tampil.sisiA);Console.WriteLine("Sisi B = "+tampil.sisiB);Console.WriteLine("Sisi C = "+tampil.sisiC);Console.WriteLine("Tampil Constructor Kedua");tampil_dua.Keliling(10, 11);Console.WriteLine("Sisi A = "+tampil_dua.sisiA);Console.WriteLine("Sisi B = "+tampil_dua.sisiB);Console.WriteLine("Sisi C = "+tampil_dua.sisiC);
Console.WriteLine("Tampil Constructor Ketiga");tampil_tiga.Keliling(10, 11, 12);Console.WriteLine("Sisi A = "+tampil_tiga.sisiA);Console.WriteLine("Sisi B = "+tampil_tiga.sisiB);Console.WriteLine("Sisi C = "+tampil_tiga.sisiC);Console.Write("Press any key to continue . . . ");Console.ReadKey(true);
}}}
Overriding Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita
bilang memodifikasi atau memperluas data dan method pada kelas induk.Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induk nya. Contoh
Overriding pada C#.Net:
>>>Overiding C#1234567891011121314151617
namespace csharp_overiding{class first{public void show(){Console.WriteLine("Keterangan ini ditampilkan oleh class first");}}class second : first {public void show1(){Console.WriteLine("Keterangan ini ditampilkan oleh class dua");}}class Program {
-
5/24/2018 go
24/29
1819202122232425262728
public static void Main(string[] args){first satu = new first();satu.show();second dua = new second();dua.show1();Console.Write("Press any key to continue . . . ");Console.ReadKey(true);}}}
Outputnya adalah:
*8. Membuat Program Hitung Mata Kuliah Mahasiswa
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
namespacekonversiNilaiMahasiswa{
classNilai_Mahasiswa {
//atributprivatedoublentugas;privatedoublenpartisipasi;privatedoublenuts;privatedoublenuas;privatestringnhuruf;
privatedoublenakhir;
publicdouble_ntugas{
get{ returnntugas; }set{ ntugas = value; }
}publicdouble_npartisipasi{
get{ returnnpartisipasi; }
-
5/24/2018 go
25/29
set{ npartisipasi = value; }}publicdouble_nuts{
get{ returnnuts; }set{ nuts = value; }
}publicdouble_nuas{
get{ returnnuas; }set{ nuas = value; }
}publicdoubleHitungNilaiAkhir(doublentugas, doublenpartisipasi,double
nuts,doublenuas){
return0.3 * ntugas + 0.2 * npartisipasi + 0.3 * nuts + 0.2 * nuas; }publicstringkonversiHuruf(doublena){
stringnh = "";
if(na > 85 && na 80 && na 75 && na 70 && na 65 && na 60 && na 55 && na 50 && na 40 && na
-
5/24/2018 go
26/29
{nh = "E";
}returnnh;
}
publicvoidtampil(){
Console.WriteLine("Menghitung Nilai Mata Kuliah Mahasiswa");Console.WriteLine("" );Console.Write("Nilai Tugas = ");ntugas = double.Parse(Console.ReadLine());Console.Write("Nilai Partisipasi = ");npartisipasi = double.Parse(Console.ReadLine());Console.Write("Nilai UTS = ");nuts = double.Parse(Console.ReadLine());Console.Write("Nilai UAS = ");nuas = double.Parse(Console.ReadLine());Console.WriteLine("-----------------------------------------------");nakhir =HitungNilaiAkhir(ntugas,npartisipasi,nuts,nuas);
Console.WriteLine("Nilai Akhir = "+ nakhir);Console.WriteLine("-----------------------------------------------");nhuruf = konversiHuruf(nakhir);Console.Write("nilai huruf = "+ nhuruf);
}}
}
usingSystem;using System.Collections.Generic;usingSystem.Linq;usingSystem.Text;
namespacekonversiNilaiMahasiswa{
classProgram{
staticvoidMain(string[] args){
Nilai_Mahasiswanl1 = newNilai_Mahasiswa();nl1.tampil();
Console.ReadKey();
}
}}
Outputnya adalah:
-
5/24/2018 go
27/29
Referensi:
http://zegyjib.wordpress.com/matkul/oop2/oop2-polymorphism-c-java-c/http://ansapena.wordpress.com/
http://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://calonpresident.blogspot.com/2012/01/construktor-dan-destruktor.html
http://erickkurniawan.wordpress.com/2008/06/20/object-oriented-programming-in-c-part3/
Diposkan olehDhiah Eka di17.53
Kirimkan Ini lewat EmailBlogThis!Berbagi ke TwitterBerbagi ke FacebookBagikan ke Pinterest
1 komentar:
http://zegyjib.wordpress.com/matkul/oop2/oop2-polymorphism-c-java-c/http://zegyjib.wordpress.com/matkul/oop2/oop2-polymorphism-c-java-c/http://ansapena.wordpress.com/http://ansapena.wordpress.com/http://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://calonpresident.blogspot.com/2012/01/construktor-dan-destruktor.htmlhttp://calonpresident.blogspot.com/2012/01/construktor-dan-destruktor.htmlhttp://erickkurniawan.wordpress.com/2008/06/20/object-oriented-programming-in-c-part3/http://erickkurniawan.wordpress.com/2008/06/20/object-oriented-programming-in-c-part3/https://plus.google.com/115240445727599042819https://plus.google.com/115240445727599042819http://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttp://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttp://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=emailhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=twitterhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=pinteresthttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=pinteresthttp://2.bp.blogspot.com/-XPDilHT97jE/UlTbjDBTIvI/AAAAAAAAABg/ObBWbtH2k6g/s1600/Output+No.8.JPGhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=pinteresthttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=twitterhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=twitterhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=emailhttp://www.blogger.com/share-post.g?blogID=5339120971193399568&postID=8046047590528543907&target=emailhttp://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttps://plus.google.com/115240445727599042819http://erickkurniawan.wordpress.com/2008/06/20/object-oriented-programming-in-c-part3/http://calonpresident.blogspot.com/2012/01/construktor-dan-destruktor.htmlhttp://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://suryodesign.wordpress.com/2009/04/22/pengertian-overloading-overriding-inheritance-encapsulation/http://ansapena.wordpress.com/http://zegyjib.wordpress.com/matkul/oop2/oop2-polymorphism-c-java-c/ -
5/24/2018 go
28/29
1.
Ali Nur Ikhsan13 Mei 2014 06.41
Isi Blognya keren & Bermanfaat,namun buat tampilannya kurang sinkron... jadi membuat
pembaca kurang nyaman dalam membacanya
harusnya antara tulisan & Background warna harus berbeda seperti kalau bg warna birumaka tulisanya putih/kuning biar bisa mbaca.... :)
Balas
Muat yang lain...
Posting LamaBerandaLangganan:Poskan Komentar (Atom)
Arsip Blog
2013(5)o Oktober(1)
http://www.blogger.com/profile/02217819169901637840http://www.blogger.com/profile/02217819169901637840http://www.blogger.com/profile/02217819169901637840http://dhiaheka.blogspot.com/2013/05/link-tugas-bahasa-pemrograman_3455.htmlhttp://dhiaheka.blogspot.com/http://dhiaheka.blogspot.com/http://dhiaheka.blogspot.com/http://dhiaheka.blogspot.com/feeds/8046047590528543907/comments/defaulthttp://dhiaheka.blogspot.com/feeds/8046047590528543907/comments/defaulthttp://dhiaheka.blogspot.com/feeds/8046047590528543907/comments/defaulthttp://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://dhiaheka.blogspot.com/feeds/8046047590528543907/comments/defaulthttp://dhiaheka.blogspot.com/http://dhiaheka.blogspot.com/2013/05/link-tugas-bahasa-pemrograman_3455.htmlhttp://www.blogger.com/profile/02217819169901637840http://www.blogger.com/profile/02217819169901637840 -
5/24/2018 go
29/29
Rangkuman tentang OOP pada C#o Mei(4)
2012(13)
Mengenai Saya
Dhiah Eka
Lihat profil lengkapku
Template Ethereal. Gambar template olehmerrymoonmary.Diberdayakan olehBlogger.
http://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttp://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.htmlhttp://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/https://plus.google.com/115240445727599042819https://plus.google.com/115240445727599042819https://plus.google.com/115240445727599042819http://www.istockphoto.com/googleimages.php?id=5721536&platform=blogger&langregion=inhttp://www.istockphoto.com/googleimages.php?id=5721536&platform=blogger&langregion=inhttp://www.istockphoto.com/googleimages.php?id=5721536&platform=blogger&langregion=inhttp://www.blogger.com/http://www.blogger.com/http://www.blogger.com/https://plus.google.com/115240445727599042819http://www.blogger.com/http://www.istockphoto.com/googleimages.php?id=5721536&platform=blogger&langregion=inhttps://plus.google.com/115240445727599042819https://plus.google.com/115240445727599042819http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://dhiaheka.blogspot.com/2013/10/rangkuman-tentang-oop-pada-c_9015.html