·
Class
Class merupakan gambaran dari suatu object,benda atau
kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu
tujuan tertentu. Sebagai contoh ‘class of car’ adalah suatu unit yang terdiri
atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam
merk/jenis mobil. 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.
Contoh :
namespace
Bab6 {
public
class Mahasiswa {
private
int nim;
private
string nama;
private
string mail;
public int Jawab( string soal) {
int
nilai = 0;
//
instruksi-intruksi lainnya
return
nilai; }
public void CetakKartuUjian() {
Console
.WriteLine( "Nomor Induk Mahasiswa: " + nim);
Console
.WriteLine( "Nama Mata Kuliah: Matematika Dasar" );
}
}
}
·
Attribute
Atribut adalah
suatu pengenal yang digunakan untuk menyimpan suatu nilai. Nilai dalam variabel
dapat berubah selama proses dalam program masih berlangsung. Sebelum variabel
digunakan, harus dideklarasikan terlebih dahulu.
Contoh :
string kata;
int angka;
Contoh :
string kata;
int angka;
·
Methods.
Method merupakan function atau subrutin yang
tersedia pada sebuah class, structure, interface, atau delegate. Pada sebuah
method terdapat parameter atau argumen yang dapat dikirimkan by value
atau by reference. Bagi programer Visual Basic 6.0 sudah tentu tidak
asing lagi dengan parameter by value maupun by reference yang biasa digunakan
dalam pembuatan function/procedure. By value berarti perubahan nilai pada
variabel parameter yang dikirimkan hanya akan berlaku di dalam function,
sementara by reference berarti perubahan nilai pada variabel di dalam function
akan tetap berlaku pada saat function tersebut selesai dieksekusi dan kembali
pada pemanggil.
Contoh :
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Namespacemethod
{
classProgram
{
privatestaticvoidtulis()
{
Console.WriteLine("method
pertama");
}
privatestaticvoidgaris()
{
Console.WriteLine("--------------------------");
}
publicstaticvoidMain(string[]
args)
{
garis();
tulis();
garis();
garis();
Console.Write("Press
any key to continue . . . ");
Console.ReadKey(true);
}
}
}
|
2.
Pengertian Object
- Object
Object adalah pembungkus data dan fungsi bersama
menjadi suatu unit dalam sebuah program komputer.Objek merupakan dasar dari
modularitas dan struktur dalam sebuah program komputer berorientasi objek.
contohnya : Mobil, Motor, Sepeda,dll. Object merupakan bentuk nyatanya dari
suatu Class, dimana Object memiliki Attribute (Properties) dan memiliki
Method (Behavior). Object membungkus data dan fungsi menjadi suatu unit dalam
sebuah program komputer. Objek merupakan dasar dari struktur dalam sebuah
program komputer berorientasi objek. Dalam Pemrograman Berorientasi Objek
melihat atau memandang sesuatu berdasarkan objek. Objek sebenarnya mencerminkan
pola kerja manusia dalam kehidupan sehari-hari.
3.
Cara membuat object
Untuk membuat object, kita
menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai
instance dari class tersebut.
Contohnya:
String str = new String();
Random r = new Random();
Pegawai p2 = new Pegawai();
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.
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.
Contohnya:
- 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() // <<--- Construktor
- {
- Console.WriteLine(" ==================================");
- Console.WriteLine(" = Constructor =");
- Console.WriteLine(" ==================================");
- Console.WriteLine();
- Console.WriteLine();
- Console.WriteLine();
- //inisialisasi
- A = B = 10;
- }
- ~Konstruk() // <<--- Destruktor
- {
- Console.WriteLine("Finalizing");
- }
- public void Show()
- {
- Console.WriteLine("Nilai A = {0}",A);
- Console.WriteLine("Nilai B = {0}",B);
- Console.WriteLine();
- Console.WriteLine("Hasil Perkalian = {0}",A*B);
- }
- }
5.
Pengertian Private , Protected
·
Private
Private adalah informasi
yang 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. Private dibuat
untuk 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.
·
Protected
Protected
adalah akses terbatas pada class itu sendiri atau dapat diturunkan ke class
turunannya dan berganti akses ke privat.
6.
Public
Karakteristik OOP
o
Inheritance
merupakan bentuk yang lebih
spesifik dari Object misalnya : Mobil maka inheritance dari mobil adalah dapat
berupa Mobil Truk Tronton, Mobil Truk FUSO, Mobil Sedan,Mobil Pick up, Mobil
Sedan
dll. 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
1: public class Window
2:
{
3: //objek konstruktor
4:
public Window(int top, int left)
5: {
6:
this.top = top;
7: this.left = left;
8:
}
9:
10:
// simulasi menggambar
pada windows
11: public void DrawWindow()
12:
{
13:
Console.WriteLine("Drawing Window at {0}, {1}",
14: top, left);
15: }
16:
17: //variabel didefinisikan private sehingga
18:
//tidak dapat digunakan
pada kelas turunannya
19: private int top;
20:
private int left;
21: }
22:
23: // ListBox diturunkan dari class Window
24:
public class ListBox : Window
25: {
26:
// menambahkan parameter
pada konstruktor
27: public ListBox(int top, int left, string theContents) :
28: base(top, left) // call base constructor
29: {
30: mListBoxContents = theContents;
31: }
32:
33: // new version (new keyword) karena
34:
// pada method di kelas
turunan dirubah isinya
35: public new void DrawWindow()
36:
{
37: base.DrawWindow(); // memanggil dari base class
38: Console.WriteLine("Writing string to the listbox:
{0}",
39:
mListBoxContents);
40:
}
41: private string mListBoxContents; // member variabel baru
42:
}
43:
44:
public class Tester
45: {
46:
public static void Main()
47: {
48: // membuat instan class baru
49:
Window w = new Window(5, 10);
50:
w.DrawWindow();
51:
52: // membuat instan dari class turunan
53:
ListBox lb = new ListBox(20, 30, "Hello world");
54: lb.DrawWindow();
55: }
56:
}
o
Polymorphisme
merupakan
parameter yang digunakan oleh suatu Class/Object contoh nya : kita mempunyai
Class yang berupa mobil apabila diturunkan menjadi dua buah class menjadi Mobil
Matic dan Mobil Manual. Ketika Melakukan Metode Berjalan maka yang dilakukan
akan berbeda. Mobil Matic akan berjalan sendiri dengan hanya menginjak gas,
sedangkan Mobil Manual akan berjalan dengan memasukan gigi terlebih dahulu.
Kondisi yang harus dipenuhi
supaya Polimorfisme dapat di implementasikan adalah:
Method yang dipanggil harus melalui variable dari basis class atau superclass.
Method yang dipanggil harus juga menjadi method dari basis class.
Signature method harus sama baik pada superclass maupun subclass.
Method access atribut pada subclass tidak boleh lebih terbatas dari basis
class.
Dengan menggunakan OOP maka dalam
melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara
menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang
dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki
sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data
dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi
maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas
bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak
harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa
mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk
menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena
setiap objek memiliki deskripsi tugasnya sendiri.
Penggunaan
prinsip polymorphism dapat dilihat pada contoh program dibawah ini
1: public class Window
2: {
3: //deklarasi konstruktor dengan dua parameter
4: public Window(int top, int left)
5: {
6: this.top = top;
7: this.left = left;
8: }
9:
10: //method untuk draw window
11: public virtual void DrawWindow()
12: {
13: Console.WriteLine("Window: drawing Window at {0}, {1}",
14: top, left);
15: }
16:
17: //member variabel dideklarasikan protected
18: //berarti dapat diakses dari class turunannya
19: protected int top;
20: protected int left;
21:
22: } // end Window
23:
24: // class ListBox diturunkan dari class Window
25: public class ListBox : Window
26: {
27: //konstruktor yang menmanggil konstruktor dari base class nya
28: public ListBox(int top,int left,string contents): base(top, left)
29: {
30: listBoxContents = contents;
31: }
32:
33: //method yang di override dari base class-nya
34: //karena mempunyai implementasi yang berbeda
35: public override void DrawWindow()
36: {
37: base.DrawWindow(); // invoke the base method
38: Console.WriteLine("Writing string to the listbox: {0}",
39: listBoxContents);
40: }
41:
42: private string listBoxContents; // member variabel baru
43: } // end ListBox
44:
45: public class Button : Window
46: {
47: public Button(
48: int top,
49: int left)
50: : base(top, left)
51: { }
52:
53: // an overridden version (note keyword) because in the
54: // derived method we change the behavior
55: public override void DrawWindow()
56: {
57: Console.WriteLine("Drawing a button at {0}, {1}\n",
58: top, left);
59: }
60: } // end Button
61:
62: public class Tester
63: {
64: static void Main()
65: {
66: Window win = new Window(1, 2);
67: ListBox lb = new ListBox(3, 4, "Stand alone list box");
68: Button b = new Button(5, 6);
69: win.DrawWindow();
70: lb.DrawWindow();
71: b.DrawWindow();
72:
73: Window[] winArray = new Window[3];
74: winArray[0] = new Window(1, 2);
75: winArray[1] = new ListBox(3, 4, "List box in array");
76: winArray[2] = new Button(5, 6);
77:
78: for (int i = 0; i < 3; i++)
79: {
80: winArray[i].DrawWindow();
81: } // end for
82: } // end Main
83: } // end TesterJika dijalankan akan diperoleh output sebagai berikut:
1: Window: drawing Window at 1, 2
2: Window: drawing Window at 3, 4
3: Writing string to the listbox: Stand alone list box
4: Drawing a button at 5, 6
5:
6: Window: drawing Window at 1, 2
7: Window: drawing Window at 3, 4
8: Writing string to the listbox: List box in array
9: Drawing a button at 5, 6
o
Encapsulation
merupakan cara menyembunyikan suatu proses dari sebuah system dalam rangka
menyederhanakan pengaplikasian dari system tersebut dan menghindari gangguan
dari system tersebut.atau memastikan pengguna sebuah objek tidak dapat
mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya
metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap
objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat
berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung
kepada representasi dalam objek tersebut.contohnya : stang pada motor, tombol
stater pada motor, Tombol ON/OFF pada remote TV.
membuat public method set dan get
untuk memberi dan mengambil nilai variabel tersebut, misal:
1: // private member variables
2: private int Year;
3:
4: public int getYear() //get method
5: {
6: return this.Year;
7: }
8:
9: public void setYear(int Year) //set method
10: {
11: this.Year = Year;
12: }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.
1: class Mahasiswa {
2: private string nim;
3: private string nama;
4:
5: public string Nim {
6: get {
7: return nim;
8: }
9: set {
10: this.nim = value;
11: }
12: }
13:
14: public string Nama {
15: get {
16: return nama;
17: }
18: set {
19: this.nama = value;
20: }
21: }
22:
23: public string DisplayInfo() {
24: return Nim + " " + Nama;
25: }
26: }
27:
28: class ClassProperty {
29: public static void Main(string[] args) {
30: Mahasiswa mhs1 = new Mahasiswa();
31: mhs1.Nim = "22002321";
32: mhs1.Nama = "Erick";
33: Console.WriteLine(mhs1.DisplayInfo());
34: }
35: }
o Abstraction
Kemampuan sebuah program untuk melewati aspek
informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti.
Setiap objek dalam sistem melayani sebagai 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.
o 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 fokus pada pemecahan masalah ketimbang cara menangani
bahasa pemrograman.
Contoh : mesin pemotong rumput terdiri dari
object roda, objects mesin, object pisau dan lain-lain.
7. Overloading
Overloading
yaitu menambahkan
method baru dengan nama yang sama, tetapi dengan pengenal yang berbeda. Overloading
mengizinkan Anda memiliki dua atau lebih method dengan nama yang sama. Dua
method tersebut akan muncul pada fasilitas IntelliSense sehingga pengguna dapat
memilih method yang diinginkan. Bagaimanapun, salah memilih method dapat
menyebabkan runtime-error, Anda dapat menghilangkan method yang tidak
diinginkan untuk tampil dengan menggunakan keyword Shadows.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. Pada contoh dibawah ini akan ditunjukan bagaimana cara menggunakan
overloading konstruktor
1: public class Time
2: {
3: // private member variables
4: private int Year;
5: private int Month;
6: private int Date;
7: private int Hour;
8: private int Minute;
9: private int Second;
10:
11: // public accessor methods
12: public void DisplayCurrentTime()
13: {
14: System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
15: Month, Date, Year, Hour, Minute, Second);
16: }
17: // constructors
18: public Time(System.DateTime dt)
19: {
20: Year = dt.Year;
21: Month = dt.Month;
22: Date = dt.Day;
23: Hour = dt.Hour;
24: Minute = dt.Minute;
25: Second = dt.Second;
26: }
27: public Time(string strTime) // overloading konstruktor
28: {
29: Console.WriteLine(strTime);
30: }
31:
32: public Time(int Year, int Month, int Date,
33: int Hour, int Minute, int Second) // overloading konstruktor
34: {
35: this.Year = Year;
36: this.Month = Month;
37: this.Date = Date;
38: this.Hour = Hour;
39: this.Minute = Minute;
40: this.Second = Second;
41: }
42: }
43:
44: class Tester
45: {
46: public void Run()
47: {
48: System.DateTime currentTime = System.DateTime.Now;
49: Time time1 = new Time(currentTime);
50: time1.DisplayCurrentTime();
51: Time time2 = new Time(2000, 11, 18, 11, 03, 30);
52: time2.DisplayCurrentTime();
53: }
54:
55: static void Main()
56: {
57: Tester t = new Tester();
58: t.Run();
59: }
60: }
Selain konstruktor overloading juga bisa
diterapkan pada method dalam suatu class yang sama, contoh penulisannya:
1: void MyMethod(int p1);
2: void MyMethod(int p1, int p2); // beda banyak parameter
3: void MyMethod(int p1, string s1); // beda tipe data
8.
membuat program OOp untuk
·
hitung
nilai Mata Kuliah dan konversinya
class Program
{
static void Main(string[] args)
{
double
ntugas, nuts, npart, nuas, nakhir;
Console.WriteLine("menghitung
Nilai Mata Kuliah mahaiswa");
Console.WriteLine("--------------------------------------------");
Console.Write("nilai
patisipasi = ");
npart = double.Parse(Console.ReadLine());
Console.Write("nilai
UTS = ");
nuts = double.Parse(Console.ReadLine());
Console.Write("nilai
Tugas = ");
ntugas = double.Parse(Console.ReadLine());
Console.Write("nilai
UAS = ");
nuas = double.Parse(Console.ReadLine());
Console.WriteLine("------------------------------------");
nakhir = hitungNilaiAkhir(npart, ntugas, nuts, nuas);
Console.Write("Nilai akhir
= " + nakhir);
Console.WriteLine();
Console.Write("Nilai
Huruf = " +
konversiHuruf(nakhir));
Console.ReadKey();
}
public static double hitungNilaiAkhir(double
np, double nt, double
nuts, double nuas)
{
return 0.3 * np + 0.2 * nt + 0.3 * nuas + 0.2 * nuts;
}
public static string konversiHuruf(double
na)
{
string nh = "";
if (na > 85 && na <= 100)
{
nh = "A";
}
if (na > 80 && na <= 85)
{
nh = "A-";
}
if (na > 75 && na <= 80)
{
nh = "B+";
}
if (na > 70 && na <= 75)
{
nh = "B";
}
if (na > 65 && na <= 70)
{
nh = "B-";
}
if (na > 60 && na <= 65)
{
nh = "C+";
}
if (na >
55 && na <= 60)
{
nh = "C";
}
if (na > 50 && na <= 55)
{
nh = "C-";
}
if (na > 40 && na <= 50)
{
nh = "D";
}
if (na <= 40)
{
nh = "E";
}
return nh;
}
}
}
Outputnya
:
DAFTAR
PUSTAKA