• Tidak ada hasil yang ditemukan

Class Wrapper. Tujuan dari Class Wrapper

N/A
N/A
Protected

Academic year: 2021

Membagikan "Class Wrapper. Tujuan dari Class Wrapper"

Copied!
31
0
0

Teks penuh

(1)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Yuliana Setiowati

Pemrograman Berbasis Objek

Tujuan dari Class Wrapper

• Class wrapper pada Java API mempunyai dua tujuan:

– Menyediakan mekanisme untuk membungkus (wrap) nilai

dengan tipe data primitif menjadi sebuah object, sehingga nilai

primitif tadi bisa digunakan dalam kegiatan yang berhubungan

dengan object, seperti menambahkan ke Collection, return type

dari method berupa object. Di JDK 1.5 operasi wrapping

dilakukan secara otomatis.

(2)

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Pemrograman Berbasis Objek

Membuat Object Wrapper

Semua class wrapper kecuali Character menyediakan dua constructor.

(3)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Setiap object wrapper mempunyai

konstanta MAX_VALUE

byteObj = new Byte(Byte.MAX_VALUE);

shortObj = new Short(Short.MAX_VALUE);

intObj = new Integer(Integer.MAX_VALUE);

longObj = new Long(Long.MAX_VALUE);

floatObj = new Float(Float.MAX_VALUE);

doubleObj = new Double(Double.MAX_VALUE);

printNumValues("MAXIMUM NUMBER VALUES:");

Pemrograman Berbasis Objek

Setiap object wrapper mempunyai

konstanta MAX_VALUE

=>

Byte:127

Short:32767

(4)

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Method valueOf()

• Method valueOf() mengubah suatu nilai menjadi object

dari class tersebut.

• Class Long, Integer, Short dan Byte mempunyai tiga method

valueOf()

• Method 1 menerima argument berupa nilai.

• Method 2 menerima argument nilai dalam bentuk String.

• Method 3 argument kedua berupa int radix yang menyatakan

base dari argument pertama (binary, octal, atau hexadecimal)

Pemrograman Berbasis Objek

Class Wrapper

Method valueOf()

Class Boolean, Float dan Double mempunyai dua method valueOf()

(5)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Method valueOf()

Integer i1 = Integer.valueOf(42);

Integer i2 = Integer.valueOf(“42”);

Boolean b1 = Boolean .valueOf(true);

Boolean b2 = Boolean .valueOf(“true”);

Long n1 = Long.valueOf(42000000L);

Long n1 = Long.valueOf(“42000000L”);

Pemrograman Berbasis Objek

Class Wrapper

xxxValue()

• Digunakan untuk mengubah object dari

class wrapper (object ini mempunyai nilai)

menjadi nilai numerik

(6)

Politeknik Elektronika Negeri Surabaya

Class Wrapper -

xxxValue()

Pemrograman Berbasis Objek

Class Wrapper

parseXxx() and valueOf() ?

• Fungsi parseXxx() dan valueOf(), argument berupa

String dan melempar NumberFormatException(NFE) jika

argument tidak sesuai.

(7)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Pemrograman Berbasis Objek

Class Wrapper

toString()

• untuk memungkinkan mendapatkan

representasi yang bermakna dari object

tertentu.

(8)

Politeknik Elektronika Negeri Surabaya

Class Wrapper

toXxxString() (Binary, Hexadecimal, Octal)

• Fungsi tsb untuk mengubah bilangan dengan

basis 10 menjadi basis lainnya

• Contoh:

Pemrograman Berbasis Objek

Class Wrapper

Autoboxing/Auto-unboxing

Pada Java 5, dikenal istilah autoboxing

Autoboxing adalah konversi secara otomatis oleh kompiler Java dari

tipe data primitif ke tipe data sesuai dengan tipe wrappernya

(misalnya, int dan Integer, double dan Double, dll)..

Sedangkan mengubah object dari class wrapper menjadi nilai

primitifnya disebut auto-unboxing

(9)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Contoh

Pemrograman Berbasis Objek

Class Wrapper

Autoboxing

(10)

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Autoboxing

• Mengapa object x dan y tidak mengacu pada alamat

yang sama ?

– Karena object dari class Wrapper bersifat immutable artinya

kekal. Sekali object dicreate maka isi objek tidak bisa diubah.

– Jika isi objek diubah maka objek harus mengacu ke alamat yang

berbeda.

Pemrograman Berbasis Objek

Class Wrapper

Boxing, ==, and Equals()

Mengapa i1 and i2 dikatakan object yang berbeda, sedangkan i3 and i4 dikatakan

object yang sama ?

– Untuk menghemat memory, dua object dari class wrapper selalu == pada saat

nilai primitif:

• Boolean • Byte

• Character from \u0000 to \u007f (7f is 127 in decimal) • Short and Integer from -128 to 127

(11)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Class Wrapper

Boxing

Pemrograman Berbasis Objek

Class Abstract

Interface

(12)

Politeknik Elektronika Negeri Surabaya

Topik

• Abstract Class

• Interface

Pemrograman Berbasis Objek

Abstract

• Abstract class adalah class yang mempunyai

setidaknya satu abstract method.

• Abstract method adalah method yang tidak

memiliki body (hanya deklarasi method).

(13)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Abstract

• Abstract class tidak bisa dibuat obyeknya.

• Obyek hanya bisa dibuat dari non-abstract class

(concrete class).

• Konsekuensinya, suatu abstract class haruslah

diturunkan dimana pada subclass tersebut

berisi implementasi dari abstract method yang

ada di super class-nya.

Pemrograman Berbasis Objek

Contoh Class Abstract

(14)

Politeknik Elektronika Negeri Surabaya

Abstract

• Bila subclass yang diturunkan dari abstract

class

tidak mengimplementasikan

isi semua

method abstrak parent class, maka subclass

tersebut

harus

tetap dideklarasikan abstract.

• Dan deklarasi method abstract pada subclass

tersebut boleh tidak dituliskan kembali.

Pemrograman Berbasis Objek

Contoh Class Abstract

Class Parent mempunyai

suclass yaitu Class Child. Class

Child harus

mengimplementasikan semua

method abstract yang dimiliki

class Parent.

(15)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Kegunaan Class Abstract

Class Abstract berisi beberapa method non-abstract dan beberapa

method abstract. Class Abstract berisi sebagian implementasi

(method non-abstract) dan subclass yang melengkapi

implementasinya. Dengan kata lain Class Abstract memiliki

beberapa kesamaan (Bagian yang diimplementasikan oleh

subclass) dan memiliki perbedaan (method yang dimiliki sendiri

oleh class abstract)

Deklarasikan method abstract, jika ada satu atau lebih subclass

yang diharapkan mempunyai fungsionalitas yang sama tapi

implementasi berbeda.

Pemrograman Berbasis Objek

Kegunaan Class Abstract

• Gunakan class abstract untuk mendefinisikan

behavior secara umum sebagai superclass,

sedangkan subclass menyediakan implementasi

detail.

(16)

Politeknik Elektronika Negeri Surabaya

Contoh Class Abstract

Kita dapat menggambar lingkaran, persegipanjang garis, kurva

Bezier dan object-object graphic lainnya. Object tersebut

mempunyai state tertentu (seperti: position, orientation, line color,

fill color) dan behaviour secara umum(contoh: moveTo, rotate,

resize, draw). Beberapa state dan behavior ini sama untuk semua

object graphic contoh: position, fill color, and moveTo.

Implementasi yang berbeda sebagai contoh resize or draw. Semua

Object Graphic harus mengetahui bagaimana cara draw dan resize

Pemrograman Berbasis Objek

Contoh Class Abstract 1

class Circle extends GraphicObject {

void draw() {

...

}

void resize() {

...

}

}

class Rectangle extends GraphicObject {

abstract class GraphicObject {

int x, y;

(17)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Contoh Class Abstract 2

33

Area = 25 (area triangle)

or Area = 50 (area rect)

Pemrograman Berbasis Objek

Abstract : Scenario

(18)

Politeknik Elektronika Negeri Surabaya

Shipping

Misal sistem memerlukan report yang melaporkan daftar kendaraan

dan kebutuhan bahan bakar untuk melakukan perjalanan .

Misal terdapat class ShippingMain yang mengumpulkan daftar

kendaraan dan mengenerate Fuel Needs Report

(19)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Problem 1 : Dimana seharusnya perhitungan jarak dan efisiensi

bahan bakar terjadi?

• Perhitungan efisiensi bahan bakar dan jarak antara

truck dan river barge sangat berbeda.

• Tidak mungkin perhitungan ini dideklarasikan pada

class Vehicle.

• Jadi perhitungan ini harus ada di class Truck dan

RiverBarge.

• Di Vehicle cukup ada abstract method dari perhitungan

ini, sehingga class vehicle ini merupakan abstract class.

Pemrograman Berbasis Objek

(20)

Politeknik Elektronika Negeri Surabaya

Solusi

Pemrograman Berbasis Objek

Problem 2

• Perhatikan kembali class FuelNeedsReport.

• Pada class FuelNeedsReport terdapat perhitungan kebutuhan bahan bakar.

• Padahal tidak seharusnya pada class FuelNeedsReport terdapat perhitungan kebutuhan Fuel.

(21)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Solusi

calcFuelNeeds() disebut

Template Method

karena

calcFuelNeeds() merupakan non-abstract method yang

mengakses method abstract yang diimplementasikan di

subclassnya.

(22)

Politeknik Elektronika Negeri Surabaya

Abstract: Ingat!!

• Jangan melakukan:

new Vehicle();

• Bagaimana dengan inisialisai instance atribut class

Vehicle? Gunakan constructor untuk menginisialisasi

(bisa dengan menggunakan this dan super).

(23)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Interface

• Interface berbeda dengan class.

• Interface berisi method kosong dan

konstanta.

• Method dalam interface tidak mempunyai

statement.

• Sehingga deklarasi method dalam interface

sama dengan deklarasi abstract method

pada abstract class.

Pemrograman Berbasis Objek

Interface

• Method yang dideklarasikan didalam interface

secara otomatis adalah public dan abstract.

• Variable dalam interface secara otomatis

(24)

Politeknik Elektronika Negeri Surabaya

Contoh Interface

public interface Relation {

public boolean isGreater( Object a, Object b);

public boolean isLess( Object a, Object b);

public boolean isEqual( Object a, Object b);

}

Pemrograman Berbasis Objek

Mengimplementasikan Interface

• Bila sebuah class mengimplementasikan suatu

interface, maka

semua konstanta dan method interface

akan dimiliki oleh class ini.

• Method pada interface harus diimplementasikan

pada

class yang mengimplementasikan interface ini.

• Bila class yang mengimplementasikan interface tidak

mengimplemetasikan semua method dalam interface,

(25)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Mengimplementasikan Interface

public interface Relation {

public boolean isGreater( Object a, Object b);

public boolean isLess( Object a, Object b);

public boolean isEqual( Object a, Object b);

}

Pemrograman Berbasis Objek

Implementasi Interface

public class Line implements Relation {

private double x1; private double x2; private double y1; private double y2;

public Line(double x1, double x2, double y1, double y2){ this.x1 = x1;

this.x2 = x2; this.y1 = y1; this.y2 = y2;

(26)

Politeknik Elektronika Negeri Surabaya

Implementasi Interface

public boolean isGreater( Object a, Object b){

double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen);

}

public boolean isLess( Object a, Object b){

double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen);

}

public boolean isEqual( Object a, Object b){

double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen);

} }

Pemrograman Berbasis Objek

Implementasi Interface

Class Line mengimplementasikan interface Relation, pastikan

semua method yang ada di interface diimplementasikan di class

Line. Jika tidak maka muncul error.

Line.java:4: Line is not abstract and does not override

abstract method

isGreater(java.lang.Object,java.lang.Object) in Relation

public class Line implements Relation

(27)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Inheritance pada Interface

• Kita bisa membuat subinterface dengan menggunakan

kata extends.

• Satu class boleh mengimplementasikan lebih dari satu

interface.

• Suatu interface boleh mengextends lebih dari satu

interface.

Pemrograman Berbasis Objek

Inheritance pada Interface

• Interface bukan bagian dari hirarki class

• Namun interface dapat mempunyai relasi inheritance

public interface PersonInterface {

void doSomething();

(28)

Politeknik Elektronika Negeri Surabaya

Mengimplementasikan Multiple Interface

• Satu class boleh mengimplementasikan lebih dari satu

interface.

• Bila suatu class akan dijadikan subclass dan akan

mengimplementasikan interface, maka kata

extends

harus lebih dulu dari

implements

.

Pemrograman Berbasis Objek

Mengimplementasikan Multiple Interface

• A concrete class extends one super class but multiple

Interfaces:

public class ComputerScienceStudent extends Student

implements PersonInterface, AnotherInterface, Thirdinterface{

// All abstract methods of all interfaces

// need to be implemented.

(29)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Kegunaan Interface

• Semua class yang mengimplementasikan

sebuah interface tertentu berarti class-class

tersebut mengimplementasikan methods yang

sama dengan kata lain class-class tersebut

mempunyai fungsionalitas yang sama.

Pemrograman Berbasis Objek

Interface Flyer dan Airplane

Implementation

(30)

Politeknik Elektronika Negeri Surabaya

Multiple Implementation of the Flyer Interface

Pemrograman Berbasis Objek

Gabungan Inheritance dan Implementation

(31)

Pemrograman Berbasis Objek

Politeknik Elektronika Negeri Surabaya

Referensi

Dokumen terkait

“Makar yang dilakukan dengan maksud untuk menghilangkan nyawa, atau merampas kemerdekaan, atau meniadakan kemampuan Presiden atau Wakil Presiden menjalankan pemerintahan,

Sebuah penguat sinyal kecil selalu dioperasikan dalam area linearitas karena mempertimbangkan gain sinyal; tapi, tujuan utama penguat daya adalah memperoleh daya

tertarik untuk melakukan penelitian dengan judul “ Faktor – faktor Yang Mempengaruhi Prestasi Kerja Pegawai Pada Kantor Pelayanan Perizinan Terpadu (KPPT) Kabupaten

Kamu telah melakukan kerja sama secara berkelompok untuk mencari informasi tentang upaya-upaya yang dilakukan oleh bangsa Indonesia dalam mempertahankan kemerdekaan Indonesia..

Volume penjualan adalah total penjualan yang dinilai dengan unit dalam periode tertentu untuk mencapai laba yang maksimal sehingga dapat menunjang pertumbuhan

Dengan adanya Undang-Undang Nomor 23 tahun 2004 tentang penghapusan kekerasan dalam Rumah tangga ini menjadi payung hukum bagi korban dan membuat efek jera bagi pelaku tindak

Rekomendasi yang dapat diberikan terhadap Lokasi 50 sebenarnya lebih memerlukan penanganan prasarana sarana dan peningkatan kualitas kondisi bangunan. Lokasi 50

(3) Dalam hal Penghasil, Pengumpul, Pemanfaat, Pengangkut, Pengolah, dan Penimbun limbah B3 tidak melakukan penanggulangan pencemaran dan/atau kerusakan lingkungan