Algoritma &Pemrograman 1 Java class library
Konsep OOP: Menitikberatkan pada konsep object sebagai elemen dasar dari program Argumentasi: d dunia nyataada beberapa objek, seperti mobil, singa, manusia dan seterusnyaobject” tsb dikarakterisasi oleh sifat, attribut & tingkah lakunya c/ objek mobil: punya sifat tipe transmisi, warna dan manufaktur punya kelakuan berbelok, mengerem dan berakselerasi
Konsep OOP: objek pada dunia nyatadiamsusikan sbg objek software, dengan menggunakan: Property/sifat sebagai data Behavior/tingkah lakusebagai method c/ software objek mobil dalam permainan balap mobil software objek singa dalam sebuah software pendidikan interaktif pada kebun binatang untuk anak anak
Class dan Object Class Dua tipe class member 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/behavior/tingkah lakuMenentukan jalan operasi
Class & Object Object objek komponen software yang stukturnya mirip dengan objek pada dunia nyata 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
c/ Class dan Object Class memiliki kelebihan dengan salah satu karakteristiknya yaitu, reusable. Programmer dapat menggunakan sebuah class berulang kali untuk membuat banyak object.
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.
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.
c/ Class Variable
Method Method fungsi u/ program yang besar Hanya ada satu methodmain() method di Java, kita dapat mendefinisikan beberapa method yang akan kita panggil dari method yang berbeda Yaitu: bagian code yang dapat dipanggil oleh program utama or method lain untuk melakukan suatu fungsi tertentu Beberapa ciri method: dapat mengembalikan satu atau tidak sama sekali dapat diterima sebagai beberapa parameter yang dibutuhkan atau tidak ada parameter 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 dideklarasikan menggunakan sintaks berikut ini : nameOfObject.nameOfMethod( parameters );
Memanggil Instance Variable c/ method class String:
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 );
Next Aplikasi Car.java CarDriven.java
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.
Next AplikasiTestPassByValue.java
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.
Next AplikasiTestPassByReference.java
Pass-by-Reference
Memanggil Method Static Method yang dapat dipanggil tanpa inisialisasi class/tanpa keyword new Cara pemanggilan: Classname.staticMethodName(params); c/ //mencetak data pada layar System.out.println(“Hello world”); //konversi String 10, menjadi sebuah integer int i = Integer.parseInt(“10”); // representasi String dari int argument sebagai int 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 Jangkauansegala sesuatu yang berada dalam (inner block )/luar tanda (outer block) {...}
Terdapat 5 variabel i, j, k, m, n & 5 jangkauan A, B, C, D, E Jangkauan variable i adalah A. Jangkauan variable k adalah C. Jangkauan variable j adalah B. Jangkauan variable m adalah D. Jangkauan variable n adalah E.
Pada method main(), jangkauan variabel: ages[ ] - jangkauan A i in B - jangkauan B i in C - jangkauan C Pada method test(), jangkauan variabel: arr[ ] - jangkauan D i in E - jangkauan E
Jangkauan Variabel Pada saat pendeklarasian variabel, hanya satu variabel dengan identifier atau nama, yang dapat dideklarasikan dalam sebuah jangkauan c/ yang salah: { int test = 10; int test = 20; } int test = 0; System.out.print( test ); { int test = 20; }
Casting Casting Pokok pembahasan : Mengkonversi tipe data dari satu tipe ke tipe yang lain Pokok pembahasan : Casting data dengan tipe primitif Casting object
Casting Tipe Primitif Casting Implisit Casting Explisit Pengkonversian nilai dari satu tipe ke tipe yang lain Umumnya digunakan antar tipe data numerik Ada satu tipe data yang tidak dapat dikonversi boolean Tipe Casting: Casting Implisit Casting Explisit
Casting Tipe Primitif Casting Implisit c/ penyimpanan 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 Tipe PrimitifCasting Implisit Contoh lain : int numInt1 = 1; int numInt2 = 2; //hasilnya secara implisit tercasting menjadi double double numDouble=numInt1/numInt2;
Casting Tipe PrimitifCasting Explisit digunakan pada saat kita mengkonversi sebuah data dengan tipe yang lebih besar menuju tipe lebih kecil sintaks : (dataType)value dataType tipe data konversi value ekspresi yang me-return value dari tipe sumber
Contoh Casting Explisit char dapat digunakan sebagai int karena tiap char punya kode numerik sesuai posisinya dalam char set Char 'A' == 65 char valChar = 'A'; int valInt = valChar; System.out.print(valInt); //casting explisit:output 65 double valDouble = 10.12; int valInt = (int)valDouble; //konversi valDouble menjadi tipe int double x = 10.2; int y = 2; //menghasilkan result sebagai int int result = (int)(x/y);
Casting Object 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, Byteclass Wrapper
Casting Object 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 dll) 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
Casting Object Contoh : 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 : 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("Same value? " + str1.equals(str2)); }
Membandingkan Objects Hasil eksekusi program : String1: Free the bound periodicals. String2: Free the bound periodicals. Same object? true Same object? false Same value? True
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();
Next APlikasiEqualTest.java
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