Kamis, 08 November 2012

BAB. 6 PACKAGE DAN JAVA KELAS



paket Java adalah mekanisme untuk mengatur kelas Java ke dalam ruang nama mirip dengan modul dari Modula. Paket-paket Java dapat disimpan dalam file yang dikompresi 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 dalam kategori yang sama atau menyediakan fungsi serupa.

    Sebuah paket menyediakan namespace yang unik untuk jenis yang dikandungnya.
    
Kelas dalam paket yang sama dapat mengakses paket-akses masing-masing anggota.

Ikhtisar

Secara umum, sebuah paket dapat berisi jenis berikut jenis. Sebuah paket memungkinkan pengembang untuk kelas kelompok (dan interface) bersama-sama. Kelas-kelas ini semua akan terkait dalam beberapa cara - mereka semua mungkin harus dilakukan dengan aplikasi tertentu atau melakukan serangkaian tertentu tugas. Java API adalah kumpulan paket - misalnya, paket javax.xml. Paket javax.xml dan subpackages yang mengandung kelas untuk menangani XML

Menggunakan paket


Dalam file sumber Java, paket yang kelas ini file atau kelas milik ditetapkan dengan kata kunci paket.
Kata kunci ini biasanya merupakan kata kunci pertama dalam file sumber.

Paket java.awt.event;


Untuk menggunakan kelas paket ini dalam file sumber Jawa, akan lebih mudah untuk mengimpor kelas dari paket dengan deklarasi impor.
Deklarasi berikut

mengimpor java.awt.event *;.

impor semua kelas dari paket java.awt.event, sedangkan deklarasi berikutnya

impor java.awt.event.ActionEvent;

impor hanya kelas ActionEvent dari paket. Setelah salah satu dari deklarasi impor, kelas ActionEvent dapat dirujuk menggunakan nama kelas sederhana:

ActionEvent MyEvent = new ActionEvent ();

Kelas juga dapat digunakan secara langsung tanpa deklarasi impor dengan menggunakan nama yang memenuhi syarat kelas. Misalnya,

java.awt.event.ActionEvent MyEvent = new java.awt.event.ActionEvent ();

tidak memerlukan deklarasi impor sebelumnya.

Perhatikan bahwa jika Anda tidak menggunakan deklarasi paket, kelas Anda berakhir di sebuah paket yang tidak disebutkan namanya [2] [3]. Kelas dalam paket yang tidak disebutkan namanya tidak dapat diimpor dari kelas-kelas dalam paket lain.

Paket akses perlindungan

Kelas-kelas dalam sebuah paket dapat mengakses kelas dan anggota dinyatakan dengan akses default dan anggota kelas dinyatakan dengan pengubah akses yang dilindungi. Akses standar diberlakukan ketika tidak pengubah akses publik, dilindungi atau swasta ditentukan dalam deklarasi. Sebaliknya, kelas dalam paket lain tidak dapat mengakses kelas dan anggota dinyatakan dengan akses default. Anggota kelas dinyatakan dilindungi dapat diakses dari kelas dalam paket yang sama serta kelas dalam paket lain yang subclass dari kelas menyatakan.


Penciptaan file JAR

File JAR diciptakan dengan utilitas baris perintah jar. Perintah

jar cf myPackage.jar *. kelas

kompres semua. kelas file ke file JAR myPackage.jar. The 'c' pilihan pada baris perintah memberitahu perintah jar untuk "menciptakan arsip baru." The 'f' pilihan mengatakan itu untuk membuat sebuah file. Nama file datang berikutnya sebelum isi dari file JAR.

Paket penamaan konvensi

Paket biasanya didefinisikan menggunakan pola penamaan hirarkis, dengan tingkat dalam hirarki dipisahkan oleh periode (diucapkan "dot") (.). Meskipun paket yang lebih rendah dalam hirarki penamaan sering disebut sebagai "subpackages" dari paket yang sesuai yang lebih tinggi dalam hirarki, hampir tidak ada hubungan semantik antara paket. Spesifikasi Bahasa Java menetapkan paket konvensi penamaan untuk menghindari kemungkinan dua paket yang diterbitkan memiliki nama yang sama. Konvensi penamaan menjelaskan cara membuat nama paket yang unik, sehingga paket yang didistribusikan secara luas akan memiliki ruang nama yang unik. Hal ini memungkinkan paket secara terpisah, mudah dan otomatis diinstal dan katalog.

Secara umum, nama paket dimulai dengan nama domain tingkat atas organisasi dan kemudian domain organisasi dan kemudian setiap subdomain, tercantum dalam urutan terbalik. Organisasi kemudian dapat memilih nama khusus untuk paket tersebut. Nama paket harus semua huruf kecil bila memungkinkan.

Sebagai contoh, jika sebuah organisasi di Kanada yang disebut MySoft menciptakan paket untuk berurusan dengan pecahan, penamaan ca.mysoft.fractions paket membedakan paket fraksi dari paket lain yang serupa yang dibuat oleh perusahaan lain. Jika sebuah perusahaan Jerman bernama MySoft juga menciptakan paket fraksi, tapi nama itu de.mysoft.fractions, maka kelas dalam dua paket didefinisikan dalam namespace yang unik dan terpisah.

Konvensi lengkap untuk disambiguating nama paket dan aturan untuk penamaan paket ketika nama domain Internet tidak dapat secara langsung digunakan sebagai nama paket yang dijelaskan dalam bagian 7.7 dari Spesifikasi Bahasa Jawa.

Contoh penggunaan package (dengan implementasinya):
class main di drive D:\Programku
class yang diakses ada di C:\Javaku\
Bilangan.java di simpan di di C:\Javaku\
package Bilangan;
public class Bilangan {
  private int desimal;
  public void setDesimal(int desimal) {
  if(desimal>=0) {
    this.desimal = desimal;
  }
  else {
    this.desimal = -desimal;
  }
}
  public int getDesimal() {
    return this.desimal;
  }
  public String biner() {
  String hasil="";
  int sisa = this.desimal;
  do {
    hasil = sisa % 2 == 1 ? "1" + hasil : "0" + hasil ;
    sisa /= 2;
  }
  while (sisa > 0);
  return hasil;
  }
}
Utama.java disimpan di D:\Programku
import Bernaz.Bilangan;
class Utama {
  public static void main(String[] args)          {
  Bilangan x = new Bilangan();
  x.setDesimal(-44);
  System.out.println("Bilangan biner dari "+ x.getDesimal() + " adalah "+ x.biner());
  }
}

Laporan Java

BAB 4. ABSTRACT CLASS, INTERFACE, INNER CLASS



1.         Abstract Class
Abstract class adalah suatu class yang dinyatakan abstract, umumnya memiliki satu atau abstract method, abstract method adalah suatu method yang belum memiliki implementasi dan menggunakan modifier abstract. Abstract class biasanya dijadikan parent atau super class dari kelas – kelas yang dapat membuat objek, abstract class tidak dapat diinstanisasi.
*         Analogi Inheritance dan Abstract Class :
Inheritence dapat dianalogikan seperti penggolongan kelas, ordo, phylum dalam biologi. Makhluk hidup dapat diturunkan atau diextend atau diperluas (di-inherit) menjadi burung, reptile, ikan dan lain – lain, jenjang penurunan tersebut disebut inheritance.
Kita mengetahui bahwa suatu kelas dapat diinstanisasi menjadi suatu objek, misal kelas manusia dapat diinstanisasi menjadi Joko, Susi, Ari, dan lain – lain, namun kita tidak mungkin dapat menginstanisasi kelas makhluk hidup, maupun kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang desebut sebagai abstract class, apabila class makhluk hidup mempunyai method bernafas, maka kita tidak dapat menentukan (meng-implementasikan) cara makhluk hidup tersebut bernafas, dengan paru – paru, insang atau stomata, dengan demikian kita dapat menyatakan bahwa di dalam kelas makhluk hidup, bernafas merupakan method yang abstract.
2.         Interface
Interface adalah suatu class yang berisi method – method tanpa imlementasi, namun tanpa modifier abstract, apabila suatu interface memiliki atribut, maka atributnya akan berlaku sebagai konstanta (static final).
*         Analogi Interface
Interface dapat dianaligikan sebagai kontrak yang dapat dipakai oleh setiap kelas. Dalam kehidupan nyata kita mengetahui bahwa ada yang bekerja sebagai penyayi, pengacara, pelawak, dsb, tentunya manusia –manusia tersebut selain harus memiliki method standar seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat seorang objek Joko penyayi kita harus membuat kelas yang merupakan turunan kelas manusia yang mengimplementasikan interface penyayi.
3.         Inner Class
Inner Class adalah kelas yang disisipkan  di dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner Class bersifat tersarang terhadap kelas – kelas utamanya, seperti halnya blok penyeleksian  (if, for) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.
*         Analogi Inner Class
Inner Class dapat dianalogikan sebagi hubungan antara manusia dan paru – paru. Setipa manusia pasti bernafas dengan menggunakan paru – paru. Dalam hal ini berarti kinerja dari paru – paru turut mendukung/menetukan kinerja dari manusia. Dalam bahasa pemrograman berorientasi objek manusia dapat dikatakan sebagai outer class dan paru – paru sebagai inner  class-nya.
LANGKAH - LANGKAH PRAKTIKUM 
 A. MEMBUAT PROGRAM MakhlukHidup.java
public abstract class MakhlukHidup {
        protected boolean BisaTerbang = false;
        protected String Nama;
        protected int JlhKaki;
        public MakhlukHidup(String Nama1, int JlhKaki,boolean BisaTerbang1) {
                this.Nama = Nama1;
                this.JlhKaki = JlhKaki;
                this.BisaTerbang = BisaTerbang1;
        }
        abstract void bernafas();
        public void status() {
                        System.out.println("Nama : " +Nama);
                        System.out.println("Jumlah Kaki : " +JlhKaki);
                        System.out.println("Bisa terbang : " +BisaTerbang);
                }
}
 
B. MEMBUAT PROGRAM Manusia.java
public class Manusia extends MakhlukHidup {
        Manusia (String nama) {
                super (nama, 2, false);
        }
        public void bernafas() {
                System.out.println(Nama+ " bernafas dengan menghirup O2");
        }
        public static void main (String [] args) {
                Manusia m = new Manusia ("Sayuti");
                m.status();
                m.bernafas();
        }
}
C. MEMBUAT PROGRAM Tumbuhan.java
public class Tumbuhan extends MakhlukHidup {
        Tumbuhan(String nama) {
                super (nama, 0, false);
        }
        public void bernafas() {
                System.out.println(Nama+ "bernafas dengan mengirup CO2");
        }
        public static void main(String [] args) {
                Tumbuhan t = new Tumbuhan("Bayam");
                t.status();
                t.bernafas();
        }
}
D. MEMBUAT PROGRAM Pekerjaan.java
interface Pekerjaan {
        public void namaPekerjaan();
        public void gaji();
}
E. MEMBUAT PROGRAM Sasya.java
public class Sasya extends Manusia implements Pekerjaan {
        public Sasya() {
                super ("Sasya");
        }
        public void namaPekerjaan() {
                System.out.println("Pekerjaan : Sekretaris");
        }
        public void gaji() {
                System.out.println("Gaji : Rp. 3.000.000");
        }
        public static void main(String[] args) {
                Sasya s = new Sasya();
                s.status();
                s.bernafas();
                s.namaPekerjaan();
                s.gaji();
        }
}
F. MEMBUAT PROGRAM JantungManusia.java
class Orang {
        private int jumlKaki = 2;
        public void dengarBunyiJantung() {
                Jantung j = new Jantung();
                j.bunyiJantung();
        }
        public void tahanNafas() {
                System.out.println("Jantung berhenti berdetak!");
        }
        //inner class
        class Jantung {
                public void bunyiJantung() {
                        System.out.println("deg...deg...deg...");
                }
                public void istirahat() {
                        System.out.println("Silangkan ke "+jumlKaki+" kaki.");
                        tahanNafas();
                }
        }
}
class JantungManusia {
        public static void main(String[] args) {
                Orang o = new Orang();
                Orang.Jantung p = o.new Jantung();
                o.dengarBunyiJantung();
        }
}

Kamis, 25 Oktober 2012

BAB 3. INFORMATION HIDING, ENCAPSULATION, INHERITANCE, DAN POLYMORHISM


Encapsulation
Latar Belakang Encapsulation
Vendor perangkat lunak computer merahasiakan source code produknya, user hanya diberitahu melalui manual cara menggunakan produknya. Programmer java pun tidak perlu mengetahui
bagaimana rinci source code dari modul antarmuka referensi (API), programmer hanya perlu tahu return value dan parameter milik method-methodnya, atau hanya perlu tahu parameter milik constructor- constructornya.
Information Hiding dan Encapsulation
Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private. Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.
Pewarisan (inheritance)
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
Contoh dari hierarki class :
http://ilovecico.files.wordpress.com/2010/04/srt.jpg?w=300&h=140
Superclass
Adalah class yang letaknya di atas class tertentu di dalam hierarki.
Subclass
Adalah class yang letaknya di bawah class tertentu        di dalam hierarki.
Meng-override method
—        Jika sebuah subclass menginginkan implementasi yang berbeda terhadap method dari superclassnya, maka salah satu caranya dapat dilakukan dengan meng-override method bersangkutan.
—        Sebuah subclass dapat meng-override method superclassnya dengan menyediakan sebuah implementasi baru untuk method tersebut.
Polymorphism
Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object.
polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan.
Untuk menjelaskan polymorphism, mari kita bahas sebuah contoh.
—        Pada contoh sebelumnya, kita diberikan parent class yaitu Person dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya dari Person yaitu Employee
Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya.
 A. MEMBUAT PROGRAM SuperClass.java
public class SuperClass{
          public SuperClass() {
                   System.out.println("Ini konstruktor milik SuperClass");
          }
          public void methodSuperClass() {
                   System.out.println("Ini method milik SuperClass");
          }
}
A.  MEMBUAT PROGRAM SubClass.java
public class SubClass extends SuperClass {
          public SubClass() {
                   super ();
          }
          public void methodSubClass() {
                   super.methodSuperClass();
          }
}
B.  MEMBUAT PROGRAM DemoInheritance.java
public class DemoInheritance{
          public static void main(String[] args) {
                   SubClass sc = new SubClass();
                   sc.methodSubClass();
          }
}
C.  MEMBUAT PROGRAM Persegi.java
public class Persegi {
          private double panjang;                                     //atribut yang di sembunyikan
          private double lebar;                                //atribut yang di sembunyikan
          private double tinggi;                              //atribut yang di sembunyikan
          public Persegi() {
                   panjang = 0;
                   lebar = 0;
          }
          private double luas(double p,double l) {
                   return p*l;
          }
          public void setPanjang (double panjang1) {
                   this.panjang = panjang1;
          }
          public void setLebar(double lebar1) {
                   this.lebar = lebar1;
          }
          public double getPanjang() {
                   return panjang;
          }
          public double getLebar() {
                   return lebar;
          }
          public double getLuas() {
                   return luas(panjang, lebar);
          }
}
D.  MEMBUAT PROGRAM MainPersegi.java
public class MainPersegi {
          public static void main(String[] args) {
                   Persegi pg = new Persegi();
                   pg.setPanjang(10);
                   pg.setLebar(20);
                   System.out.println("Panjang : "+pg.getPanjang());
                   System.out.println("Lebar : "+pg.getLebar());
                   System.out.println("Luas : "+pg.getLuas());
          }
}
E.  MEMBUAT PROGRAM Karyawan.java
abstract class Karyawan {
          int gaji;
          Karyawan() {
                   gaji = 1000000;
          }
          int getGaji() {
                   return gaji;
          }
          abstract void naikGaji();
}
F.   MEMBUAT PROGRAM Manager.java
class Manager extends Karyawan {
          Manager() {
                   gaji +=2000000;
          }
          void naikGaji() { gaji+=3000000; }
}
G.  MEMBUAT PROGRAM Receptionist.java
class Receptionist extends Karyawan {
          Receptionist() {
                   gaji +=1000000;
          }
          void naikGaji() { gaji+=1000000; }
}
H.  MEMBUAT PROGRAM Plymorphisme.java
class Polymorphisme {
          public static void main(String[] args) {
                   Karyawan K[] = new Karyawan[3];
                   K[0] = new Manager();
                   K[1] = new Receptionist();
                   K[2] = new Manager();
                   for (int i=0;i<3;i++)
                             System.out.println("Gaji karyawan "+i+" adalah "+K[i].getGaji());
                   for (int i=0;i<3;i++)
                             K[i].naikGaji();
                   for (int i=0;i<3;i++)
                             System.out.println("Gaji sekarang "+i+" adalah "+K[i].getGaji());
          }
}