• Tidak ada hasil yang ditemukan

Pemrograman Berorientasi Objek Class, Method, dan Package/Library NIKO IBR A HIM, MIT U NIV E R S IT A S KR IS T E N MARANATHA

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pemrograman Berorientasi Objek Class, Method, dan Package/Library NIKO IBR A HIM, MIT U NIV E R S IT A S KR IS T E N MARANATHA"

Copied!
38
0
0

Teks penuh

(1)

N IKO IBR A H IM , M IT

U N IV E R S IT A S KR IS T E N M A R A N A T H A

Pemrograman Berorientasi Objek

(2)

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

(3)

Divide & Conquer

Program komputer yang digunakan di dunia nyata

biasanya memiliki

arsitektur yang kompleks

serta

terdiri dari ribuan bahkan jutaan baris kode.

Kita

tidak mungkin

menyimpan kode tersebut

dalam satu method, misalnya hanya di main

method saja.

Berdasarkan pengalaman, cara terbaik untuk

mengembangkan dan memelihara program besar

adalah dengan cara membuat program ke dalam

modul-modul

yang lebih kecil.

Teknik ini dikenal dengan istilah

divide and

(4)

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.

(5)

Pembuatan Class, Constructor, & Method

Mobil.java

public class Mobil {

private int kecepatan; // instance var

public Mobil (){ // constructor

kecepatan = 0; // initial value

}

public void setKecepatan (int n){ // method kecepatan = n;

}

public int getKecepatan(){ // method return kecepatan;

} }

(6)

Object Instantiation & Pemanggilan Method

Buat 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 

proses di atas disebut instantiation. m1 adalah instance (object unik) dari class Mobil.

m1.setKecepatan(10); // baru, panggil method-nya

System.out.println("Kecepatan saat ini: " + m1.getKecepatan());

Mobil m2 = new Mobil (); // m2 adalah instance kedua dari class Mobil

Mobil m3 = new Mobil (); // m3 adalah instance ketiga dari class Mobil, dst.

} }

(7)

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:

(8)

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 memanggil

method harus sesuai dengan posisi parameter

(9)

Contoh 1: parameters vs arguments

(perhatikan

warna merah

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

(10)

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 ke

dalam project kita

Contoh pakcage: aLibrary.jar

Untuk menggunakan package, kita harus meng-import terlebih

dahulu

Syntax:

import package.className ; // import a single class import

Contoh:

import java.util.Scanner; // import just the class Scanner;

import java.util.*; // import all class in the util package import java.awt.Color; // import just the class Color

import java.awt.*; // import all class in the awt package import package.*; // import all classes in "package“

(11)

Perkenalan: Package

aLibrary

aLibrary

berisikan sekumpulan kelas-kelas yang telah

dibuat oleh Mr. Riley

aLibrary

bukan merupakan package standar Java, oleh

karena itu harus di-load agar bisa digunakan.

aLibrary

ini dibuat untuk tujuan pengenalan Objek dan

Java

aLibrary

tidak ditujukan untuk membuat program yang

‘real’

aLibrary

didesain agar kita dapat membuat program

yang memanfaatkan graphis:

Menggambar pictures

Berinteraksi dengan users

(12)

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

(13)

Kelas AWindow

(lihat aLibDoc)

Objek window biasa digunakan sebagai canvas untuk

menggambar.

Kelas

AWindow

menyediakan objek window yang dapat

digunakan 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

(14)

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

(15)

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

(16)

Contoh 2: Rising Sun

import aLibrary.* // untuk dapat menggunakan kelas AWindow, AOval, ARectangle, dll import java.awt.*; // untuk dapat menggunakan kelas Color

public class RisingSun {

//instance variables :

private AWindow frame; private AOval sun;

private ARectangle grass;

//constructor :

public 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); frame.repaint(); } }

Kelas Color diambil dari package java.awt

(17)

Events & Methods

Program driven code

GUI: Graphical User Interface

Event driven code

Access Specifiers: public, private, protected

Defining parameters

Parameters Vs Attributes

Local variables

(18)

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

(19)

3 Jenis Methods

Service methods - provide a service to objects,

generally declared as

public

e.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

(20)

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

(21)

Contoh

 Service / "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;

(22)

METHOD CALL CONTROL FLOW

Pada saat program memanggil suatu method, maka program akan

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

(23)

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

(24)

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

(25)

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)

(26)
(27)

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

(28)

this

 Constructor A3ButtonWindow perlu mengetahui objek apa yang 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 tahu nama

objeknya. Objek di-create (intantiate) pada saat program berjalan (running).

Solusi di Java: kita bisa gunakan keyword “this”  Contoh:

public class Smiley extends A3ButtonHandler {

Public Smiley (){

win = new A3ButtonWindow(this)

}

}

 Artinya: Di dalam contsructor A3ButtonWindow, kita perlu memberikan

parameter berupa Objek Smiley yg merupakan “handler” dari action ketiga tombol. Namun, pada saat kita tulis kode ini, kita belum

mengetahui nama objek dari Smiley. Dengan kata lain, kita tidak dapat mengacu namanya.

Karena itu, kita perlu menggunakan keyword “this” untuk mengacu objek Smiley yang akan di-generate pada saat program di-run.

(29)

A3ButtonHandler

A3ButtonHandler merupakan objek yang

mengimplementasikan semua event-handler (leftAction,

midAction, rightAction)

A3ButtonHandler merupakan default handler untuk

A3ButtonWindow

Untuk menggunakan pola director-as-handler pada

A3ButtonWindow, kita dapat melakukan langkah-langkah

berikut:

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

(30)

Tutorial

Bukalah BlueJ

Pilih menu Tools > Preferences

Pilih Libraries

Browse ke folder di mana Anda menyimpan

“aLibrary.jar”

Misal: D:\aLibrary.jar

(31)

Latihan 01

Buka BlueJ dan buatlah sebuah projek baru

dengan nama “Latihan01”.

Edit deskripsi project (dengan ikon dokumen di

sebelah kiri window BlueJ) sehingga berisikan

keterangan project yang sedang Anda kerjakan.

Buatlah sebuah kelas director dengan cara menekan

tombol New Class, beri nama kelas tersebut

SunRise. Lalu editlah kelas tersebut.

Anda perlu mempelari dokumentasi dari aLibrary

(32)

Dokumentasi

aLibrary

Contoh:

AOval

(33)
(34)
(35)
(36)

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

(37)

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

(38)

Referensi

Dokumen terkait

Dapat diketahui nilai produk sebesar Rp.140.000,00 merupakan perkalian antara faktor konversi dan harga produk Nilai tersebut menunjukkan nilai produk dendeng

Dalam penelitian ini variabel yang akan dihubungkan adalah kecerdasan emosional (X1), sikap mandiri (X2) dan lingkungan keluarga (X3) terhadap minat berwirausaha

Melalui temuan dan analisis data di atas dapat dilihat bahwa adanya pembongkaran representasi kulit hitam dalam aspek kepemimpinan dan heroisme. Namun pembongkaran itu

Melalui penerapan sistem data warehouse dapat memberikan dampak positif bagi perusahaan, diantaranya proses analisis ataupun pengelolaan informasi berdasarkan data

adalah Maimun (Kasi Pemerintahan) dan dilanjutkan dengan penyerahan stempel kampung pemekaran yang bernama Blang mancung Timur kepada kepala kampung yang bernama Tukiran. Kasi

Menyatakan dengan sesungguhnya bahwa tesis yang berjudul Penerapan Model Pembelajaran Berbasis Masalah (Problem Based Learning) Pada Mata Kuliah Blok 10 Lbm

Berdasarkan definisi mengenai sikap yang telah disampaikan tersebut, maka dapat disimpulkan bahwa: sikap merupakan organisasi pendapat, keyakinan seseorang mengenai objek atau

Sasaran tersebut yaitu mencari calon Brigadir Polri yang terbaik dan dengan prinsip penerimaan Brigadir Polri di Polda Bali ini yaitu berprinsip BTAH (Bersih,