You are on page 1of 35

Selamat datang di Kuliah Pemrograman Berorientasi Objek (Week 3)

By: Priadhana Edi Kresnha


Universitas Muhammadiyah Jakarta

Email: priadhana.edi@ui.ac.id Website:


http://priadhana.wordpress.com

Last Week
Dasar-dasar java Control statement Pengenalan class diagram

Minggu ini
Atribut, properti, dan static variabel Pembuatan objek dan inisialisasi Constructor Keyword this

Atribut, Properti, static variable


Atribut adalah data-data yang mendeskripsikan objek Misalkan class Mahasiswa, atributnya adalah data yang menjelaskan mahasiswa tersebut, seperti nama,nim,ipk,mobil,kuliah yang diambil,dsb Atribut juga mencakup objek-objek dari kelas lain, yang dimiliki oleh Mahasiswa, dalam hal ini disebut hubungan agregation
4

Atribut, Properti, static variable class Mobil {


class Mahasiswa { String nama; String nim; double ipk; Kuliah kuliah[]; public Mahasiswa() { } } String nama; String bahanbakar; public Mobil() { } } class Kuliah { String nama; String kode; Kuliah prasyarat[]; public Kuliah () { } } Dalam suatu objek, bisa terdapat objek lain dengan tipe sama dengan objek itu sendiri!!

Atribut, Properti, static variable


Selama ini, ketika ingin mengakses suatu atribut dalam objek, kita langsung menulis atribut dalam objek tersebut
Mahasiswa joko = new Mahasiswa(); joko.nama = Joko Supriyanto; joko.nim = 123456789; joko.ipk = 2.55; joko.kuliah = new Kuliah[3];

Atribut, Properti, static variable


Kuliah pbo = new Kuliah(); pbo.nama = Pemrograman Berorientasi Objek; pbo.kode = IK220; pbo.prasyarat = new Kuliah[2]; Kuliah pemrograman = new Kuliah(); pemrograman.nama = Dasar-dasar Pemrograman; pemrograman.kode = IK130; pemrograman.prasyarat = null;

pbo.prasyarat[0] = pemrograman; pbo.prasyarat[1] = new Kuliah(); pbo.prasyarat[1].nama = Struktur Data dan Algoritma; pbo.prasyarat[1].kode = IK210; pbo.prasyarat[1].prasyarat = null;

Atribut, Properti, static variable


joko.kuliah[0] = pemrograman; joko.kuliah[1] = pbo.prasyarat[1]; joko.kuliah[2] = pbo; Jika di print dengan perintah System.out.println(Prasyarat kuliah +joko.kuliah[2].nama+ yang diambil +joko.nama+ adalah +joko.kuliah[2].prasyarat[0]+ dan +joko.kuliah[2].prasyarat[1])

maka hasilnya adalah sebagai berikut, Prasyarat kuliah pbo yang diambil joko adalah Dasar-dasar Pemrograman dan Struktur Data dan Algoritma
8

Atribut, Properti, static variable


Dalam implementasinya, seringkali atribut dalam suatu objek tidak langsung diakses, harus melalui perantara Perantara ini adalah method yang mengubah, dan mengambil nilai atribut Method-method ini disebut properti, terdiri dari method get dan set (get-set method)

Atribut, Properti, static variable


Dari contoh sebelumnya, class Mahasiswa berubah menjadi

10

Atribut, Properti, static variable


Dari contoh sebelumnya, class Mobil berubah menjadi

11

Atribut, Properti, static variable


Dari contoh sebelumnya, class Kuliah berubah menjadi

12

Exercise
Pada kasus program elevator, tambahkan properti get-set di masing-masing kelasnya

13

Static variable
Static variabel adalah variabel dalam suatu kelas yang nilainya sama untuk semua objeknya Mirip dengan bangsa borg dalam serial film startrek Begitu seseorang dari bangsa tersebut mendapatkan knowledge, maka secara otomatis semua orang dalam bangsa tersebut bertambah knowledgenya
14

Static variable
Bisa disebut global variabel Cara-cara untuk mengakali OOP. Tapi jika tahu fungsinya maka Anda akan mengerti bahwa static variabel sangat berguna Class Mobil { String nama; String bahanbakar; static int jumlahRoda; }
15

Static variable
Mobil marcedes = new Mobil(); marcedes.nama=Marcedes; System.out.println(marcedes.nama); Mobil suzuki = new Mobil(); suzuki.nama=Suzuki; System.out.println(suzuki.nama);

16

Static variable
marcedes.jumlahRoda=4; System.out.println(marcedes.jumlahRoda); suzuki.jumlahRoda=5; System.out.println(suzuki. jumlahRoda); System.out.println(marcedes. jumlahRoda);

17

Static variable
Static variabel bisa diubah melalui kelasnya, bukan atributnya Mobil.jumlahRoda=10; System.out.println(marcedes.jumlahRoda); System.out.println(suzuki. jumlahRoda); System.out.println(Mobil. jumlahRoda);

18

Pembuatan Objek
2 hal yang perlu diperhatikan : inisialisasi dan clean Kadang programmer lupa untuk inisialisasi variabel error Untuk bahasa C/C++ programmer juga lupa untuk membersihkan variabel memory leaks & zombie. Resource terutama memory cepat habis

19

Pembuatan Objek
class Mobil { public void berjalan() {} } Mobil bmw; bmw.berjalan();

Error, object has not been initialized

Mobil bmw; Mobil bmw=new Mobil() bmw.berjalan();

Mobil bmw=new Mobil(); bmw.berjalan();

20

Pembuatan Objek
Jika konstruktor tidak didefinisikan (seperti program sebelumnya) maka sistem akan membuat konstruktor default Kita bisa membuat konstruktor sendiri sehingga inisialisasi awal bisa dilakukan
class Mobil { private int type; public Mobil(int type) { this.type=type; } public void berjalan() {} }

21

Pembuatan Objek
Dalam 1 kelas bisa terdapat lebih dari 1 konstruktor dengan jumlah parameter yang berbeda. Kemampuan ini disebut overloading. Berlaku juga untuk method.

22

Pembuatan Objek
class Mobil { private int type; private int size; public Mobil(int type) { this.type=type; } public Mobil(int type,int size) { this.type=type; this.size=size; } }
23

Pembuatan Objek
Sebuah konstruktor bisa memanggil konstruktor lain dalam kelas yang sama Konstruktor lain hanya bisa dipanggil pada awal perintah dalam konstruktor pemanggil. Implikasinya adalah konstruktor lain hanya bisa dipanggil sekali dalam konstruktor pemanggil.

24

Pembuatan Objek
class Mobil { private int type; private int size; public Mobil(int type) { this.type=type; } public Mobil(int type,int size) { this(type); this.size=size; } }
25

Exercise
Buatlah class Manusia dengan atribut nama bertipe String dan umur bertipe int Buatlah properti untuk class Manusia tersebut Buatlah constructor tanpa argumen / parameter yang mencetak pesan
objek manusia berhasil terbentuk

Buatlah constructor baru, dengan argumen nama dan umur manusia. Nama dan umur manusia diberi nilai sesuai argumen ini Panggil constructor yang sudah ada melalui constructor yang baru ini Cetak lah nama dan umurdalam constructor baru. Hasil cetaknya adalah
<nama manusia> berumur <umur>
26

Inisialisasi data static


Data atau method tidak bergantung pada objek dari suatu kelas Berlaku mirip dengan variabel global
class Mobil { public static int jmlRoda; } Mobil.jmlRoda = 4;

27

Inisialisasi array
Array adalah rangkaian primitif yang sama dikemas dalam sebuah identifier Biasa ditulis
int[] a; int a[];

Inisiasialisasi bisa langsung diberi nilai, atau menggunakan new


int[] a={1,2,3,4,5}; int[] a=new int[5];

28

Keyword this
Keyword this digunakan untuk memanggil method / variabel dalam objek itu sendiri
public class Leaf { int i=0; Leaf increment() { i++; return this; } void print() {System.out.println(i=+i);} public static void main(String args[]) { Leaf l=new Leaf(); l.increment().increment().print(); } }

29

Keyword this
public class Leaf { How do compiler knows int i=0; which i is being used? void increment(int i) { this.i=this.i+i; } void print() {System.out.println(i=+i);} public static void main(String args[]) { Leaf l=new Leaf(); l.increment(5); l.increment(8); l.print(); } }
30

Exercise
Ingat-ingatlah exercise mengenai elevator Tambahkan method naik tanpa argumen Dalam method tersebut, nilai lantai ditambah 1 (diincrement), dan mengembalikan nilai objek itu sendiri Tambahkan method turun tanpa argumen Dalam method tersebut, nilai lantai dikurang 1 (didecrement), dan mengembalikan nilai objek itu sendiri Buat method print yang mencetak posisi elevator saat itu Buatlah code di main method, insialisasi elevator, elevator terletak di lantai 5, kemudian naikkan elevator sebanyak 3 dan cetak hasilnya. Turunkan elevator sebanyak 1 dan cetak hasilnya. Kerjakan tugas ini di kertas. Implementasikan dalam program komputer, pertemuan depan 31 dikumpulkan

Clean up : finalization & garbage collection


Java menyediakan System.gc() dan method finalize() Mirip dengan free(<variable>) di C dan delete <variabel> di C++ Tidak ada jaminan perintah langsung dikerjakan Hanya memberitahukan bahwa objek tidak memiliki referensi dan siap di hapus JVM bisa kehabisan memory atau windows system resource

32

Clean up : finalization & garbage collection


Mobil m = new Mobil() m.finalize(); System.gc();

33

Tugas
Tulis method static yang membuat, inisialisasi dan mengembalikan array tipe double. Array tersebut memiliki 3 argumen : ukuran array, nilai awal, nilai akhir. nilai-nilai dalam array adalah range dari nilai awal hingga nilai akhir Tulis method yang menerima argumen array double[] dan mencetaknya Jalankan code tersebut Contoh : Masukkan 3 angka dipisah spasi : 3 1 2 Output : 1.0 1.5 2.0
34

Tugas
Modifikasi exercise sebelumnya, buat kelas baru yang memproses pembuatan array double[] Method pembuatan array double dalam kelas baru, adalah method non static Jalankan program dengan cara yang sama seperti sebelumnya, dan hasilnya pun sama dengan sebelumnya

35

You might also like