class dan method

38
IF 307 PEMROGRAMAN BERORIENTASI OBJEK NIKO IBRAHIM, MIT UNIVERSITAS KRISTEN MARANATHA 2010 Class, Method, dan Package/Library

description

class dan method

Transcript of class dan method

Page 1: 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

Page 2: class dan method

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

Page 3: class dan method

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.

Page 4: class dan method

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.

Page 5: class dan method

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;

}

}

Page 6: class dan method

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

}

}

Page 7: class dan method

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

Page 8: class dan method

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

Page 9: class dan method

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

}

Page 10: class dan method

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

Page 11: class dan method

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)

Page 12: class dan method

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

Page 13: class dan method

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

Page 14: class dan method

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)

Page 15: class dan method

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

Page 16: class dan method

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

Page 17: class dan method

Events & Methods

– Program driven code

– GUI: Graphical User Interface

– Event driven code

– Access Specifiers: public, private, protected

– Defining parameters

– Parameters Vs Attributes

– Local variables

Page 18: class dan method

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.

Page 19: class dan method

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)

Page 20: class dan method

Contoh GUI: A3ButtonWindow

Page 21: class dan method

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

Page 22: class dan method

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.

Page 23: class dan method

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)

Page 24: class dan method

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

Page 25: class dan method

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

Page 26: class dan method

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

Page 27: class dan method

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;

}

Page 28: class dan method

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

Page 29: class dan method

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)

Page 30: class dan method

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

Page 31: class dan method

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

Page 32: class dan method

Dokumentasi aLibraryContoh: AOval

Buka “index.html”

Page 33: class dan method

Modifikasi SunRise.java

Page 34: class dan method

Modifikasi Construtor

Page 35: class dan method

Buatlah Tampilan sebagai berikut

Page 36: class dan method

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

Page 37: class dan method

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…

Page 38: class dan method

Praktikum