BAB I
PENDAHULUAN
A.
Latar Belakang
Saat ini
konsep object-oriented programming (OOP) sudah semakin
berkembang. Hampir setiap
perguruan tinggi di dunia mengajarkan
konsep OOP pada
mahasiswanya. Sejarah
perkembangan OOP dimulai pada tahun 1966 saat Ole Johan Dhal dan Kristen
Nygaard dari universitas Olslo, norwegia menerbitkan sebuah jurnal kertas kerja
dengan judul "SIMULA An Algol Based Language". OOP merupakan suatu
pendekatan pemrograman yang
menggunakan object dan class. Dalam OOP, setiap
bagian dari program
adalah object. Sebuah object mewakili suatu
bagian program yang
akan diselesaikan. Program dalam
OOP membungkus (encapsulate) data
dan fungsi (atau prosedur) dalam
suatu obyek yang umumnya diimplementasikan sebagai suatu kelas (class).
Istilah-istilah
yang akan sering dijumpai dalam OOP adalah Class, Object, Property, dan Method.
Membuat
aplikasi dengan menggunakan konsep OOP bisa diibaratkan dalam dunia nyata
dengan membuat atau
memproduksi mobil. Yang mana
sebelum membuat mobil, diperlukan adanya desain atau sketsa tampilan
mobil, inilah yang disebut dengan Class.
Sketsa tersebut menggambarkan
tentang warna, ukuran, jumlah roda
dari mobil, inilah
yang disebut dengan Property. Sketsa
tersebut juga menjelaskan tentang
apa yang nantinya bisa dilakukan oleh mobil seperti berjalan dengan roda,
mengerem, membunyikan klakson
dsb.., apa yang
bisa dilakukan oleh
mobil inilah yang
disebut dengan Method. Kemudian,
sketsa tersebut dikirimkan ke
pabrik untuk dibuatkan bentuk fisiknya yaitu mobil, mobil – mobil hasil
produksi inilah yang disebut dengan Object.
Salah
satu keuntungan program
didefinisikan dengan konsep
OOP adalah adanya pengkapsulan
(encapsulation) program dalam
class dan object,
dimana programmer yang menggunakan
class tidak perlu
mengetahui isi dan
jalannya class secara detail, hanya perlu tahu bagaimana cara
menggunakannya. Sama halnya
dengan sebuah mobil
misalnya. Seorang pemilik
mobil tentunya tidak perlu
mengetahui bagian-bagian mobil
secara menyeluruh. Dia
tidak perlu mengetahui bagaimana
mesin mobil melakukan
pembakaran dan bagaimana mesin mobil bisa menggerakkan roda,
dsb. Dia hanya perlu tahu bagaimana cara menjalankan mobil, bagaimana
menghentikan mobil, dan fungsi mobil lainnya.
OOP bukanlah sekedar cara penulisan sintaks program yang
berbeda, namun lebih dari itu,
OOP merupakan cara
pandang dalam menganalisa
sistem dan permasalahan pemrograman.
OOP menyediakan model dimana program merupakan kumpulan obyek yang
berinteraksi satu sama lain.
Klasifikasi obyek, pewarisan,
dan message passing merupakan
prinsip-prinsip dasar dalam
OOP. Bahasa yang
mendukung OOP antara lain Smalltalk,
C++, Java, dan C#.
Java merupakan bahasa pemrograman turunan
bahasa C yang sudah menggunakan
paradigma OOP yang memiliki symbol “write
once run anywhere” karena Java dapat berjalan di berbagai platform sistem
operasi seperti windows , Solaris dan Linux, maka dari itu seorang mahasiswa maupun developer java dituntut wajib
untuk menyelami konsep OOP dengan sangat dalam. Sebab banyak kasus dimana
seorang developer java yang sudah berpengalaman bertahun-tahun tapi konsep
OOPnya sangat lemah, sehingga kode java malah mirip C atau Pascal dimana banyak
method static dan tidak ada design pattern yang diimplementasikan sama sekali.
Atau programmer java yang awalnya adalah programmer visual basic (VB), menulis
kode sama persis seperti ia menulis kode di VB, yaitu dengan meletakkan semua
code program dalam satu blok action suatu tombol. Oleh karenanya dalam
tulisan kali ini akan dibahas mengenai konsep dasar OOP yang dibutuhkan untuk penguasaan bahasa Java yang
berparadigma OOP itu sendiri.
B. Rumusan Masalah
Berdasarkan
latar belakang diatas, maka rumusan masalah dalam makalah ini adalah
bagaimana konsep dasar object-oriented programming (OOP).
C.Tujuan Penulisan
Mengetahui
konsep dasar object-oriented programming (OOP).
BAB II
PEMBAHASAN
A.
Konsep
Dasar Object Oriented Programming (OOP)
Untuk
dapat menguasai pemrograman Java, harus mengerti dengan baik konsep pemrograman
berorientasi objek, karena
Java merupakan bahasa pemrograman berorientasi objek. Pada
bagian ini akan dibahas konsep-konsep penting
dalam pemrograman berorientasi
objek, sehingga diharapkan akan
lebih mudah dalam mempelajari bahasa Java.
Beberapa konsep OOP dasar, antara lain Encapsulation (Class and Object), Inheritance (Penurunan sifat), Polymorphisme, Access Modify, Constructor,
Destructor, Static Properties, super class serta sub class.
1.
Encapsulation (Enkapsulasi)
Enkapsulasi adalah suatu cara untuk
menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar
dalam enkapsulasi yakni : Information
hiding , Interface to access data. Anggota class dapat diakses baik
berupa atribut maupun method secara langsung dengan menggunakan objek yang dibuat.
Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method
yang ada di dalam class tersebut adalah ‘public’.
Informasi dapat disembunyikan 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.
Jika telah dilakukan information
hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan
perubahan terhadap atribut yang disembunyikan tersebut, caranya adalah dengan
membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai
dari suatu atribut tersebut yang dinamakan dengan interface to access data.
Source
Code Sample :
public
class Siswa
{
public String nama;
public String nrp;
public void Info()
{
System.out.println(“Saya adalah”);
System.out.println(“Nama ” + nama);
System.out.println(“Nrp ” + nrp);
}
}
public class IsiData
{
public static void main(String[] args)
{
Siswa IT = new Siswa();
IT.nama = “Mirna”;
IT.nrp = “0320110013″;
IT.Info();
}
}
Source
Code Sample :
/*
Disimpan dalam file
“manusia.java”
*/
class manusia
{
public String nama;
public
manusia(String n)
{
this.nama
= n;
}
public String tampilkanNama()
{
return nama;
}
public void makan()
{
System.out.println("Nyamyam...
nyam...");
}
public void kerja()
{
System.out.println("Kerjaerjaaa...");
}
private void bunuhDiri()
{
System.out.println("Dor...bruk...");
}
}
/*
Disimpan dalam file “andi.java”
*/
class andi
{
public static void main(String arg[])
{
manusia andi= new manusia("Andi");
System.out.println("Nama= "+
andi.tampilkanNama());
andi.makan();
}
}
2.
Inheritance
Inheritance merupakan pewarisan atribut dan
method pada sebuah class yang diperoleh dari class yang telah terdefinisi
tersebut. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour
(method-method) dari superclass-nya.
Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan
dapat pula memodifikasi (override) state
dan behaviour yang diturunkan oleh
superclass-nya.
Subclass
atau kelas turunan menyediakan state/behaviour yang spesifik yang membedakannya
dengan superclass atau kelas induk , hal ini akan memungkinkan programmer Java
untuk menggunakan ulang source code dari superclass yang telah ada. Programmer
Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut
abstract class, untuk mendefinisikan
class dengan behaviour dan state secara umum.
Ada
dua keyword utama dalam inheritance, Super dan Extends. Extends
harus kita tambahkan pada definisi class yang
menjadi subclass. Sedangkan Super digunakan untuk memanggil konstruktor dari
superclass atau menjadi variabel yang mengacu pada superclass.
Istilah dalam inheritance yang perlu diperhatikan :
a. Extends
Keyword ini
harus kita tambahkan
pada definisi class
yang menjadi subclass.
b. Superclass
Superclass digunakan
untuk menunjukkan hirarki
class yang berarti class dasar dari subclass/class anak.
c. Subclass
Subclass adalah
class anak atau
turunan secara hirarki
dari superclass.
d. Super
Keyword ini
digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel
yang mengacu pada superclass.
e. Metode Overriding
Pendefinisian ulang method yang sama
pada subclass.
Source
Code Sample :
public class TipeRumah
{
public static void main ( String[]args )
{
rumahindah C = new rumahindah();
C.info();
}
}
class Rumah
{
private String a = " Rumahmewah ";
public void info() {
//System.out.println (" Dipanggil pada = "+this);
System.out.println (" ");
System.out.println (" Rumah = "+a);
}
}
class rumahindah extends Rumah
{
private String b = " tombol alarm ";
public void info(){
System.out.println (" ");
super.info();namun dengan parameter yang berbeda
System.out.println (" rumahindah = "+b);
}
}
3. Polymorphisme (Polimorfisme)
Polimorfisme atau perubahan bentuk merupakan kemampuan dari
reference untuk mengubah sifat menurut object apa yang dijadikan acuan. Dengan kata
lain, kita bisa menggunakan variabel dalam program untuk mengaplikasikan objek
untuk memanggil method yang berbeda. Keuntungan dari polimorfisme menyediakan
multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari
superclass tunggal, secara otomatis menunjuk method yang tepat untuk
menggunakannya ke particular object berdasar subclass yang termasuk di
dalamnya.
Polimorfisme tak lengkap jika tanpa overloading. Overloading
adalah suatu keadaan yakni beberapa method memiliki nama yang sama tetapi
memiliki fungsionalitas yang berbeda. Ciri-ciri overloading yaitu nama method
harus sama, sedangkan parameter harus berbeda. Overloading memungkinkan
polimerfisme pada kelas super dan sub kelasnya. Constructor yang terdiri dari
dua atau lebih disebut overloading constructor yang termasuk ciri polimorfisme.
Source
Code Sample :
public class StudentInfo
{
public static void main(String[] args)
{
StudentGrad myStudent = new StudentGrad();
myStudent.Write(92, 1,"Candra","Dwi Putro", 2013,"Trunojoyo University of Madura");
myStudent.Display();
}
}
class Student
{
public void Write(int ID, int Grad, String Fname, String Lname)
{
m_ID = ID;
m_Graduation = Grad;
m_First = Fname;
m_Last = Lname;
}
public void Display(){
System.out.println("Student" + m_ID);
System.out.println("Student : "+m_First + " " + m_Last);
System.out.println("Graduated m_Graduation);
}
private int m_ID, m_Graduation;
private String m_First;
private String m_Last;
}
class StudentGrad extends Student
{
public void Write(int ID, int Grad, String Fname, String Lname, int yrGrad, String unSch)
{
super.Write(ID, Grad, Fname, Lname);
m_UndergradSchool = unSch;
m_Grad = Grad;
YearGraduated = yrGrad;
}
public void Display()
{
super.Display();
System.out.println("Graduated: "+ m_UndergradSchool);
System.out.println("Graduation : "+ YearGraduated);
}
private Integer YearGraduated,m_Grad;
private String m_UndergradSchool;
private String m_Major;
}
4.
Access
Modify
Pada Java jika
diinginkan suatu data untuk bisa di akses oleh object lain atau tidak bisa di
akses oleh object luar lainnya digunakan Access
Modify. Access
Modify lebih singkatnya, larangan suatu data bisa diakses
ataupun tidak bisa diakses. Contohnya saja jika suatu data hanya dapat diubah
isinya oleh method tertentu saja, dan method lainnya tidak bisa karena adanya
pembatasan akses pada data tersebut. Java mempunyai 4 macam Access Modify, yaitu default,
public, private, protected yang fungsinya berlainan.
a.
Default
Tipe akses ini hanya dalam satu class
itu sendiri yang dapat mengaksesnya tergantung dari blok kodenya.
|
public class Hello
{
public
static void main(String
args[])
{
// access modifer default
int
nilai;
}
}
|
|
|
Source
Code Sample :
b. Public
Tipe ini mengijinkan seluruh class dari luar atau dari dalam
package bisa mengaksesnya.
Source
Code Sample :
|
public cla
}
|
c.
Protected
Tipe ini di
gunakan untuk pewarisan dalam java, jadi klo suatu super class mempunyai sebuah
member, ini dapat diakses oleh subclassnya.
|
public class SuperClass{
public static void main(String
args[]){
//
access modifer protected
protected int nilai;
}
}
public class SubClass{
public static void main(String
args[]){
//
merubah nilai yang ada di superclass
public void hitung(){
nilai=10;
}
}
}
|
SourceCodeSample:
d.
Private
Tipe ini hanya dapat diakses dimana
class tersebut di buat.
public class Hello{
public static void main(String
args[]){
// access modifer private
private int
nilai;
}
}
|
5. Constructor and Destructor
a.
Constructor
Dalam konsep OOP, constructor adalah suatu method yang digunakan untuk membuat suatu object dari suatu class. Dalam Java, constructor dideklarasikan sama dengan nama class yang bersangkutan. Constructor diakses dengan menggunakan keyword new.]
Dalam konsep OOP, constructor adalah suatu method yang digunakan untuk membuat suatu object dari suatu class. Dalam Java, constructor dideklarasikan sama dengan nama class yang bersangkutan. Constructor diakses dengan menggunakan keyword new.]
Source Code Sample :
public class Bike
public class Bike
{
public Bike()
public Bike()
{
what_to_do_when_creating_an_object
}
what_to_do_when_creating_an_object
}
public static void
main(String args[])
{
Bike obj = new Bike();
}
}
Bike obj = new Bike();
}
}
b. Destructor
Dalam konsep OOP, destructor adalah suatu method yang digunakan untuk melepaskan semua resource yang dialokasikan object semasa hidupnya.
Dalam Java, destructor tidak mempunyai peranan yang berarti karena Java memiliki fasilitas Garbage Collector, dimana alokasi memori akan secara otomatis dibebaskan apabila sudah tidak digunakan lagi.
Dalam konsep OOP, destructor adalah suatu method yang digunakan untuk melepaskan semua resource yang dialokasikan object semasa hidupnya.
Dalam Java, destructor tidak mempunyai peranan yang berarti karena Java memiliki fasilitas Garbage Collector, dimana alokasi memori akan secara otomatis dibebaskan apabila sudah tidak digunakan lagi.
Source
Code Sample :
class Thing {
|
||
|
|
public static int number_of_things
= 0;
|
||
public String
what;
|
|
||
public Thing
(String what) {
|
this.what
= what;
|
||
number_of_things++;
|
}
|
|||
|
|||
protected void finalize
() {
|
||
number_of_things--;
|
}
|
||
}
|
|
||
public class TestDestructor
{
|
public static void main(String[]
args)
|
||
{
|
Thing obj
= new Thing("Test App");
|
||
|
}
|
||
}
|
6. Static Properties
Seluruh property dan method
hanya bisa diakses dari objek, maka static property dan static
method adalah pengecualiannya. Static property dan static
method adalah property (variabel) dan method (function)
yang melekat kepada class, bukan kepada objek. Konsep static property
memang ‘agak keluar’ dari konsep objek sebagai tempat melakukan proses, karena
sebenarnya class hanya merupakan ‘blueprint’ saja. Untuk membuat static property dan static method, kita menambahkan
keyword ‘static’ setelah penulisan akses level property atau
method, seperti contoh berikut:
Source Code Sample :
// static property
public static $harga_beli;
// static method
public static function beli_laptop()
{
//...isi method
}
|
|
|
|
Dalam contoh diatas, saya
menggunakan hak akses public,
tetapi kita juga bisa menggunakan hak akses lain seperti private dan protected untuk static property dan
static method. Karena static property dan static method
adalah milik class, maka kita
tidak perlu membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama
class dan menggunakan operator ‘::’,
berikut adalah contoh pengaksesan static property dan static method
dari class laptop:
Source Code Sample :
|
echo laptop::$harga_beli;
echo laptop::beli_laptop();
|
7.
Super
Class and Sub Class
Dalam terminologi java, kelas induk yang diturunkan disebut dengan superclass. Sedangkan kelas baru hasil turunan
disebut subclass. Pada proses penurunan
kelas, kelas turunan akan mewarisi sifat-sifat yang
terdapat pada kelas induknya. Selanjutnya, kelas turunan tersebut dapat
memiliki sifat spesifik yang sebelumnya tidak dimiliki oleh kelas induk.
Source Code Sample :
class
SuperClass {
public
void jenis_tumbuhan() {
System.out.println(“Jenis
tumbuhan yang berkembangbiak secara vegetatif : “);
System.out.println(“1.
Umbi Lapis”);
System.out.println(“2.
Tunas”);
System.out.println(“3.
Rizoma”);
System.out.println(“4.
Geragih”);
System.out.println(“”);
}
public
static void main(String[] args) {
SuperClass
sc = new SuperClass();
sc.
jenis_tumbuhan ();
}
Source Code Sample :
class
SubClass extends SuperClass {
public
void Panggil() {
super.
jenis_tumbuhan();
System.out.println(“Beberapa
contoh tumbuhan : “);
}
public
void UmbiLapis() {
System.out.println(“Umbi
Lapis : bawang Bombay dan bawang putih”);
}
public
void Tunas() {
System.out.println(“Tunas
: pisang dan bambu”);
}
public
void Rizoma() {
System.out.println(“Rizoma
: jahe, lengkuas, kunyit, dan kencur”);
}
public
void Geragih() {
System.out.println(“Geragih
: stroberi”);
}
public
static void main(String[]args) {
SubClass
scs = new SubClass();
scs.Panggil();
scs.UmbiLapis();
scs.Tunas();
scs.Rizoma();
scs.Geragih();
}
}
BAB III
PENUTUP
A.
Kesimpulan
Object Oriented Programming (OOP)
merupakan suatu pendekatan
pemrograman yang menggunakan
object dan class. Dalam OOP,
setiap bagian dari
program adalah object. Sebuah
object mewakili suatu bagian
program yang akan
diselesaikan. Program dalam OOP
membungkus (encapsulate) data dan
fungsi (atau prosedur) dalam suatu obyek yang umumnya diimplementasikan
sebagai suatu kelas (class). Dari
penjelasan konsep OOP di atas, maka dapat ditarik kesimpulan sebagai berikut :
1. OOP sebagai
suatu santapan wajib bagi mahasiswa maupun developer sebagai dasar untuk
penguasaan bahasa pemrograman yang berorientasi objek, seperti Java.
2. Salah satu
keuntungan program didefinisikan
dengan konsep OOP
adalah adanya pengkapsulan (encapsulation) program
dalam class dan
object, dimana programmer yang
menggunakan class tidak
perlu mengetahui isi
dan jalannya class secara detail,
hanya perlu tahu bagaimana cara menggunakannya.
3. OOP
bukanlah sekedar cara penulisan sintaks
program yang berbeda, namun lebih
dari itu, OOP
merupakan cara pandang
dalam menganalisa sistem
dan permasalahan
pemrograman. OOP menyediakan
model dimana program merupakan kumpulan obyek yang berinteraksi satu sama
lain.
B.
Saran
Disarankan kepada mahasiswa maupun
developer sebelum menyelami lebih jauh bahasa pemrograman berorientasi objek
seperti Java, untuk menyelami konsep OOP terlebih dahulu. Sebab banyak kasus dimana seorang developer java
yang sudah berpengalaman bertahun-tahun tapi konsep OOPnya sangat lemah,
sehingga kode java malah mirip C atau Pascal dimana banyak method static dan
tidak ada design pattern yang diimplementasikan sama sekali. Atau programmer
java yang awalnya adalah programmer visual basic (VB), menulis kode sama persis
seperti ia menulis kode di VB, yaitu dengan meletakkan semua code program dalam
satu blok action suatu tombol.
DAFTAR PUSTAKA
http://rizkarunia.wordpress.com/2009/10/22/11/
(diakses tanggal 5 Oktober 2014)
http://www.atwiwit.net/2013/09/perbedaan-superclass-dan-subclass-di.html
(diakses tanggal 5 Oktober 2014)
http://www.duniailkom.com/tutorial-belajar-oop-php-pengertian-static-property-dan-static-method/
(diakses tanggal 5 Oktober 2014)
http://sikurniawan.wordpress.com/category/java/
(diakses tanggal 4 Oktober 2014)
http://iswan7.wordpress.com/2008/03/26/dasar-java-programing/
(diakses tanggal 4 Oktober 2014)
http://yulitanurmalasari.wordpress.com/2010/12/01/belajar-oop/
(diakses tanggal 4 Oktober 2014)
http://can354dra.wordpress.com/2011/05/24/memulai-dengan-java/
(diakses tanggal 4 Oktober 2014)
http://www.shivasoft.in/blog/
(diakses tanggal 4 Oktober 2014)
http://andridimdim.blogspot.com/2013/04/konsep-oop-pada-java.html
(diakses tanggal 5 Oktober 2014)
0 komentar:
Posting Komentar