Anda di halaman 1dari 60

Membuat class sendiri

Pengenalan Pemrograman 1

Versi
2.0
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 variable
public 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 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 – 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 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 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 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-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

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

Anda mungkin juga menyukai