Transcript Intro1-Bab10-Membuat class sendiri
MEMBUAT 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 anggota class
access modifier
untuk mengatur akses ke
MENDEFINISIKAN CLASS
Beberapa hal yang perlu diperhatikan pada saat pendefinisian sintaks : * tersebut Digunakan untuk lebih dari 0 berarti bahwa boleh ada 0 atau lebih menggunakannya juga kejadian dari baris yang
MENDEFINISIKAN CLASS
Untuk mendefinisikan sebuah class, kita tuliskan :
}
adalah sebuah modifier bertipe access yang dapat dikombinasikan dengan modifier bertipe lainnya.
CONTOH
public class StudentRecord { //kita akan tambahkan kode di sini nantinya } public class StudentRecord
– digunakan supaya class dapat diakses oleh class-class lain di luar package – merupakan
keyword
yang digunakan untuk membuat class dalam Java – merupakan
identifier
mendeskripsikan class untuk
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,
INSTANCE VARIABLE
} public class StudentRecord { private String name; private String address; private int age; private double private double private double mathGrade; englishGrade; 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 yang digunakan dapat berbeda beda
dapat berupa tipe data (termasuk void)
dapat berupa identifier yang valid
METHOD ACCESSOR
Method Accessor digunakan untuk membaca
value variable
dari
class
(
instance/static
) ditulis dengan menggunakan sintaks berikut:
get
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 class
(
instance/static
)
variable
dari Ditulis dengan menggunakan sintaks berikut:
set
CONTOH
} public class StudentRecord { private String name; : public void setName( String temp ){ name = temp; } public void setName (String temp) – method dapat dipanggil oleh object-object di luar class – method tidak me-
return value
- nama method – parameter yang digunakan di dalam method
MULTIPLE RETURN STATEMENT
multiple return statement
sebuah
method
yang sama.
dapat digunakan dalam selama tidak berada pada
block
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 variable return 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 int
– method dapat dipanggil melalui sintaks :
[ClassName].[methodName]
Sebagai contoh, pada program, kita dapat memanggil method dengan sintaks :
StudentRecord.getStudentCount()
–
return type value
dari method. Method harus me-
return
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 Student StudentRecord annaRecord = new StudentRecord(); StudentRecord beahRecord = new StudentRecord(); StudentRecord crisRecord = new StudentRecord(); //Mengubah nama Student annaRecord.setName(“Anna”); beahRecord.setName(“Beah”); crisRecord.setName(“Cris”); //Mencetak nama Anna System.out.println(annaRecord.getName()); //Mencetak jumlah siswa Sistem.out.println(“Count=” +StudentRecord.getStudentCount()); }
OUTPUT PROGRAM
Anna Student Count = 0
REFERENCE ‘THIS’
this digunakan untuk mengakses
instance variable
oleh parameter yang dibayangi Reference ‘this’, dapat ditulis dengan menggunakan sintaks berikut ini,
this.
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 berbeda
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 method annaRecord.print(annaRecord.getName()); annaRecord.print(annaRecord.getEnglishGrade(), annaRecord.getMathGrade(), annaRecord.getScienceGrade());
OUTPUT PROGRAM
Output program yang tampil saat pemanggilan pertama,
Name:Anna Address:Philippines Age:15
Output program yang tampil saat pemanggilan pertama,
Name:Anna Math Grade:80.0
English Grade:95.5
Science Grade:100.0
CONSTRUCTOR
Constructor sangat penting dalam meng Constructor merupakan sebuah method yang digunakan untuk menempatkan semua penginisialisasian.
instatiate
sebuah object. 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,
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 p emanggil this() Hal yang perlu diperhatikan ketika menggunakan this() : − Pemanggil constructor this(), harus ada pada
statement
dalam constructor.
pertama − 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 Package
Merupakan 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 java.lang.*, sehingga class String dan Integer dapat langsung digunakan dalam program.
import
package 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
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 StudentRecord Exception 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 Unix pisahkan 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
akses, yang secara eksplisit harus ditulis.
tipe
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 variable int name; } //akses default ke method String 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 variable public int name; } //akses default ke method public 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 variable protected int name; } //akses default ke method protected 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 variable private int name; } //akses default ke method private String getName(){ return name; }
PETUNJUK PENULISAN PROGRAM
Instance variable
menjadi private, dari class harus dideklarasikan 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)