Rabu, 04 Mei 2016

Pengertian Abstract class,Abstract Method,Package class,Casting Objek,Overloading dan Overriding,Pewarisan Interface,Konstruktor dan $this,Modifier,Bentuk Umum Konstruktor

1.Pengertian Abstract Class dan Abstract Method

Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak bisa dibuat menjadi objek) dan berperan sebagai 'kerangka dasar' bagi class turunannya. Di dalam abstract class umumnya akan memiliki abstract method.
Abstract Method adalah sebuah ‘method dasar’ yang harus diimplementasikan ulang di dalam class anak (child class). Abstract method ditulis tanpa isi dari method, melainkan hanya ‘signature’-nya saja. Signature dari sebuah method adalah bagian method yang terdiri dari nama method dan parameternya (jika ada).

Abstract class digunakan di dalam inheritance (pewarisan class) untuk ‘memaksakan’ implementasi method yang sama bagi seluruh class yang diturunkan dari abstract classAbstract class digunakan untuk membuat struktur logika penurunan di dalam pemrograman objek.

Cara Membuat Abstract Class

Karena kita ingin membuat class komputer sebagai abstract class, maka berikut adalah cara penulisannya di dalam PHP:
1
2
3
4
5
<?php
abstract class komputer {
   // isi dari class komputer
}
?>
Untuk membuat abstract class di dalam PHP, kita tinggal menambahkan keyword abstractsebelum nama class. Sebuah abstract class bisa memiliki property dan method biasa layaknya sebuah class ‘normal’, namun juga bisa memiliki abstract method.

Cara Membuat Abstract Method

Jika sebuah method dinyatakan sebagai abstract method, maka kita tidak perlu membuat isi methodnya, tetapi hanya signature dari method tersebut. Signature terdiri dai nama method dan parameternya (jika ada) seperti contoh berikut:
1
2
abstract public function lihat_spec();
abstract public function lihat_spec($merk);
Kenapa kita tidak perlu membuat isi dari method? Ini karena jika sebuah method dinyatakan sebagai abstract method, isi dari method tersebut akan dibuat dalam class turunan. Abstract method harus berada di dalam abstract class.

Fungsi Abstract Class dan Abstract Method

Abstract class dan abstract method berfungsi untuk membuat ‘kerangka’ bagi seluruh class dibawahnya. Seperti contoh-contoh kita diatas, setiap class yang diturunkan dari class komputer, ‘pasti’ akan memiliki method lihat_spec().
Dalam tutorial ini saya menyederhanakan contoh kode program dengan hanya 1 abstract method. Kita bisa membuat beberapa abstract method di dalam abstract class, seperti contoh berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// buat abstract class
abstract class komputer{
   // buat abstract method
   abstract public function lihat_spec();
   abstract public function lihat_processor();
   abstract public function lihat_harddisk();
   abstract public function lihat_pemilik();
}
  
class laptop extends komputer{
   // .. isi class laptop
}
  
class pc extends komputer{
   // .. isi class pc
}
  
class netbook extends komputer{
   // .. isi class netbook
}
?>
Dengan membuat class komputer sebagai abstract, maka kita bisa menebak bahwa di dalam class laptop, class pc dan class netbook, pasti memiliki method lihat_spec(), lihat_processor(), lihat_harddisk() dan lihat_pemilik(). Dengan demikian, kita bisa membuat program yang lebih terstruktur.

Dalam tutorial OOP PHP berikutnya, kita akan membahas tentang Object Interfaces atau dikenal dengan sebutan Interface saja. Interface di dalam pemograman objek sangat mirip denganabstract class. Kita akan membahas pengertian, cara penggunaan serta perbedaan Object Interface dengan Abstract Class.

2.Pengertian Package
Package adalah sarana/cara pengelompokkan dan pengorganisasian kelas-kelas dan interface yang sekelompok menjadi suatu unit tunggal dalam library.
Package juga mempengaruhi mekanisme hak akses ke kelas-kelas di dalamnya.
4.2. Pengaruh Package terhadap Method main()
Kelas yang mengandung method main() memilki syarat tidak berada dalam suatu package, dan hirarki posisi foldernya di atas package yang diimport.
4.3. Membuat Package
Ada tiga langkah untuk membuat package :
  1. Mendeklarasikan dan memberi nama package.
  2. Membuat struktur dan nama direktori yang sesuai dengan struktur dan nama package.
  3. Mengkompilasi kelas-kelas sesuai dengan packagenya masing-masing.
4.4. Mendeklarasikan dan Memberi Nama Package
Deklarasi package harus diletakkan pada bagian paling awal (sebelum deklarasi import) dari source code setiap kelas yang dibungkus package tersebut.
Bentuk umum deklarasi package :
package namaPackage;
Deklarasi tersebut akan memberitahukan kompilator, ke library manakah suatu kelas dikompilasi dan dirujuk.
Syarat nama package :
  1. Diawali huruf kecil
  2. Menggambarkan kelas-kelas yang dibungkusnya
  3. Harus unik (berbeda dengan nama package standard)
  4. Merepresentasikan path dari package tersebut.
  5. Harus sama dengan nama direktorinya.
Contoh package standard :
java.lang (berisi kelas-kelas fundamental yang sering digunakan).
java.awt dan javax.swing (berisi kelas-kelas untuk membangun aplikasi GUI)
java.io (berisi kelas-kelas untuk proses input output)
4.5.              Membuat Struktur Direktori
Pada langkah ini, buatlah direktori menggunakan file manager (di windows menggunakan explorer) sesuai struktur package dari langkah sebelumnya. Kemudian tempatkan kelas-kelas tersebut ke direktori yang bersesuaian (mirip seperti  menyimpan file-file ke dalam folder).
Package dapat bersarang di package lain, sehingga dapat dibuat hirarki package.
Bentuk umum pernyataan package multilevel :
package namaPackage1[.namaPackage2[.namaPackage3]];
Contoh hirarki package di JDK :
package java.awt.image;
4.6. Compile dan Run Kelas dari suatu Package
Selanjutnya masing-masing kelas tersebut dalam package tersebut dikompilasi menjadi byte code (*.class). Artinya package tersebut siap digunakan.

4.7.              Menggunakan Package
Ada dua cara menggunakan suatu package yaitu :
  1. Kelas yang menggunakan berada dalam direktori (package) yang sama dengan kelas-kelas yang digunakan. Maka tidak diperlukan import.
  2. Kelas yang menggunakan berada dalam direktori (package) yang berbeda dengan kelas-kelas yang digunakan. Maka pada awal source code di kelas pengguna harus mencantumkan :
import namaPackage.NamaKelas;  atau
import namaPackage.*;
Contoh :
import java.text.DecimalFormat;
import javax.swing.*;

4.8. Setting Classpath
Path hirarki package, didaftarkan sebagai salah satu nilai variabel lingkungan yang bernama Classpath.
Classpath diset dengan aturan : berawal dari drive (C:\ atau D:\) sampai dengan satu tingkat sebelum kita mendeklarasikan package.
3.Pengertian Casting Objek
Typecasting atau casting adalah proses konversi data dari tipe data tertentu ke tipe data yang lain.

Jenis Casting
Casting data dengan Tipe Primitive.
Pengkonversian nilai dari satu tipe ke tipe yang lainnya, dapat dilakukan pada casting tipe primitif. Umumnya digunakan antar tipe data numerik. Terdapat satu tipe data yang tidak dapat dikonversi, yaitu boolean.


Tipe Casting
Casting Implisit
Contoh:
(Deklarasi penyimpanan sebuah data integer dalam sebuah variabel dengan tipe data double)


 int numInt1ZS = 1;
int numInt2 = 2;
//hasilnya secara implisit tercasting menjadi double
double numDouble = numInt1/numInt2;


Casting Explisit
Contoh:

(dataType)value dataType - bentuk tipe data konversi
value - ekspresi yang me-return value dari tipe sumber
Casting Object
Casting objek terdapat dua jenis yaitu :
  • Casting Objek Implisit
  • Casting Objek Eksplisit
Penggunaan Casting
Casting diperlukan ketika kita akan “memaksa” penyesuaian dari satu tipe data ke tipe data lain.
Pada pemrograman berbasis objek casting diperlukan untuk menyesuaikan suatu tipe objek (class) ke tipe objek (class) lain.

Program Casting
Sedikit Tambahan Tentang Casting Objek

Casting Objek
Instance dari sebuah kelas dapat diubah ke instance kelas yang lain, dengan syarat kelas-kelas itu harus terhubung dengan mekanisme inheritance (kelas dengan subkelasnya).
Contoh :


 Employee merupakan super class dari VicePresident

Employee emp = new Employee();
VicePresident pre = new VicePresident();
Implisit casting
emp = pre;
Ekplisit casting
pre = (VicePresident) emp;
4.Pengertian  OVERLOADING DAN OVERRIDING
  • Overloading
Overloading adalah method dengan nama yang sama dengan method lain pada suatuclass tetapi dengan parameter yang berbeda. Tujuan dibuatnya overloading yaitu memudahkan penggunaan method dengan fungsi yang hampir sama.

Berikut Contoh dari Overloading pada java.

class Pertambahan{
public void tambah1(){
int a=5, b=10;
System.out.println("Hasil Pertambahann dari metod tambah1 ke-1 = "+(a+b));
}
//Metod tambah1 di overloading dengan 2 parameter (int x, int y)
public void tambah1(int x, int y){
System.out.println("Hasil Pertambahann dari metod tambah1 ke-2 = "+(x+y));
}
public static void main(String [] args){
Pertambahan pp;
pp = new Pertambahan();
pp.tambah1();//memanggil metod tambah1 ke-1
pp.tambah1(5,5);//memanggil metod tambah1 ke-2
}
}

Dari contoh di atas, method tambah1 pada class Pertambahan dioverloading, sehingga ada perbedaan parameter antara metod tambah1() dengan metod tambah1(int x, int y).
Output program overloading:



  • Overriding
Overriding adalah method subclass sama dengan method super class, parameternya sama tetapi pernyataan atau implementasinya berbeda.

Berikut contoh dari Overriding pada java dengan nama super calss nya adalah Nama dan sub class nya adalah Siapa.

class Nama{
public void Sapa(){
System.out.println("Achmad Cahya Aditya");
}
public static void main(String [] args){
Siapa ss;
Nama nn;
ss = new Siapa();
nn = new Nama();

ss.Sapa();//memanggil method Sapa() pada class Siapa
nn.Sapa();//memanggil method Sapa() pada class Nama
}
}
class Siapa extends Nama{
//Method Sapa() pada class Nama di override
public void Sapa(){
System.out.println("Yesica Dwi Lestari");
}
}

Pada program di atas terlihat bahwa method Sapa() pada super class(class Nama) di override disub class(class Siapa) . Parameter pada kedua class tersebut sama yaitu tidak mempunyai paramater alias kosong, tetapi perbedaannya adalah implementasinya yaitu mencetak kalimat yang berbeda.
Output program overriding:



5.Pengertian Pewarisan Interface
Interface adalah wadah dari kumpulan method yang bersifat abstrak atau tidak memiliki implementasi. Sedangkan method yang didefinisikan di dalam interface tersebut akan diimplementasikan oleh class yang mengimplementasikan interface tersebut. Interface merupakan bentuk perluasan dari kelas abstrak.
Selain method, interface juga dapat berisi sekumpulan variable, namun variable yang dideklarasikan di dalam interface harus bersifat final(nilainya tidak dapat diubah /konstan).
Sebagai contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut selain harus memiliki method standard sebagai seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat objek manusia yang bekerja sebagai penyanyi, harus dibuat kelas yang merupakan turunan kelas manusia yang meng-implementasikan interface penyanyi
Ciri-ciri dari interface
Method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.
Tidak bisa membuat instance atau objek baru dari sebuah interface.
Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.
Beberapa perbedaan Interface dan Abstract Class :
- Interface hanya bisa mendefinisikan Method, tidak bisa mengimplementasikan, sedangkan Abstrat Class bisa mengimplementasikan Method
- Interface tidak boleh terdiri dari field atau property, Abstract Class bias
- Interface tidak boleh terdiri dari konstruktor dan destruktor, sedangkan Abstract class bisa:
Abstract class
Interface
Bisa berisi abstract dan non-abstract method.
Hanya boleh berisi abstract method.
Kita harus menuliskan sendiri modifiernya.
Kita tidak perlu susah2 menulis public abstract di depan nama method. Karena secara implisit, modifier untuk method di interface adalah public danabstract.
Bisa mendeklarasikan constant dan instance variable.
Hanya bisa mendeklarasikan constant.  Secara implisit variable yang dideklarasikan di interface bersifatpublicstatic dan final.
Method boleh bersifat static.
Method tidak boleh bersifat static.
Method boleh bersifat final.
Method tidak boleh bersifat final.
Suatu abstact class hanya bisa meng-extend satu abstract class lainnya.
Suatu interface bisa meng-extend  satu atau lebih interface lainnya.
Suatu abstract class hanya bisa meng-extend satu abstract class dan meng-implement beberapa interface.
Suatu interface hanya bisa meng-extend interface lainnya.  Dan tidak bisa meng-implement class atau interface lainnya.

6. Pengertian Konstruktor
Konstruktor (construct) adalah sebuah method yang secara otomatis akan dijalankan ketika object dibuat (instansiasi). yaitu pada saat perintah new dijalankan.
Biasanya konstruktor digunakan untuk memberikan nilai awal pada sebuah objek. seperti pemberian nilai pada property atau pemanggilan method internal (method dalam class yang sama).

Karakteristik / sifat Konstruktor
·  nama konstruktor sama dengan nama kelas
·  tidak menggunakan kata kunci void.
·  tidak memiliki nilai balik

Penggunaan Konstruktor
class NamaKelas {
        NamaKelas() {
               // Lakukan Sesuatu
        }
}
membuat construct sama halnya dengan membuat method biasa akan tetapi nama method harus sama dengan nama kelas
Contoh :
class Kendaraan {
    // property
    int jumlah_roda;
     
    // membuat konstruktornya dengan parameter jml_roda
    Kendaraan(int jml_roda) {
        jumlah_roda = jml_roda;
    }
    
    // method (prosedur) untuk menampilkan jumlah_roda
    void tampilkanJumlahRoda() {
        System.out.print(jumlah_roda);
    }
}
class Contoh {
    public static void main(String[] args) {
        // membuat objek dengan nama motor dari kelas kendaraan dengan mengisi konstruktornya
        Kendaraan motor = new Kendaraan(2);
         
        // memanggil method untuk menampilkan
        motor.tampilkanJumlahRoda();
    }
}

Hasil :
-> 2

7.Pengertian Modifier
Access Modifier


Ada 4 Macam Acces Modifier di Java sesuai gambar di atas, yaitu:
  1. public
    Kelas, method maupun atribut yang mempunyai access modifier public dapat diakses dari manapun dan oleh kelas apapun.
     
  2. protected
    Atribut dan method yang mempunyai access modifier protected, artinya bahwa atribut dan method tersebut dapat diakses oleh kelas yang sama, package yang sama, dan kelas turunannya (subclass).
     
  3. default / no access
    Atribut dan method yang mempunyai access modifier default, artinya bahwa atribut dan method tersebut dapat diakses oleh kelas yang sama dan package yang sama.
     
  4. private
    Atribut dan method yang mempunyai access modifier default, artinya bahwa atribut dan method tersebut dapat diakses oleh kelas yang sama dan package yang sama.

Contoh Program

public class Manusia{
    //bersifat private agar dapat diakses hanya kelas Manusia
    private String nama;

    //bersifat protected agar dapat diakses oleh subclass nya 
    protected String jenisKelamin;

    public Manusia(String nama, String jenisKelamin){
        nama = nama;
        jenisKelamin = jenisKelamin; 
    } 

    public void setNama(String nama){
       this.nama = nama; 
    }

    public String getNama(){
      return nama; 
    }

    public void setJenisKelamin(String jenisKelamin){
      this.jenisKelamin = jenisKelamin; 
    }

    public String tampilkan(){
       return("Nama : "+nama +"\nJenis Kelamin : "+jenisKelamin); 
    } 
}

Non Access Modifier

Java menyediakan beberapa macam Non-Access Modifier, yaitu:
  1. static
    Static adalah salah satu jenis modifier di Java yang digunakan agar suatu atribut atau pun method dapat diakses oleh kelas atau objek tanpa harus melakukan instansiasi terhadap kelas tersebut.

    Method main adalah salah satu contoh method yang mempunyai modifier static.
     
  2. final
    Final adalah salah satu modifier yang digunakan agar suatu atribut atau method bersifat final atau tidak bisa diubah nilainya. Modifier ini digunakan untuk membuat konstanta di Java.
     
  3. abstract
    Abstract adalah modifier yang digunakan untuk membuat kelas dan method abstrak
     
  4. synchronized
    Synchronized adalah modifier yang digunakan dalam aplikasi Java berbasis thread. Modifier ini menspesifikasikan bahwa method merupakan thread safe. Artinya bahwa hanya ada satu jalur eksekusi pada method yang menggunakan modifier jenis ini dan memaksa thread thread lain menunggu giliran.
     
  5. native
    Modifier Native digunakan untuk spesifikasi method dengan implementasi di bahasa lain, seperti C, C++.
     
  6. transient
    Modifier ini digunakan agar suatu variable tidak bisa di serialisasi. Serialization adalah konsep dimana sebuah objek dapat ditransfer dari suatu aplikasi ke aplikasi lainnya atau dari suatu workstation ke workstation lainnya. Konsep ini sangat diperlukan ketika membuat aplikasi client server.

    Salah satu tujuan serialization adalah bahwa tidak boleh ada perubahan terhadap atribut pada saat objek di transformasikan menjadi stream.
     
  7. volatile
  8. implements
  9. extends 
8.Bentuk Umum Konstruktor
Konstruktor adalah method yang dieksekusi pertama kali setelah method main. Biasanya method konstruktor digunakn untuk memberikan nilai inisialisasi program. Nama dari method konstruktor harus sama dengan nama kelas.
Bentuk Umum:
class NamaKelas {
    NamaKelas() {
        // Lakukan Sesuatu
    }
}


Contoh kode

class Kendaraan {
    // property
    int jumlah_roda;
     
    // membuat konstruktornya dengan parameter jml_roda
    Kendaraan(int jml_roda) {
        jumlah_roda = jml_roda;
    }
     
    // method (prosedur) untuk menampilkan jumlah_roda
    void tampilkanJumlahRoda() {
        System.out.print(jumlah_roda);
    }
}

class Contoh {
    public static void main(String[] args) {
        // membuat objek dengan nama motor dari kelas kendaraan dengan mengisi konstruktornya
        Kendaraan motor = new Kendaraan(2);
         
        // memanggil method untuk menampilkan
        motor.tampilkanJumlahRoda();
    }
KEKesimpulan

Dari semua pengertian di atas ada banyak pengertian yang kalian pahami dan dapat kalian gunakan buat membikin suatu program di dalam OOP

Tidak ada komentar:

Posting Komentar