JENI Slides-Intro1-Bab10-Membuat class sendiri

Post on 06-Jun-2015

651 views 1 download

description

Membuat class sendiri

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)