2. Contoh class
Hal yang penting dalam merancang sebuah class adalah menyembunyikan detail internal dari class tersebut kepada usernya (sudah pasti object class yang lain).Caranya : 1. Didalam sebuah class didefinisikan fungsi-fungsi yang disebut methods. Beberapa methods akan menentukan bagaimana contoh kejadian dari sebuah class dibuat, bagaimana melakukan equality test, dan bagaimana operasi output dilakukan. Ada juga methods yang yang hanya bekerja untuk suatu class tertentu. Ide dasarnya adalah internal data fields yang menjelaskan object's state tidak dapat dimanipulasi secara langsung oleh oleh class user tetapi hanya dapat dimanipulasi dengan menggunakan methods. 2. Data fields yang harus disembunyikan dinyatakan sebagai private, yang hanya bisa dihubungi oleh methods dari class yang bersangkutan. Public members bisa dilihat oleh class lain, sedangkan private members tidak. Selanjutnya perhatikanlah contoh berikut ini, yang merupakan sebuah classSegiEmpat: /*
*Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor. */ packagejavaapplicationluassegiempatclass; /** * *@authorjoko */ publicclassSegiEmpat{ privatedoublelebar; privatedoublepanjang; publicvoidisilebar(doublel){lebar=l;} publicvoidisipanjang(doublep){panjang=p;}; publicdoublenilailebar(){returnlebar;} publicdoublenilaipanjang(){returnpanjang;} publicdoublenilailuas(){returnlebar*panjang;} publicdoublenilaikeliling(){returnlebar+lebar+panjang+panjang;} } Selanjutnya class SegiEmpat tersebut digunakan didalam class lain : /* *Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor. */ packagejavaapplicationluassegiempatclass; /** * *@authorjoko
*/ publicclassMain{ /** *@paramargsthecommandlinearguments */ publicstaticvoidmain(String[]args){ //TODOcodeapplicationlogichere System.out.print("Hello"); SegiEmpatsg=newSegiEmpat(); sg.isilebar(15); sg.isipanjang(20); System.out.println("Lebaradalah:"+sg.nilailebar()); System.out.println("Panjangadalah:"+sg.nilaipanjang()); System.out.println("Luasnyaadalah:"+sg.nilailuas()); System.out.println("Kelilingnyaadalah:"+sg.nilaikeliling()); } Perhatikanlah bahwa untuk membaca fields yang bersifat private digunakan access method, misalnya adalah nilailebar yang digunakan untuk menampilkan private variable lebar. Selanjutnya perhatikanlah : 1. Anggota public bisa dihubungi/digunakan oleh class lain. 2. Anggota private tidak bisa dihubungi/digunakan oleh class lain 3. Fields adalah variable yang berisi nilai data. 4. Methods adalah anggota class yang melakukan action.
3. javadoc
Spesifikasi class merupakan representasi rancangan class dan memberitahu kepada pengguna apa yang bisa dilakukan dengan class tersebut. Implementasi memberitahukan bagaimana secara algoritma operasi yang dilakukan oleh sebuah class dilakukan. Yang jelas spesifikasi tersebut harus dapat dibaca dan dipahami oleh pengguna lain. Kalau didalam C++ spesifikasi dapat dilihat pada header file *.h, sedangkan source code dilihat pada *.cpp. Sedangkan bahasa java menggunakan pendekatan yang berbeda. Didalam bahasa java dokumentasi dapat dilaukan secara otomatis dengan menggunakan javadoc. javadoc secara otomatis akan menerbitkan dokumantasi untuk class dalam bentuk sehimpunan pernyataan HTML yang dapat dilihat atau dicetak oleh browser.
Source code dapat berisi dokumentasi javadoc. Dokumentasinya dimulai dengan /**. Disamping itu ada penanda khusus yang digunakan didalam javadoc : 1. @author 2. @param 3. @return 4. @throws
4. methods dasar
Ada beberapa methods dasar yang tidak boleh tidak diketahui oleh programmer bahasa java yaitu : 1. Mutators & accessors 2. Constructor 3. toString 4. equals 5. main
4.1. Constructor
Didalam bahasa java method yang mengendalikan bagaimana sebuah object di inisiasi disebut constructor. Karena adanya overloading maka sebuah class memiliki beberapa constructor. Jika tidak ada construktor yang secara eksplisit dibuat maka default contructor akan dibuat. default constructor tersebut akan menginisiasi data member menjadi 0 dan reference bernilai null. Untuk menuliskan constructor, akan ada method yang namanya persis sama dengan nama class dan return typenya tidak ada. Yang harus diperhatikan adalah jika sebuah constructor sudah dituliskan secara eksplisit maka constructor untuk melakukan inisiasi data member menjadi 0 dan reference bernilai null harus ditulis ulang.
mutator(methods yang merubah nilai variable/fields). Keuntungan penggunaan mutator adalah memastikan bahwa perubahan dari state didalam objects bersifat consistent.
4.4. equals
equals digunakan untuk menguji apakah dua buah object merepresentasikan nilai yang sama. Deklarasinya adalah : public boolean equals(Object rhs)
4.5. main
Interpreter java selalu mencari main. main adalah titik awal dari terseksekunyinya program. static method adalah object yang tidak memerlukan controlling object artinya memanggil methods dengan menuliskan nama class bukan object dari class.
sebagai contoh adalah class tanggal. public Tanggal() { this(1,1,2002); } Penggunaan yang lebih komples bisa saja dilakukan, tetapi yang harus diperhatikan adalah this harus diletakkan pada pernyataan program pertama dari constructor.
5.3 instanceof
instanceof digunakan untuk menguji apakah sebuah object merupakan instance dari(contoh kejadian) sebuah class
public class Contoh { private double varContoh1 private static double varContoh2; } varContoh2 merupakan sebuah variable yang digunakan bersama sama oleh beberapa instance dari class Contoh, sedangkan pada varContoh 1 setiap instance dari class Contoh akan memiliki sebuah variable tersebut. static field jiga digunakan untuk menyatakan sebuah constant :
public static final doube PI = 3.3.142857143; Static field dapat digunakan tanpa final sehingga merupakan variable global relative terhadap instance(s) dari class yang mendeklarasikan variable tersebut. Sebuah static field digunakan bersama sama oleh seluruh instance (bisa jadi nol) dari sebuah class. Sedangkan static method adalah method yang tidak memiliki this secara implicit : 1. Tidak bisa memanggil instance data tanpa object reference. 2. Tidak bisa memanggil instance methods tanpa object reference. Sehingga non static fields yang merupakan bagian instance dari class dapat diakses oleh static class method hanya jika controlling object diberikan.
6. package
package digunakan untuk mengelompokan class-class yang saling berhubungan atau yang serupa. Setiap package terdiri dari beberapa class. class-class yang terdapat didalam sebuah package memiliki visibility yang lebih dibandingkan dengan class-class yang diletakkan pada package yang berbeda. Java memiliki package-package yang dudah didefinisikan terlebih dahulu : 1. java.io 2. java.lang 3. java.util java.lang berisi package yang meliputi Integer, Math, String, System, dsb. java.util meliputi Data, Random, dan StringTokenizer. java.io digunakan untuk I/O dan meliputi bermacam-macam stream classes. Perhatikanlah bahawa didalam package yang disediakan oleh bahasa java, nama package adalah huruf kecil sedangkan nama class adalah huruf besar. Perhatikanlah contoh
dibawah ini : java.util.Date Tanggal = new java.util.Date( ); 1. java.util merupakan nama package 2. Date merupakan nama class 3. Tanggal merupakan Object yang berjenis Date 4. Date( ) merupakan sebuah constructor.
6.2 package
Untuk menyatakan bahwa sebuah class merupakan bagian dari sebuah package harus dinyatakan secara eksplisit : 1. Pernyataan package harus dinyatakan pada baris pertama 2. Kode program dari class harus diletakkan pada directory yang benar.
6.3 CLASSPATH
package akan dicari didalam directory yang disertakan didalam variable CLASSPATH. Aturan yang harus diikuti adalah : Sebuah class dialam sebuah package harus terletak didalam directory package yang dicari melalui CLASSPATH. &&&&&&