Bekerja Dengan Java Class Library
Bekerja Dengan Java Class Library
Pada sesi ini, kita akan mengantarkan beberapa konsep dasar dari Object-Oriented objcts, dan Programming (OOP). Selanjutnya kita akan membahas konsep dari classes dan bagaimana menggunakan class dan anggotanya. Perubahan dan pemilihan object juga akan dibahas. Sekarang, kita akan focus dalam menggunakan class yang telah dijabarkan dalam Java Class library, kita akan membahas nanti tentang bagaimana membikin class anda sendiri. Pada akhir pelajaran, siswa seharusnya dapat : 1. menjelaskan OOP dan beberapa konsepnya 2. perbedaan antara class dan object 3. pebedaan antara instance variables/method dan class (static) variable/method 4. menjelaskan method apa dan bagaimana memanggil method parameter 5. mengidentifikasi beberapa jangkauan dari sebuah variable 6. memilih tipe data primitive dan object 7. membandingkan objects dan menjabarkan class dari objects.
9.2
OOP berputar pada konsep dari object sebagai dasar element dari program anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa objek disekitar kita, seperti mobil, singa, manusia dan seterusnya. Object ini dikarakterisasi oleh sifat / attributnya dan tingkah lakunya. Contohnya, objek sebuah mobil mempunyai sifat tipe transmisi, warna dan manufaktur. Mempunyai kelakuan berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Coba perhatikan table dibawah ini sebagai contoh perbandingan :
Object Car Properties type of transmission manufacturer color Weight Color hungry or not hungry tamed or wild Table 1: Example of Real-life Objects
Pengenalan Pemrograman 1 1
Lion
J.E.N.I.
Dengan deskripsi ini, objek pada dunia nyata dapat secara mudah dimodelisasi sebagai objek software menggunakan sifat sebagai data dan tingkah laku sebagai method. Data disini dan method dapat digunakan dalam pemrograman game atausoftware interaktif untuk menstimulasi objek dunia nyata. Contohnya adalah sebagai software objek mobil dalam permainan balap mobil atau software objek singadalam sebuah software pendidikan interaktif pada kebun binatang untuk anak anak.
9.3
Pengenalan Pemrograman 1
J.E.N.I.
Ketika diinisialisi, tiap objek mendapat satu set baru dari state variable. Bagaimanapun, implementasi dari method dibagi diantara objek pada kelas yang sama. Kelas menyediakan keuntungan dari reusability. Software programmers dapat digunakan dari sebuah kelas lagi dan lagi untuk membuat beberapa objek.
9.4 Method
9.4.1 Apakah Method itu dan mengapa menggunakan Method?
Pada contoh yang telah kita diskusikan sebelumnya, kita hanya memiliki satu method, dan itu adalah main() method. Didalam Java, kita dapat mendefinisikan beberapa method yang akan kita panggil dari method yang berbeda. Sebuah method adalah bagian terpisah dari kode yang akan dipanggil oleh program utama dan beberapa method lainnya untuk menunjukkan beberapa fungsi spesifik. Berikut adalah karakteristik dari method : 1. dapat mengembalikan satu atau tidak ada nilai 2. dia mungkin dapat diterima sebagai beberapa parameter yang dibutuhkan atau tidak ada arameter sama sekali. Parameter juga disebut sebagai fungsi argument 3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang memanggilnya.
Pengenalan Pemrograman 1
J.E.N.I.
Sekarang mengapa kita butuh untuk membuat method? Mengapa kita tidak meletakkan semua kode pada sebuah method yang sangat besar? Pemecahan masalah disini alah dekomposisi. Kita juga dapat melakukan ini di Java dengan mmbuat method untuk mengatasi bagian spesifik dari masalah. Mengambil sebuah permasalahan dan memecahkannya menjadi bagian kecil, bagian dapat diatur adalah penting untuk menulis program yang besar.
nameOfObject.nameOfMethod( parameters );
mari kita mengambil dua contoh yang ditemukan dalam kelas String.
Method declaration public char charAt(int index) public boolean equalsIgnoreCase (String anotherString)
Definition Mengambil karakter pada index. Membandingkan antar String, tidak case sensitive.
Menggunakan method :
String str1 = "Hello"; char x = str2.charAt(0); //will return the character H //simpan pada variabel x String str2 = "hello";
Pengenalan Pemrograman 1
J.E.N.I.
public class TestPassByValue { public static void main( String[] args ){ int i = 10; //mencetak nilai i System.out.println( i ); //memanggil method test //passing i pada method test test( i ); //Mencetak nilai i System.out.println( i ); } public static void test( int j ){ //merubah nilai parameter j j = 33; } }
Pada contoh diatas yang telah diberikan, kita memanggil method tes dan melewatkan nilai i sebagai parameter. Nilai pada i dikopikan pada variable pada method j. sejak j adalah variable pengganti pada method tes, dia tidak akan berdampak pada nilai variable jika i pada main semenjak memiliki perbedaan kopy pada variable. Secara default, semua tipe data primitive ketika dilewatkan pada sebuah method adalah pass-by-values
Pengenalan Pemrograman 1
J.E.N.I.
9.4.3.2 Pass-by-reference Ketika sebuah pass-by-reference terjadi, referensi pada sebuah objek dilewatkan dengan cara memanggil method. Hal ini berarti bahwa method mengkopi referensi pada variable yang dilewatkan pada method. Bagaimanapun juga, tidak seperti apda pass-by-value, method dapat membuat objek actual yang menerangkan pointing to, since, meskipun berbeda keterangan yang digunakan dalam method, lokasi dari data yang mereka tunjukkan adalah sama. contoh :
class TestPassByReference { public static void main( String[] args ){ //membuat array integer int []ages = {10, 11, 12}; //mencetak nilai array for( int i=0; i<ages.length; i++ ){ System.out.println( ages[i] ); } test( ages );
Pass ages as parameter which is copied to variable arr
} public static void test( int[] arr ){ //merubah nilai array for( int i=0; i<arr.length; i++ ){ arr[i] = i + 50; } } }
Pengenalan Pemrograman 1
J.E.N.I.
Petunjuk Penulisan Program : Keadaan yang salah tentang nilai oleh referensi di java adalah ketika membuat method swap menggunakan referensi Java, mencatat tentang manipulasi object Java by reference tetapi nilai objeck dari referensi dari method by value, adalah hasil, anda tidak dapat menulis standart swap method ke swap objek.
Classname.staticMethodName(params);
Pengenalan Pemrograman 1
J.E.N.I.
//mencetak data pada layar System.out.println(Hello world); //convert string menjadi integer int i = Integer.parseInt(10);
Pengenalan Pemrograman 1
J.E.N.I.
int i = 0;
D
int k = 0;
int
m = 0;
E
int } } n = 0;
Pengenalan Pemrograman 1
J.E.N.I.
Kode yang kita miliki disini mempunyai lima jangkauan yang ditandai oleh baris dan keterangan yang mewakili jangkauan itu, dengan variable i,j,k,m dan n, dan 5 jangkauan A,B,C,D dan E, kita mempunyai beberapa jangkauan variable berikut: Jangkauan Jangkauan Jangkauan Jangkauan Jangkauan variable variable variable variable variable i adalah A. j adalah B. k adalah C. m adalah D. n adalah E.
Sekarang, memberi kedua method utama dan menguji di contoh kita sebelumnya,
class TestPassByReference { public static void main( String[] args ){ //membuat array integer int []ages = {10, 11, 12}; //mencetak nilai array for( int i=0; i<ages.length; i++ ){ System.out.println( ages[i] ); } test( ages ); //mencetak kembali nilai array for( int i=0; i<ages.length; i++ ){ System.out.println( ages[i] ); } } public static void test( int[] arr ){ //merubah nilai pada array for( int i=0; i<arr.length; i++ ){ arr[i] = i + 50; } }
B A
ages[ ] i in B i in C
Pengenalan Pemrograman 1
J.E.N.I.
arr[ ] i in E
- scope D - scope E
manakala variable di deklarasikan,hanya satu variable yang di identifikasi atau nama dapat di identifikasi di jangkauan, maksudnya jika kamu mempunyai deklarasi berikut,
int test = 0; System.out.print( test ); //..some code here { int test = 20; System.out.print( test ); }
Manakala system pertama out.print itu memanggil, dia mencetak nilai dari variable ujian pertama sejak terdapat pada variable jangkauan itu. Yang kedua, system.out print, nilai 20 dicetak sejak tertutup ujian jangkauan variable itu. Petunjuk Penulisan program : Hindari pemberian nama yang sama kepada variabel supaya Anda tidak kebingungan.
Pengenalan Pemrograman 1
11
J.E.N.I.
char valChar = 'A'; int valInt = valChar; System.out.print( valInt ); //casting explisit: keluaran 65 Ketika kita men-convert data yang bertipe besar ke tipe data yang lebih kecil, kita harus menggunakan explicit cast. Explicit casts mengikuti bentuk sebagai berikut : (dataType)value dimana, dataType, adalah nama dari tipe data yang Anda convert value, adalah pernyataan yang dihasilkan pada nilai dari the source type.
Sebagai contoh, double valDouble = 10.12; int valInt = (int)valDouble; //men-convert valDouble ke tipe int double x = 10.2; int y = 2; int result = (int)(x/y); //hasil typecast operasi ke int
12
Pengenalan Pemrograman 1
J.E.N.I.
Ini dibenarkan dalam kasus yang berkebalikan, dan Anda dapat menggunakan superclass ketika sebuah subclass dibentuk. Ada yang didapatkan dalam kasus ini, bagaimanapun: Karena subclass terdiri dari lebih banyak kemungkinan aksi daripada superclassnya, terdapat kehilangan dalam keseimbangan keterlibatan. Object superclass itu mungkin tidak memiliki semua kemungkinan aksi yang diperlukan untuk aksi pada tempat dari object subclass berada. Sebagai contoh jika anda memiliki operasi yang memanggil methode dalam object dari class integer, mengunakan object dari class Number tidak akan terdiri dari benyak methode yang dispesifikasikan dalam integer. error terjadi jika Anda mencoba untuk memanggil methode yang tidak memiliki object tujuan. Untuk mengunakan object-object superclass dimana object-object subclass diharapkan, anda harus memilih mereka secara eksplisit. Anda tidak akan kehilangan beberapa informasi dalam pemilihan, tapi anda memperoleh keuntungan dari semua method dan
Pengenalan Pemrograman 1
13
J.E.N.I.
variabel yang mendefinisikan subclass. Untuk memilih sebuah object ke class yang lain, Anda menggunakan operasi yang sama sebagaimana untuk tipe-tipe primitive : Untuk memilih, (classname)object dimana, classname, adalah nama dari class tujuan. object, adalah sesuatu yang mengarah pada sumber object. Catatan: pemilihan ini membuat referensi ke object yang lama dari tipe namaclass; object yang lama melanjutkan aksi seperti yang telah ada sebelumnya.
Contoh berikut memilih sebuah instance dari class VicePresident ke sabuah instance dari class Employee; VicePresident adalah sebuah dari Employee dengan lebih banyak information, dimana disini mendefinisikan bahwa VicePresident memilihi executive washroom privileges, Employee emp = new Employee(); VicePresident veep = new VicePresident(); emp = veep; // tidak adah pemilihan yang diperlukan untuk penggunaan yang cenderung naik veep = (VicePresident)emp; // Harus memilih dengan pemilihan secara eksplisit
Pengenalan Pemrograman 1
14
J.E.N.I.
Java merepresentasikan type data dan versi classnya dengan sangat berbeda, dan sebuah program tidak akan berhasil tercompile jika Anda menggunakan hanya satu ketika yang lain juga diperlukan. Menggunakan class-class yang sesuai untuk setiap tipe primitive, anda dapat membuat sebuah object yang memiliki nilai yang sama. Contoh : //Pernyataan berikut membentuk sebuah instance bertype Integer // class dengan nilai integer 7801 (primitive -> Object) Integer dataCount = new Integer(7801); //Pernyataan berikut meng-converts sebuah object Integer ke //tipe data primitive int nya. Hasilnya adalah sebuah int //dengan nilai 7801 int newCount = dataCount.intValue(); // Anda perlu suatu translasi biasa pada program // yang meng-convert sebuah String ke sebuah tipe numeric, //seperti suatu int // Object->primitive String pennsylvania = "65000"; int penn = Integer.parseInt(pennsylvania);
PERHATIAN: class Void tidak mewakili sesuatu dalam Java, jadi disini tidak ada alasan menggunakannya ketika melakukan translasi antara nilai primitive dan object. Ini adalah penjelasan mengenai kata kunci void, dimana digunakan dalam definisi method untuk mengindikasikan bahwa methode tidak memiliki sebuah nilai kembalian.
Pengenalan Pemrograman 1
15
J.E.N.I.
mempertimbangkan nilai yang tidak sama. Walaupun isinya sesuai mereka bukan merupakan object yang sama. Untuk melihat jika dua object String memiliki nilai yang sesuai, sebuah method dari class yang disebuat dengan equals() digunakan. Method menguji setiap character dalam string dan mengembalikan nilai true jika dua string memiliki nilai yang sama. Kode berikut mengilustrasikan hal tersebut, 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));
} }
Output program ini adalah sebagai berikut , OUTPUT: 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.
Sekarang mari mendiskusikan tentang kode. String str1, str2; str1 = "Free the bound periodicals.";
Pengenalan Pemrograman 1
16
J.E.N.I.
Bagian pertama dari program ini mendeklarasikan dua variabel (str1 dan str2), memberikan literal "Free the bound periodicals." untuk str1, dan kemudian memberi nilai tersebut untuk str2. Seperti yang Anda pelajari sebelumnya, str1 dan str2 sekarang menunjuk ke object yang sama, dan uji kesamaan membuktikan hal tersebut. str2 = new String(str1); Padabagian yang kedua dari program ini, anda membuat object String baru dengan nilai yang sama sebagai str1 dan memberi str2 ke object baru String tersebut. Sekarang Anda memiliki dua object string yang berbeda yaitu str1 dan str2, keduanya memilki nilai yang sama.Test mereka untuk melihat jika meeka object yang sama dengan menggunakan operator == mengembalikan nilai yang diinginkan : falsemereka buka object yang sama dalam memory. Test mereka menggunakan method equals() juga mengembalikan jawaban yang diinginkan: truemereka memiliki niali yang sama.
Catatan: Mengapa Anda tidak dapat hanya menggunakan literal yang lain ketika Anda mengubah str2, lebih dari menggunakan new? String literals diandalkan dalam Java; jika Anda membuat sebuah string menggunakan literal dan kemudian menggunakan literal yang lain dengan character yang sama, Java cukup mengetahui untuk memberikan Anda object String yang pertama kembali. kedua String adalah object yang sama; Anda harus menghidari langkah anda untuk membuat dua object terpisah.
Pengenalan Pemrograman 1
17
J.E.N.I.
Pengenalan Pemrograman 1
18
J.E.N.I.
9.6
Latihan
Pengenalan Pemrograman 1
19
J.E.N.I.
Sekarang mari memulai pencarian! 1. Perhatikan sebuah method yang diuji jika String pasti diakhiri suffix yang pasti. Sebagai contoh, jika diberikan string "Hello", Method harus mengembalikan nilai true suffix yang diberikan adalah "lo", dan false jika suffix yang diberikan adalah "alp". 2. Perhatikan untuk method yang mengenali character yang mewakili sebuah digit yang spesifik dalam radix khusus. Sebagai contoh, jika input digit adalah 15, dan the radix adalah 16, method akan mengembalikan Character F, sejak F adalah representasi hexadecimal untuk angka 15 (berbasis 10). 3. Perhatikan untuk method yang mengakhiri running Java Virtual Machine yang sedang berjalan 4. Perhatikan untuk method yang memperoleh lantai dari sebuah nilai double. Sebagai contoh, jika Saya input a 3.13, method harus mengembalikan nilai 3. 5. Perhatikan untuk method yang mengenali jika character yang dipakai adalah sebuah digit. Sebagai contoh, jika Saya input '3', dia akan mengembalikan nilai true.
Pengenalan Pemrograman 1
20