Anda di halaman 1dari 44

Overview

Object Oriented Programming


with Java

Oleh : Aminudin
Tujuan Instruksional
• Mengulang dan mengingatkan kembali kepada
mahasiswa beberapa konsep penting OOP dan Struktur
Dasar Java
VARIABEL
Variabel adalah sebuah tempat atau lokasi dalam
memory untuk menyimpan sebuah nilai.
Deklarasi variabel = tipedata namavariabel;
Setiap variabel harus diasosiasikan dengan sebuah tipe
data.
Dalam java tipe data dibedakan menjadi 2 :
1.Primitive
Tipe data yang telah disediakan oleh java. Contoh : boolean,
char, int, float, double, long, short, byte.
2.Reference
Tipe data yang dibuat oleh programmer sendiri. Contoh :
class String, array, interface, dll.
Deklarasi Variabel
• Contoh :
float bilPecahan;
int jumlahBarang, unit, usia, stok;
char huruf=‘A’;
float nilai =10.00;
String alamat = “Malang”;
int A[] = {1,2,3};
Flow Control
• Branch (cabang)
• Digunakan untuk memilih perintah mana yang akan
dijalankan berdasarkan kondisi tertentu.
• Contoh : if

• Loop (perulangan)
• Suatu kelompok program dijalankan secara berulang.
Kondisi berhenti menyatakan berapa kali pengulangan
dijalankan.
• Contoh : while
Flow control : IF
Bentuk 1 :
if (condition)
{
• Kesalahan umum:
statement; if (x == 0);
} System.out.println (“x is zero”);
next statement
if (x > 0)
Bentuk 2 : System.out.println (“x = “);
if (condition) System.out.println (x);
{
statement1
}
else
{
statement2
}
next statement
Flow Control : Switch
• Perintah if-else-if yang membandingkan nilai sebuah konstant
atau bilangan bulat dapat digantikan dengan perintah switch.

int digit;
String digitName;
switch (digit) {
case 0: digitName = “zero”; break;
case 1: digitName = “one”; break;
case 2: digitName = “two”; break;
case 3: digitName = “three”; break;
case 4: digitName = “four”; break;
case 5: digitName = “five”; break;
case 6: digitName = “six”; break;
case 7: digitName = “seven”; break;
case 8: digitName = “eight”; break;
case 9: digitName = “nine”; break;
default: digitName = “”; break;
}
Flow control : ?
testExpr ? yesExpr : noExpr
 Berguna untuk menyederhanakan perintah if-then-else
sederhana
 Contoh:
if (x > 100){
y = x * 0.9;
} else {
y = x;
}

 Setara dengan:
y = (x > 100) ? (x * 0.9) : x;
Flow Control: while
while (condition){
statement;
}
/* Post condition: ~condition */

• Jika nilai ekspresi condition true, maka


statement akan dijalankan, kemudian ekspresi
condition akan dievaluasi lagi.
• Saat nilai ekspresi condition false, pengulangan
berhenti. Perintah statement tidak lagi dijalankan.
• Ingat: condition dievaluasi lebih dulu!
Flow Control: do-while

do {
statement;
...
} while (condition);
/* Post condition: ~condition */
• statement dijalankan lebih dulu, kemudian
condition dievaluasi.
• Jika kondisi true  statement dijalankan lagi.
• Jika kondisi false  loop berhenti.
• Minimal statement dijalankan sekali.
Flow control: for
for (initialization; condition; update) {
statement;
}

• setara dengan perintah while berikut:


initialization;
while (condition) {
statement;
update;
}
• for digunakan bila kita sudah tahu berapa banyak
pengulangan yang akan dilakukan.
MENGENAL OBJEK & CLASS

• Paradigma Class dan Objek


 Berbagai benda di sekitar kita adalah objek nyata yang
dapat dilihat, seperti : kucing, meja, rumah, orang , dll.
 Persoalannya, bagaimana memindahkan pemikiran
objek di dunia nyata menjadi objek pada software atau
pemrograman, khususnya Java?
MENGENAL OBJEK & CLASS

• Class dapat diumpamakan seperti spesifikasi atau


blueprint.
• Ambil contoh objek nyata yang akan dipindahkan adalah
objek orang.
• Jadi dapat diumpamakan bahwa Tuhan memiliki
class Orang yang kemudian membuat banyak objek
dari class Orang tsb, dan contoh objek tersebut
adalah Anda sendiri.
MENGENAL OBJEK & CLASS

• Dari definisi class Orang di atas, kita bisa membuat


objek-objek berdasar class tersebut.
• Objek-objek yang dibuat perlu disimpan dalam
variabel yang akan menyimpan referensi/address
dari objek yang dibuat.
• Proses pembuatan objek sering disebut sebagai
instansiasi class, sedangkan objeknya disebut
sebagai instance dari class
MENGENAL OBJEK & CLASS

• Data Member
• Setiap objek ‘orang’ pasti memiliki : nama, tinggi badan,
berat badan, warna rambut, warna kulit, jenis kelamin,
menggunakan kacamata, dll
• Ciri-ciri tersebut dapat dipindahkan menjadi variabel-
variabel dari class yang sering disebut sebagai : data
member (data field/attribut).
MENGENAL OBJEK & CLASS

• Contoh pemisalan objek orang nyata menjadi kode


program dalam class Orang :

class Orang {
String nama; //nama orang
int tinggiBadan; //dalam cm
int beratBadan; //dlm kg
String warnaRambut; //hitam, pirang, coklat
String warnaKulit; //sawoMatang, hitam, putih
String jenisKelamin; //pria atau wanita
boolean berkacamata; //bila berkacamata berarti true
}
MENGENAL OBJEK & CLASS

• Method
• Selain memiliki atribut(STATE) yang diimplementasikan sebagai
data member di atas, manusia juga dapat melakukan suatu aksi
atau pekerjaan tertentu (BEHAVIOR)
• Contoh aksi/behavior yang umum adalah menangis dan tertawa
• Kedua behavior tsb bisa dipindahkan ke dalam bahasa
pemrograman menjadi method sbb :
void menangsi() {
System.out.println(“hik..hikk..hik…”);
}

void tertawa() {
System.out.println(“ha..ha..ha..ha..”);
}
MENGENAL OBJEK & CLASS

• Method merupakan perwujudan aksi atau tindakan


dari dunia nyata di dalam pemrograman komputer.
• Method dalam dunia pemrograman juga “pasti
melakukan sesuatu aksi”, misalnya menampilkan
String di konsol
Method set dan get

• Method Mutator : dapat mengubah nilai


variabeldalam class / menangkap nilai. (Biasanya
mengadung kata 'set')
• Method Asesor : berfungsi mengembalikan nilai.
Dan ada nilai return. (Biasanya mengandung kata
'get')
Keyword this

• Keyword this digunakan untuk membedakan


atribut dengan parameter.
Constructor

• Constructor memiliki nama yang sama dengan class


• Kegunaannya antara lain untuk memberi nilai awal
pada anggota data.
• Konstruktor dijalankan secara otomatis saat obyek
diciptakan.
• Constructor tidak memiliki return value.
• Nama constructor itu harus sama dengan nama
class
MENGENAL OBJEK & CLASS

Memindahkan orang dari dunia nyata menjadi class Orang


Ilustrasi perbedaan antara class dan objek
MENGENAL OBJEK & CLASS

• Dari gambar di atas dapat dipahami bahwa suatu


class dapat memiliki banyak objek, dan setiap objek
akan mewarisi data member dan method yang
sama dari class
• Untuk membuat objek Orang dari class Orang,
gunakan keyword new sbb :
Orang orang1 = new Orang(“Izzuddin A Afif”);
Orang orang2 = new Orang(“Muhammad Fairuz”);
 setiap objek dapat memiliki state atau nilai data
member yang berbeda (hanya nama dan tipe
variabel yang sama)
Ilustrasi pembuatan objek dari class
Latihan 1
 Penjelasan method :
 Waktu adalah constructor yang akan Waktu
menginisialisasi seluruh atribut dg nilai
tertentu. public int jam
 getJam akan mengembalikan nilai jam, public int menit
yaitu nilai yang diperbolehkan adalah 0>=
jam <= 23, jika nilai jam tidak sama dengan public int detik
yang di perbolehkan maka nilai jam akan
diganti dengan 0. Constructor
 getMenit akan mengembalikan nilai menit, Int getJam
Nilai yang diperbolehkan adalah 0>= jam <= Int getMenit
59, jika nilai menit tidak sama dengan yang
di perbolehkan maka nilai menit akan Int getDetik
diganti dengan 0. Void cetakWaktu
 getDetik akan mengembalikan nilai detik,
nilai detik yang bisa adalah 0 >= detik<= 59,
jika nilai detik tidak sama dengan yang di
perbolehkan maka nilai detik akan diganti
dengan 0.
 cetakWaktu akan menuliskan ke layar
“Waktu saat ini jam:menit:detik”
Latihan 2
• Penjelasan method :
• PesanKamar adalah constructor yang PesanKamar
akan menginisialisasi seluruh atribut
dg nilai tertentu Int jumlahKamar
• totalBayar akan mengembalikan Int lamaInap
berapa yang harus dibayar oleh Double harga
pemesan. String namaPemesan
(total =
lamaInap*jumlahKamar*harga) PesanKamar
• cetakBill akan menuliskan ke layar Double totalBayar()
“Tagihan untuk Tn./Ny. … sebesar Rp Void cetakBill()
…”
Latihan 3
• Buat Method :
• demoDate adalah constructor yang akan demoDate
menginisialisasi seluruh atribut dg nilai
tertentu. int tanggal
int bulan
• nextDay untuk mengubah nilai Date ke
satu hari setelah hari ini. int tahun
• nextMonth untuk mengubah nilai Date ke nextDay()
satu bulan setelah hari ini.
nextMonth()
• nextYear untuk mengubah nilai Date ke
satu tahun setelah hari ini. nextYear()
• displayDate untuk menuliskan ke layar displayDate()
tanggal, bulan dan tahun.
Fitur OOP
• Encapsulation
• Inheritance
• Polymorphism
Fitur OOP
• Enkapsulasi  suatu cara untuk menyembunyikan
implementasi detail dari suatu class dalam rangka
menghindari akses yang ilegal. Contoh : konsep class
& modifier.
• Inheritansi  dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan. Dengan konsep
inheritance, sebuah class dapat mempunyai class
turunan. Contoh : extends
• Polymorphism  kemampuan untuk
merepresentasikan 2 bentuk yang berbeda. Contoh :
overriding
Enkapsulasi
• Enkapsulasi  merupakan istilah dimana variable
dan method dibungkus dalam sebuah unit yang
disebut class.
• Dengan melakukan enkapsulasi, kita dapat
menyembunyikan atau memproteksi suatu proses
dari kemungkinan interferensin atau penyalagunaan
dari luar sistem sekaligus menyederhanakan
penggunaan sistem itu sendiri.
Contoh Enkapsulasi
Inheritance
• Inheritance  salah satu kelebihan pemrograman
java, dimana tujuanya adalah mengurangi duplicate
pengkodean (reducing code),
• Dengan menggunakan konsep pewarisan, sebuah
objek bisa mendapatkan properti dari objek yang
lainya.
• Teknik pewarisan ini dilakukan dengan menurunkan
sifat atau method yang ada pada superclass ke
subclass-nya.
Contoh Inheritance
Polimorpisme
• Polimorpisme  merujuk pada kenyataan bahwa
pemrogram bisa membuat method dengan nama
yang sama baik dalam satu class maupun dalam class
yang berbeda.
1. void data(int i) dan void data(String i) adalah dua
method yang berbeda. Walaupun bernama method
sama, parameter input-nya berbeda.
2. void data(int j) dan void data(int k) adalah dua method
yang sama karena memiliki nama method dan tipe
parameter input yang sama.
3. void data(String i, int j) dan void data(int i, String j)
adalah dua method yang berbeda. Walaupun memiliki
nama method dan dua tipe parameter input yang sama,
posisi tiap parameternya berbeda.
Jenis Polimorpisme
• Dua jenis polimorpisme
1. Overriding  Dua method yang memiliki kesamaan, baik
nama method maupun tipe parameternya, dimana
kedua method ini berada pada class yang berbeda yang
saling berhubungan. Overriding terjadi ketika beberapa
class membentuk sebuah hierari pewarisan.
2. Overloading keadaan dimana terdapat dua method
bernama sama, namun parameter inputnya berbeda.
Kedua method tersebut berada dalam class yang sama.
Jika dibuat dua method yang sama baik nama method
dan parameter inputnya, interpreter java akan
memberikan tanda error.
Contoh Polimorpisme
Abstract Class

• Abstract class adalah kelas yang di dalamnya terdapat


method abstrak.
• Method abstrak adalah method yang hanya terdiri
atas definisi dan tidak memiliki implementasi.
• Contoh :
public abstract void printInfo();
Tujuan: subclass memiliki tingkah laku yang
lebih spesifik.
Abstract Class

• Abstract class adalah kelas murni (tanpa


objek) dan tidak boleh dibuat objek (tidak
boleh ada instansiasi) serta method-method
yang abstract harus disempurnakan oleh kelas
turunannya melalui override.
Abstract Class
abstract class Staff
public int masa_kerja
abstract void bayarGaji()

Programmer SistemAnalis
+public void bayarGaji() +public void bayarGaji()

Gaji Programmer 2 Juta apabila Gaji Sistem Analis 4 Juta


masa kerja <2 Tahun dan 4 juta apabila masa kerja <2 Tahun
apabila masa kerja lebih dari 2 dan 6 juta apabila masa kerja
tahun lebih dari 2 tahun
Latihan Inheritance abstract message
• Kelas Message memiliki atribut inbox dan outbox.
Method : + inbox
• constructor akan menginisialisasi inbox dan + outbox
outbox dengan nol. + constructor()
• getInbox akan mengembalikan nilai inbox + getInbox()
• setInbox akan mengubah nilai inbox menjadi in + setInbox(in)
• getOutbox akan mengembalikan nilai outbox + getOutbox()
• setOutbox akan mengubah nilai outbox menjadi + setOutbox(out)
out + abstract send()
+ abstract receive()
• Kelas ShortMessage memiliki atribut kapasitas dan
pesan. Method :
• constructor akan menginisialisasi kapasitas
dengan 156.
• getKapasitas akan mengembalikan nilai kapasitas shortMessage multimediaMessage
• setKapasitas akan merubah nilai kapasitas dengan
cap + kapasitas
• bacaPesan akan menuliskan isi pesan ke layar + pesan
+ send() Override
• tulisPesan akan mengisi pesan dengan msg dan
+ receive() Override
mengurangi kapasitas dengan panjang + constructor()
• send akan menuliskan ke layar “1 SMS dikirim” dan + getKapasitas()
outbox bertambah 1
+ setKapasitas(cap)
• receive akan menuliskan ke layar “1 SMS diterima”
dan inbox bertambah 1 + bacaPesan()
+ tulisPesan(msg, panjang)
• Kelas MultimediaMessage. Method :
+ send() Override
• send akan menuliskan ke layar “1 MMS dikirim”
dan outbox bertambah 1 + receive() Override
• receive akan menuliskan ke layar “1 MMS
diterima” dan inbox bertambah 1
Latihan Inheritance
• Penjelasan Method
lingkaran
• Class lingkaran
• Constructor() digunakan untuk - final double phi = 3.14;
menginisialisasi nilai awal radius; - double radius;
• hitungLuas() digunakan untuk + constructor ()
menghitung luas lingkaran = + double hitungLuas()
radius*radius*phi;
• Class silinder
• Construtor() digunakan untuk
silinder
menginisilasi nilai panjang dan
radius; - double panjang
• hitungVolume() digunakan untuk + constructor()
menghitung volume silinder = luas
+ hitungVolume()
lingkaran*panjang;
+ cetakVolume()
• cetakVolume() digunakan untuk
mencetak volume Silinder.
Latihan Polimorphisme
Abstract zakat
• Class zakat
- int umur
• Int hitungZakat()
• Class zakatKambing + abstract int hitungZakat()
• Constructor()
• hitungZakat()
• Untuk menghitung wajib zakat
jika :
• Umur kambing lebih zakatKambing zakatSapi
dari 2 tahun dan - Int banyak - Int banyak
banyaknya kambing >
100, wajib zakat akan int hitungZakat() + int hitungZakat()
kenakan kelipatan dari
100.
• Class zakatSapi
• Constructor()
• hitungZakat() • Buatlah fungsi main yang akan
• Untuk menghitung wajib zakat
jika :
menunjukkan konsep polimorfisme
• Umur sapi lebih dari 5 dengan memanfaatkan kelas zakat,
tahun dan banyaknya
Sapi > 2, wajib zakat zakatKambing, dan zakatSapi.
akan kenakan kelipatan
dari 2.
Daftar Pustaka
• L.N. Harnaningrum, Struktur Data menggunakan
Java, Graha ilmu, 2010
• Siswanto, Algoritma & Struktur Data Linier, Graha
Ilmu, 2010
• Ruli Manurung, Ade Azurat, Struktur Data dan
Algoritma, Fasilkom UI, 2008

Anda mungkin juga menyukai