Intro1-Bab10-Membuat class sendiri

Download Report

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 menandakan bahwa Anda harus mensubtitusikan nilai sebenarnya pada bagian ini daripada mengurangi penulisannya [ ] pilihan menandakan bahwa bagian ini hanya

MENDEFINISIKAN CLASS

Untuk mendefinisikan sebuah class, kita tuliskan :

} class { * * *

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)