Minggu, 23 Oktober 2016

MATERI PEMROGRAMAN BERORIENTASI OBJEK


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 String getNama(){
return nmpjb;
}
abstract public String jobDesc();
abstract public double tunjangan();
}
//kelas turunan
public class Ketua extends Struktural{
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;
}
public double tunjangan(){
// 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 :
  1. 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.
  2. 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 :
  1. Extends
        Keyword  ini  harus  kita  tambahkan  pada  definisi  class  yang menjadi subclass.
  1. Superclass
      Superclass  digunakan  untuk  menunjukkan  hirarki  class  yang  berarti class dasar dari 
      subclass/class anak.
  1. Subclass
          Subclass adalah class anak atau turunan secara hirarki dari superclass.
  1. 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