JENI Slides-Intro1-Bab10-Membuat class sendiri
description
Transcript of JENI Slides-Intro1-Bab10-Membuat class sendiri
Pengenalan Pemrograman 1
Versi 2.0
Membuat class sendiriMembuat class sendiri
tujuan
Pada akhir pembahasan, peserta diharapkan mampu untuk : Membuat class Mendeklarasikan atribut dan method untuk class Menggunakan reference this untuk mengakses data
instance Membuat dan memanggil method overload Meng-import dan membuat package Menggunakan access modifier untuk mengatur
akses ke anggota class
Mendefinisikan class
Beberapa hal yang perlu diperhatikan pada saat pendefinisian sintaks :
* bahwa boleh ada 0 atau lebih kejadian dari baris tersebut yang menggunakannya juga
<description> menandakan bahwa Anda harus mensubtitusikan nilai sebenarnya
pada bagian ini daripada mengurangi penulisannya
[ ] menandakan bahwa bagian ini hanya pilihan
Mendefinisikan class
Untuk mendefinisikan sebuah class, kita tuliskan :
<modifier> class <name> { <attributeDeclaration>* <constructorDeclaration>* <methodDeclaration>* }
<modifier> adalah sebuah modifier bertipe access yang dapat dikombinasikan dengan modifier bertipe lainnya.
contoh
public class StudentRecord {//kita akan tambahkan kode di sini
nantinya}
public – digunakan supaya class dapat diakses oleh class-class lain di luar package
class – merupakan keyword yang digunakan untuk membuat class dalam Java
StudentRecord – merupakan identifier untuk mendeskripsikan class
Petunjuk penulisan program
◦ Gunakan nama yang sesuai untuk penamaan class. Disarankan untuk tidak menggunakan XYZ sebagai nama class atau nama asal-asalan lainnya.
◦ Nama class harus diawali dengan huruf KAPITAL.
◦ Penamaan file harus tepat sama dengan nama yang digunakan oleh class ber-modifier public.
Mendeklarasikan atribut
Pendeklarasian atribut dapat ditulis dengan menggunakan sintaks berikut ini,
<modifier> <type> <name> [= <default_value>];
Instance variablepublic class StudentRecord {
private String name;private String address;private int age;private double mathGrade;private double englishGrade;private double scienceGrade;private double average;//kita akan tambahkan kode di sini
}
private digunakan supaya variabel hanya dapat diakses dalam class.
Object lain tidak dapat mengakses variabel ini secara langsung.
Petunjuk penulisan program
◦ Semua instance variable dideklarasikan pada deklarasi class.
◦ Deklarasikan satu variabel untuk setiap baris.
◦ Instance variable, seperti variabel lainnya, penamaannya harus dimulai dengan huruf kecil.
◦ Gunakan tipe data yang sesuai untuk setiap variabel yang dideklarasikan.
◦ Deklarasikan instance variable sebagai private sehingga hanya class method yang dapat mengaksesnya secara langsung.
Class(static) variable
public class StudentRecord {//variabel instance yang telah kita deklarasikan
private static int studentCount;//kita tambahkan kode di sini
}
keyword static digunakan untuk menandai suatu static variable
Mendeklarasikan method
Pendeklarasian method dapat ditulis dengan menggunakan sintaks seperti di bawah ini,
<modifier> <returnType> <name>(<parameter>*) { <statement>*}
<modifier> modifier yang digunakan dapat berbeda-beda
<returnType> dapat berupa tipe data (termasuk void)
<name> dapat berupa identifier yang valid
<parameter> ::= <parameter_type> <parameter_name>[,]
Method accessor
Method Accessor
digunakan untuk membaca value dari class (instance/static) variable
ditulis dengan menggunakan sintaks berikut:
get<NameOfInstanceVariable>
dapat me-return value.
Contoh 1
public class StudentRecord {private String name;:public String getName(){
return name;}
}
public – method dapat dipanggil oleh object-object di luar class
String – return type dari method.method harus me-return value dengan tipe
String
getName – nama method
() – method tidak memiliki parameter
Contoh 2
public class StudentRecord {private String name;:public double getAverage(){double result = 0;result=(mathGrade+englishGrade+scienceGrade)/3;return result;
}}
Method mutator
Method Mutator
◦digunakan untuk menulis atau mengubah value dari class(instance/static) variable
◦Ditulis dengan menggunakan sintaks berikut:
set<NameOfInstanceVariable>
contoh
public class StudentRecord {private String name;:public void setName( String temp ){
name = temp;}
}
public – method dapat dipanggil oleh object-object di luar class
void – method tidak me-return value
setName - nama method
(String temp) – parameter yang digunakan di dalam method
Multiple return statement
◦multiple return statement dapat digunakan dalam sebuah method selama tidak berada pada block yang sama.
◦konstanta dapat digunakan untuk me-return value sebuah variabel
contoh
public String getNumberInWords( int num ){String defaultNum = "zero";if( num == 1 ){return "one"; //return a constant
}else if( num == 2){return "two"; //return a constant
}//return a variablereturn defaultNum;
}
Method static
public class StudentRecord {private static int studentCount;public static int getStudentCount(){
return studentCount;}
}
public – dapat dipanggil oleh object-object di luar class
static – method dapat dipanggil melalui sintaks :[ClassName].[methodName] Sebagai contoh, pada program, kita dapat
memanggil method dengan sintaks : StudentRecord.getStudentCount()
int – return type dari method. Method harus me-return value dengan tipe int
getStudentCount – nama method
() - method tidak mempunyai parameter
Petunjuk penulisan program
◦ Nama method harus diawali dengan huruf kecil.
◦ Nama method harus berupa kata kerja.
◦ Disarankan untuk selalu menyediakan dokumentasi sebelum deklarasi method. Anda dapat menggunakan style pada javadoc.
Source code 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;
Source code untuk class StudentRecord
/** * Me-return nama student */public String getName(){return name;
}
/** * mengubah nama student */public void setName( String temp ){name = temp;
}
Source code untuk class StudentRecord
/** * Menghitung nilai rata-rata dari bahasa inggris, * matematika, dan sains */public double getAverage(){double result = 0;result = ( mathGrade+englishGrade+scienceGrade )/3;return result;
}/** * Me-return jumlah instance dari StudentRecords */public static int getStudentCount(){return studentCount;
}
Contoh Source Code Penggunaan StudentRecord
Public class StudentRecordExample{public static void main(String args[]){
//Membuat tiga object untuk record StudentStudentRecord annaRecord = new
StudentRecord();StudentRecord beahRecord = new
StudentRecord();StudentRecord crisRecord = new StudentRecord();
//Mengubah nama StudentannaRecord.setName(“Anna”);beahRecord.setName(“Beah”);crisRecord.setName(“Cris”);
//Mencetak nama AnnaSystem.out.println(annaRecord.getName());
//Mencetak jumlah siswaSistem.out.println(“Count=”+StudentRecord.getStudentCount());
}}
Output program
AnnaStudent Count = 0
Reference ‘this’
thisdigunakan untuk mengakses instance variable yang dibayangi oleh parameter
Reference ‘this’, dapat ditulis dengan menggunakan sintaks berikut ini,
this.<namaInstanceVariable>
catatan : Reference ‘this’ hanya dapat digunakan untuk instance variable ,bukan untuk static
atau class variable
contoh
public void setAge( int age ){this.age = age;
}
Method overloading
Method overloading− penggunaan method dengan nama yang sama, parameter
berbeda, dan me-return value dengan return type yang berbeda
− Dapat digunakan ketika operator yang sama memiliki implementasi yang berbeda
Method overloading memiliki properti-properti berikut:− Nama yang sama− Parameter/argument berbeda (jumlah dan Type)− Return type dapat berbeda atau sama
contoh
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);
}
contoh
Public static void main(String args[]){StudentRecord annaRecord = new StudentRecord();
annaRecord.setName(“Anna”);annaRecord.setAddress(“Phillipines”);annaRecord.setAge(15);annaRecord.setMathGrade(80);annaRecord.setEnglishGrade(95.5);annaRecord.setScienceGrade(100);
//overloaded methodannaRecord.print(annaRecord.getName());annaRecord.print(annaRecord.getEnglishGrade(),
annaRecord.getMathGrade(),annaRecord.getScienceGrade());
}
Output program
Output program yang tampil saat pemanggilan pertama,
Name:AnnaAddress:PhilippinesAge:15
Output program yang tampil saat pemanggilan pertama,
Name:AnnaMath Grade:80.0English Grade:95.5Science Grade:100.0
constructor
Constructor sangat penting dalam meng-instatiate sebuah object. Constructor merupakan sebuah method yang digunakan untuk menempatkan semua penginisialisasian.
Constructor memiliki properti-properti, sbb:−Sebuah constructor seperti method yang lain, bagaimanapun
hanya informasi berikut yang dapat ditempatkan dalam kepala constructor, lingkup atau kemampuan identifier mengakses (seperti public...), nama constructor dan parameter.
−Constructor tidak memiliki return value.
−Constructor tidak dapat dipanggil langsung. Constructor hanya dapat dipanggil dengan menggunakan operator new pada saat class instantiation.
constructor
Constructor dapat dideklarasikan dengan menggunakan sintaks berikut ini,
<modifier> <className> (<parameter>*) { <statement>*}
Default constructor
Default Constructor− merupakan constructor tanpa parameter.
− default constructor secara implisit ada, jika class tidak mendeklarasikan constructor apapun.
contoh
public StudentRecord()
{
//source code disini
}
Constructor overloading
public StudentRecord(){//beberapa kode inisialisasi di sini
}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;
}
Menggunakan contructor
Berikut ini merupakan source code contoh penggunaan constructor,
public static void main( String[] args ){//membuat tiga object untuk record Student StudentRecord annaRecord = new StudentRecord("Anna");StudentRecord beahRecord = new StudentRecord("Beah",
"Philippines");StudentRecord crisRecord = new StudentRecord(80,90,100);
//beberapa kode di sini}
Pemanggil constructor ‘this()’
Sebuah constructor dapat dipanggil oleh constructor yang lain. Dalam hal ini, dapat digunakan pemanggil this()
Hal yang perlu diperhatikan ketika menggunakan this() :
− Pemanggil constructor this(), harus ada pada statement pertama dalam constructor.
− this() hanya digunakan dalam definisi constructor.
− this() dapat diikuti oleh statement yang relevan.
contoh
Public StudentRecord(){ this(“some string”);}
public StudentRecord(String temp){this.name = temp;}
Public static void main(String args[]){StudentRecord annaRecord = new StudentRecord()}
package
PackageMerupakan pengelompokan class dan interface, yang memiliki relasi dalam satu unit.
Package menyediakan mekanisme pengaturan kelompok class dan interface untuk menghindari konflik penamaan.
Meng-import package
Untuk dapat menggunakan class-class di luar package yang sedang Anda kerjakan, Anda perlu meng-import package dari class-class tersebut.
Program Java secara otomatis akan meng-import package java.lang.*, sehingga class String dan Integer dapat langsung digunakan dalam program.
suatu package dapat di-import dengan menggunakan sintaks:
import <nameOfPackage>;
contoh
import java.awt.Color;import java.awt.*;
Membuat package
Package dapat dideklarasikan dengan menggunakan sintaks:
package <namaPackage>;
Package juga dapat dibuat nested(bersarang). Dengan pengertian, interpreter Java mengharapkan struktur direktori yang berisi class-class yang dapat dieksekusi ke hierarki package yang cocok.
contoh
package SchoolClasses;
public class StudentRecord {private String name;private String address;private int age;:
Mengatur CLASSPATH
◦Package SchoolClasses harus ditempatkan di dalam direktori C:\
◦Pengaturan classpath harus merujuk pada direktori yang bersangkutan, sehingga ketika dijalankan, JVM dapat melihat dimana class-class tersebut disimpan.
◦mari kita lihat contoh pada slide berikut, apa yang akan terjadi jika kita tidak melakukan pengaturan classpath.
Mengatur CLASSPATH
Berikut ini merupakan hasil yang didapatkan, ketika class StudentRecord di-compile dan dijalankan,
C:\schoolClasses>javac StudentRecord.java
C:\schoolClasses>java StudentRecordException in thread "main" java.lang.NoClassDefFoundError: StudentRecord (wrong name: schoolClasses/StudentRecord) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Mengatur CLASSPATH
Pengaturan classpath dalam Windows, dapat dideklarasikan dengan menuliskan sintaks di bawah ini pada command prompt,
C:\schoolClasses> set classpath=C:\
C:\ adalah direktori dimana package ditempatkan.Setelah mengatur classpath, program dapat dijalankan
dimanapun, dengan mengetik,
C:\schoolClasses> java schoolClasses.StudentRecord
Mengatur CLASSPATH
Pada sistem berbasis Unix, class harus berada dalam direktori /usr/local/myClasses, dengan deklarasi sintaks,
export classpath=/usr/local/myClasses
Mengatur CLASSPATH
Pengaturan classpath dapat dilakukan dimana saja.
Classpath yang diatur boleh lebih dari satu, caranya :◦ Pada Windows
pisahkan classpath dengan menggunakan ‘;’
set classpath=C:\myClasses;D:\;E:\MyPrograms\Java
◦ Pada Unixpisahkan classpath dengan menggunakan ‘:’
export classpath=/usr/local/java:/usr/myClasses
Access modifier
Ada 4 tipe access modifier dalam Java:
− public− private− protected− Default
Default merupakan default access modifier, yang tidak menggunakan keyword
public, private, dan protected merupakan access modifier tipe akses, yang secara eksplisit harus ditulis.
Hak akses Default
Akses Default
− Hanya class-class dalam package yang sama yang memiliki akses ke class variable dan method
− Tidak ada keyword bagi modifier default
contoh
public class StudentRecord {//akses default ke instance variableint name;
//akses default ke methodString getName(){return name;
}}
Hak akses public
Akses public
Anggota class dapat diakses dari dalam maupun dari luar class.
Object apapun yang berinteraksi dengan class, memiliki akses ke anggota class yang ber-modifier public
Keyword : public
contoh
public class StudentRecord {//akses default ke instance variablepublic int name;
//akses default ke methodpublic String getName(){return name;
}}
Hak akses protected
Akses protected
Anggota class hanya dapat diakses oleh method dalam class dan subclass dari class
Keyword : protected
contoh
public class StudentRecord {//akses default ke instance variableprotected int name;
//akses default ke methodprotected String getName(){return name;
}}
Hak akses private
Akses private
Anggota class hanya dapat diakses oleh class yang mereka definisikan di dalamnya
Keyword : private
contoh
public class StudentRecord {//akses default ke instance variableprivate int name;
//akses default ke methodprivate String getName(){return name;
}}
Petunjuk penulisan program
Instance variable dari class harus dideklarasikan menjadi private, dan class hanya menyediakan method accessor dan mutator untuk variabel tersebut.
kesimpulan
◦ Mendefinisikan class-class◦ Mendeklarasikan Fields (instance, static/class)◦ Mendeklarasikan Method (accessor, mutator, static)◦ Me-return value dan multiple return statement◦ Reference ‘this’◦ Method overloading◦ Constructor (default, overloading, pemanggil this())◦ Package◦ Access Modifier (default, public, private, protected)