Berikut ini akan kami jelaskan mengenai definisi dari Class, Object,
Method, Atribut, Abstraksi, Construktor, Package, Interface, Inherritance,
Enkapsulasi, Metode Overloadding dan Overriding
Class
Class merupakan bentuk logis yang
menjadi landasan bangun seluruh bahasa pemograman berorientasi object. Class
mendefinisikan bentuk dan perilaku object. Class sungguh sangat penting di
Java. 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 :
- 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.
- 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
Object
adalah instance dari class. Jika class secara umum merepresentasikan
(template) sebuah object, sebuah instance adalah representasi nyata dari class
itu
sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan
lainlain.
Objek adalah kesatuan entitas(benda) yang merupakan representasi
nyata dari sebuah kelas.
Hubungan antara Kelas dan Objek Pada Java ini bisa dianaloginkan seperti
cetakan roti dan roti hasil cetakan itu sendiri. Untuk penamaan Kelas harus
diawali dengan huruf besar/kapital. Sebagai contoh perhatikan kode dibawah ini:
public calass Mobil{}
Sedangkan untuk contoh pembuatan Objek adalah sebagai berikut:
Mobil xenia = new Mobil();
Membuat object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class
yang akan dibuat sebagai instance dari class tersebut.
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().
Atribut
Atribut
merupakan nilai data yang terdapat pada suatu object di dalam class. Attribute
mempunyai karakterisitik yang membedakan object yang satu dengan object yang
lainya. Contoh : pada Class Buah terdapat attribute:warna, berat. Misalkan pada
object mangga: warna berisi kuning dan berat 0.5 kg dan pada object apel :
warna merah dan berat 0.6 kg
Method
Method merupakan suatu operasi berupa
fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method
didefinisikan pada class akan tetapi dipanggil melalui object.
Metode menentukan perilaku objek, yakni apa
yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat
dilakukan objek sepanjang hidupnya.
Metode memiliki 4 (empat) bagian dasar :
- Nama metode
- Tipe Objek atau tipe primitive yang dikembalikan metode.
- Daftar parameter.
- Badan atau isi metode.
Contructor
Constructor merupakan method khusus yang
digunakan untuk menginisialisasi objek, dan tiap class boleh memiliki lebih
dari satu constructor.
Perbedaan method biasa dengan constructor
adalah bahwa constructor harus memiliki nama yang sama dengan nama
class-nya dan tidak memiliki nilai kembalian.
Constructor dijalankan pada saat sebuah objek diinisialisasi (menggunakan
kata new). Pada constructor juga berlaku overloading, artinya boleh
mendeklarasikan lebih dari satu constructor, asalkan memiliki
parameter yang berbeda.
Package
Package adalah mekanisme untuk
mengatur Java kelas ke ruang nama mirip dengan modul Modula . Paket-paket Java
dapat disimpan dalam file yang dikompresi dan disebut file JAR , memungkinkan
kelas untuk men-download lebih cepat sebagai kelompok daripada satu per satu.
Programmer juga biasanya menggunakan paket untuk mengatur kelas yang termasuk
kategori yang sama atau menyediakan fungsi serupa.
- Sebuah paket menyediakan namespace yang unik untuk
jenis yang dikandungnya.
- Kelas dalam paket yang sama dapat mengakses
anggota-paket akses masing-masing.
Java class library (Java API) memiliki banyak sekali kelas
(Java predefined classes) yang diletakkan ke dalam paket (package) untuk dapat
dipergunakan kembali di dalam program. Paket tersebut digunakan untuk
mengelompokkan kelas-kelas yang mempunyai kemiripan fungsi (related class).
Kelas-kelas Java yang akan digunakan di dalam program, terlebih dahulu harus
diimpor beserta dengan nama paket di mana kelas tersebut berada, kecuali untuk
kelas Java yang berada di paket java.lang seperti kelas JOptionPane yang berada
di paket javax.swing dan kelas DecimalFormat yang berada di paket java.text.
Berikut ini adalah daftar beberapa paket Java yang sering dipergunakan di dalam
kode program Java.
java.lang - Fungsi dasar bahasa dan jenis dasar
java.util - Pengumpulan Data struktur kelas
java.io - Operasi file
java.math - Multiprecision aritmatika
java.nio - Yang baru I / O kerangka untuk
Java
java.net - Operasi jaringan, soket, lookup
DNS , ...
java.security - Pembangkitan kunci, enkripsi dan dekripsi
java.sql - Java Database Connectivity (JDBC)
untuk mengakses database
java.awt - Hirarki dasar paket untuk komponen
asli GUI
javax.swing - Hirarki paket untuk platform-independen yang
kaya GUI komponen
java.applet - Kelas untuk membuat applet
The java.lang - paket tersedia tanpa menggunakan pernyataan impor.
Sebuah paket (package) sebenarnya adalah direktori yang
digunakan untuk menyimpan file-file bytecode (file berekstensi .class). Paket
Java disusun secara berjenjang (hierarchical). Anda bisa mempunyai paket di
dalam paket yang lain. Sebagai contoh, javax.swing.JOptionPane menunjukkan
bahwa kelas JOptionPane berada di dalam paket swing, dan paket swing itu sendiri
berada di dalam paket javax. Level jenjang paket dapat digunakan untuk
memastikan keunikan dari nama paket.
Semua kelas yang dibuat akan tersimpan di direktori yang sekarang aktif
(current directory atau default package) ketika program sumber Java dikompilasi.
Karena program sumber Java terletak di direktori, misalnya c:\hindro\javasc dan
proses kompilasi juga dilakukan di direktori tersebut, maka file bytecode hasil
kompilasi juga akan tersimpan di direktori yang sama.
Abstraksi
Abstraksi merupakan cara paling
dasar dalam menangani kompleksitas. Abstraksi adalah kemampuan manusia untuk
mengenali keserupaan antara object-object, situasi-situasi atau proses-proses
yang berbeda di dunia nyata dan keputusan untuk berkonsentrasi pada keserupaan-keserupaan
itu dan mengabaikan yang disebut sebagai perbedadan-perbedaan kecil yang ada.
Abstraksi adalah prinsip
untuk mengabaikan aspek-aspek dari subyek yang tidak relevan untuk maksud
tertentu untuk berkonsentrasi lebih penuh padanya.
Penerapan abstraksi berarti bahkan
bila analis mengetahui banyak hal, dia memilih hal-hal tertentu yang relevan.
Manusia dapat membuat abstraksi
dengan cara-cara berbeda bergantung kebutuhan penyelesaian yang dikehendaki.
Manusia dalam penanganan persoalan penentuan kecepatan dan waktu benda yang
jatuh dari langit (atas) saat mencapai tanah, maka entah benda itu pensil,
batu, mobil, pesawat terbang yang terkena rudal, bulu ayam dan sebagainya
diasumsikan di ruang tidak menghambat dan benda-benda itu sebagai titik massa.
Dan ajaib, kita dapat menentukan saat dan letak benda tersebut jatuh serta
dengan kecepatan berapa benda tersebut menabrak bumi.
Kita tidak berhubungan dengan
pensil, batu, mobil, pesawat terbang, bulu ayam melainkan semuanya
diabstraksikan menjadi titik massa. Abstraksilah yang membuata kemajuan pesat
manusia meninggalkan makhluk-makhluk hidup lain.
Seringkali masalah yang berbeda
membutuhkan sejumlah informasi yang berbeda pula pada areal yang sama. Sebagai
contoh kasus sebuah TV. Ketika kita membuat program komputer untuk mengatur
volume suara, perubahan channel dan pengaturan kontras, kita mungkin harus
membuang atribut nomor seri karena tidak terlalu berguna. Akan tetapi ketika
kita akan menelusuri transaksi penjualan TV, maka kita butuh nomor seri dari
setiap TV yang kita jual.
Inheritance
inheritance (penurunan sifat /
pewarisan), ini merupakan ciri khas dari OOP yang tidak terdapat pada
pemrograman prosedural gaya lama. Dalam hal ini, inheritance bertujuan
membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang
sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk obyek
turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan
mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut
dengan hirarki obyek.
Keuntungan Inheritance:
"Saat anda ingin membuat class baru, dan ternyata pada class lain telah
ada code yang ingin anda gunakan, maka anda tinggal meng-extend class lain
tersebut."
Interface
Adalah prototype atau template untuk
sebuah class, deskripsi ini hamper serupa dengan class abstrak. class abstrak
merupakan Class yang diimlementasikan secara parsial. Interface merupakan class
abstrak yang sepenuhnya tidak dimplementasikan yang artinya tidak ada metode
yang diimplementasikan. Ketika menulis metode di interface maka badan metode
kosong, class – class yang mengimplementasikan interface bertanggung jawab
untuk menspesifikasikan implementasi metode – metode ini.
Deklarasi
Interface
Secara default, interface hanya
dapat diimplementasikan oleh class dipaket yang sama, tetapi bila member
modifier public berarti kita memungkinkan class – class di luar paket dapat
mengimplementasikan. Tubuh interface mengacu ke metode dan variable static
final yang menyusun interface.
Sintak untuk menciptakan interface
serupa dengan cara menciptakan sebuah class tetapi terdapat beberapa pengecualian,
yaitu :
- Tidak ada metode diinterface yang mempunyai badan
metode, semua pasti public dan abstract
- Variable selalu bersifat public, final dan static
contoh penulisan sebuah interface :
tingkat_akses interface
nama_interface{
type-kembalian nama_method1(daftar-parameter);
type-kembalian nama_method2(daftar-parameter);
……..
type-kembalian nama_methodN(daftar-parameter);
type variable final1 = nilai;
type variable final2 = nilai;
…….
type variable finalN = nilai;
}
Implementasi
Interface
Mengimplementasikan interface serupa
dengan menuruni dari class kecuali, tetapi perlu mengimplementasikan semua
metode yang didefinisikan di interface. Untuk mengimplementasikan interface,
menggunakan kata kunci implements.
penulisan implementasi
interface :
interface [InterfaceName] {
//beberapa method tanpa isi
}
class [name_class] implements
[InterfaceName]{
….
}
Polymorphism
Adalah suatu aksi yang memungkinkan
pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana
obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai
dengan sifat masing-masing obyek.
Atau Polymorphism dapat berarti
banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method,
yang berasal dari parent class (super class) dimana object tersebut diturunkan,
sehingga memiliki kelakuan yang berbeda.
Polymorphism dapat disamakan dengan
Method Overloading, dimana di dalam sebuah class terdapat beberapa method
dengan nama sama. Sebuah Method bernama CetakData() yang misalnya berfungsi
menampilkan data String, tentu tidak bisa menangani masukan berupa data numerik,
boolean, ataupun karakter, demikian juga sebaliknya. Solusi yang bisa dilakukan
adalah dengan menyediakan beberapa Method CetakData() yang akan menangani
setiap tipe data, sehingga data apapun yang diberikan sebagai parameter tetap
bisa diproses.
Enkapsulasi
Pengapsulan adalah proses dpemaketan
data bersama metode-metodenya. Manfaat utama pengapsulan adalah menyembunyikan
rincian-rincian implementasi dari pemakai. Bagian internal objek mempunyai
ketampakan terbatas dibanding bagian eksternal objek. Penyusunan seperti ini
menjaga bagian internal dari pengaksesan eksternal yang tidak diinginkan.
Bagian eksternal objek sering
disebut antarmuka objek karena berlaku sebagai antarmuka objek terhadap objek
lain. Karena objek lain harus berkomunikasi dengan objek itu hanya melalui
antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar.
Karena program luar tidak mengakses implementasi internal objek, implementasi
internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.
Pengapsulan menyediakan dua manfaat
utama bagi pemrogram, yaitu:
1.
Penyembunyian informasi
Penyembunyian
implementasi (implementation hiding) mengacu perlindungan implementasi internal
objek. Objek disusun dari antarmuka public dan bagian private yang merupakan
kombinasi data dan metode internal. Manfaat utama adalah bagian interlnal dapat
berubah tanpa mempengaruhi bagian-bagian program yang lain.
2.
Modularitas
Modularitas
(modularity) berarti objek dapat dikelola secara independen. Karena kode sumber
bagian internal objek dikelola secara terpisah dari antarmuka, maka kita bebas
melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain
dari sistem. Manfaat ini mempermudah mendistribusikan objek-objek di sistem.
Pengapsulan pada java dilakukan dengan pembentukan kelas-kelas, yaitu keyword
class. Sedangkan penyembunyian informasi dilakukan dengan pengendalian terhadap
pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan
default, private, protected, dan public. Penyembunyian informasi dilakukan
dengan menerapkan kendali pengaksesan private atau protected pada elemen kita.
Keyword atau kata Kunci dalam Java
This
Digunakan untuk mewakili sebuah
instance dari kelas dimana ia muncul. This dapat
digunakan untuk mengakses anggota
kelas sebagai referensi. This juga kata kunci
digunakan untuk meneruskan panggilan
dari satu konstuktor dikelas untuk konstuktor
lain dikelas yang sama.
Super
Untuk mengakse anggota kelas
diwariskan oleh kelas dimana ia muncul. Super kata
kunci juga digunakan untuk
meneruskan panggialn dari konstruktor di superclass.
Final
Mendefinisikan entitas sekali yang
tidak dapat diubah atau berasal dari nanti. Lebih
spesifk, sebuah kelas akhir tidak
dapat subclassed, metode akhir tidak dapat diganti,
dan variabel final dapat trjadi
paling banyak sekali sebagai ekspresi kiri. Semua
metode dikelas terakhir secara
implicit final.
Static
Digunakan untuk menyatakan sebuah
lapangan, metode atau kela batin sebagai
bidang kelas. Kelas mempertahankn
satu salinan bidang kelas terlepas dari berapa
banyak contoh yang ada dari kelas itu.
Static juga digunakan untuk mendefinisikan
sebuah metode sebagai metode kelas.
Kelas metode yang terikat ke kelas, bukan ke
contoh spesifik, dan hanya dapat
beroperasi pada kolom kelas. (kelas dan interface
dideklarasikan sebagai static
anggota lain kelas atau interface sebenarnya top-level
kelas dan tidak inner class).
Method
Overloading dan Overriding,
keduanya merupakan class yang
memiliki nama method yang sama. Namun pada overloading dan overriding memiliki
kesamaan dan perbedaan yang dapat dilihat dari parameternya.
1. Overloading
Overloading merupakan suatu class
yang memiliki method yang namanya sama. Method methodnya hamper sama seperti
constructor yaitu memiliki nama yang sama dengan nama classnya. Namun pada overloading
terdapat 2 method yang memiliki nama yang sama tapi beda parameternya. Untuk
lebih jelasnya berikut contoh overloading :
Contoh
Overloading :
class
Segitiga {
public
Segitiga(double panjang) {
System.out.println(“\nVariabel
= segitiganya sama sisi “);
System.out.println(“Panjang
= “ +panjang);
Keliling(panjang);
Public Segitiga(double sisiMiring){
System.out.println(“\n2Variabel
= segitiganya sama kaki”);
System.out.println(“Panjang
= “ +panjang+ “sisi miring = “ +sisiMiring);
Keliling (panjang,
sisiMiring);
Dapat
dilihat pada contoh di atas bahwa terdapat 2 method dengan nama sama “
segitiga” memiliki parameter berbeda. Inilah yang disebut Overloading.
2. Overriding
Overriding memiliki method yang namanya sama namun
berbeda class. Method pertama adalah method yang berasal dari class induk
dengan parameter yang sama dengan method pada class anak. Pada Overriding nama
method dan parameternya pada kedua classnya harus sama. Di bawah ini adalah
contoh overriding.
Contoh
Overriding :
Class
OverRiding {
public void MethodAsli ( ) {
System.out.println(“
Method milik class OverRiding dijalankan “);
}
Public
static void main (String [ ] args) {
OverRiding O = new OverRiding ( ) ;
}
}
Class
SubOverRiding extends OverRiding {
public void MethodAsli ( ) {
System.out.println(“
Method milik class OverRiding dijalankan “);
}
}
Pada kedua kelas di atas
jelas terlihat bahwa method “ Method Asli” yang diturunkan dari class OverRiding
memilki kesamaan dari segi nama,parameter dan juga implementasinya.