JAVA Education Network Indonesia
jeni.jardiknas.org
Bekerja dengan Java Class Library
Pengenalan Pemrograman 1
Tujuan
Pada akhir pembahasan, siswa 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 dan cara untuk memanggil dan memberikan parameter pada method
• Mengidentifikasi jangkauan variable • Casting tipe data primitif dan object
• Membandingkan object dan menentukan class dari sebuah object
Pengenalan OOP
• Object-Oriented programming atau OOP
– Menitikberatkan pada konsep dari object
sebagai elemen dasar dari program.
– Object tersebut dikarakterisasikan oleh
properties dan behaviors.
Pengenalan OOP
• Contoh dari Object
Object dalam kenyataan dapat diasumsikan sebagai sebuah perangkat lunak yang menggunakan properties sebagai data, dan behaviors sebagai method
Enkapsulasi
• Enkapsulasi
– Method untuk menyembunyikan beberapa
method tertentu dari implemensi Class
tertentu.
– Dengan menempatkan batasan di sekitar
properties dan method object kita, kita dapat
menghindari terjadinya efek samping dari
program dimana terjadi perubahan variable
program melalui cara yang tidak diinginkan.
Class dan Object
• Class
– Diasumsikan sebagai template, sebuah
prototype dari object
– Merupakan struktur dasar dari OOP
• Dua tipe class member
– Fields (properties atau attributes)
• Menentukan tipe data yang digunakan oleh class
– Methods.
Class dan Object
• Object
– Terdiri dari serangkaian data (properties) yang
berupa variable yang menentukan karakteristik
sebuah object, dan mengandung beberapa
method (behavior) yang menjelaskan
bagaimana bentuk object.
– Object adalah sebuah instance dari Class.
Class dan Object
• Perhatikan contoh berikut untuk memahami
antara Class dan Object :
Classes dan Objects
• Class memiliki keunggulan dalam
permasalahan penggunaan kembali.
• Programmer dapat menggunakan sebuah
class berulang kali untuk membuat banyak
object.
Class Variables
• Classes terdiri dari
– Instance variables
– Instance methods
– Class Variables (static member variables)
• variable yang dimiliki oleh keseluruhan class • Hal ini berarti bahwa mereka memiliki nilai (value)yang sama untuk semua object dalam class yang sama.
Class Variables
• 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,
Instantiate Class
• Operator new
– Mengalokasikan memory untuk object dan membuat sebuah reference dari alokasi memory tersebut
– Pada saat anda membuat object, pada dasarnya anda meng-invokasi class constructor.
• Constructor
– Adalah sebuah method dimana anda menempatkan seluruh inisialisasi, nama constructor sama dengan nama class.
Method
• Method
– Adalah sebagian kode terpisah yang dapat
dipanggil oleh program utama atau method lain
untuk melakukan suatu fungsi tertentu.
• Beberapa ciri method:
– Dapat menghasilkan satu ataupun tidak value.
– Setelah method telah selesai tereksekusi,
proses kembali kepada method yang
memanggilnya.
Mengapa Menggunakan Methods?
• Inti dari penyelesaian 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, kemudian dipilahkan menjadi beberapa bagian kecil, dan mengaturnya untuk dituliskan menjadi program skala besar.
Memanggil Instance Variables
• Untuk menggambarkan cara pemanggilan method, digunakan class String sebagai contoh.
• Gunakan Java API documentation untuk mengetahui seluruh method yang terdapat pada class String.
• Kemudian dibuat method kita sendiri, namun sekarang mari kita gunakan apa yang telah tersedia sebelumnya.
• Untuk memanggil instance method, tuliskan :
nameOfObject.nameOfMethod( parameters );
Memanggil Instance Variables
• Perhatikan dua contoh method class String
berikut :
Memanggil Instance Variables
• Menggunakan methods,
String str1 = "Hello";
char x = str1.charAt(0); //return character H //disimpan dalam variable x String str2 = "hello";
//return boolean value true
Parameter Passing
• Pass-by-Value
– Pada saat sebuah pass-by-value muncul,
method tersebut membuat salinan value dari
variable yang dilewatkan menuju method.
Method tersebut tidak dapat secara langsung
merubah argumen awal meskipun dapat
mengubah parameter pada saat proses
perhitungan.
– Seluruh tipe data primitif pada saat ditujukan
pada method adalah pass-by-value.
Pass-by-Value
Parameter Passing
• Pass-by-Reference
– Pada saat pass-by-reference muncul, reference
untuk sebuah object kemudian dilewatkan untuk
memanggil sebuah method. Hal ini berarti method
tersebut membuat sebuah salinan reference dari
variabel yang ditujukan pada 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 Methods
• Static methods
– Method yang dapat terinvokasi tanpa menginstansiasi sebuah class (dalam arti tanpa menggunakan keyword new).
– Static methods dimiliki class secara keseluruhan dan tidak berupa instance atau object tertentu dari class.
– Static methods dibedakan dengan instance methods dalam sebuah class dengan menggunakan keyword static.
Memanggil Static Methods
• 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 Variable
• Jangkauan
– Menentukan di bagian mana dalam program variable tersebut dapat diakses.
– Menentukan lifetime dari variable atau berapa lama variable bertahan dalam memory
– Jangkauan ditentukan oleh penempatan deklarasi variabel dalam program.
• Secara sederhana, imajinasikan jangkauan adalah segala sesuatu dalam tanda {...}. Segala yang berada diluar tanda tersebut disebut dengan outer blocks, sebaliknya, disebut dengan inner blocks.
Jangkauan Variable
• Jangkauan variable adalah :
– Didalam blok yang mendeklarasikannya,
dimulau pada baris dimana ia dideklarasikan,
dan didalam inner blocks.
Contoh 1
Contoh 1
• Kode tersebut merepresentasikan 5 jangkauan yang
dindikasikan oleh baris dan huruf yang
merepresentasikan jangkauan tersebut.
• Diberikan variables 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.
Contoh 2
• Pada method utama, jangkuan dari
variables adalah,
– ages[] - jangkauan A
– i in B - jangkauan B
– i in C – jangkauan C
• Pada method test, jangkauan variables
adalah,
– arr[] - jangkauan D
– i in E - jangkauan E
Jangkauan Variable
• Pada saat mendeklarasikan variable, hanya satu
variable dengan identifier atau nama yang dapat
dideklarasikan dalam sebuah jangkauan.
• Hal itu berarti jika anda menggunakan contoh
deklarasi :
{
int test = 10;
int test = 20;
}
Compiler akan menghasilkan error kecuali anda
menggunakan nama berbeda untuk variabel dalam
satu blok.
Jangkauan Variable
• Bagaimanapun, anda dapat menggunakan
2 variabel dengan nama 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 variable dengan nama sama
dideklarasikan dalam satu method..
Casting
• Casting
– Mengkonversi tipe data dari satu tipe ke tipe
yang lain
• Pokok pembahasan :
– Casting data dengan tipe primitif
– Casting objects
Casting Tipe Primitif
• Casting antara tipe primitif mengijinkan anda untuk
mengkonversi nilai dari satu tipe ke tipe yang lain.
• Umumnya digunakan antar tipe data numerik.
• Terdapat satu tipe data yang tidak dapat dikonversi,
yaitu boolean.
• Tipe Casting:
Casting Implisit
• Untuk menggambarkan casting implisit, perhatikan contoh berikut :
• Misalkan kita ingin menyimpan sebuah data integer dalam sebuah variable dengan tipe data double.
int numInt = 10;
double numDouble = numInt; //casting implisit
Pada contoh tersebut, karena 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
• Pada saat kita mengkoncersi sebuah data dengan tipe yang lebih besar menuju tipe lebih kecil, digunakan casting explisit.
• Bentuk casting explisit :
(dataType)value
dimana,
dataType - bentuk tipe data konversi
value - ekspresi yang menghasilkan value dari tipe sumber
Contoh Casting Explisit
• Kita ingin mengcasting 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 Objects
• Instance dari class juga dapat tercasting menjadi instance dari class lain, dengan satu batasan :: Class asal dan tujuan harus terelasi sebagai sebuah inheritance, salah satu class harus berupa subclass dari class lain.
– Inheritance akan dibahas pada sesi selanjutnya
• Casting objects dapat dianalogikan untuk mengkonversi nilai primitif menuju tipe yang lebih besar, beberapa object tidak perlu mengalami casting secara explisit.
Casting Objects
• Gunakan,
(classname)object
dimana,
classname, adalah nama class tujuan
object, adalah reference untuk object asal
Contoh Casting Objects
• Contoh berikut mengcasting sebuah instance dari class VicePresident menuju instance dari class Employee. VicePresident adalah subclass dari 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
• 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, dan 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 membuat sebuah instance dari class Integer dengan value 7801(primitive -> Object)
Integer dataCount = new Integer(7801);
– Contoh berikut mengkonversi sebuah object Integer menjadi data primitif bertipe int. Hasilnya adalah int dengan value 7801
int newCount = dataCount.intValue();
– Bentuk umum yang diperlukan dalam program adalah mengkonversi sebuah String menjadi tipe numerik,
Konversi Tipe Primitiv menjadi Object dan
sebaliknya
Membandingkan Objects
• Pada pembahasan sebelumnya, kita telah mempelajari tentang operator pembanding nilai. Hampir seluruh operator bekerja hanya untuk tipe primitiv, bukan object.
• Pengecualian peraturan tersebut terletak pada operator equal (==) dan not equal (!=). Jika diaplikasikan sebagai object, operator tersebut tidak akan bekerja sesuai harapan. Disamping memeriksa apakah object memiliki value yang sama dengan object lain, operator tersebut menentukan apakah kedua operator menunjuk object yang sama.
Membandingkan Objects
• Contoh :
1 class EqualsTest
2 {
3 public static void main(String[] arguments) { 4 String str1, str2;
5 str1 = "Free the bound periodicals."; 6 str2 = str1; 7 System.out.println("String1: " + str1); 8 System.out.println("String2: " + str2); 9 System.out.println("Same object? " + (str1 == str2)); 10 str2 = new String(str1); 11 System.out.println("String1: " + str1); 12 System.out.println("String2: " + str2); 13 System.out.println("Same object? " + (str1 == str2)); 14 System.out.println("Same value? " + str1.equals(str2));
15 }
16 }
Membandingkan Objects
• Hasil eksekusi program :
String1: Free the bound periodicals. String2: Free the bound periodicals. Same object? true
String1: Free the bound periodicals. String2: Free the bound periodicals. Same object? false
Same value? True
Membandingkan Objects
• Catatan pada Strings: – Terdapat kode:
String str1 = “Hello”; String str2 = “Hello”;
– Dua referensi str1 dan str2 akan menunjuk object yang sama – String literals teroptimasi di Java; jika Anda akan membuat
sebuah String menggunakan literal dan kemudian mengunakan literal lain 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
• Ingin menentukan class dari objet? Berikut ini
caranya :
• Asumsikan kita memiliki object berikut :
SomeClassName key = new
SomeClassName();
Akan dibahas mengenai dua cara dalam
mengetahui tipe tujuan object dengan
menggunakan reference
key
.
Method getClass()
• Method getClass() 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 operands: sebuah reference
pada object pada sisi kiri, dan nama class pada sisi
kanan.
• Expression 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
Kesimpulan
• Classes dan Objects – Instance variables – Class Variables • Instansiasi Class • Methods
– Instance methods
– Pemberian Variable pada Method(Pass-by-value,Pass-by-reference)
– Static methods • Jangkauan variable • Casting (object, tipe primitif)
• Konversi tipe primitif ke Objects dan sebaliknya • Membandingkan object