PEMROGRAMAN BERORIENTASI OBJEK

Nama/NIM                                :  I Made Arta Purniawan / 1404505074
Jurusan/Fakultas/Universitas    :  Teknologi Informasi / Teknik / Udayana
Mata Kuliah                              :  Pemrograman Berorientasi Objek
Dosen                                        :  I Putu Agus Eka Pratama, ST. MT


PEMROGRAMAN BERORIENTASI OBJEK
(JAVA)

A.    JAVA
Java merupakan bahasa pemrograman yang dapat dijalankan di berbagai jenis platform baik komputer maupun telepon genggam. Java di lahirkan dari proyek The Green Project yang di motori oleh James Gosling pada tahun 1991 sampai musim panas 1992.
Sekitar musim panas tahun 1992, proyek ini dihentikan dan menghasilkan program Java Oak pertama yang berfungsi untuk mengendalikan perangkat layar sentuh seperti PDA. Teknologi ini dinamai “*7” (Star Seven). Inilah awal dari perkembangan Java.
Nama Java diambil digantikan dari nama Oak yang diambil dari Pohon Oak yang berada di depan jendela kantor James Gosling menjadi nama Java yang diambil dari nama kopi yang di tumbuk yang disukainya yang konon berasal dari Pulau Jawa. Jadi Java diambi dari nama suatu pulau asal kopi tumbuk tersebut, yaitu Jawa (Bahasa Inggrisnya “Java”).



Adapun versi-versi awal dari terbentuknya java, antara lain sebagai berikut :
1.      java.lang: Peruntukan kelas elemen-elemen dasar.
2.      java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
3.      java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
4.      java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
5.      java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
6.      java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.
Setiap bahasa pemrograman pastinya memiliki suatu kelebihan dan kekurangan. Dalam bahasa pemrograman Java juga terdapat beberapa kelebihan dan kekurangan yang dapat saya jabarkan sebagai berikut :
1.      Kelebihan
ü  Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebabnya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.
ü  OOP (Object Oriented Programming - Pemrogram Berorientasi Objek)
ü  Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
ü  Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
ü  Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).

2.      Kekurangan

ü  Tulis sekali, jalankan di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.
ü  Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.
ü  Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

Sumber : http://id.wikipedia.org/wiki/Java


B.     CLASS
Kelas dalam bahasa pemrograman memiliki arti kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. 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 dalam Java merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari object. class juga merupakan grup suatu object dengan kemiripan attributes/properties, behaviour dan relasi ke object lain.
Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.
Kelas adalah sebuah tipe data abstrak yang merupakan pemodelan dari objek yang berisi atribut(data) dan tingkah laku(method) yang dimiliki oleh objek tersebut.
Sebuah kelas menyerupai sebuah struktur yang merupakan tipe data sendiri, misalkan tipe data titik yang terdiri dari koordinat x dan y. Bahasa Java telah menggunakan sebuah kelas untuk menyatakan tipe data titik karena bahasa pemrograman Java merupakan bahasa pemrograman berorientasi objek murni sehingga tidak mengenal struktur tapi mengenal apa yang disebut dengan kelas.
Perbedaan sebuah kelas dengan sebuah struktur adalah sebuah kelas dapat berdiri sendiri dan dapat digunakan untuk berbagai keperluan kelas-kelas yang lain, sedangkan sebuah struktur tidak dapat berdiri sendiri. Sebuah kelas lebih fleksibel untuk digunakan oleh kelas lain tanpa harus membongkar kode program utama, sedangkan jika digunakan struktur maka kode program harus dibongkar unuk disalin bagian strukturnya ke kode program utama yang lain. Sebuah file dapat terdiri dari berbagai kelas, namun biasanya pada bahasa pemrograman Java sebuah file hanya terdiri dari satu kelas yang disimpan dengan nama kelas, misal file List.java berisi kelas List. Namun jika kelas yang dibuat misalnya public class nama_kelas, maka kelas itu harus disimpan dalam satu file hanya untuk satu kelas. Setelah dilakukan kompilasi maka pada Java akan ada sebuah file ”.class” yang berisi bytecode dari setiap kelas. Jika sebuah file terdiri dari dua kelas maka setelah dikompilasi akan dihasilkan dua buah file ”.class” yang nantinya akan dibaca oleh interpreter Java saat program dieksekusi.
Sebuah kelas saat program dieksekusi dan perintah new dijalankan, maka akan dibuat sebuah objek. Objek adalah elemen pada saat runtime yang akan diciptakan, dimanipulasi dan dihancurkan saat eksekusi sehingga sebuah objek hanya ada saat sebuah program dieksekusi, jika masih dalam bentuk kode, disebut sebagai kelas jadi pada saat runtime (saat sebuah program dieksekusi), yang kita punya adalah objek, di dalam teks program yang kita lihat hanyalah kelas.
Isi dari kelas ada tiga bagian yaitu:
1.      Variabel/properti/atribut
Atribut adalah karateristik yang dimiliki oleh objek. Dibagian itu kita dapat mendeklarasikan atribut-atribut yang dibutuhkan kelas untuk membentuk objek.
Sebagai contoh perhatikan kode dibawah ini:
private String nama;

2.      Konstruktor
Konstruktor adalah method yang berfungsi untuk menginisialisasi variabel-variabel instans yang akan dimiliki oleh objek. Method konstruktor harus memiliki nama yang sama dengan nama kelas. Konstruktor ini dipanggil pada saat proses instalasi kelas menjadi objek.
Kegunaan konstruktor:
        Mengalokasikan ruang bagi sebuah kelas dalam objek.
        Memberikan nilai awal terhadap anggota data suatu objek.
        Membentuk tugas-tugas umum lainya.
Perlu diketahui:
        Konstruktor tidak mempunyai nilai balik(bahkan tanpa void)
        Konstruktor harus diletakkan pada bagian public. Sebagai contoh perhatikan kode dibawah ini:
public Mobil(){}
3.      Method
Method merupakan tingkahlaku yang dimiliki oleh objek. Method ini bisa berbentuk prosedur maupun fungsi. Contoh penulisannya perhatikan kode dibawah ini:
public void cetakInfo()
{
System.out.println(“Nama Mobil : ” + getNama() );
}

C.     PEWARISAN
Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini.  
Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai subclass dari class tersebut.  




                                                             Gambar 1: Hirarki class
 




Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan induknya.

Mendefinisikan Superclass dan Subclass

Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai class induk yang dinamakan Person.

public class Person

{

protected String name; protected String address;

/**

* Default constructor */

public Person(){

System.out.println(“Inside Person:Constructor”); name = "";

address = "";
}

/**

* Constructor dengan dua parameter */

public Person( String name, String address ){ this.name = name;
this.address = address;
}

/**

* Method accessor */

public String getName(){ return name;

}

public String getAddress(){ return address;

}

public void setName( String name ){ this.name = name;

}

public void setAddress( String add ){ this.address = add;

}
}

Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya.

Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Untuk melakukan ini, kita tulis,

public class Student extends Person

{
public Student(){

System.out.println(“Inside Student:Constructor”); //beberapa kode di sini

}

// beberapa kode di sini

}

Ketika object Student di-instantiate, default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut,

public static void main( String[] args ){ Student anna = new Student();

}

Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari program adalah,

Inside Person:Constructor

Inside Student:Constructor

Alur program ditunjukkan sebagai berikut.


  



                                                          Gambar 2: Alur Program
  
  
Kata Kunci Super

Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya.

Sebagai contoh, pada contoh class sebelumnya. Person dan Student, kita tunjukkan contoh dari pemanggil constructor super. Diberikan kode berikut untuk Student,

public Student(){

super( "SomeName", "SomeAddress" );

System.out.println("Inside Student:Constructor");
}

Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya. Contoh kode lain ditunjukkan sebagai berikut,

public Student(){ super();

System.out.println("Inside Student:Constructor");
}
Kode ini memanggil default constructor dari superclass terdekat (yaitu Person) dan mengeksekusinya.

Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super:

1.      Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.

2.      Pemanggil super() hanya dapat digunakan dalam definisi constructor.

3.      Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM constructor YANG SAMA.

Pemakaian lain dari super adalah untuk menunjuk anggota dari superclass(seperti reference this). Sebagai contoh,

public Student()

{
super.name = “somename”; super.address = “some address”;

}



 Overriding Method

Untuk beberapa pertimbangan, terkadang class asal perlu mempunyai implementasi berbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut.

Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass Person,

public class Person

{
:

:

public String getName(){ System.out.println("Parent: getName"); return name;

}
:

}

Untuk override, method getName dalam subclass Student, kita tulis,

public class Student extends Person

{
:

:

public String getName(){ System.out.println("Student: getName");
return name;

}
:

}

Jadi, ketika kita meminta method getName dari object class Student, method overridde akan dipanggil, keluarannya akan menjadi,

Student: getName



Method final dan class final

Dalam Java, juga memungkinkan untuk mendeklarasikan class-class yang tidak lama menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Sebagai contoh, jika kita ingin class Person untuk dideklarasikan final, kita tulis,

public final class Person

{
//area kode

}

Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String.

Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method ini dapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method getName dalam class Person untuk dideklarasikan final, kita tulis,

public final String getName(){ return name;

}

Method static juga secara otomatis final. Ini artinya Anda tidak dapat membuatnya override.


D.    PEMBUNGKUSAN

Enkapsulasi atau Pembungkusan adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni :

         Information hiding.
         Interface to access data.

Information hiding
Sebelumnya 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
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.

Berikut adalah contoh program sederhana :

import javax.swing.*;
import java.io.*;
public class Enkapsulasi{
/*Main Method*/
public static void main (String[] args){
//Membuat dari kelas hitungGaji untuk suatu-
//pegawai, dan memanggil method-methodnya
Penggajian pegawai = new Penggajian();
double sg;
String Nilai;

Nilai = JOptionPane.showInputDialog("");

sg = Double.parseDouble(Nilai);

pegawai.setGaji(sg);
pegawai.hitungGaji();
System.out.println("\nBesar Gaji Bersih : "+ pegawai.getGajiBersih());

}

}

/*Kelas Penggajian*/
class Penggajian {
//Mendeklarasikan variabel-variabel internal kelas Penggajian.

private double gajipokok, gajiSetelahPajak,pajakgaji;
public double gajiBersih;
private double potongan = 100000;

//Method untuk mengeset variabel internal gaji pokok.
public void setGaji(double gaji){

gajipokok = gaji;

}

//Method untuk menghitung gaji bersih.
public void hitungGaji(){
gajiSetelahPajak = gajipokok - (0.1 * gajipokok);
pajakgaji = (gajipokok*0.1);
gajiBersih = gajiSetelahPajak - potongan;

System.out.println("\nBesar Pajak Gaji : "+ pajakgaji);
System.out.println("\nBesar potongan Gaji : "+ potongan);
}

//Method yang mengembalikan gaji Pokok (Gaji sebelum-
//ada pengurangan)
public double getGajipokok(){
return gajipokok;

}

//Method yang mengmbalikan besar gaji bersih
public double getGajiBersih(){
return gajiBersih;
}
}

OUTPUT :






Pembungkusan atau pembungkusan merupakan proses membuat paket data objek bersama dengan metode-metodenya. Berdasarkan kode program, proses memisahkan aspek-aspek objek dilakukan dengan cara pembungkusan.


Dalam melakukan pembungkusan kode dan data di dalam java, terdapat tiga tingkat akses yang harus diketahui, yaitu private, protected, dan public.
Previous
Next Post »
Thanks for your comment