9/26/2011
Tujuan Pada akhir pembahasan, siswa diharapkan dapat : JAVA Education Network Indonesia
Bekerja dengan Java Class Library Pengenalan Pemrograman 1
• 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
jeni.jardiknas.org
Pengenalan OOP • Object-Oriented programming atau OOP
Pengenalan OOP • Contoh dari Object
– Menitikberatkan pada konsep dari object sebagai elemen dasar dari program. – Object tersebut dikarakterisasikan oleh properties dan behaviors.
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. • Menentukan jalan operasional
1
9/26/2011
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.
Classes dan Objects • Class memiliki keunggulan dalam permasalahan penggunaan kembali. • Programmer dapat menggunakan sebuah class berulang kali untuk membuat banyak object.
Class Variables • Sebagai Contoh,
Class dan Object • Perhatikan contoh berikut untuk memahami antara Class dan 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.
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";
2
9/26/2011
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?
Memanggil Instance Variables
• Inti dari penyelesaian masalah yang efektif adalah memilah dan membagi permasalahan.
• Untuk menggambarkan cara pemanggilan method, digunakan class String sebagai contoh.
• Proses tersebut dapat dilakukan dalam Java dengan membuat method untuk menyelesaikan bagian tertentu atas permasalahan.
• Gunakan Java API documentation untuk mengetahui seluruh method yang terdapat pada class String.
• Ambil sebuah permasalahan, kemudian dipilahkan menjadi beberapa bagian kecil, dan mengaturnya untuk dituliskan menjadi program skala besar.
• 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
Memanggil Instance Variables • Perhatikan dua contoh method class String berikut :
• Menggunakan methods, String str1 = "Hello"; char String
x = str1.charAt(0); //return character H //disimpan dalam variable x str2 = "hello";
//return boolean value true boolean result = str1.equalsIgnoreCase( str2 );
3
9/26/2011
Parameter Passing
Pass-by-Value
• 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.
Parameter Passing
Pass-by-Reference
• 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
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. • Untuk memanggil sebuah static method, tuliskan,
Classname.staticMethodName(params);
4
9/26/2011
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 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.
Contoh 1
• Jangkauan variable adalah : – Didalam blok yang mendeklarasikannya, dimulau pada baris dimana ia dideklarasikan, dan didalam inner blocks.
Contoh 1
Contoh 2
• 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. – Jangkauan variable n adalah E.
5
9/26/2011
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 • Bagaimanapun, anda dapat menggunakan 2 variabel dengan nama sama, jika tidak dideklarasikan dalam satu blok
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.
Panduan Penulisan Program • Hindari variable dengan nama sama dideklarasikan dalam satu method..
int test = 0; System.out.print( test ); //..kode selanjutnya { int test = 20; System.out.print( test ); }
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 – Casting Explisit
6
9/26/2011
Casting Implisit • Untuk menggambarkan casting implisit, perhatikan contoh berikut : • Misalkan kita ingin menyimpan sebuah data integer dalam sebuah variable dengan tipe data double. int double implisit
numInt = 10; numDouble = numInt; //casting
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 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 double int
valDouble = 10.12; valInt = (int)valDouble;
//konversi valDouble menjadi tipe int double x = 10.2; int y = 2;
Casting Implisit • Contoh lain : int int
numInt1 = 1; numInt2 = 2;
//hasilnya secara implisit tercasting menjadi double double numDouble = numInt1/numInt2;
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
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
int result = (int)(x/y); //menghasilkan result sebagai int
• Casting objects dapat dianalogikan untuk mengkonversi nilai primitif menuju tipe yang lebih besar, beberapa object tidak perlu mengalami casting secara explisit.
7
9/26/2011
Casting Objects • Gunakan, (classname)object
• Contoh berikut mengcasting sebuah instance dari class VicePresident menuju instance dari class Employee. VicePresident adalah subclass dari Employee dengan beberapa informasi tambahan.
dimana,
Employee emp = new Employee(); VicePresident veep = new VicePresident();
classname, adalah nama class tujuan object, adalah reference untuk object asal
emp = veep;
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 •
Contoh Casting Objects
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, seperti int (Object -> primitive) String pennsylvania = "65000"; int penn = Integer.parseInt(pennsylvania);
// casting explisit veep = (VicePresident)emp;
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, dan Integer untuk variabel int – Penggunaan class yang mendukung tiap tipe primitif dilakukan dengan membuat object yang memiliki value yang sama
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.
8
9/26/2011
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 • 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.
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();
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.
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.
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 Object pt = new Point(10, 10); boolean ex2 = pt instanceof String; // false
9
9/26/2011
Kesimpulan • Classes dan Objects – Instance variables – Class Variables • Instansiasi Class • Methods – Instance methods – Pemberian Variable pada Method(Pass-by-value,Pass-byreference) – Static methods • Jangkauan variable • Casting (object, tipe primitif) • Konversi tipe primitif ke Objects dan sebaliknya • Membandingkan object • Menentukan class dari sebuah Object
10