JENI Slides-Intro1-Bab10-Membuat class sendiri

60
Pengenalan Pemrograman 1 Versi 2.0 Membuat class sendiri Membuat class sendiri

description

Membuat class sendiri

Transcript of JENI Slides-Intro1-Bab10-Membuat class sendiri

Page 1: JENI Slides-Intro1-Bab10-Membuat class sendiri

Pengenalan Pemrograman 1

Versi 2.0

Membuat class sendiriMembuat class sendiri

Page 2: JENI Slides-Intro1-Bab10-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 access modifier untuk mengatur

akses ke anggota class

Page 3: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 4: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 5: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 6: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 7: JENI Slides-Intro1-Bab10-Membuat class sendiri

Mendeklarasikan atribut

Pendeklarasian atribut dapat ditulis dengan menggunakan sintaks berikut ini,

<modifier> <type> <name> [= <default_value>];

Page 8: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 9: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 10: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 11: JENI Slides-Intro1-Bab10-Membuat class sendiri

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>[,]

Page 12: JENI Slides-Intro1-Bab10-Membuat class sendiri

Method accessor

Method Accessor

digunakan untuk membaca value dari class (instance/static) variable

ditulis dengan menggunakan sintaks berikut:

get<NameOfInstanceVariable>

dapat me-return value.

Page 13: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 14: JENI Slides-Intro1-Bab10-Membuat class sendiri

Contoh 2

public class StudentRecord {private String name;:public double getAverage(){double result = 0;result=(mathGrade+englishGrade+scienceGrade)/3;return result;

}}

Page 15: JENI Slides-Intro1-Bab10-Membuat class sendiri

Method mutator

Method Mutator

◦digunakan untuk menulis atau mengubah value dari class(instance/static) variable

◦Ditulis dengan menggunakan sintaks berikut:

set<NameOfInstanceVariable>

Page 16: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 17: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 18: JENI Slides-Intro1-Bab10-Membuat class sendiri

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;

}

Page 19: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 20: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 21: JENI Slides-Intro1-Bab10-Membuat class sendiri

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;

Page 22: JENI Slides-Intro1-Bab10-Membuat class sendiri

Source code untuk class StudentRecord

/** * Me-return nama student */public String getName(){return name;

}

/** * mengubah nama student */public void setName( String temp ){name = temp;

}

Page 23: JENI Slides-Intro1-Bab10-Membuat class sendiri

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;

}

Page 24: JENI Slides-Intro1-Bab10-Membuat class sendiri

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());

}}

Page 25: JENI Slides-Intro1-Bab10-Membuat class sendiri

Output program

AnnaStudent Count = 0

Page 26: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 27: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public void setAge( int age ){this.age = age;

}

Page 28: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 29: JENI Slides-Intro1-Bab10-Membuat class sendiri

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);

}

Page 30: JENI Slides-Intro1-Bab10-Membuat class sendiri

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());

}

Page 31: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 32: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 33: JENI Slides-Intro1-Bab10-Membuat class sendiri

constructor

Constructor dapat dideklarasikan dengan menggunakan sintaks berikut ini,

<modifier> <className> (<parameter>*) { <statement>*}

Page 34: JENI Slides-Intro1-Bab10-Membuat class sendiri

Default constructor

Default Constructor− merupakan constructor tanpa parameter.

− default constructor secara implisit ada, jika class tidak mendeklarasikan constructor apapun.

Page 35: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public StudentRecord()

{

//source code disini

}

Page 36: JENI Slides-Intro1-Bab10-Membuat class sendiri

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;

}

Page 37: JENI Slides-Intro1-Bab10-Membuat class sendiri

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}

Page 38: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 39: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

Public StudentRecord(){ this(“some string”);}

public StudentRecord(String temp){this.name = temp;}

Public static void main(String args[]){StudentRecord annaRecord = new StudentRecord()}

Page 40: JENI Slides-Intro1-Bab10-Membuat class sendiri

package

PackageMerupakan pengelompokan class dan interface, yang memiliki relasi dalam satu unit.

Package menyediakan mekanisme pengaturan kelompok class dan interface untuk menghindari konflik penamaan.

Page 41: JENI Slides-Intro1-Bab10-Membuat class sendiri

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>;

Page 42: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

import java.awt.Color;import java.awt.*;

Page 43: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 44: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

package SchoolClasses;

public class StudentRecord {private String name;private String address;private int age;:

Page 45: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 46: JENI Slides-Intro1-Bab10-Membuat class sendiri

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)

Page 47: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 48: JENI Slides-Intro1-Bab10-Membuat class sendiri

Mengatur CLASSPATH

Pada sistem berbasis Unix, class harus berada dalam direktori /usr/local/myClasses, dengan deklarasi sintaks,

export classpath=/usr/local/myClasses

Page 49: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 50: JENI Slides-Intro1-Bab10-Membuat class sendiri

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.

Page 51: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 52: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public class StudentRecord {//akses default ke instance variableint name;

//akses default ke methodString getName(){return name;

}}

Page 53: JENI Slides-Intro1-Bab10-Membuat class sendiri

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

Page 54: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public class StudentRecord {//akses default ke instance variablepublic int name;

//akses default ke methodpublic String getName(){return name;

}}

Page 55: JENI Slides-Intro1-Bab10-Membuat class sendiri

Hak akses protected

Akses protected

Anggota class hanya dapat diakses oleh method dalam class dan subclass dari class

Keyword : protected

Page 56: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public class StudentRecord {//akses default ke instance variableprotected int name;

//akses default ke methodprotected String getName(){return name;

}}

Page 57: JENI Slides-Intro1-Bab10-Membuat class sendiri

Hak akses private

Akses private

Anggota class hanya dapat diakses oleh class yang mereka definisikan di dalamnya

Keyword : private

Page 58: JENI Slides-Intro1-Bab10-Membuat class sendiri

contoh

public class StudentRecord {//akses default ke instance variableprivate int name;

//akses default ke methodprivate String getName(){return name;

}}

Page 59: JENI Slides-Intro1-Bab10-Membuat class sendiri

Petunjuk penulisan program

Instance variable dari class harus dideklarasikan menjadi private, dan class hanya menyediakan method accessor dan mutator untuk variabel tersebut.

Page 60: JENI Slides-Intro1-Bab10-Membuat class sendiri

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)