JENI slide 05 Bekerja dengan java class library

Download Report

Transcript JENI slide 05 Bekerja dengan java class library

Bekerja dengan Java class
library
tujuan
Pada akhir pembahasan, peserta diharapkan dapat :
• Menjelaskan OOP dan beberapa konsepnya
• Membedakan antara Class dan Object
• Membedakan antara instance variable/method dengan
Class(static) variable/method
• Menjelaskan tentang method serta cara untuk memanggil dan
memberikan parameter pada method
• Mengidentifikasi jangkauan variabel
• Casting tipe data primitif dan object
• Membandingkan object dan menentukan class dari sebuah object
Pengenalan OOP
Object-Oriented programming (OOP)
– Menitikberatkan pada konsep object sebagai
elemen dasar dari program.
– Object tersebut dikarakterisasi oleh property
dan behavior.
Pengenalan OOP
Contoh Object :
Object dapat diasumsikan sebagai sebuah perangkat
lunak, yang menggunakan property sebagai data,
dan behavior sebagai method
Enkapsulasi
Enkapsulasi
– Method untuk menyembunyikan beberapa method
tertentu dari implementasi Class tertentu.
– Dengan menempatkan batasan di sekitar property
dan method object kita, perubahan variabel program
melalui cara yang tidak diinginkan dapat dihindari.
Class dan Object
Class
– Diasumsikan sebagai template, sebuah prototype dari object
– Merupakan struktur dasar dari OOP
Dua tipe class member
– Field (property atau attribute)
• Menentukan tipe data yang digunakan oleh class
– Method
• Menentukan jalan operasional
Class dan Object
Object
– Terdiri dari:
• kumpulan data (property), berupa variabel yang
menentukan karakteristik sebuah object
• beberapa method (behavior) yang menjelaskan
bagaimana bentuk object.
– Object adalah sebuah instance dari Class.
Class dan Object
Berikut ini merupakan contoh Class dan Object :
Class dan Object
• Class memiliki kelebihan dengan salah satu
karakteristiknya yaitu, reusable.
• Programmer dapat menggunakan sebuah
class berulang kali untuk membuat banyak
object.
Class Variable
Class terdiri dari :
– Instance variable
– Instance method
– Class Variable (static member variable)
• variabel yang dimiliki oleh keseluruhan class
• Variabel tersebut memiliki nilai (value) yang sama untuk semua
object dalam class yang sama.
Class Variable
Sebagai Contoh,
Instantiate Class
Untuk membuat sebuah object atau instance dari class,
digunakan operator new
Sebagai contoh :
String str2 = new String(“Hello world!”);
atau sama dengan,
String str2 = "Hello";
Instantiate Class
Operator new
– Mengalokasikan memory untuk object dan
membuat sebuah reference dari alokasi
memory tersebut
– Pada saat pembuatan object, class constructor
dipanggil.
Constructor
merupakan sebuah method dimana
penginisialisasian ditempatkan, nama constructor
sama dengan nama class.
Method
Method
merupakan bagian code yang dapat dipanggil oleh
program utama atau method lain untuk melakukan
suatu fungsi tertentu.
Beberapa ciri method:
– Dapat me-return value atau tidak sama sekali.
– Setelah method telah selesai dieksekusi, proses
kembali kepada method yang memanggilnya.
Alasan Menggunakan Method
• Inti dari pemecahan masalah yang efektif adalah memilah dan
membagi permasalahan.
• Proses tersebut dapat dilakukan dalam Java dengan membuat
method untuk menyelesaikan bagian tertentu atas permasalahan.
• Ambil sebuah permasalahan, pilah menjadi beberapa bagian kecil,
kemudian atur penulisannya menjadi program berskala besar.
Memanggil Instance Variable
• Berikut ini merupakan contoh pemanggilan method
menggunakan class String.
• Gunakan Java API documentation untuk mengetahui
seluruh method yang terdapat pada class String.
• Pemanggilan instance method, dapat didklarasikan
pada dengan menggunakan sintaks berikut ini :
nameOfObject.nameOfMethod( parameters );
Memanggil Instance Variable
Perhatikan dua contoh method class
String berikut :
Memanggil Instance Variable
Menggunakan methods,
String str1 = "Hello";
char x = str1.charAt(0); //return character H
//disimpan dalam variable x
String str2 = "hello";
//return boolean value true
boolean result = str1.equalsIgnoreCase( str2 );
Parameter Passing
Pass-by-Value
– Pada saat sebuah pass-by-value muncul, method tersebut
membuat copy dari value variabel yang di-passing ke method.
– Method tersebut tidak dapat langsung mengubah argumen awal,
meskipun dapat mengubah parameter pada saat proses
perhitungan.
– Seluruh tipe data primitif pada saat ditujukan ke method
merupakan pass-by-value.
Pass-by-Value
Parameter Passing
Pass-by-Reference
– Pada saat pass-by-reference muncul, reference untuk sebuah
object di-passing untuk memanggil sebuah method.
– Method tersebut membuat sebuah copy reference dari variabel
yang ditujukan ke method.
– Namun, tidak seperti pass-by-value, method tersebut dapat
memodifikasi object sebenarnya yang ditunjuk oleh reference,
meskipun dua reference yang berbeda digunakan dalam
method, lokasi data yang ditunjuk adalah sama.
Pass-by-Reference
Pass-by-Reference
Memanggil Static Method
Static method
– Method yang dapat dipanggil tanpa penginstansiasian class
(tanpa menggunakan keyword new).
– Static method tidak hanya dimiliki oleh instance atau object
tertentu dari class, tetapi oleh class secara keseluruhan.
– Keyword static digunakan oleh static method di dalam sebuah
class, untuk membedakannya dengan instance method.
Pemanggilan static method, dapat diklarasikan dengan sintaks
berikut ini,
Classname.staticMethodName(params);
Memanggil Static Method
Contoh dari static method :
//mencetak data pada layar
System.out.println(“Hello world”);
//konversi String 10, menjadi sebuah integer
int i = Integer.parseInt(“10”);
//menghasilkan representasi String dari integer argument sebagai
//integer basis 16
String hexEquivalent = Integer.toHexString( 10 );
Jangkauan Variabel
Jangkauan
– Menentukan pada bagian mana dalam program, suatu variabel
tersebut dapat diakses.
– Menentukan lifetime variabel, atau lamanya variabel bertahan
dalam memory
– Jangkauan ditentukan oleh penempatan deklarasi variabel
dalam program.
• Jangkauan adalah segala sesuatu dalam tanda {...}, atau yang
disebut juga dengan inner block
• Sedangkan segala sesuatu yang berada diluar tanda tersebut
disebut dengan outer block
Jangkauan Variabel
Jangkauan suatu variabel adalah :
Didalam blok yang mendeklarasikannya,
dimulai pada baris dimana variabel tersebut
dideklarasikan, dan didalam inner block.
Contoh 1
Contoh 1
• Code pada slide sebelumnya, merepresentasikan 5
jangkauan yang dindikasikan oleh baris dan huruf yang
merepresentasikan jangkauan tersebut.
• Terdapat 5 variabel i, j, k, m dan n, serta lima
jangkauan A, B, C, D dan E.
– Jangkauan variable i adalah A.
– Jangkauan variable j adalah B.
– Jangkauan variable k adalah C.
– Jangkauan variable m adalah D.
– Jangkauan variable n adalah E.
Contoh 2
Contoh 2
Pada method main(), jangkauan dari variabel
adalah,
– ages[] - jangkauan A
– i in B - jangkauan B
– i in C - jangkauan C
Pada method test(), jangkauan variabel adalah,
– arr[]
– i in E
- jangkauan D
- jangkauan E
Jangkauan Variabel
• Pada saat pendeklarasian variabel, hanya satu variabel dengan
identifier atau nama, yang dapat dideklarasikan dalam sebuah
jangkauan.
• Hal itu berarti jika contoh deklarasi di bawah ini dijalankan :
{
int test = 10;
int test = 20;
}
Compiler akan menghasilkan error, kecuali variabel menggunakan
nama yang berbeda dalam satu blok.
Jangkauan Variabel
Dua variabel dapat menggunakan nama yang
sama, jika tidak dideklarasikan dalam satu
blok.
int test = 0;
System.out.print( test );
//..kode selanjutnya
{
int test = 20;
System.out.print( test );
}
Panduan Penulisan Program
Hindari penamaan variabel dengan nama
sama, yang dideklarasikan dalam satu
method.
Casting
Casting
Mengkonversi tipe data dari satu tipe ke tipe
yang lain
Pokok pembahasan :
– Casting data dengan tipe primitif
– Casting object
Casting Tipe Primitif
• Pengkonversian nilai dari satu tipe ke tipe yang lainnya, dapat
dilakukan pada casting tipe primitif.
• Umumnya digunakan antar tipe data numerik.
• Terdapat satu tipe data yang tidak dapat dikonversi, yaitu boolean.
• Tipe Casting:
– Casting Implisit
– Casting Explisit
Casting Implisit
berikut ini merupkan contoh deklarasi, penyimpanan sebuah data
integer dalam sebuah variabel dengan tipe data double.
int numInt = 10;
double numDouble = numInt; //casting implisit
Pada code di atas, variabel tujuan memiliki jangkauan lebih besar
dibandingkan dengan data yang akan ditempatkan, data tersebut
secara implisit tercasting menjadi tipe data double.
Casting Implisit
Contoh lain :
int numInt1 = 1;
int numInt2 = 2;
//hasilnya secara implisit tercasting menjadi
double
double numDouble = numInt1/numInt2;
Casting Explisit
casting explisit digunakan pada saat kita mengkonversi sebuah data
dengan tipe yang lebih besar menuju tipe lebih kecil.
sintaks casting explisit :
(dataType)value
dataType
value
- bentuk tipe data konversi
- ekspresi yang me-return value dari tipe
sumber
Contoh Casting Explisit
Berikut ini merupakan contoh proses casting dari int
menjadi char, atau sebaliknya.
Sebuah character dapat digunakan sebagai int karena
tiap character memiliki kode numerik sesuai posisinya
dalam character set.
Character 'A' == 65
char valChar = 'A';
int valInt = valChar;
System.out.print(valInt);//cast explisit:output
65
Contoh Casting Explisit
double valDouble = 10.12;
int valInt = (int)valDouble;
//konversi valDouble menjadi tipe int
double x = 10.2;
int y = 2;
int result = (int)(x/y); //menghasilkan result sebagai int
Casting Object
Instance dari class juga dapat di-casting menjadi
instance dari class lain, dengan satu batasan ::
– Class asal dan tujuan harus direlasikan dalam inheritance, salah
satu class harus berupa subclass dari class lain.
• Casting object digunakan untuk mengkonversi nilai
primitif menuju tipe yang lebih besar, beberapa object
tidak perlu mengalami casting secara explisit.
Casting Object
Gunakan sintaks berikut untuk casting
object,
(classname)object
classname
object
- nama class tujuan
- reference untuk object asal
Contoh Casting Object
Berikut ini merupakan contoh proses casting sebuah instance dari
class VicePresident ke instance dari class Employee.
VicePresident merupakan subclass dari class Employee dengan
beberapa informasi tambahan.
Employee emp = new Employee();
VicePresident veep = new VicePresident();
emp = veep;
// casting explisit
veep = (VicePresident)emp;
Konversi Tipe Primitif menjadi Object
dan sebaliknya
• Satu hal yang yang tidak dapat dilakukan dalam
proses casting adalah mengcasting sebuah object
menjadi tipe data primitif atau sebaliknya.
• Sebagai alternatif, package java.lang memiliki class
yang mendukung setiap tipe data primitif : Float,
Boolean, Byte dan lainnya. Disebut dengan class
Wrapper
Konversi Tipe Primitiv menjadi Object
dan sebaliknya
Class Wrapper
– Hampir seluruh class ini memiliki nama yang sama dengan tipe
data, kecuali nama class yang dimulai dengan huruf kapital (Short
dengan short, Double dengan double, dan sebagainya)
– Dua class memiliki nama yang membedakannya dengan tipe data:
• Character digunakan untuk variabel char
• Integer untuk variabel int
– Penggunaan class yang mendukung tiap tipe primitif dilakukan
dengan membuat object yang memiliki value yang sama
Konversi Tipe Primitiv menjadi Object
dan sebaliknya
Contoh :
– Statement berikut digunakan untuk membuat sebuah instance dari
class Integer dengan value 7801(primitive -> Object)
Integer dataCount = new Integer(7801);
– Pengkonversian sebuah object Integer menjadi data primitif bertipe int.
Hasilnya adalah int dengan value 7801
int newCount = dataCount.intValue();
– Program pada umumnya, memerlukan pengkonversian sebuah String
menjadi tipe numerik, seperti int (Object -> primitive)
String pennsylvania = "65000";
int penn = Integer.parseInt(pennsylvania);
Membandingkan Object
• Hampir seluruh operator digunakan pada tipe primitif,
bukan object.
• Kecuali pada operator equal (==) dan not equal (!=).
Kedua operator tersebut berfungsi untuk :
– memeriksa apakah object memiliki value yang sama dengan
object yang dibandingkan
– menentukan apakah kedua operator menunjuk object yang
sama.
Membandingkan Objects
Contoh :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class EqualsTest
{
public static void main(String[] arguments) {
String str1, str2;
str1 = "Free the bound periodicals.";
str2 = str1;
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
str2 = new String(str1);
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}
Membandingkan Objects
Hasil eksekusi program :
String1: Free the bound
String2: Free the bound
Same object? true
String1: Free the bound
String2: Free the bound
Same object? false
Same value? True
periodicals.
periodicals.
periodicals.
periodicals.
Membandingkan Objects
Catatan untuk String:
String str1 = “Hello”;
String str2 = “Hello”;
– Dua referensi str1 dan str2 akan menunjuk object yang sama
– String literal teroptimasi di Java;
jika suatu String menggunakan literal dan kemudian literal lain juga
digunakan namun dengan character yang sama, Java mengetahui
cara untuk mengembalikan object string pertama.
– Kedua string adalah object yang sama, anda harus melakukan
cara yang lain untuk membuat object yang berbeda.
Menentukan class dari sebuah
object
Bagaimana cara menentukan class dari object?
Asumsikan terdapat object berikut :
SomeClassName key = new
SomeClassName();
Berikut ini akan dibahas mengenai dua cara untuk
mengetahui tipe tujuan object dengan
menggunakan reference key.
Method getClass()
• Method getClass() digunakan untuk menentukan Class object
(dimana Class adalah class) yang memiliki sebuah method
getName().
• Dalam hal ini, getName() menghasilkan sebuah string yang
merepresentasikan nama dari class
• Sebagai contoh,
String name = key.getClass().getName();
Operator instanceOf
• instanceOf memiliki dua operand:
– sebuah reference object pada sisi kiri
– nama class pada sisi kanan.
• Exkspresi tersebut menghasilkan nilai true atau false berdasar
pada apakah object merupakan instance class yang dimaksud atau
subclass lain.
• Sebagai contoh,
boolean ex1 = "Texas" instanceof String; // true
Object pt = new Point(10, 10);
boolean ex2 = pt instanceof String; // false
Kesimpulan
•
•
•
•
•
•
•
•
Class dan Object
– Instance variable
– Class variable
Instansiasi Class
Method
– Instance method
– Pemberian variabel pada Method(Pass-by-value,Pass-by-reference)
– Static method
Jangkauan variabel
Casting (object, tipe primitif)
Konversi tipe primitif ke Object dan sebaliknya
Membandingkan object
Menentukan class dari sebuah Object