Class dan Object [1] Class mendeskripsikan atribut (attribute) dan kelakuan (behaviour) dari object Kita menggunakan object kalau kita perlu mengolah data yang lebih rumit dari sekedar bilangan Nama dari class merupakan tipe data
November 2, 2021 Algoritma & Pemrograman 4
Class dan Object [2] Mendefinisikan (membuat) suatu class berarti menentukan method-method-nya dan variabel- variabel instan-nya Method menentukan kelakuan/behaviour/perilaku/kemampuan object Variabel instan menentukan attributes/states/properties/status/keadaan object
November 2, 2021 Algoritma & Pemrograman 5
Contoh Kasus: Rekening Bank Membuat class yang mendeskripsikan rekening bank Tentukan nama class: BankAccount Tentukan operasi apa yang dapat dilakukan pada rekening bank menyetor uang mengambil uang mendapatkan informasi saldo Operasi tersebut diekspresikan dengan methods: deposit: untuk setor uang withdraw: ambil uang getBalance: informasi saldo November 2, 2021 Algoritma & Pemrograman 6 Method: Definisi Definisi method terdiri dari: Header Penentu akses/access modifier (optional) Batasan / kemampuan khusus / qualifier (optional) Tipe data yang dikembalikan: return type Nama method Daftar dari parameters method Body (implementasi dari method) November 2, 2021 Algoritma & Pemrograman 7 Method: Syntax [1] <modifiers> <qualifiers> return-type method-name (<<qualifier> <variable-type variable-name>, header <qualifier> <variable-type variable-name>, …) { // body of method body <return variable;> }
Method: Access Modifiers Penentu akses/access modifier : izin untuk mengakses ke method tersebut Misal: public, private Modifiers dapat dihilangkan (optional) Jenis-jenis pengaksesan / access modifiers: public dapat diakses oleh semua class protected dapat diakses oleh semua class pada package / directory yang sama private dapat diakses oleh method / variabel- variabel pada class tersebut saja dan tidak dapat diakses oleh class lain November 2, 2021 Algoritma & Pemrograman 10 Method: Qualifiers [1] Qualifiers dapat dihilangkan (optional) Qualifiers mendefinisikan batasan / kemampuan khusus yang dimiliki oleh method Jenis-jenis qualifiers: static Sebuah object dari class ini tidak perlu dibuat dan pemanggilan method tidak menggunakan object, melainkan dengan memanggil nama class ClassName.method(). Konsep static untuk method sama dengan konsep static untuk atribut
November 2, 2021 Algoritma & Pemrograman 11
Method: Qualifiers [2] Jenis-jenis qualifiers (lanjutan): final Definisi method tidak dapat diubah. Qualifier final digunakan untuk mengimplementasikan pewarisan atau subclasses native Method memanggil prosedur atau program dalam bahasa lain synchronized Method bersifat ini berguna untuk multi-threading
November 2, 2021 Algoritma & Pemrograman 12
Method: Return-type Return type: tipe data hasil komputasi suatu method Misal: double, void Method getBalance mengembalikan nilai saldo account berupa floating point (pecahan); Jadi return type: double. Method deposit dan withdraw hanya melakukan update data saja; Tidak mengembalikan nilai: void
November 2, 2021 Algoritma & Pemrograman 13
Method: Nama & Parameter Nama dari method (mis: deposit, withdraw) Parameter merupakan input dari suatu method Mis: method deposit memerlukan satu parameter (jumlah uang) dengan tipe data double Jika tidak ada parameter, simbol: () harus tetap digunakan. Jika lebih dari satu parameter maka setiap parameter dipisahkan oleh simbol koma: ,
November 2, 2021 Algoritma & Pemrograman 14
Kerangka Class: Rekening Bank public class BankAccount { public void deposit (double amount) header { // body of deposit method } public void withdraw (double amount) header { // body of withdraw method } public double getSaldo() header { // body of getSaldo method } } November 2, 2021 Algoritma & Pemrograman 15 Pemanggilan Method [1] Kita dapat membuat suatu variabel object dengan tipe class BankAccount: BankAccount tabunganAndi;
Object tersebut dapat digunakan datanya
dengan cara memanggil methods yang dikenal: tabunganAndi.deposit(2000); tabunganAndi.withdraw(500); System.out.println("Balance:" + tabunganAndi.getBalance());
// menghitung bunga double interestRate = 5; // 5% suku bunga double interestAmount = tabunganAndi.getBalance() * interestRate / 100; tabunganAndi.deposit(interestAmount);
November 2, 2021 Algoritma & Pemrograman 17
Variabel-Variabel Instan Setiap object harus menyimpan state-nya, yaitu himpunan nilai-nilai yang menggambarkan keadaannya dan mempengaruhi bagaimana ia bereaksi terhadap pemanggilan method State disimpan dalam satu atau lebih variabel instan Case: BankAccount state-nya adalah status saldo terakhir
public class BankAccount {
private double balance; // variabel instan // statement lainnya }
November 2, 2021 Algoritma & Pemrograman 18
Variabel Instan: Definisi Definisi variabel instan terdiri atas: Access modifiers (misal: private, public) Tipe data dari variable (misal: double) Nama variable (misal: balance) Setiap object memiliki variabel instan sendiri
November 2, 2021 Algoritma & Pemrograman 19
Method dan Variabel Instan
November 2, 2021 Algoritma & Pemrograman 20
Constructors [1] Apa state awal ketika setelah sebuah object dibuat? Constructor adalah method khusus untuk menginisialisasi variabel-variabel instan dari object Method Constructor Namanya sama dengan nama class-nya Tidak mempunyai return-type November 2, 2021 Algoritma & Pemrograman 21 Constructors [2] Contoh pada BankAccount: public BankAccount () { balance = 0.0; } Constructor ini adalah suatu constructor default, yaitu constructor yang tidak mempunyai parameter
November 2, 2021 Algoritma & Pemrograman 22
Constructors [3] Constructor dapat lebih dari satu: kita memilih nilai awal (status) object yang dibuat Contoh: public BankAccount () { balance = 0.0; } public BankAccount (double initialBalance) { balance = initialBalance; }
November 2, 2021 Algoritma & Pemrograman 23
Pemanggilan Constructor [1] Constructor selalu dijalankan dengan operator new Operator new bertugas untuk: 1. mengalokasikan memori untuk object baru 2. memanggil constructor untuk menginisialisasi memori tersebut 3. mengembalikan reference ke object yang baru dibuat / dikonstruksikan Reference ke object dapat dianggap sebagai alamat dari object (lokasi memori) November 2, 2021 Algoritma & Pemrograman 24 Pemanggilan Constructor [2] Constructor bukan method biasa, sehingga tidak dapat dijalankan oleh object Jadi constructor hanya dapat dijalankan dengan operator new tabunganAndi.BankAccount (2000); // salah tabunganAndi = new BankAccount (2000); // benar
November 2, 2021 Algoritma & Pemrograman 25
Pemanggilan Constructor [3] Statement: BankAccount tabunganAndi; // berisi null tabunganAndi = new BankAccount (); mempunyai makna: buat object baru dari class BankAccount, inisialisasi balance = 0, dan simpan reference ke object tersebut dalam variabel tabunganAndi Object diakses dengan reference-nya atau dengan variabel yang mengandung reference-nya. tabunganAndi.deposit (5000); Variabel yang berisi reference ke object disebut object- variable November 2, 2021 Algoritma & Pemrograman 26 Overloaded Method [1] Dalam Java, nama yang sama boleh dipakai untuk lebih dari satu method atau constructor, asalkan daftar parameternya berbeda Method/constructor itu dikatakan overloaded Proses penggunaan satu nama untuk berbagai method disebut overloading
November 2, 2021 Algoritma & Pemrograman 27
Overloaded Method [2] Contoh overloaded method aMethod yang benar:
Contoh overloaded method aMethod yang salah:
November 2, 2021 Algoritma & Pemrograman 28
Object: Constructor Variable Object tipe reference Object tidak cukup hanya dengan mendeklarasikan variabel Misalkan: BankAccount tabunganAndi; belum dapat digunakan karena hanya dibuat tempat untuk “reference” saja Object harus diciptakan (dibuat) dengan operator new tabunganAndi = new BankAccount();
November 2, 2021 Algoritma & Pemrograman 29
Penggunaan Class Kebutuhan: Suatu tabungan dibuat dengan saldo awal Rp. 10.000,-. Bunga dihitung per-tahun 5%. Berapa saldo tabungan setelah 2 tahun? Gunakan class BankAccount Step 1: Berikan nama class dari aplikasi yang akan digunakan untuk masalah di atas: public class BackAccountTest Step 2: Tentukan fungsi/aktifitas object yang perlu, Untuk menghitung hasil bunga, harus diketahui saldo (method mana yang akan digunakan untuk mendapatkan saldo dari class BankAccount) Bagaimana menghitung bunga? Bunga di hitung per tahun Selama 2 tahun, untuk tahun kedua maka hasil bunga tahun pertama akan menghasilkan bunga juga November 2, 2021 Algoritma & Pemrograman 30 November 2, 2021 Algoritma & Pemrograman 31 Meng-copy Object Reference [1]
Sekarang saldo2 berisi 1500, Sekarang baik saldo1 maupun
saldo1 tetap 1000 saldo2 berisi 1500.
November 2, 2021 Algoritma & Pemrograman 32
Meng-copy Object Reference [2] Ingat tentang dua macam tipe data! Dua macam tipe data: primitif & reference Variabel primitif: berisi nilai data primitif Assignment: nilai-nya yang di-copy! Variabel reference: berisi reference ke object (alamat object). Object berada di tempat lain. Assignment: reference-nya yang di-copy. Object-nya tidak di-clone.
November 2, 2021 Algoritma & Pemrograman 33
Null Reference Ada suatu reference spesial yaitu null, yang tidak menunjuk object apapun Tidak diperbolehkan menggunakan method pada object yang berisi null null != 0
November 2, 2021 Algoritma & Pemrograman 34
Petunjuk Pendefinisian Class [1] Petunjuk untuk menemukan class kata benda calon class kata kerja calon method Contoh: Berapa nilai uang semua koin dalam dompet Step 1: Menentukan Object (object kata benda, methods kata kerja). Kata benda: nilai uang, koin, dompet Kata kerja: menyimpan,membelanjakan November 2, 2021 Algoritma & Pemrograman 35 Petunjuk Pendefinisian Class [2] Step 2: Karakterisik dari object Dompet mempunyai coin (berbagai nilai), coin dapat disimpan ke dalam dompet, total uang merupakan jumlah keseluruhan coin. Coin mempunyai nilai dan nama (identifikasi: penny, dime etc); terdapat methods untuk mengambil nilai dan nama; terdapat constructor untuk membuat coin dengan nilai dan nama tertentu.
November 2, 2021 Algoritma & Pemrograman 36
November 2, 2021 Algoritma & Pemrograman 37 November 2, 2021 Algoritma & Pemrograman 38 November 2, 2021 Algoritma & Pemrograman 39 Encapsulation Kita bisa menyembunyikan (encapsulate) kerumitan membaca input dari keyboard dalam sebuah class ConsoleReader Masih ingat cara membaca input dari keyboard Object InputStream (System.in)
Object InputStreamReader
Object BufferedReader
November 2, 2021 Algoritma & Pemrograman 40
Tahapan pembuatan class 1. Rumuskan behaviour 2. Buat definisi method 3. Tentukan variabel-variabel instan untuk merepresentasikan state / status 4. Implementasikan semua method
November 2, 2021 Algoritma & Pemrograman 41
Tahap 1: Behaviour dapat baca string satu baris dapat baca integer dapat baca bilangan floating point
Pemakai class ini tidak perlu mengurusi lagi
bufferedreader, konversi ke bilangan, penanganan exception
November 2, 2021 Algoritma & Pemrograman 42
Tahap 2: Definisi Method & Constructor
November 2, 2021 Algoritma & Pemrograman 43
Tahap 3: Tentukan Variabel Instance Untuk membaca sebaris input, kita perlu suatu object bertipe BufferedReader. Reference ke object ini akan disimpan dalam suatu variabel instan dalam class ConsoleReader
Instance variable ini akan di-inisialisasi dalam constructor
November 2, 2021 Algoritma & Pemrograman 44
Tahap 4: Implementasikan Method [1] method readLine() dari class ConsoleReader memanggil method readLine() dari class BufferedReader dan menangani kemungkinan terjadinya IOException.
November 2, 2021 Algoritma & Pemrograman 45
Tahap 4: Implementasikan Method [2] Method readInt() dan readDouble() menggunakan method readLine() di atas untuk baca sebaris input dan kemudian mengubah input menjadi bilangan yang sesuai
Implementasi selesai! Algoritma & Pemrograman
November 2, 2021 46 Ringkasan [1] Kita menggunakan object untuk memanipulasi data yang lebih kompleks dari sekedar bilangan Untuk membuat class kita harus mendefinisikan method dan variable instan-nya. Object dibuat dengan menggunakan operator new, diikuti oleh constructor. Variabel primitif menyimpan nilainya. Variable reference menyimpan reference.
November 2, 2021 Algoritma & Pemrograman 47
Ringkasan [2] Ketika variabel primitif di-copy ke variabel primitif lain, variabel tersebut mendapat duplikat nilainya. Sedangkan jika variabel reference di-copy ke variabel lain, variabel tersebut mendapatkan reference ke object yang sama. Null reference tidak menunjuk ke sebuah object. Menjalankan method pada object null mengakibatkan run-time error. November 2, 2021 Algoritma & Pemrograman 48