Selasa, 08 Oktober 2013

Struktur data dan algoritma



           
1.       Class, Atribut 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. Class, sesuatu disekitar kita dapat dibedakan ke dalam class-class yang berbeda.  Sebagai contoh meja, kursi, manusia, kucing atau pohon.  Class mengkategorikan atau mengelompokkan sesuatu yang sama.
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.
B.        Atribut
Setiap object pasti memiliki banyak property.  Property akan dapat menerangkan object dengan lebih jelas.  Sebagai contoh Budi akan mempunyai property seperti tinggi, berat, warna kulit dan sebagainya.
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 bilangan 1 dan bilangan 2 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.
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";
}
}
}
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;
}

C.      Method
Method adalah apa yang bisa dikerjakan oleh suatu object, sebagai contoh Budi bisa berjalan atau berbicara.
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();
}
}
}
Biasanya dalam OOP, method dapat didefinisikan sebagai sesuatu yang dapat dilakukan oleh suatu object.  Selain itu method dapat kita definisikan juga sebagai langkah-langkah instruksi untuk melakukan sesuatu. Method dibagi atas dua, yaitu :
a.         Method yang tidak mengembalikan suatu nilai, dalam bahasa pemrograman lain tipe method ini biasa disebut procedure.
b.        Method yang dapat mengembalikan suatu nilai, dalam bahasa pemrograman lain tipe method ini biasa disebut function.
Berikut contoh method yang tidak mengembalikan suatu nilai.
Orang.cs
class Orang
{
   public string namaDepan;
   public string namaAkhir;
   public int umur;

   /* method yang tidak mengembalikan suatu nilai */
   public void TampilkanNamaPenuh()
   {
     Console.WriteLine(“Nama penuh : “ + this.namaDepan + “ ” +
     this.namaAkhir);
   }

   public void TulisNamaPenuh(string _namaDepan, string _namaAkhir)
   {
     Console.WriteLine(“Nama penuh : “ + _namaDepan + “ ” +
     _namaAkhir);
   }

   /* method yang mengembalikan suatu nilai */
   public int TampilkanSisaUmur()
   {
      int sisaUmur = 63 – this.umur;
      return sisaUmur;
   }
}

Program.cs
Orang adi = new Orang();

adi.namaDepan = “Adi”;
adi.namaAkhir = “Nugraha”;
adi.umur = 20;

adi.TampilkanNamaPenuh();
Console.WriteLine(“Sisa umur : “ + adi.TampilkanSisaUmur());

Keyword Public, Private dan Protected pada Method

Selain bisa dilekatkan pada field, keyword public, private dan protected juga bisa dilekatkan pada method.  Secara default level proteksi pada method adalah private.

Method Constructor

Method Constructor adalah ‘method’ yang mempunyai fungsi mendefinisikan bagaimana sebuat object akan dibuat pertama kali. Dalam C# (dan beberapa bahasa pemrograman lainnya), Method Contructor mempunyai ciri sebagai berikut :
a.          Nama method constructor sama dengan nama class.
b.         Pada method tidak terdapat keyword void seperti pada method yang tidak mengembalikan nilai.
c.         Method constructor tidak mengembalikan nilai seperti method yang mengembalikan nilai.

2.      Object
Object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. 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 bertanggung
jawab untuk data serta metode yang digunakan untuk berinteraksi dengan printermu.
Object, dalam setiap class akan terdapat object-object spesifik.  Sebagai contoh Budi, Wati dan Adi yang masuk dalam class manusia.  Ketiga orang tadi merupakan object yang dibentuk dari class Manusia.  Setiap object akan memiliki ciri yang unik.

3.     Cara Membuat Objek

 

C# merupakan bahasa yang mempunyai ciri strong type, artinya setiap ‘variable’ (ini hanya istilah, karena nanti bukan hanya variable tapi juga object, property dan lain-lain) harus diberikan tipe datanya.  Pada contoh di atas, object mesti diberikan dahulu ‘tipe data’-nya.  Ada dua cara, yaitu :
Hewan kera = new Hewan();
                   Atau
Hewan singa;
singa = new Hewan();

4.    Kontruktor
Berikut adalah contoh method constructor pada C#.
Orang.cs
class Orang
{
   public string namaDepan;
   public string namaAkhir;
   public int umur;

   /* constructor */
   public Orang()
   {
     this.namaDepan = “Reza”;
     this.namaAkhir = “Faisal”;
   }

   /* method yang tidak mengembalikan suatu nilai */
   public void TampilkanNamaPenuh()
   {
     Console.WriteLine(“Nama penuh : “ + this.namaDepan + “ ” +
     this.namaAkhir);
   }

   /* method yang mengembalikan suatu nilai */
   public int TampilkanSisaUmur()
   {
      int sisaUmur = 63 – this.umur;
      return sisaUmur;
   }
}
Apabila kita membuat object dari class Orang, maka secara otomatis field namaDepan dan namaAkhir akan diisi nilainya.
5.     Private, Protected, Public
A.       Private
Private, adalah level proteksi untuk bayi yang berada di dalam rumah.  Si bayi tidak boleh keluar dari rumah karena mempunya level proteksi paling tinggi.  Hanya orang-orang yang dapat dipercaya yang boleh berinteraksi dengan si bayi, dalam hal ini mungkin adalah orang-orang yang berada di dalam rumah.  Dalam implementasinya, field dengan level proteksi private hanya dapat diakses di dalam class tersebut.
B.       Protected
Protected, adalah level proteksi untuk anak yang sedang bermain bola di dalam pagar.  Orang yang ingin berinteraksi dengan anak ini harus juga berada di dalam pagar juga.  Dalam implementasinya, field dengan level proteksi protected dapat diakses oleh class lainnya tetapi harus mempunyai hubungan yang dekat. Variabel instan dapat diakses pada kelas sendiri dan subkelasnya.
C.       Public
Public, dapat dianggap tidak mempunyai proteksi artinya setiap orang dapat melakukan interaksi dengan anak yang mempunya level proteksi ini.  Dalam implementasinya, field dengan level proteksi public dapat diakses oleh semua class lain. Variabel dapat di akses pada semua kelas yang menggunakan kelas yang berisi variabel tersebut.

6.     Karakteristik OOP dan Contoh
A.  Inheritance
Banyak objects diklasifikasikan menurut hirarki. Contoh, kamu dapat mengklasifikasikan sebuah mobil yang mempunyai karakteristik umumnya mobil, seperti mempunyai ban, mesin, serta body. Keturunan berikutnya diklasifikasikan dengan atribut umum seperti ukuran, jumlah roda, isi silinder dll atau mengklasifikasikan mereka atas dasar daya angkutnya. Contoh, ada kendaraan komersial atau kendaraan pribadi, ada truk atau mobil penumpang. Penggunaan 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. Pewarisan , Mewariskan objek yang dimiliki ke pada objek yang diturunkan , bersifat menyeluruh. Kelas yang mewariskan biasa di sebut super class / class induk. Kelas yang diwariskan biasa di sebut sub class / kelas anak. Secara lebih singkat begini :
A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg . Ini merupakan inheritance terhadap A kepada B , dan inheritance bukan hanya dapat 1x diwariskan, tetapi dapat lebih dari 1x. seperti berikut : A sebagai Ayah memiliki Anak bernama B , A berkulit Hitam maka B akan berkulit Hitam jg . dan B pun memiliki anak C maka C pun akan berkulit hitam.
Keuntungan dari inheritance :
- Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari class induk
- Memudahkan dan Mempercepat pemprogramman , mengurangi Code Sample inheritance dalam C#.Net
public class A
{
public A() { }
}
public class B : A
{
public B() { }
}

Burung.cs
class Burung : Hewan
{
   public string warnaBulu;

}

Program.cs
Burung elang = new Burung();
elang.jenisHewan = “Elang Botak”;
elang.warnaBulu = “Hitam”;

B.     Polymorphism
Polymorphisms adalah kemampuan 2 buah 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 burung untuk merespon perintah saya untuk berkicau. Saya lakukan latihan untuk merespon kepada mereka dengan perintah lisan. Melalui polymorphism saya tahu bahwa anjing dan burung akan merespon dengan gonggongan atau kicauan.
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. Memiliki Banyak Bentuk.
Contoh Polymorphism
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; }
    }
Orang.cs
class Orang
{
   public string namaDepan;
   public string namaAkhir;
   public int umur;

   /* constructor */
   public Orang()
   {
     this.namaDepan = “Reza”;
     this.namaAkhir = “Faisal”;
   }

   public Orang(string _namaDepan, string _namaAkhir)
   {
     this.namaDepan = _namaDepan;
     this.namaAkhir = _namaAkhir;
   }

   public Orang(int umur)
   {
     this.umur = 0;
   }

   /* method yang tidak mengembalikan suatu nilai */
   public void TampilkanNamaPenuh()
   {
     Console.WriteLine(“Nama penuh : “ + this.namaDepan + “ ” +
     this.namaAkhir);
   }

   public void TampilkanNamaPenuh(string namaDepan, string namaAkhir)
   {
     Console.WriteLine(“Nama penuh : “ + namaDepan + “ ” + namaAkhir);
   }

   /* method yang mengembalikan suatu nilai */
   public int TampilkanSisaUmur()
   {
      int sisaUmur = 63 – this.umur;
      return sisaUmur;
   }


   public int TampilkanSisaUmur(int umur)
   {
      int sisaUmur = 63 – umur;
      return sisaUmur;
   }
}

C.     Encapsulation
Ciri penting lainnya dari OOP adalah encapsulation. Encapsulation adalah sebuah proses dimana tidak ada akses langsung ke data yang diberikan, bahkan hidden. Jika kamu ingin mendapat data, kamu harus berinteraksi dengan object yang bertanggung jawab atas data tersebut. Dalam contoh inventory, jika kita ingin melihat atau mengupdate informasi atas produk, kita seharusnya bekerja melalui object produk. Untuk membaca data, kita mengirimkan pesan ke object produk, kemudian object produk akan membaca pesan dan mengirim pesan balik ke kamu.
Object produk mendefinisikan bahwa operasi dapat dilakukan pada data produk. Jika kamu mengirim pesan untuk memodifikasi data dan jika object produk menentukan bahwa permintaan itu valid maka permintaan tersebut akan dilakukan dan akan mengirimkan pesan balik bersama hasilnya.
Pikirkan mengenai Human Resource Department (HRD), yang meng-encapsulasi informasi mengenai karyawan. Mereka menentukan bagaimana data ini dapat digunakan dan dimanipulasi. Setiap permintaan data karyawan atau permintaan untuk mengupdate datanya harus dijalankan melalui mereka. Contoh lain, network security. Setiap permintaan informasi security atau perubahan kebijakan security harus dilakukan melalui network administrator. Data security di-encapsulate dari user network.
Dengan melakukan encapsulasi pada data, berarti kamu membuat data dari sistemmu lebih secure dan terpercaya. Karena kamu mengetahui bagaimana data diakses dan operasi apa yang sedang berjalan pada data. Hal ini membuat maintenance program menjadi lebih mudah. Kamu juga dapat memodifikasi metode yang digunakan untuk kerja pada data, dan jika kamu tidak merubah bagaimana metode itu diminta dan tipe response dikirim balik, maka kamu tidak dapat merubah object lain dengan menggunakan metode tersebut. Pikirkan ketika kamu mengirim surat melalui pos. Kamu membuat permintaan ke kantor pos agar mengantar surat, dan bagaimana kantor pos menyelesaikannya kita tidak perlu tahu. Jika ada perubahan rute yang digunakan, maka hal itu tidak mempengaruhi keinginan untuk kirim surat lewat kantor pos. Kamu tidak perlu tahu prosedur internal yang digunakan oleh kantor pos untuk mengantar surat.
Enkapsulasi = Pembungkusan , maksudnya di sini semua objek yang kita definisikan / bisa juga informasi kita sembunyikan di dalam enkapsulasi tersebut agar tidak dapat dibaca oleh kelas lain yang tidak berhak membacanya. 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. Contoh Enkapsulation:
1:// private member variables
2:privateint Year;
3:
4:publicint getYear() //get method
5: {
6:returnthis.Year;
7: }
8:
9:publicvoid setYear(int Year) //set method
10: {
11:this.Year = Year;
12: }

D.    Abstraction
Ketika kamu berinteraksi dengan object-object di dunia ini, kamu sering hanya konsentrasi dengan sebuah bagian dari propertiesnya. Tanpa kemampuan untuk mensarikan/abstract atau menyaring untuk dibuang properties object yang asing / tidak ada hubungannya, maka kamu akan menemukan kesulitan untuk memproses informasi yang kebanyakan membombarding kamu. Sebagai hasil abstraction, ketika 2 orang berbeda berinteraksi dengan object yang sama, mereka sering setuju dengan bagian yang berbeda atas atribut. Ketika kami mengendarai mobil, kami perlu tahu kecepatan serta tujuan yang akan dicapai.
Karena mobil itu otomatis, maka kami tidak perlu tahu berapa RPMs dari mesinnya, jadi kami akan membuang informasi ini. Tapi informasi ini sangat diperlukan oleh mekanik atau pembalap.
Ketika membangun objects dalam aplikasi OOP, adalah penting untuk menggabungkan konsep abstraction ini. Jika kamu membangun aplikasi shipping, kamu harus membangun object produk dengan atribut seperti ukuran dan berat. Warna adalah contoh informasi yang tidak ada hubungannya dan harus dibuang. Tetapi ketika kamu membangun order-entry application, warna menjadi penting dan harus termasuk atribut object produk. Contoh penggunaan property dapat dilihat pada contoh kode dibawah ini.
1:class Mahasiswa {
2:privatestring nim;
3:privatestring nama;
4:
5:publicstring Nim {
6: get {
7:return nim;
8: }
9: set {
10:this.nim = value;
11: }
12: }
13:
14:publicstring Nama {
15: get {
16:return nama;
17: }
18: set {
19:this.nama = value;
20: }
21: }
22:
23:publicstring DisplayInfo() {
24:return Nim + " " + Nama;
25: }
26: }
27:
28:class ClassProperty {
29:publicstaticvoid Main(string[] args) {
30: Mahasiswa mhs1 = new Mahasiswa();
31: mhs1.Nim = "22002321";
32: mhs1.Nama = "Erick";
33: Console.WriteLine(mhs1.DisplayInfo());
34: }u
35: }

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 dll. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat.
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 yang mengkombinasikan antara data dan kode program yang bekerja sama dalam program dengan melewatkan proses satu sama lain. Jadi object oriented programming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali.
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.

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. 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;
}
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
public class test
{
    public void getStuff(int id)
    {}
    public void getStuff(string name)
    {}
}
Overloading adalah dua atau lebih method di dalam satu kelas yang sama, dengan nama yang sama, namun dengan deklarasi parameter yang membedakan.
Menurut saya syarat untuk membuat method Overloading adalah
1. jumlah tipe dalam parameter nya harus berbeda.
2. tipe di parameter harus berbeda.
3. urutan tipe di dalam parameter harus berbeda.
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;

namespace overloading1
{
    class Program
    {
        private static void perkalian(int a, int b, int c){
            Console.WriteLine("perkalian 3 tipe dalam parameter");
            int x=0;
            x = Convert.ToInt32(a*b*c);
            Console.WriteLine("{0} = {1} * {2} * {3} ",x,a,b,c);

        }
        private static void perkalian(int a, int b){
            Console.WriteLine("perkalian 2 tipe dalam parameter");
            int x=0;
            x = Convert.ToInt32(a*b);
            Console.WriteLine("{0} = {1} * {2}",x,a,b);
        }
        public static void Main(string[] args)
        {
            Console.WriteLine("contoh overloading method dengan nama method     perkalian");
            Console.WriteLine();
            perkalian(3,4);
            Console.WriteLine();
            perkalian(3,4,5);
            Console.ReadKey(true);
        }
    }
}


compiled


8.     Program OOP ( Menghitung Nilai Mata Kuliah dan Konversinya)
9.  using System;
10. using System.Collections.Generic;
11. using System.Linq;
12. using System.Text;
13.  
14. namespace nyoba
15. {
16.     class nilaiMHS
17.     {
18.         private double nt, np, nuts, nuas;
19.         public void settugas(double tugas)
20.         { nt = tugas; }
21.         public double gettugas()
22.         { return nt; }
23.         public void setpartisipasi(double partisipasi)
24.         { np = partisipasi; }
25.         public double getpartisipasi()
26.         { return np; }
27.         public void setuts(double uts)
28.         { nuts = uts; }
29.         public double getuts()
30.         { return nuts; }
31.         public void setuas(double uas)
32.         { nuas = uas; }
33.         public double getuas()
34.         { return nuas; }
35.         public double NilaiAkhir()
36.         {
37.             return 0.2 * np + 0.3 * nt + 0.2 * nuts + 0.3 * nuas;
38.         }
39.         public static string KonversiKeHuruf(double na)
40.         {
41.             string nh = "";
42.             if (na >= 85 && na <= 100)
43.             { nh = "A"; }
44.             else if (na >= 80 && na < 85)
45.             { nh = "A-"; }
46.             else if (na >= 75 && na < 80)
47.             { nh = "B+"; }
48.             else if (na >= 70 && na < 75)
49.             { nh = "B"; }
50.             else if (na >= 65 && na < 70)
51.             { nh = "B-"; }
52.             else if (na >= 60 && na < 65)
53.             { nh = "C+"; }
54.             else if (na >= 55 && na < 60)
55.             { nh = "C"; }
56.             else if (na >= 40 && na < 55)
57.             { nh = "D"; }
58.             else if (na >= 0 && na < 40)
59.             { nh = "E"; }
60.             else
61.             { nh = "tidak ada"; }
62.             return nh;
63.         }
64.         class Program
65.         {
66.             static void Main(string[] args)
67.             {
68.                 nilaiMHS na = new nilaiMHS();
69.                 Console.Write("Nilai Tugas= ");
70.                 double nt = double.Parse(Console.ReadLine());
71.                 Console.Write("Nilai Partisipasi= ");
72.                 double np = double.Parse(Console.ReadLine());
73.                 Console.Write("Nilai Uts= ");
74.                 double nuts = double.Parse(Console.ReadLine());
75.                 Console.Write("Nilai Uas= ");
76.                 double nuas = double.Parse(Console.ReadLine());
77.  
78.                 na.settugas(nt);
79.                 na.setpartisipasi(np);
80.                 na.setuts(nuts);
81.                 na.setuas(nuas);
82.                 Console.Write("Nilai Akhir= " + na.NilaiAkhir());
83.                 Console.Write("Nilai Huruf= " + KonversiKeHuruf(na.NilaiAkhir()));
84.                 Console.ReadKey();
85.             }
86.  
87.         }
88.     }
89. }
90.