Class Wrapper. Tujuan dari Class Wrapper

dokumen-dokumen yang mirip
Pemrograman Berbasis Objek. Interface. Politeknik Elektronika Negeri Surabaya

Class Wrapper. Yuliana Setiowati

Polymorphism (Polimorfisme)

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

PRAKTIKUM 15 TYPE WRAPPER

Gambar 1: Hirarki class

Pewarisan, Polimorfisme, dan Interface

ABSTRACT & INTERFACE. Pemrograman Lanjut Herman Tolle

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

ABSTRACT CLASS & INTERFACE

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Pemrograman Berorientasi. Abstract & Interface

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Pertemuan 4 Halaman 1/1. Class Inheritance

Pemrograman Berorientasi Objek 2

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Composition dan Inheritance

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

ABSTRACT CLASS. Imam Fahrur Rozi

:: abstract class + interface. :: abstract class

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

(INHERITANCE) Nurochman

BEKERJA DENGAN JAVA CLASS LIBRARY

Bahasa Pemrograman 2.

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

Pemrograman Berorientasi. Inheritance

Pemrograman Lanjut Review Class dan Object PTIIK

Inheritance (Pewarisan) Pengertian dasar inheritance

Pemrograman Lanjut. Interface

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Konsep Dasar Pemrograman Berorientasi Objek

Dasar Pemrograman Java

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

Inheritance dan Kata Kunci static

Overriding Overloading Polymorphism

Membuat dan Menggunakan Class

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

INTERAKSI ANTAR OBJECT

Pemrograman Berorientasi. Class dan Obyek 2

Modul Bahasa Pemrograman 1

Algoritma Pemrograman [BS204]

BAB II VARIABEL DAN TIPE DATA

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

2 TIPE DATA DAN VARIABEL

Tujuan. Pengertian Interface Mendeklarasikan Interface Pewarisan Interface Menggunakan Interface

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

Bahasa Pemrograman :: Polimorfism and Abstraction

IKG2I4 / Software Project I

Bab 8. Dasar-Dasar OOP

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Operator dan Assignment

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Pemrograman Berbasis Objek Operator dan Assignment

Pemrograman Berorientasi Objek

Modul 2. [access specifier] [tipe data] [nama variabel];

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

GENERICS. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya. Topik

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

Konsep Pemrograman Berbasis Obyek

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Dasar Pemrograman Java

Inheritance. Topik 5/17/2013

Pemrograman Berbasis Objek Inheritance

Enum. Yuliana Setiowati

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

KONSEP OOP: PEWARISAN / INHERITANCE

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

SUMBER BELAJAR PENUNJANG PLPG

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Pemrograman Berorientasi Objek Danu Wira Pangestu

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Object Oriented Programming (OOP) --Inheritance- Saniati STMIK Teknokrat, Bandar Lampung

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

OPERATOR-OPERATOR DALAM JAVA

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

PENGENALAN JAVA (2)

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Modul 2 Dasar Pemrograman Java. Oleh: Mike Yuliana PENS-ITS

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

Politeknik Elektronika Negeri Surabaya

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

Bahasa Pemrograman :: Inheritance

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Pemrograman Berorientasi Obyek. Konsep OOP

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

UNIVERSITAS GUNADARMA

Java Basics-1. Oleh : Agus Priyanto, M.Kom

Pemrograman Berorientasi Object

KONSEP OOP: PEWARISAN / INHERITANCE

Enkapsulasi. Politeknik Elektronika Negeri Surabaya. Enkapsulasi. public void Info() { System.out.println( Saya siswa PENS );

Bahasa Pemrograman 2.

DEVAL GUSRION, S.KOM, M.KOM MATAKULIAH BAHASA PEMOGRAMAN JAVA LANJUTAN III

Transkripsi:

Class Wrapper Yuliana Setiowati 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. Untuk menyediakan fungsi-fungsi untuk mendukung tipe data primitif. Sebagian besar fungsi-fungsi ini berkaitan dengan berbagai konversi: konversi primitif ke dan dari objek String, dan mengkonversi primitif dan obyek String ke dan dari basis yang berbeda (atau radix), seperti biner, oktal, dan heksadesimal. 1

Class Wrapper Membuat Object Wrapper Semua class wrapper kecuali Character menyediakan dua constructor. Argument berupa String dan nilai primitif Pada Java 5 object Boolean dapat digunakan pada kondisi, karena kompiler secara otomatis un-box (membuka) Boolean menjadi boolean. 2

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:"); Setiap object wrapper mempunyai konstanta MAX_VALUE => Byte:127 Short:32767 Integer:2147483647 Long:9223372036854775807 Float:3.4028235E38 Double:1.7976931348623157E308 3

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) Class Wrapper Method valueof() Class Boolean, Float dan Double mempunyai dua method valueof() Sedangkan untuk Character hanya mempunyai satu method valueof() 4

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 ); Class Wrapper xxxvalue() Digunakan untuk mengubah object dari class wrapper (object ini mempunyai nilai) menjadi nilai numerik 5

Class Wrapper - xxxvalue() Class Wrapper parsexxx() and valueof()? Fungsi parsexxx() dan valueof(), argument berupa String dan melempar NumberFormatException(NFE) jika argument tidak sesuai. Perbedaan: parsexxx() mengembalikan nilai primitif. valueof() mengembalikan object dari class wrapper 6

Class Wrapper Class Wrapper tostring() untuk memungkinkan mendapatkan representasi yang bermakna dari object tertentu. 7

Class Wrapper toxxxstring() (Binary, Hexadecimal, Octal) Fungsi tsb untuk mengubah bilangan dengan basis 10 menjadi basis lainnya Contoh: 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 Contoh 8

Contoh Class Wrapper Autoboxing 9

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

Class Wrapper Boxing Class Abstract Interface 11

Topik Abstract Class Interface Abstract Abstract class adalah class yang mempunyai setidaknya satu abstract method. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method). 12

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. Contoh Class Abstract Teori.Parent is abstract; cannot be instantiated Parent p = new Parent(); 1 error Tidak bisa membuat object dari class abstract 13

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. Contoh Class Abstract Class Parent mempunyai suclass yaitu Class Child. Class Child harus mengimplementasikan semua method abstract yang dimiliki class Parent. Jika tidak mengimplementasikan atau hanya sebagian mengimplementasikan semua method abstract yang dimiliki class Parent maka class Child harus dideklarasikan abstract 14

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. Kegunaan Class Abstract Gunakan class abstract untuk mendefinisikan behavior secara umum sebagai superclass, sedangkan subclass menyediakan implementasi detail. Jika class abstract tersebut semua method merupakan method abstract, sebaiknya class abstract tersebut diganti menjadi Interface (dijelaskan selanjutnya) 30 15

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 Contoh Class Abstract 1 class Circle extends GraphicObject { void draw() {... void resize() {... class Rectangle extends GraphicObject { void draw() {... void resize() {... abstract class GraphicObject { int x, y;... void moveto(int newx, int newy) {... abstract void draw(); abstract void resize(); 16

Contoh Class Abstract 2 Area = 25 (area triangle) or Area = 50 (area rect) 33 Abstract : Scenario 17

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 18

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. Solusi Italic font digunakan untuk menggambarkan element yang bersifat abstract. Pada abstract class Vehicle terdapat dua buah method abstract yaitu calcfuelefficiency() dan calctripdistance(). 19

Solusi Problem 2 Perhatikan kembali class FuelNeedsReport. Pada class FuelNeedsReport terdapat perhitungan kebutuhan bahan bakar. Padahal tidak seharusnya pada class FuelNeedsReport terdapat perhitungan kebutuhan Fuel. FuelNeedsReport hanya bertugas membuat report saja. 20

Solusi calcfuelneeds() disebut Template Method karena calcfuelneeds() merupakan non-abstract method yang mengakses method abstract yang diimplementasikan di subclassnya. 21

Abstract: Ingat!! Jangan melakukan: new Vehicle(); Bagaimana dengan inisialisai instance atribut class Vehicle? Gunakan constructor untuk menginisialisasi (bisa dengan menggunakan this dan super). INTERFACE 22

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. Interface Method yang dideklarasikan didalam interface secara otomatis adalah public dan abstract. Variable dalam interface secara otomatis adalah public, static, dan final. 23

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); 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, maka class tersebut harus dideklarasikan abstract. 24

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); 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; public double getlength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; 25

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); 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 ^ 1 error 26

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. Inheritance pada Interface Interface bukan bagian dari hirarki class Namun interface dapat mempunyai relasi inheritance public interface PersonInterface { void dosomething(); public interface StudentInterface extends PersonInterface { void doextrasomething(); 27

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

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. Interface Flyer danairplane Implementation 29

Multiple Implementation of the Flyer Interface Gabungan Inheritance dan Implementation Airplane is a Vehicle Bird is an Animal Superman is an Animal and is a HomoSapien Kelemahan multiple inheritance adalah suatu class bisa mewarisi method dari lebih dari satu class dimana method ini tidak diharapkan. Dengan Interface maka hal ini bisa dihindari. 30

Example: Multiple Interface 31