Download Membuat class sendiri

Document related concepts
no text concepts found
Transcript
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 berbedabeda
<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
private
private
private
private
private
private
private
String name;
String address;
int age;
double mathGrade;
double englishGrade;
double scienceGrade;
double average;
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)