Selasa, 18 Maret 2014

Class Abstract,Package, Interface, Pewarisan Interface pada java

Class Abstract dan method abstract
Pada Class abstract kita buat contoh seperti membuat superclass bernama LivingThing. class ini mempunyai method tertentu seperti  eat, sleep, dan walk. Akan tetapi, ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method walk. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti sapi berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini.


Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract.
Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang mungkin pada object dari seluruh subclasses dalam class. Bentuk umumnya sebagai berikut :
                        abstract class namaKelas{
                         //badan kelas  }

Ada beberapa aturan dalam penulisan class abstract :
·         Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.
·         Sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.
·         Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya.
·         Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.

Method dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci abstract. Bentuk umumnya sebagai berikut :
                        abstract tipe namaMethod(daftar-parameter);  

contoh :
public abstract void someMethod();
Sekarang mari membuat contoh class abstract.
public abstract class LivingThing {
public void breath(){
System.out.println("Living Thing breathing..."); }
public void eat(){
System.out.println("Living Thing eating..."); }
/**
* abstract method walk
* Kita ingin method ini di-overridden oleh subclasses */
public abstract void walk(); }
Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override method abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu tidak dapat di-instantiate. Contohnya,
public class Human extends LivingThing
{
public void walk(){
System.out.println("Human walks...");
} }
Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error berikut ini,

Human.java:1: Human is not abstract and does not override abstract method walk() in LivingThing
public class Human extends LivingThing
^
1 error

Petunjuk penulisan program:
Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi pada hirarki pemrograman berbasis object, dan gunakan subclassesnya untuk menyediakan rincian dari class abstract.

PACKAGE
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.
Fungsi Package
mengelompokkan file kelas yang terkait (karena jenisnya, fungsinya atau karena alasan lainnya) pada direktori yang sama, dimana di dalam setiap kelasnya terdapar directive (statement java dalam code yang digunakan untuk membuat  kelas) package yang mengacu pada direktori tersebut.
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.
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.
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 :
Deklarasi package harus diletakkan pada bagian paling awal (sebelum deklarasi import) darisource 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. Contoh:
Package ContohPKg;
Dimana java menggunakan sistem direktori untuk menyimpan paket yang dibuat. Sebagai contoh apabila kita membuat paket dengan nama ContohPkg , maka kita harus memiliki sebuah direktori bernama ContohPkg di dalam tempat kita membuat kode program utama. Dan nama paket dan nama direktori harus benar benar sama penulisan hurufnya.
Syarat nama package :
·         Diawali huruf kecil
·         Menggambarkan kelas-kelas yang dibungkusnya
·         Harus unik (berbeda dengan nama package standard)
·         Merepresentasikan path dari package tersebut.
·         Harus sama dengan nama direktorinya.
Contoh package standard :
1.      java.lang (berisi kelas-kelas fundamental yang sering digunakan).
2.      java.awt dan javax.swing (berisi kelas-kelas untuk membangun aplikasi GUI)
3.      java.io (berisi kelas-kelas untuk proses input output)
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 di dalam package :
package namaPackage1[.namaPackage2[.namaPackage3]];
Contoh hirarki package di JDK :
package java.swing.event ;
File kode .java dan file .class dari paket tersebut harus disimpan di dalam direktori java/swing/event (dalam sistem operasi windows maupun Unix/Linux) paket yg dibuat tidak dapat diubah tanpa mengubah nama directorinya.
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.
Menggunakan Package
Ada dua cara menggunakan suatu package yaitu :
Kelas yang menggunakan berada dalam direktori (package) yang sama dengan kelas-kelas yang digunakan. Maka tidak diperlukan import.
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.*;

                                                                           INTERFACE
                                                                     Pengertian 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.

perbedaan class abstract dan interface
         Abstract Class dikatakan Abstract karena class tersebut tidak diimplementasikan secara langsung di class tersebut. Melainkan diimplementasikan di class lain yang merupakan class anak dari abstract class itu. Itulah sebabnya dinamakan abstract class. Berikut perbedaan antara class abstract dengan interface:
·         Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya hanya berupa konstanta
·         Method pada abstract class dapat berupa method kongkrit dan method abstract. Sedangkan pada interface semua method harus berupa method abstract.
·         Interface Class jelas berbeda dengan abstract class. Karena class ini mengimplementasikan methodnya di class lain dihubungkan dengan kata "implements". Method class interface tadi diimplementasikan dengan nama method yang sama di class yang diimplementasikan.
Contoh Abstract Class :

   public abstract class MahlukHidup {
          protected boolean BisaTerbang = false;
          protected String Nama;
                   abstract void bernafas ( ) ;
                                                                           
      Dari contoh di atas dapat kita lihat bahwa pada abstract class Mahluk hidup terdapat 1 method yang tidak memiliki implementasi. Implementasi method bernafas nanti akan diimplementasikan di class anak karena biasanya class abstract dapat menjadi class induk.

 Contoh Interface Class :
interface Pekerjaan {
           public void namaPekerjaan ( ) ;



                                                            
                  Pada contoh interface class di atas  dapat dilihat perbedaan antara abstract
class dan interface class. Interface class memiliki method yang tidak memiliki im- plementasi.

Pewarisan Interface
Sebuah kelas dapat mewarisi interface dengan menggunakan kata kunci implements, dimana kelas tersebut dapat mewarisi beberapa interface.
Contoh Mewarisi Interface 
public class NamaKelas 
    implements NamaInterface {
    public void namaProsedur(){
        // isi prosedur     }
    public TipeData namaFungsi(){
        // isi fungsi     }}

Pewarisan Antar Interface Interface dapat mewarisi interface lainnya menggunakan kata kunci extends.
Interface dapat mewarisi lebih dari satu interface.

Contoh Pewarisan Antar Interface
public interface NamaInterface
    extends InterfaceLain, InterfaceDua {
    // isi interface }

Sumber:
http://rimanda567rifarifiy.blogspot.com/p/abstact-class.html
https://www.google.com/#q=+pewarisan+interface
https://www.google.com/#q=+peckage+pada+java

http://www.termasmedia.com/2012-05-29-02-56-17/java/118-pengertian-fungsi-dan-kegunaan-paket-package-di-java.html

4 komentar:

 

Dinar Dwi Cahya Template by Ipietoon Cute Blog Design and Bukit Gambang