Anda di halaman 1dari 48

#6

Class, Method, Instance


Review
 Language: paradigma, compiler, interpreter
 Object, Class, Method (OOP concept)
 Tipe Data - Primitif & Reference
 Expression
 Operator, Operand, Precedence,
Associativity
 Assignment
 Conversion, Casting
 Baca input dari keyboard
November 2, 2021 Algoritma & Pemrograman 2
Outline
 Perilaku Obyek
 Mendefinisikan Method
 Variable instan/variable obyek
 Implementasi Method
 Constructor
 Variable reference & null reference

November 2, 2021 Algoritma & Pemrograman 3


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;>
}

<> menyatakan optional

November 2, 2021 Algoritma & Pemrograman 8


Method: Syntax [2]
 Contoh definisi method:
private String setName (String aName) header
{
name = aName;
body
return name;
}

November 2, 2021 Algoritma & Pemrograman 9


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());

November 2, 2021 Algoritma & Pemrograman 16


Pemanggilan Method [2]
// transfer antar rekening
double transferAmount = 500;
momsSavings.withdraw(transferAmount);
tabunganAndi.deposit(transferAmount);

// 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

Anda mungkin juga menyukai