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
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.
ConversionConversion EmoticonEmoticon