JAVA CLASS DAN OBJECT
4.1 Mendefinisikan Class
Sebelum menulis class, pertama pertimbangkan dimana akan menggunakan class
dan bagaimana class tersebut akan digunakan. Pertimbangkan pula nama yang tepat
dan tuliskan seluruh informasi atau properti yang ingin diisikan pada class. Jangan
sampai terlupa untuk menuliskan secara urut method yang akan digunakan dalam
class.
Dalam pendefinisian class, dituliskan :
}
dimana :
modifier lain.
Pada bagian ini, kita akan membuat sebuah class yang berisi record dari siswa. Jika
kita telah mengidentifikasikan tujuan dari pembuatan kelas, maka dapat dilakukan
pemberian nama yang sesuai. Nama yang tepat pada class ini adalah StudentRecord.
Untuk mendefinisikan class, kita tuliskan :
public class StudentRecord
{
//area penulisan kode selanjutnya
}
dimana,
Public - Class ini dapat diakses dari luar package
Class - Keyword yang digunakan di pembuatan class Java
StudentRecord - Identifier yang menjelaskan class
4.2 Deklarasi Atribut
Dalam pendeklarasian atribut, kita tuliskan :
Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class.
Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan.
Contohnya, tidak mungkin menginginkan untuk menggunakan tipe data integer
untuk nama siswa, atau tipe data string pada nilai siswa.
Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord :
name - String
address - String
age -Int
math grade - double
english grade - double
science grade - double
average grade – double
4.3 Instance Variable
Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class, selanjutnya
kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut – atribut
tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka kita
harus mendeklarasikannya sebagai instance variable :
Sebagai contoh :
public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
//area penulisan kode selanjutnya
}
dimana,
private disini menjelaskan bahwa variabel tersebut hanya dapat diakses oleh class itu
sendiri. Object lain tidak dapat menggunakan variabel tersebut secara langsung.
4.4 Class Variable atau Static Variables
Disamping instance variable, kita juga dapat mendeklarasikan class variable atau
variabel yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua
object di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang
dimiliki dari seluruh kelas, kita dapat mendeklarasiakan satu static variable yang
akan menampung nilai tersebut. Kita beri nama variabel tersebut dengan nama
studentCount.
Berikut penulisan static variable :
public class StudentRecord
{
//area deklarasi instance variables
private static int studentCount;
//area penulisan kode selanjutnya
}
Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut
adalah static.
Maka keseluruhan kode yang dibuat terlihat sebagai berikut :
public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
//area penulisan kode selanjutnya
}
4.5 Deklarasi Methods
Sebelum kita membahas method apa yang akan dipakai pada class, mari kita
perhatikan penulisan method secara umum.
Dalam pendeklarasian method, kita tuliskan :
}
dimana,
4.6 Accessor Methods
Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang
object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari
class sebagai private. Namun, ada kalanya dimana kita menginginkan object lain
untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods.
Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa
instance maupun static. Sebuah accessor method umumnya dimulai dengan
penulisan get
value.
Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca
nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.
Mari kita perhatikan salah satu contoh implementasi accessor method.
public class StudentRecord
{
private String name;
::
public String getName(){
return name;
}
}
dimana,
public - Menjelaskan bahwa method tersebut dapat diakses object luar kelas
String - Tipe data return value dari method tersebut
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun
Pernyataan berikut, return name; dalam program kita menandakan akan ada
pengembalian nilai dari instance variable name pada pemanggilan method.
Perhatikan bahwa return type dari method harus sama dengan tipe data terhadap data
pada pernyataan return. Akana didapatkan pesan kesalahan sebagai berikut bila tipe
data yang digunakan tidak sama :
StudentRecord.java:14: incompatible types
found : int
required: java.lang.String
return age;
^
1 error
Contoh lain dari penggunaan accessor method adalah getAverage,
public class StudentRecord
{
private String name;
::
public double getAverage(){
double result = 0;
result = ( mathGrade+englishGrade+scienceGrade )/3;
return result;
}
}
Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan
nilai return value dengan nama result.
4.7 Mutator Methods
Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita
lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable
dalam class, baik itu berupa instance maupun static. Method semacam ini disebut
dengan mutator methods. Sebuah mutator method umumnya tertulis set
Mari kita perhatikan salah satu dari implementasi mutator method :
public class StudentRecord
{
private String name;
::
public void setName( String temp ){
name = temp;
}
}
dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar kelas
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan berikut :
name = temp; mengidentifikasi nilai dari temp sama dengan name dan
mengubah data pada instance variable name.
Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi
beberapa argumen dari program yang akan digunakan oleh method.
4.8 Multiple Return Statements
Sebuah method dapat mempunyai banyak return values selama tidak pada blok
program yang sama. Dapat juga menggunakan konstanta disamping variabel sebagai
return value.
Sebagai contoh, perhatikan method berikut ini :
public String getNumberInWords( int num ){
String defaultNum = "zero";
if( num == 1 ){
return "one"; //mengembalikan sebuah konstanta
}
else if( num == 2){
return "two"; //mengembalikan sebuah konstanta
}
// mengembalikan sebuah variabel
return defaultNum;
}
4.9 Static Methods
Kita menggunakan static method untuk mengakses static variable studentCount.
public class StudentRecord
{
private static int studentCount;
public static int getStudentCount(){
return studentCount;
}
}
dimana,
public - Menjelaskan bahwa method ini dapat diakses object luar kelas
static - Method ini adalah static dan pemanggilannya menggunakan [namaKelas].
[namaMethod].
Sebagai contoh :
studentRecord.getStudentCount
Int - Tipe return dari method. Mengindikasikan method tersebut harus mempunyai
return value berupa integer
getStudentCount - Nama dari method
public - Menjelaskan bahwa method ini dapat diakses object luar kelas
( ) - Method ini tidak memiliki parameter apapun
Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan return
value 0 jika kita tidak mengubah apapun pada kode program untuk mengatur
nilainya. Kita akan membahas pengubahan nilai dari studentCount pada pembahasan
constructor.
Berikut ini adalah kode untuk class StudentRecord :
public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
/**
* Menghasilkan nama dari Siswa
*/
public String getName(){
return name;
} /**
* Mengubah nama siswa
*/
public void setName( String temp ){
name = temp;
} // area penulisan kode lain
/**
* Menghitung rata – rata nilai Matematik, Bahasa Inggris, * * Ilmu Pasti
*/
public double getAverage(){
double result = 0;
result = ( mathGrade+englishGrade+scienceGrade )/3;
return result;
} /**
* Menghasilkan jumlah instance StudentRecord
*/
public static int getStudentCount(){
return studentCount;
}
}
Berikut ini contoh kode dari class yang mengimplementasikan class StudentRecord :
public class StudentRecordExample
{
public static void main( String[] args ){
//membuat 3 object StudentRecord
StudentRecord annaRecord = new StudentRecord();
StudentRecord beahRecord = new StudentRecord();
StudentRecord crisRecord = new StudentRecord();
//Memberi nama siswa
annaRecord.setName("Anna");
beahRecord.setName("Beah");
crisRecord.setName("Cris");
//Menampilkan nama siswa “Anna”
System.out.println( annaRecord.getName() );
//Menampilkan jumlah siswa
System.out.println("Count="+StudentRecord.getStudentCount());
}
}
Output dari program adalah sebagai berikut :
Anna
Student Count = 0
4.10 Referensi this
Referensi this digunakan untuk mengakses instance variable yang dibiaskan oleh
parameter. Untuk pemahaman lebih lanjut, mari kita perhatikan contoh pada method
setAge. Asumsikan kita mempunyai kode deklarasi berikut pada method setAge.
public void setAge( int age ){
age = age; //SALAH!!!
}
Nama parameter pada deklarasi ini adalah age, yang memiliki penamaan yang sama
dengan instance variable age. Parameter age adalah deklarasi terdekat dari method,
sehingga nilai dari parameter tersebut akan digunakan. Maka pada pernyataan :
age = age;
kita telah mengidentifikasi nilai dari parameter age kepada parameter itu sendiri. Hal
ini sangat tidak kita hendaki pada kode program kita. Untuk menghindari kesalahan
semacam ini, kita gunakan metode referensi this. Untuk menggunakan tipe referensi
ini, kita tuliskan :
this.
Sebagai contoh, kita dapat menulis ulang kode hingga tampak sebagai berikut :
public void setAge( int age ){
this.age = age;
}
Method ini akan mereferensikan nilai dari parameter age kepada instance variable
dari object StudentRecord.
4.11 Overloading Methods
Dalam class yang kita buat, kadangkala kita menginginkan untuk membuat method
dengan nama yang sama namun mempunyai fungsi yang berbeda menurut parameter
yang digunakan. Kemampuan ini dimungkinkan dalam pemrograman Java, dan
dikenal sebagai overloading method.
Overloading method mengijinkan sebuah method dengan nama yang sama namun
memiliki parameter yang berbeda sehingga mempunyai implementasi dan return
value yang berbeda pula. Daripada memberikan nama yang berbeda pada setiap
pembuatan method, overloading method dapat digunakan pada operasi yang sama
namun berbeda dalam implementasinya.
Sebagai contoh, pada class StudentRecord kita menginginkan sebuah method yang
akan menampilkan informasi tentang siswa. Namun kita juga menginginkan operasi
penampilan data tersebut menghasilkan output yang berbeda menurut parameter yang
digunakan. Jika pada saat kita memberikan sebuah parameter berupa string, hasil
yang ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita
memberikan 3 nilai dengan tipe double, kita menginginkan method tersebut untuk
menampilkan nama dan nilai dari siswa. Untuk mendapatkan hasil yang sesuai, kita
gunakan overloading method di dalam deklarasi class StudentRecord.
38
public void print( String temp ){
System.out.println("Name:" + name);
System.out.println("Address:" + address);
System.out.println("Age:" + age);
}
public void print(double eGrade, double mGrade, double sGrade){
System.out.println("Name:" + name);
System.out.println("Math Grade:" + mGrade);
System.out.println("English Grade:" + eGrade);
System.out.println("Science Grade:" + sGrade);
}
Jika kita panggil pada method utama (main) :
public static void main( String[] args )
{
StudentRecord annaRecord = new StudentRecord();
annaRecord.setName("Anna");
annaRecord.setAddress("Philippines");
annaRecord.setAge(15);
annaRecord.setMathGrade(80);
annaRecord.setEnglishGrade(95.5);
annaRecord.setScienceGrade(100);
//overloaded methods
annaRecord.print( annaRecord.getName() );
annaRecord.print( annaRecord.getEnglishGrade(),
annaRecord.getMathGrade(),
annaRecord.getScienceGrade());
}
Kita akan mendapatkan output pada panggilan pertama sebagai berikut :
Name:Anna
Address:Philippines
Age:15
Kemudian akan dihasilkan output sebagai berikut pada panggilan kedua :
Name:Anna
Math Grade:80.0
English Grade:95.5
Science Grade:100.0
Jangan dilupakan bahwa overloaded method memiliki property sebagai berikut :
1. Nama yang sama
2. Parameter yang berbeda
3. Nilai kembalian (return) bisa sama ataupun berbeda
4.12 Deklarasi Constructor
Telah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting pada
pembentukan sebuah object. Constructor adalah method dimana seluruh inisialisasi
object ditempatkan.
Berikut ini adalah property dari Constructor :
1. Constructor memiliki nama yang sama dengan class
2. Sebuah Constructor mirip dengan method pada umumnya, namun hanya
informasi –informasi berikut yang dapat ditempatkan pada header sebuah
constructor, scope atau identifikasi pengaksesan (misal: public), nama dari
konstuktor dan parameter.
3. Constructor tidak memiliki return value
4. Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil
dengan menggunakan operator new pada pembentukan sebuah class.
Untuk mendeklarasikan constructor, kita tulis,
}
4.12.1 Default Constructor
Setiap kelas memiliki default constructor. Sebuah default constructor adalah
constructor yang tidak memiliki parameter apapun. Jika sebuah class tidak memiliki
constructor apapun, maka sebuah default constructor akan terbuat secara implisit :
Sebagai contoh, pada class StudentRecord, bentuk default constructor akan terlihat
seperti dibawah ini :
public StudentRecord()
{
//area penulisan kode
}
4.12.2 Overloading Constructor
Seperti telah kita bahas sebelumnya, sebuah constructor juga dapat dibentuk menjadi
overloaded. Dapat dilihat pada 4 contoh sebagai berikut :
public StudentRecord(){
//area inisialisasi kode;
}
public StudentRecord(String temp){
this.name = temp;
}
public StudentRecord(String name, String address){
this.name = name;
this.address = address;
}
public StudentRecord(double mGrade, double eGrade, double sGrade){
mathGrade = mGrade;
englishGrade = eGrade;
scienceGrade = sGrade;
}
4.12.3 Menggunakan Constructor
Untuk menggunakan constructor, kita gunakan kode – kode sebagai berikut :
public static void main( String[] args )
{
//membuat 3 objek
StudentRecord annaRecord=new StudentRecord("Anna");
StudentRecord beahRecord=new StudentRecord("Beah","Philippines");
StudentRecord crisRecord=new StudentRecord(80,90,100);
//area penulisan kode selanjtunya
}
Sebelum kita lanjutkan, mari kita perhatikan kembali deklarasi static variable
studentCount yang telah dibuat sebelumnya. Tujuan deklarasi studentCount adalah
untuk menghitung jumlah object yang dibentuk pada class StudentRecord. Jadi, apa
yang akan kita lakukan selanjutnya adalah menambahkan nilai dari studentCount
setiap kali setiap pembentukan object pada class StudentRecord. Lokasi yang tepat
untuk memodifikasi dan menambahkan nilai studentCount terletak pada constructornya,
karena selalu dipanggil setiap kali objek terbentuk. Sebagai contoh :
public StudentRecord(){
//letak kode inisialisasi
studentCount++; //menambah student
}
public StudentRecord(String temp){
this.name = temp;
studentCount++; //menambah student
}
public StudentRecord(String name, String address){
this.name = name;
this.address = address;
studentCount++; //menambah student
}
public StudentRecord(double mGrade, double eGrade, double sGrade){
mathGrade = mGrade;
englishGrade = eGrade;
scienceGrade = sGrade;
studentCount++; //menambah student
}
4.12.4 Pemanggilan Constructor Dengan this()
Pemanggilan constructor dapat dilakukan secara berangkai, dalam arti dapat
memanggil constructor di dalam constructor lain. Pemanggilan dapat dilakukan
dengan referensi this(). Perhatikan contoh kode sebagai berikut :
1: public StudentRecord(){
2: this("some string");
3:
4: }
5:
6: public StudentRecord(String temp){
7: this.name = temp;
8: }
9:
10: public static void main( String[] args )
11: {
12:
13: StudentRecord annaRecord = new StudentRecord();
14: }
Dari contoh kode diatas, pada saat baris ke 13 dipanggil akan memanggil constructor
dasar pada baris pertama. Pada saat baris kedua dijalankan, baris tersebut akan
menjalankan constructor yang memiliki parameter String pada baris ke-6.
Beberapa hal yang patut diperhatikan pada penggunaan this() :
1. Harus dituliskan pada baris pertama pada sebuah constructor
2. Hanya dapat digunakan pada satu definisi constructor. Kemudian metode ini dapat
diikuti dengan kode – kode berikutnya yang relevan
4.13 Access Modifiers
Pada saat membuat, mengatur properties dan class methods, kita ingin untuk
mengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai
contoh, jika diinginkan beberapa atribut hanya dapat diubah hanya dengan method
tertentu, jika diinginkan menyembunyikannya dari object lain pada class. Di JAVA,
implementasi tersebut disebut dengan access modifiers.
Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan
default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk
mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default,
tidak diperlukan penulisan keyword atas tipe.
4.13.1 Akses Default (Package Accessibility)
Tipe ini mempersyaratkan bahwa hanya class dalam package yang sama yang
memiliki hak akses terhadap variabel dan methods dalam class. Tidak terdapat
keyword pada tipe ini.
Sebagai contoh :
public class StudentRecord
{
//akses dasar terhadap variabel
int name;
//akses dasar terhadap metode
String getName(){
return name;
}
}
Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object
lain selama object tersebut berada pada package yang sama dengan letak dari file
StudentRecord.
4.13.2 Akses Public
Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar
class. Object apapun yang memiliki interaksi pada class memiliki akses penuh
terhadap member dari tipe ini. Sebagai contoh :
public class StudentRecord
{
//akses dasar terhadap variabel
public int name;
//akses dasar terhadap metode
public String getName(){
return name;
}
}
Dalam contoh ini, variabel name dan method getName() dapat diakses dari object
lain.
4.13.3 Akses Protected
Tipe ini hanya mengijinkan class member untuk diakses oleh method dalam class
tersebut dan elemen – elemen subclass. Sebagai contoh :
public class StudentRecord
{
//akses pada variabel
protected int name;
//akses pada metode
protected String getName(){
return name;
}
}
Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh
method internal class dan subclass dari class StudentRecord. Definisi subclass akan
dibahas pada bab selanjutnya.
4.13.4 Akses Private
Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe
ini dibuat. Sebagai contoh :
public class StudentRecord
{
//akses dasar terhadap variabel
private int name;
//akses dasar terhadap metode
private String getName(){
return name;
}
}
Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh
method internal class tersebut.
It is perfect time to make a few plans for the
BalasHapusfuture and it's time to be happy. I have learn this post and if I could I desire to suggest you few fascinating things or advice. Perhaps you can write next articles regarding this article. I wish to read more issues approximately it!
Here is my weblog :: laser cellulite treatment