Download - class dan method
I F 3 0 7 – P E M R O G R A M A N B E R O R I E N T A S I O B J E K
NIKO IBRAHIM , MIT
UNIVERSITA S KRISTEN MARANATHA
2010
Class, Method, dan Package/Library
Today‟s Menu
• METHODS AND PARAMETERS– Parameters
– Arguments (passed values)
– Example: Parameters Vs Arguments
– Introduction to aLibrary
– Example: Rising Sun
• EVENTS & METHODS– Program driven code
– GUI: Graphical User Interface
– Event driven code
– Access Specifiers: public, private, protected
– Defining parameters
– Parameters Vs Attributes
– Local variables
• CONTROL FLOW– Non-void methods
– Return Statement
– Method call control flow
Divide & Conquer
Program komputer yang digunakan di dunia nyatabiasanya memiliki arsitektur yang kompleks sertaterdiri dari ribuan bahkan jutaan baris kode.
Kita tidak mungkin menyimpan kode tersebutdalam satu method, misalnya hanya di main method saja.
Berdasarkan pengalaman, cara terbaik untukmengembangkan dan memelihara program besaradalah dengan cara membuat program ke dalammodul-modul yang lebih kecil.
Teknik ini dikenal dengan istilah divide and conquer.
Program Modules in Java
Ada 3 jenis modul di dalam pemrograman berbasis Java:
Methods
Classes
Packages
Pada dasarnya, program berbasis Java ditulis dengan mengkombinasikan method & class baru dengan method-method yang telah ada di dalam Java Application Programming Interface (Java API), serta ditambah dengan library class lainnya.
Class-class yang berhubungan biasanya dikelompokkan ke dalam package sehingga bisa dimport dan di-reuse oleh program lain.
Java API menyediakan koleksi class yang sangat banyak. Setiap class ini berisi methods untuk melakukan banyak hal seperti kalkulasi matematis, manipulasi string, operasi I/O, operasi basis data, operasi jaringan, pemrosesan file, eror checking, dll.
Silahkan lihat di: jdk6doc yang telah diberikan! Klik link di bagian Java API untuk melihat daftar class + method-nya.
Review: Pembuatan Method
Mobil.javapublic class Mobil {
private int kecepatan; // instance var
public void setKecepatan (int n){ // method
kecepatan = n;
}
public int getKecepatan(){ // method
return kecepatan;
}
}
Review: Pemanggilan MethodBuat objek mobil, lalu panggil method-nya
MobilApp.java
public class MobilApp{
public static void main(String[] args){
Mobil m1= new Mobil(); // buat dulu objek-nya
m1.setKecepatan(10); // baru, panggil method-nya
System.out.println("Kecepatan saat ini: " +
m1.getKecepatan());
}
}
Review: Method Parameter
parameter: suatu penampung nilai dari argumen suatu method
Contoh method dengan parameter:
public void moveLeft(int step){
//satu parameter dengan nama “step” }
Berikut cara memanggil method dengan parameter:
moveLeft(10); // step = 10
Suatu method dapat memiliki lebih dari satu parameter, contoh:public void moveTo(int x, int y){
// parameter x,y menyatakan posisi}
Cara memanggil:moveTo(100, 200); // x = 100, y = 200
Review: Method Arguments(passed value)
Nilai argumen dapat berupa:
Bilangan, contoh: 42, 3.14159
Teks, contoh: "Hello"
Objects: referensi pada object
Posisi argumen yang diberikan pada saat memanggilmethod harus sesuai dengan posisi parameter
Tipe argumen harus cocok dengan tipe parameter
Contoh 1: parameters vs arguments(perhatikan warna tulisan)
Date.java:
public class Date{ // contructor tidak ditulis, secara default Date()
private int day; // secara default day = 0
private int month; // secara default month = 0
private int year; // secara default year = 0
public void setDate(int newDay, int newMonth, int newYear){ //parameters
day = newDay;
month = newMonth;
year = newYear;
}
}
DateDemo.java:
public class DateDemo{
Date myBirthday = new Date(); //default constructor
myBirthday.setDate(19,2,1994); //arguments
}
Package & Import
Package: library berisi kelas-kelas
Keuntungan menggunakan package: package dapat di-share oleh para programmer
lebih baik menggunakan package daripada meng-copy semua kelas kedalam project kita
Contoh pakcage: aLibrary.jar
Untuk menggunakan package, kita harus meng-import terlebihdahulu
Syntax:import package.className ; //import a single class import
Contoh:java.awt.Color; //import just the class Color import java.awt.*; //import all class in the awt packageimport package.*; //import all classes in "package“ import aLibrary.*; //import all aLibrary classes
Perkenalan: Package aLibrary
• aLibrary berisikan sekumpulan kelas-kelas yang telahdibuat oleh Mr. Riley
• aLibrary bukan merupakan package standar Java, olehkarena itu harus di-load agar bisa digunakan.
• aLibrary ini dibuat untuk tujuan pengenalan Objek danJava
• aLibrary tidak ditujukan untuk membuat program yang „real‟
• aLibrary didesain agar kita dapat membuat program yang memanfaatkan graphis:– Menggambar pictures – Berinteraksi dengan users – Sistem koordinat (kiri atas: 0,0)
Kelas-kelas pada aLibrary
AButton
AImage
ALabel
ALine
AOval
ARectangle
ARoundRectangle
AScrollbar
ATextArea
ATextField
AView
AWindow
A3ButtonWindow
NOTE: • Source code setiap kelas dapat dilihat di direktori aLibSource
• Untuk menggunakan kelas-kelas tersebut kita harus import aLibrary.*;
• Untuk menggunakan kelas Color, kita harus import java.awt.*;
Kelas AWindow(lihat aLibDoc)
• Objek window biasa digunakan sebagai canvas untukmenggambar.
• Kelas Awindow menyediakan objek window yang dapatdigunakan untuk aplikasi grafis.
– Constructor: AWindow( int x, int y, int w, int h) • x, y posisi kiri atas
• w = lebar, h = tinggi
– methods • setSize(), setLocation(), setColor(), etc.
• Contoh penggunaan:AWindow win = new AWindow(100,100,300,150); win.repaint();
(x,y)
w
h
Kelas ARectangle
Object untuk menggambar segi empat
Constructor: ARectangle ( int newX, int newY, int w, int h)
Posisi x dihitung dari sisi kiri window
Posisi y dihitung dari sisi kanan window
methods: setSize(), setLocation(), setColor(), setToFill(), setToOutline(), place() (meletakkan objek ini di dalam objek lain)
Contoh: ARectangle rect = new ARectangle(25,25,100,100); rect.setColor(Color.red);rect.setToFill();rect.place(win);
(25,25)
AOval
AOval memiliki bentuk oval atau elips
Posisi dihitung mulai dari kiri atas (seolah-olah ada kotak):
Methods sama dengan methods pada ARectangle
Contoh: AOval oval = new AOval(90,20,70,30);oval.setColor(Color.yellow);oval.setToFill();oval.place(win);
(x,y)
h
w
Contoh 2: Rising Sunimport aLibrary.* // untuk dapat menggunakan kelas AWindow, AOval, ARectangle, dll
import java.awt.*; // untuk dapat menggunakan kelas Colorpublic class RisingSun {
//instance variables private AWindow frame; private AOval sun; private ARectangle grass; //constructorpublic RisingSun() {
frame = new AWindow(100,100,300,300); frame.setColor(Color.blue); sun = new AOval(125,125,50,50); sun.setToFill(); sun.setColor(Color.red); sun.place(frame); grass = new ARectangle(0,150,300,150); grass.setToFill(); grass.setColor(Color.green); grass.place(frame); frame.repaint();
} }
Kelas Color diambil daripackage java.awt
Events & Methods
– Program driven code
– GUI: Graphical User Interface
– Event driven code
– Access Specifiers: public, private, protected
– Defining parameters
– Parameters Vs Attributes
– Local variables
Program-Driven Code Vs Event-Driven Code
PROGRAM-DRIVEN CODE:
Program “Rising Sun” adalah contoh dari “program-driven code”
Instruksi dieksekusi terurut berdasarkan yang ditulis terlebih dahulu.
Tidak memungkinkan adanya reaksi yang interaktif dengan user
Program akan berhenti setelah semua statements dieksekusi (tidak ada lagi interaksi dengan user)
EVENT-DRIVEN CODE
Cocok untuk program yang membutuhkan interaksi dengan user
Kode program dieksekusi pada saat ada event (klik mouse, tekan tombol keyboard, memindahkan posisi mouse, dll)
event-handler: sebuah method pengeksekusi yang merespon suatu event
director-as-handler pattern: director digunakan untuk menangani atau mengkoordinasikan event.
GUI (Graphical User Interface)
Sistem windowing yang dapat berinteraksi dengan user
Berisi komponen-komponen grafis, seperti buttons, scrollbars, text fields, menus, etc.
Program-driven code tidak cocok menggunakan GUI
Event-driven code digunakan pada GUI, karena memiliki kemampuan untuk beraksi pada saat event terjadi (misal: klik mouse)
Contoh GUI: A3ButtonWindow
A3ButtonWindow
"Action" window, terdiri atas:
Sebuah window: sama dengan AWindow
3 tombol: LEFT, MID dan RIGHT
Mendukung 3 jenis event, yang di-generate pada saat tombol di-klik:
leftAction event
rightAction event
mid Action event
Setiap event ini ditangani oleh sebuah method dengan nama yang sama, yaitu:
leftAction(),
rightAction() dan
midAction()
this
Constructor A3ButtonWindow perlu mengetahui objek apayang akan menangani suatu event. Karena itu, kita perlu me-refer instance dari kelas yang menangani event tsb.
Masalahnya pada saat kode program ditulis, kita belum tahunama objeknya. Objek di-create (intantiate) pada saat program berjalan (running).
Solusi di Java: kita bisa gunakan keyword “this”
Sintaks: namaObjek(this)
Contoh: A3ButtonWindow(this)
Artinya: Objek 3ButtonWindow belum ada pada saat method ditulis, sehingga kita tidak dapat mengacu namanya.Karena itu, kita perlu menggunakan “this” untuk mengacuobjek A3ButtonWindow yang akan dibuat pada saat program di-run.
A3ButtonHandler
A3ButtonHandler merupakan objek yang mengimplementasikan semua event-handler (leftAction, midAction, rightAction)
A3ButtonHandler merupakan default handler untukA3ButtonWindow
Untuk menggunakan pola director-as-handler padaA3ButtonWindow, kita dapat melakukan langkah-langkahberikut: extend A3ButtonHandler
public class Director extends A3ButtonHandler { …. }
create an A3ButtonWindow passing itself (this) to the A3ButtonWindow constructor A3ButtonWindow win = A3ButtonWindow (this);
provide implementation for each event-handler (leftAction(), rightAction() and midAction()methods)
Membuat Methods
accessSpecifier void/type namaMethod (parameters) {….. Statement sequence….
}
Contoh:public void setColor(Color c) {….}private int hitungJumlah(int x, int y) {….}
Access Specifier: public available to all client (objek lain pun bisa mengaksesnya)
private only for the object itself (hanya untuk dirinya sendiri)
protected (akan dibahas di waktu yad)
General Rule: every method must have a clear purpose (one thing to do) and should be designed to fulfill that particular task
3 Jenis Methods
Service methods - provide a service to objects, generally declared as publice.g. draw(), moveForward(), turnClockwise() are all DrawingTool service methods
Helper methods - simplify other methods, generally kept private
Calculator methods - compute a value; used to perform complicated calculations, when more than a few instructions are needed
NON-VOID METHODS
Syntax:public/private ReturnType MethodName (ParamDeclarations){
StatementSequence}
methods that return a value (a number, text, or reference to an object created) when called
the returned value can be assigned to a variable - types must match
Contoh
"maker" methods method creates an object
return value is the new object
e.g.
public ARectangle makeBox(){ ARectangle box = new ARectangle(10,10,100,200); box.setToFill(); //other method calls return box;
}
"calculator" methods method computes a result
return value is the result (number, text, … )
e.g.private int findPerim(){ //return type is "int"
int w = box.getWidth(); //w, h are local variables int h = box.getHeight(); return 2*h+2*w;
}
METHOD CALL CONTROL FLOW
Pada saat program memanggil suatu method, maka program akanmenunda (pause) current sequence
Lalu program akan menjalankan method tsb
Memasukan semua argumen ke dalam method
Mengeksekusi sequence yang ada di dalam method
pass back return value
Setelah itu, program akan melanjutkan original sequence
Contoh Method Calling
public class Smileys { private AOval happy; private AOval dopey; ... public Smileys () {
happy = makeHappyFace(Color.yellow);... dopey = makeSadFace(Color.blue); ... frame.repaint();
} ...
}
makeHappyFace() is called and as a result addEyes() executes(lihat di tutorial yang diberikan)
Tutorial
Bukalah BlueJ
Pilih menu Tools > Preferences
Pilih Libraries
Browse ke folder di mana Anda menyimpan“aLibrary.jar” Misal: D:\aLibrary.jar
Klik OK dan Restart BlueJ
Latihan 01
Buka BlueJ dan buatlah sebuah projek barudengan nama “Latihan01”.
Edit deskripsi project (dengan ikon dokumen disebelah kiri window BlueJ) sehingga berisikanketerangan project yang sedang Anda kerjakan.
Buatlah sebuah kelas director dengan cara menekantombol New Class, beri nama kelas tersebutSunRise. Lalu editlah kelas tersebut.
Anda perlu mempelari dokumentasi dari aLibraryuntuk melihat class dan method yang disediakan
Dokumentasi aLibraryContoh: AOval
Buka “index.html”
Modifikasi SunRise.java
Modifikasi Construtor
Buatlah Tampilan sebagai berikut
Latihan 02
Pada latihan ini, kita akan menggunakan event-handler menggunakan Window yang telah disertai 3 tombol (left, mid, right button)
Modifikasilah SunRise.java, sbb:
Tambahkan “extends A3ButtonHandler”
Tambahkan 3 method berikut di luar constructor
Note: setiap kali kita melakukan extends
kepada A3ButtonHandler, ketiga
methods ini wajib ditulis
Latihan 02 (continue)
Modifikasi tipe instance variabel “win”
Modifikasi instantiation objek “win”
Tambahkan kode di dalam methodleftAction, sbb:
Compile dan run project
NOTE: apabila tombol tidak muncul, cobalah me-resize window secara manual
Klik tombol kiri
Warna akan berubah…
Praktikum