RANGKUMAN OOP (Object Oriented Programming)
1. Class, atribut, dan method
a.
Class
Class
(Kelas) digunakan untuk membuat objek, dan berperan
sebagai tipe data dari objek. Class merupakan sarana pengkapsulan kumpulan
data dan kumpulan method yang mengoperasikan kumpulan data tersebut.
Class
merupakan bentuk logis yang menjadi landasan bangun seluruh bahasa pemograman
berorientasi object. Class adalah template/prototype yang mendefinisikan type
object. Class merupakan sarana pengkapsulan kumpulan data dan metode-metode
yang beroperasi pada kumpulan data. Data dan metode untuk mendefinisikan isi
dan kamampuan object. Class adalah cetakan object. Object harus merupakan
instan suatu Class. Class digunakan untuk menciptakan banyak object.
Object-object dari Class yang sama mempunyai data sendiri tapi berbagi
implementasi metode dengan object-object lain di satu Class. Class dapat
merupakan realisasi/implementasi abstraksi di domain persoalan.
Berikut ini adalah
kegunaan kelas :
1.
Mengelompokkan object-object menjadi kelas-kelas,
berarti mengabstraksikan persoalan yang dihadapi. Abstraksi memberi daya
keampuhan pemodelan dan memberikan kemampuan generalisasi beberapa kasus
spesifik menjadi induk kasus-kasus yang serupa.
2.
Definisi-definisi common (seperti nama kelas dan
atribut) cukup disimpan sekali per kelas bukan sekali per instan kelas
(object). Operasi-operasi dapat ditulis sekali per kelas. Semua object dalam
kelas mendapat manfaat penggunaan kembali (reuse) kode itu.
Perhatikan table dibawah ini untuk perbedaan kelas dan
object dalam OOP.
|
Kelas (class)
|
Objek (object)
|
|
class merupakan rancangan (design)
|
Object merupakan perwujudan suatu class
|
|
class bersifat abstract
|
Object bersifat konkrit
|
Ketika
mendeklarasikan class, sebelum kata kunci class, kita dapat memberi modifier.
Modifier mempengaruhi makna deklarasi. Modifier yang berlaku untuk kelas adalah
antara lain modifier ketampakan (visibility modifier). Modifier ini mengatur
izin pengaksesan kelas oleh kelas-kelas lain. Selain itu adalah modifier untuk mengatur
apakah kelas tersebut dapat diwarisi atau tidak, modifier final akan membuat
kelas itu tidak dapat diwarisi. Modifier lainnya adalah abstract untuk
mengatakan apakah kelas merupakan kelas abstrak yang belum diimplementasikan
serta mengharapakan kelas turunannya yang harus mengimplementasikan
metode-metode darinya.
Penulisan sebuah class
modifier class [nama_class]{
//class body
}
b.
Atribut
Atribut
adalah sesuatu yang dimiliki oleh objek. Setiap objek yang dibuat dari kelas
yang sama akan memiliki atribut yang sama. Pada implementasi program, sebuah
atribut ditulis dalam bentuk data/ variable. Misalkan dari Kelas
binatang_dideklarasikan atribut :
a. int jmlKaki;
b. String warna;
c. public String suara;
d. Maka untuk setiap objek ayam, kucing dan anjing,
ketiganya akan memiliki atribut yang sama, tapi setiap atribut bisa
di-assigndengan nilai yang berbeda. Contoh deklarasi atribut dengan menggunakan
Java yaitu:
e. //assign nilai atribut untuk objek ayam
f. ayam.jmlKaki = 2;
g. ayam.warna=”Hitam”;
h. ayam.suara=”kukuruyuk”;
i.
//assign nilai
atribut untuk objek kucing
j.
deni.jmlKaki = 4;
k. deni.warna=”Kuning”;
l.
deni.suara=”meong”;
m. //assign nilai atribut untuk objek anjing
n. ayi.jmlKaki = 4;
o. ayi.warna=”Putih”;
p. ayi.suara=”guk”;
q. Dari contoh deklarasi di atas, dapat kita lihat bahwa
setiap objek akan memiliki atribut yang sama, yaitu jmlKaki, warna, dan suara.
Tetapi, masing-masing atribut dari setiap objek bisa diberi nilai yang berbeda.
c.
Method
Method adalah sesuatu yang dapat dilakukan oleh objek.
Method dalam implementasi program ditulis dalam bentuk fungsi. Misalkan pada
kelas binatang dideklarasikan method bersuara. Maka untuk setiap objek pada
kelas binatang bisa bersuara. Contoh implementasinya adalah:
//deklarasi method bersuara
public class binatang {
int jmlKaki;
String warna;
public String suara;
public
void bersuara()
{
System.out.println(suara);
}
}
//pemanggilan method oleh objek ayam
ayam.bersuara();
//pemanggilan method oleh objek kucing
kucing.bersuara();
//pemanggilan method oleh objek anjing
anjing.bersuara();
Dari contoh di atas dapat kita lihat bahwa untuk
setiap objek pada kelas binatang bisa memanggil method yang dideklarasikan
pada kelas binatang.
2.
Objek
Sebuah
objek adalah sesuatu yang mempunyai keadaan, kelakuan dan identitas. Keadaan
dari objek adalah satu dari kondisi yang memungkinkan dimana objek dapat
muncul, dan dapat secara normal berubah berdasarkan waktu. Keadaan dari objek
biasanya diimplementasikan dengan kelompok propertinya (disebut atribut),
berisi nilai dari properti tersebut, ditambah keterhubungan objek yang mungkin
dengan objek lainnya. Kelakuan menentukan bagaimana sebuah objek beraksi dan
bereaksi terhadap permintaan dari objek lainnya. Direpresentasikan dengan
kelompok pesan yang direspon oleh objek (operasi yang dilakukan oleh objek).
Kelakuan dari objek mendeskripsikan segala sesuatu yang dapat kita lakukan
terhadap objek tersebut dan segala sesuatu yang dapat dilakukan oleh objek untuk
kita. Objek merepresentasikan sebuah entitas, baik secara fisik, konsep ataupun
secara perangkat lunak.
Definisi
yang formal dari objek adalah sebuah konsep, abstraksi atau sesuatu yang diberi
batasan jelas dalam hal ini dimaksudkan untuk sebuah aplikasi. Objek merupakan instance
(wujud nyata) dari Class. Perilaku dari dua buah objek yang bertipe sama
dapat dibedakan dari Property yang dimilikinya; artinya, Setiap objek
mempunyai identitas yang unik. Identitas yang unik ini membuat kita dapat
membedakan dua objek yang berdeda, walaupun kedua objek tersebut mempunyai
keadaan dan nilai yang sama pada atributnya.
3. Cara membuat objek
Berikut adalah contoh class dan cara instansiasi
class tersebut menjadi objek pada C#:
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
}
}
ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
}
}
Berikut adalah contoh proses instansiasi class ClassExample :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
3-36
ClassExample classExample = new ClassExample();
}
}
}
4. Konstruktor
Konstruktor
(constructor) adalah suatu method khusus tanpa retrun type yang dipanggil
secara otomatis setiap kali suatu object atau kelas diciptakan. Programmer
tidak perlu memanggil kosntruktor, karena Java yang akan mengerjakannya. Ini
berarti proses pemberian nilai awal (atau inisialisasi bukan instanisasi)
seluruh data objek dilakukan melalui constructor. Constructor bisa berisi
perintah pemanggilan method internal atau intruksi lain.
Kita membuat
constructor terutama untuk inisialisasi variable-variable instan kelas serta
melakukan persiapan pada suatu object agar object itu dapat beroperasi dengan
baik, semacam melakukan start pada kendaraan bermotor. Ketika object suatu
kelas diciptakan, new memanggil constructor kelas untuk melakukan inisialisasi.
1.
Constructor harus bernama sama dengan nama kelas
(karena case senstive maka nama harus sama dalam huruf kecil dan besarnya)
2.
Constructor tidak men-spesifikasi tipe yang dikirim
karena dapat dipastikan tipe yang dikirim bertipe kelas itu
3.
Kelas dapat berisi banyak constructor overloading yang
memungkinkan object diinisialisasi dengan beragam cara berbeda.
4.
Constructor dapat mempunyai access modifier, biasanya
public namun dapat berupa private
Perlu dicatat bahwa
keberadaan constructor tidak dianggap sebagai method oleh Java, meskipun
pendeklarasiannya serupa dengan pendeklarasian suatu method.
penulisan konstruktor :
modifier class [nama_class]{
[nama_class](parameter 1, parameter 2,…..) {
//construktor
…..
}
5.
Private, public, protected
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. Biasanya identifier ini terdiri dari 3 bentuk, yaitu
privat public dan proected.
- 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.
- public: anggota pribadi dari kelas dasar hanya dapat diakses oleh anggota yang kelas dasar.
- protected: anggota dilindungi dari kelas dasar dapat diakses oleh anggota kelas dasarserta anggota kelas turunan.
Berikut adalah perbedaan dari ke-3 Identifier tersebut
:
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.
6. Karakteristik OOP dan contohnya
a. Inheritance (pewarisan)
Pewarisan merupakan
salah satu karakteristik dari OOP. Mendefinisikan class berdasarkan class yang
ada disebut penurunan. Class baru atau class turunan berhubungan langsung
dengan class diatasnya. Class asal disebut superclass. Suatu class dapat
mewariskan atribut dan method kepada class lain (subclass), serta
membentuk class hierarchy. Penting untuk Reusability. Menggunakan key word EXTENDS.
Contoh
kasus dibawah ini adalah telepon merupakan alat yang menjadi inspirasi
dibuatnya HP. Dengan beberapa fungsi tambahan. Disini fungsi tambahannya hanya
melakukan sms. Anda dapat mengembangkan dengan fungsi infrared, Bluetooth,
kamera, 3G dan lain- lain.
|
Telepon
|
|
Berbicara()
|
|
HP
|
|
Berbicara()
SMS()
|
Contoh
Programnya:
class
telepon{ // super class
void
berbicara(){
System.out.println(“Tekan
nomor tujuan, panggil”);
System.out.println(“Berbicara
dengan lawan bicara”);
System.out.println(“Setelah
selesai, tutup”);
}
}
class
HP extends telepon{ //subclass dengan pewarisan superclass dari telepon
void
SMS(){
System.out.println(“Ketik
pesan yang hendak dikirimkan”);
System.out.println(“Kirim
ke nomor yang dituju”);
System.out.println(“Tunggu
balasan”);
}
public
static void main(String[] args){
HP
handphone = new HP();
System.out.println(“Fungsi
dasar telepon”);
handphone.berbicara();
System.out.println(“Fungsi
baru pada telepon tanpa kabel”);
handphone.SMS();
}
}
b. Polimorphisme
(banyak bentuk)
Polymorphism
berarti mempunyai banyak bentuk. Dua Object atau lebih mempunyai hal yang
serupa tetapi mempunyai perilaku yang berbeda. Superclass dapat mempunyai
method yang juga dimiliki oleh class turunannya. Method pada superclass dapat
merupakan method virtual digunakan program yang memanggil suatu fungsi dari
suatu class, mungkin memanggil fungsi pada class lain. Kemampuan untuk
memperlakukan object yang memiliki perilaku (bentuk) yang berbeda.
Implementasi
konsep polymorphism:
1. Overloading:
Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda
parameter (tipe dan atau jumlah).
2.
Overriding: Kemampuan subclass untuk menimpa method
dari superclass, yaitu dengan cara menggunakan nama dan parameter yang sama
pada method.
Contoh kasus dibawah ini. Kita akan menggunakan suatu
method yang mempunyai beberapa bentuk masukan parameter, dimana masukan
parameter tersebut tidak sama, sehingga bisa menentukan method mana yang akan
dipanggil.
class HPMulti{
public void HP(long no_telp){
System.out.println(“Anda sedang menghubungi no. telp :
“+ no_telp);
}
public void HP(long no_telp,String teks){
System.out.println(“Anda mengirim pesan ke no. telp :
” + no_telp);
System.out.println(“Pesan anda berisi : ” + teks);
}
public void HP(int a,int b){
System.out.println(“Hasil operasi penjumlahan 2
bilangan tersebut adalah “+(a+b));
}
}
class HPBerfungsi{
public static void main(String[] args){
HPMulti fungsi = new HPMulti();
System.out.println(“menggunakan fungsi panggilan”);
fungsi.HP(7716953);
System.out.println(“menggunakan fungsi SMS”);
fungsi.HP(9613932,”Assalamualaikum Wr.Wb”);
System.out.println(“menggunakan fungsi kalkulator”);
fungsi.HP(20,30);
}
}
c. Encapsulation
(pembungkusan)
Dalam
pemrograman Java yang berorientasi murni Object ini, program hanya dipusatkan
pada aspek internal tidak melihat aspek ekternal masing-masing Object, sehingga
pembuatan program tidak perlu memikirkan terlalu susah, bagaimana program
berjalan. Hal ini yang disebut dengan Encapsulation atau data dan perilaku menjadi dalam
satu program.
Contoh
program memakai konsep encapsulation ini adalah program hak akses.
Masing-masing data member memakai hak akses baik private, public maupun
protected. Karena itu dibutuhkan yang disebut dengan package atau paket. Paket
adalah bagian implicit standar Java untuk mengelompokan class dengan interface
menjadi suatu unit, yaitu koleksi dari class dengan nama tertentu. Tujuan
mengelompokkan class dalam paket adalah memudahkan dalam menambahkan class ke
dalam program. Dengan bergitu penerapan hak akses terhadap suatu variable dan
Object.
Enkapsulasi
data dapat dilakukan dengan cara:
1. mendeklarasikan
instance variable sebagai private
2. mendeklarasikan
method yang sifatnya public untuk mengakses variable tersebut
d. Abstraction
Cara
kita melihat suatu sistem dalam bentuk yang lebih sederhana, yaitu sebagai
suatu kumpulan subsistem (object) yang saling berinteraksi.Sebagai
contoh, Mobil adalah kumpulan sistem pengapian, sistem kemudi, sistem
pengereman.Alat meng-abstraksikan sesuatu adalah class. Object bersifat
modularity. Object dapat ditulis dan dimaintain terpisah (independen) dari
object lain.
e. Aggregation
Agregasi berarti
menempatkan objek bersama-sama untuk menjadikannya objek yang lebih besar.
Barang-barang atau benda-benda manufaktur biasanya merupakan contoh dari bentuk
agregasi. Sebagai contoh, sebuah microwave terbentuk dari sebuah cabinet
(semacam lemari kaca), sebuah pintu, sebuah panel indikator, sejumlah tombol,
sebuah alat pemanas dan lain sebagainya. Agregasi mengimplikasikan kedekatan
ketergantungan. Sebagai contoh, alat pemanas akan tetap menjadi sebuah alat
pemanas meskipun kita melepaskannya dari microwave, namun sebuah microwave
akan menjadi tidak berguna tanpa sebuah alat pemanas, karena microwave
tersebut tidak akan dapat memanaskan makanan lagi.
.
7.
Overloading
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
menghitung nilai mata kuliah dan konversinya
namespace
konversinilai
{
class nilai
{
private
double _ntugas;
private
double _nuts;
private
double _npartisipasi;
private
double _nuas;
public double ntugas
{
get
{ return _ntugas; }
set
{ _ntugas = value; }
}
public double nuts
{
get
{ return _nuts; }
set
{ _nuts = value; }
}
public double npartisipasi
{
get
{ return _npartisipasi; }
set
{ _npartisipasi = value; }
}
public double nuas
{
get
{ return _nuas; }
set
{ _nuas = value; }
}
public double akhir()
{
return
0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas;
}
public string huruf()
{
string
huruf = "";
if
(0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas >= 85)
{
huruf = "A";
}
else
if (0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 *
_nuts + 0.2 * _nuas <= 85 && 0.3 * _npartisipasi + 0.2 * _ntugas +
0.3 * _nuts + 0.2 * _nuas >= 65)
{
huruf = "B";
}
else
{
huruf = "C";
}
return
huruf;
}
public void tampil()
{
Console.WriteLine("Nilai Tugas=" + _ntugas);
Console.WriteLine("nilai partisipasi=" + _npartisipasi);
Console.WriteLine("nilai UTS=" + _nuts);
Console.WriteLine("nilai UAS=" + _nuas);
Console.WriteLine("nilai Akhir = " + akhir());
Console.WriteLine("nilai Huruf = " + huruf());
}
}
class Program
{
static
void Main(string[]
args)
{
nilai
n1 = new nilai();
n1.ntugas = 89;
n1.npartisipasi = 80;
n1.nuts = 78;
n1.nuas = 86;
n1.tampil();
Console.ReadKey();
}
}
}
SUMBER: