MATERI KELAS
Pengertian Kelas
Class berbeda dengan objek. Class
merupakan prototipe yang mendefinisikan variabel-variabel dan
method-method secara umum. Sedangkan objek pada sisi yang lain merupakan
instansiasi dari suatu kelas.
Latihan 10. Class.java
class Buku {
String pengarang;
String judul;
void Isi(String isi1,String isi2) {
judul = isi1;
pengarang = isi2;
}
26
void CetakKeLayar() {
if(judul==null && pengarang==null) return;
System.out.println(“Judul : ” + judul +
“, pengarang : ” + pengarang);
}
}
class Karangan {
public static void main(String[] args) {
Buku a,b,c,d;
a = b = c = d = new Buku();
a.Isi(“Pemrograman Java”,”Asep Herman Suyanto”);
a.CetakKeLayar();
b.Isi(null,null);
b.CetakKeLayar();
c.Isi(null,”Johan Prasetyo Hendriyanto”);
c.CetakKeLayar();
d.Isi(“Pemrograman Web”,null);
d.CetakKeLayar();
}
}
Fungsi dalam kelas
Fungsi kelas terletak pada fungsi anggota (member function) dalam Java. Jika Anda ingin membaca data dalam objek maka Anda harus memanggil fungsi anggota (member function) dalam objek. hanya dengan cara ini Anda bisa mengakses data. Jadi Anda tidak bisa mengakses data secara langsung seperti dalam konsep pemrograman tradisional. Pengaksesan data seperti pada PBO ini dikenal sebagai pengkapsulan data. Pengkapsulan data (data encapsulation) dan
penyembunyian data merupakan kunci pengertian
pemrograman berorientasi objek.
Jika Anda ingin mengubah data dalam objek tentunya
Anda harus tahu fungsi-fungsi apa saja yang berinteraksi dengan objek itu, jadi
tidak ada fungsi-fungsi lain yang bisa mengakses data sehingga penulisan dan
penelusuran kesalahan program (debugging) akan dapat dilakukan dengan mudah.
Turunan
Pewarisan
merupakan salah satu bentuk penggunaan kembali perangkat lunak dimana suatu
kelas baru dibuat dari kelas yang sudah ada dengan mengabsorbsi variavel dan
fungsi dari kelas yang sudah ada tersebut, serta menambahkan atribut maupun
perilaku yang baru. Kelas baru secara otomatis akan memiliki variabel dan
fungsi yang dimiliki oleh kelas asal.
Kelas asal disebut
sebagai kelas induk (parent class, super class atau base class), kelas
baru disebut dengan kelas anak (Child class, sub class). Java
menggunakan kata kunci extends untuk menunjukkan suatu kelas merupakan turunan
dari kelas yang lain.
Mendefinisikan Kelas
Pendefinisian kelas untuk menunjukkan
proses pewarisan melibatkan lebih dari satu kelas, yaitu kelas induk dan kelas
turunan. Kelas turunan akan mewarisi atribut dan fungsi yang dimiliki oleh
kelas induknya. Beberapa kemungkinan yang terjadi saat mendefinisikan
fungsi-dungsi yang ada pada kelas turunan yaitu : kelas turunan dapat
melakukan overriding function yang diperoleh dari kelas induk, kelas
turunan mewarisi fungsi kelas induk dan tidak melakukan perubahan apapun, kelas
turunan mendefinisikan fungsi baru yang memang tidak ada di kelas induk.
Contoh dalam suatu organisasi (misal Perguruan Tinggi) terdapat berbagai
macam jabatan struktural yang mempunyai berbagai tugas dengan karakteristik
yang berbeda, misal : Ketua, Pembantu Ketua, Sekretaris, Ketua Jurusan dan
lain-lain. Setiap jenis jabatan struktural akan memiliki karakteristik yang
sama, misal : nama, job discription, tunjangan jabatan dan lain-lain. Selain
karakteristik itu, setiap orang yang mempunyai jabatan struktural juga memiliki
karakteristik tambahan, misal : masing-masing pejabat mempunyai job discription
yang berbeda, besarnya tunjangan juga berbeda.
Tidak semua variabel atau fungsi dapat diwariskan ke kelas
turunan. Variabel atau fungsi yang di deklarasikan public akan
diwariskan kepada turunan, sedang variabel atau fungsi yang dideklarasi private
tidak akan diwariskan ke kelas turunnya.
Sintak dalam Java
yang menggambarkan pewarisan dapat dituliskan sbb:
class nama_kelas_anak
extends nama kelas induk {
//deklarasi atribut
//fungsi-fungsi kelas
anak
}
Konstruktor
Konstruktor adalah sebuah fungsi yang digunakan untuk membuat objek
dalam suatu kelas. Konstruktor ini juga digunakan untuk melakukan inisialisasi
terhadap variabel-variabel yang dimiliki oleh kelas.
Dalam konsep
pewarisan, konstruktor kelas induk tidak akan diwariskan ke kelas induk, untuk
memfasilitasi pemanggilan fungsi konstruktor kelas induk oleh kelas anak maka
Java menyediakan mekanisme rujukan ke kelas induk dengan menggunakan kata kunci
super. Dengan menggunakan kata kunci ini, maka kita dapat mengakses
semua variabel kelas induk walaupun variabel tersebut tidak diwariskan.
Pemanggilan
konstruktor kelas induk dengan menggunakan super harus diletakkan dibaris
pertama dalam fungsi konstruktor kelas anak.
Pemanggilan
konstruktor kelas induk di dalam kelas anak dapat ditulis sbb:
public
konstruktor_kelas_anak(parameter){
super(parameter)
//instruksi lain
}
Berikut contoh potongan program dengan konsep
pewarisan (Program Lengkap):
//Class Struktural merupakan Class Induk
public abstract class Struktural {
private String nmpjb;
public Struktural(String nama){
nmpjb = nama;
}
public abstract class Struktural {
private String nmpjb;
public Struktural(String nama){
nmpjb = nama;
}
public String getNama(){
return nmpjb;
}
abstract public String jobDesc();
abstract public double tunjangan();
}
return nmpjb;
}
abstract public String jobDesc();
abstract public double tunjangan();
}
//kelas turunan
public class Ketua extends Struktural{
public Ketua(String nama){
super(nama);
}
public Ketua(String nama){
super(nama);
}
public String jobDesc(){
String job = “Job Description Ketua\n”;
job += “1. Memimpin Perguruan Tinggi \n”;
job += “2. Menentukan Tujuan Strategis \n”;
return job;
}
String job = “Job Description Ketua\n”;
job += “1. Memimpin Perguruan Tinggi \n”;
job += “2. Menentukan Tujuan Strategis \n”;
return job;
}
public double tunjangan(){
// rumus perhitungan tunjangan ketua
return 1000000;
}
}
// rumus perhitungan tunjangan ketua
return 1000000;
}
}
keterangan:
- Kelas Ketua (nama jabatan struktural : Ketua, Pembantu Ketua Sekretaris dll ) merupakan kelas extends dari kelas Struktural.
- super(nama) digunakan untuk pemanggilan variabel nama yang ada di kelas induk (kelas Struktural
Inheritansi
juga berinteraksi dengan enkapsulasi. Jika suatu class tertentu mengenkapsulasi
sejumlah attribute, maka sub-class manapun akan memiliki attribute yang sama ditambah
dengan bagian dari spesialisasinya. Ini adalah konsep kunci yang membuat
kerumitan program berorientasi-objek berkembang secara linier, tidak geometris.
Sub-class yang baru mencakup semua perilaku dan spesifikasi moyangnya.
Sub-class tersebut tidak meiliki interaksi tak terduga dengan sebagian besar
bagian program di system.
Keuntungan dari
inheritance adalah :
- Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
Istilah dalam
inheritance yang perlu diperhatikan :
- Extends
Keyword
ini harus kita tambahkan pada definisi
class yang menjadi subclass.
- Superclass
Superclass
digunakan untuk menunjukkan hirarki class
yang berarti class dasar dari
subclass/class anak.
- Subclass
Subclass adalah class
anak atau turunan secara hirarki dari superclass.
- Super
Keyword
ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel
yang mengacu pada superclass.
HAK
AKSES/ private,protected,public(OOP)
Seperti pada Java, PHP pun memiliki 5
Modifier yaitu Private, Protected, Public, Default (Undefined) dan Static,
dimana Default dari Modifier dalam PHP adalah Public (maaf kalau salah tolong
dibetulkan soalnya aku juga kurang paham yang ini Mari kita
bahas satu per satu
1. Private
Private; seperti namanya modifier ini
bersifat spesifik class dan tidak dapat diwariskan kepada class turunannya.
Modifier ini hanya dapat diakses oleh class tersebut dan tidak dapat diakses
diluar dari class tersebut. Bahkan object saja tidak dapat mengaksesnya karena
memang hanya diperuntukkan untuk class tersebut.
Contoh :
1
2
3
4
5
6
7
8
9
10
|
<?php
class Modifier{
private function setPrivate(){
echo 'Ini
private';
}
}
$a = new Modifier();
$a->setPrivate();
?>
|
Ketika kita mencoba menjalankan
program diatas maka yang ada bukannya keluar tulisan Ini private tapi justru
error sebagai berikut:
|
Fatal
error: Call to private method Modifier::setPrivate() from context '' in /opt/lampp/htdocs/modifier.php
on line 9
|
2.
Protected
Protected; Modifier ini diproteksi
hanya untuk class dan turunan class tersebut. Jadi modifier sedikit lebih
terbuka daripada modifier Private namun belum bisa dipanggil secara langsung oleh
object class. Untuk lebih jelas perhatikan contoh berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php
class Modifier{
protected function setProtected(){
echo 'Ini
protected';
}
}
class Turunan extends Modifier{
public function setPublic(){
$this->setProtected();
}
}
//$a
= new Modifier();
//$a->setProtected();
$b = new Turunan();
$b->setPublic();
//$b->setProtected();
?>
|
Pada contoh diatas akan keluar output Ini protected karena
kita memanggil function setProtected dari extends class (class turunan) yang
bersifat public. Secara singkat kira-kira beginilah alur program diatas.
Class Modifier mempunyai
Turunan Class yaitu Turunan sehingga secara otomatis Turunan memiliki semua
function yang dimiliki oleh class Modifier. Karena memiliki function yang
dimiliki class Modifier, berarti Turunan juga memiliki fungsi setProtected.
Karena ingin agar object dapat mengakses fungsi setProtected, dibuatlah sebuah
fungsi pada class Turunan yaitu setPublic yang sebenarnya adalah fungsi
setProtected namun dengan akses public.
3.Public
Deklarasi hak ini berarti variable atau fungsi dengan awalan ini bisa diakses
dari class manapun, baik class itu sendiri atau class turunan dari class yang
memiliki variable atau fungsi itu. Deklarasi ini merupakan yang paling sering
dan mudah digunakan. Tetapi penggunaanya tergantung dari kebutuhan dan
kebijakan dalam keamanan program
Variabel dalam kelas
VARIABEL PRIVATE
- Variable Private adalah variable yang hanya dikenal pada Class itu sendiri
- Untuk mendapatkan data dari variable private disuatu Class harus dengan Fungsi “Property Procedure”
- Bentuk Penulisan : Private namavariable as TipeVarible