Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
Modul 2
Objek, Kelas, dan Instance Variabel 1. Deklarasi variable, kelas, dan method Di setiap bahasa pemrograman, programmer selalu membuat variabel untuk dapat memanipulasi data dan mengoperasikannya. Suatu variabel mempunya format seperti berikut: [access specifier] [tipe data] [nama variabel]; Contoh: public int bilangan; Di Java, variabel mempunyai dua jenis tipe data: primitif dan objek reference. Tipe data primitif adalah tipe data yang hanya mempunyai suatu nilai saja, seperti: byte, int, short, long, float, double, char, boolean (ditandai dengan huruf awalnya huruf kecil). Sedangkan tipe objek reference, selain menyimpan suatu nilai, variabel dengan tipe data ini juga berupa objek dan dapat menggunakan method-‐method yang ada di dalam kelas objek tersebut. Kelas adalah suatu blueprint dari objek dan objek mempunyai kelakuan atau method (di sebut function dalam C). Contoh kelas public class Manusia { … //Disini dideskripsikan tentang objek manusia dan //behaviournya (methodnya) } Sebuah method ada yang mempunyai parameter dan ada yang tidak dan mengembalikan suatu nilai sesuai sifat dari method tersebut, kecuali void (method dengan sifat void tidak mengembalikan nilai apa-‐apa). Contoh method yang mengembalikan suatu nilai: public double luas(double panjang, double lebar) {
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
return panjang * lebar; //mengembalikan nilai luas ke suatu statement //yang memanggil method ini } Contoh method yang tidak mengembalikan nilai: int luas; //variabel luas tidak diinisialisasi nilai public void aturLuas(double panjang, double luas) { luas = panjang * lebar; } Method main method utama yang mengeksekusi suatu rentetan program. Contoh: public class Manusia { public static void main(String[] args) { … //semua kode akan dieksuksi di dalam sini } } 2. Mengonstruksi objek Programmer Java dalam memprogram sering menggunakan kelas-‐kelas yang ada di library Java (API). Kelas-‐kelas tersebut digunakan untuk mengonstruksi objek yang akan dipakai oleh programmer. Seperti yang dijelaskan diatas, jika suatu objek kita konstruksi, lalu kita simpan (alamat objek tersebut) dalam suatu variabel, maka tipe data dari variabel tersebut haruslah objek reference yang berarti tipenya adalah suatu kelas. Untuk mengonstruksi sebuah objek, kita perlu menggunakan kata new diikuti nama konstruktor dari kelas yang kita akan lahirkan objeknya. (nama konstruktor sama dengan nama kelas) Contoh konstruksi sebuah objek:
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
//mengonstruksi objek Rectangle untuk membuat persegi panjang Rectangle box = new Rectangle(); Nama Kelas Nama objek/variabel Konstruktor Di dalam satu kelas di Java API, biasanya terdapat lebih dari satu konstruktor, satu konstruktor kosong dan konstruktor-‐konstruktor lainnya yang mempunyai parameter untuk inisialisasi nilai dari objek tersebut. Contoh konstruktor berparameter: //menginisialisasi nilai-‐nilai dalam objek rectangle berlabel box Rectangle box = new Rectangle(5, 10, 20, 30); Kelas Rectangle memiliki definisi-‐definisi tentang koordinat x & y dan komponen panjang dan lebar dari suatu objek persegi panjang. Contoh lain: //mengonstruksi objek Color Color warna = new Color(255, 0, 0); Kelas diatas adalah kelas Color, yaitu kelas yang dipakai untuk membuat objek yang berkaitan dengan warna. Di dalam kelas Color terdapat konstruktor Color (float r, float g, float b), yaitu untuk menginisialisasi objek bertipe Color dengan nilai RGB (Red, Green, Blue). Untuk contoh di atas, nilai r = 255, g = 0, dan b = 0 yang berarti objek warna yang dikonstruksi diatas berwarna merah. Untuk objek yang dikonstruksi oleh konstruktor kosong seperti Rectangle box = new Rectangle();, untuk mengubah nilai-‐nilai variabel yang ada diobjek tersebut, kita dapat menggunakan method-‐method yang ada didalam kelas Rectangle. Contoh: //mengubah nilai koordinat x dan y dari persegi panjang box box. setLocation(5, 10); //mengubah nilai panjang dan lebar dari persegi panjang box box.setSize(20,30); Kita juga dapat memanggil nilai dari suatu variabel dalam objek Rectangle. Contoh:
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
//method getWidth() mengembalikan nilai panjang dari persegi panjang box box.getWidth(); 3. Instance Variabel Instance variabel adalah variabel dari kelas yang kita gunakan objeknya. Contoh: //Vehicle.java public class Vehicle { private int speed; //instance variabel private int acceleration; //instance variabel public int getSpeed() //instance method { return speed } public void setSpeed(int speed) //instance method { this.speed = speed; } } Kelas tersebut akan kita gunakan pada kelas VehicleTester. //VehicleTester.java public class VehicleTester { public static void main(String[] args) { //konstruktor kosong seperti Vehicle akan secara otomatis //di deklarasikan secara implisit apabila tidak ada konstruktor //yang kita deklarasikan //statement dibawah disebut juga instansiasi Vehicle kendaraan = new Vehicle(); Kendaraan.setSpeed(60);
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
}
System.out.println(kendaraan.getSpeed);
} Kelas Vehicle tester diatas menggunakan instance method dari kelas Vehicle untuk mengubah nilai dari speed. Hal tersebut dilakukan karena instance variabel speed bersifat private. Maka itu, speed tidak dapat diakses dari luar kelas Vehicle. Untuk mengubah nilainya, kita butuh instance method yang mengakses variabel speed. Method yang digunakan untuk mengambil nilai suatu variabel disebut setter method dan method yang digunakan untuk mengembalikan suatu nilai disebut getter method. Oleh karena itu, instance method yang digunakan untuk mengubah nilai speed adalah setSpeed dan getSpeed digunakan untuk mengambil nilai speed. 4. Pengenalan GUI Pembuatan GUI dalam java terdiri dari dua cara, yaitu membuat frame dan mengisi frame tersebut dengan sesuatu. Untuk membuat frame, kita membutuhkan kelas JFrame: import javax.swing.JFrame; . . . . JFrame frame = new JFrame(); //mengatur ukuran frame frame.setSize(300,400); //mengatur title pada frame; frame.setTitle(“Hello!”); //program akan berhenti saat frame di-‐close. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Misalnya kita sudah akan membuat komponen/isi dari frame tersebut: import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D;
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
import java.awt.Rectangle; import javax.swing.JComponent; /** * Kelas ini digunakan untuk menggambar persegi panjang * * @author Ghiffari Aulia * @version 2011.10.05 * */ public class RectangleComponent extends JComponent { //Method public void paintComponent(Graphics g) { //Mengonstruksi objek Rectangle Rectangle box = new Rectangle (5,10,20,30); //Membuat instance Graphics2D Graphics2D g2 = (Graphics2D) g; //Menggambar persegi panjang g2.draw(box); //Mengatur warna merah g2.setColor(Color.RED); //Mengisi warna kuning pada persegi panjang g2.fill(box); //Mengatur warna merah g2.setColor(Color.RED); //Menggambar kembali persegi panjang g2.draw(box); } }
Lalu kita masukkan RectangleComponent tersebut ke dalam frame: RectangleComponent component = new RectangleComponent(); frame.add(Component); //agar frame terlihat di layar frame.setVisible(true);
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 )
Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
Tugas Buat program yang menampilkan Input Dialog dan meminta masukan bilangan real yang terdiri dari panjang, lebar, koordinat x, dan koordinat y dari suatu persegi panjang. Lalu program tersebut menggambarkan persegi panjang tersebut sesuai komponen luas dan koordinat yang dimasukkan dan berwarna kuning dengan garis pinggir berwarna merah setebal 5 pixel. Anda diminta untuk menggambarkan sebuah persegi panjang dalam sebuah JFrame dengan spesifikasi sebagai berikut: 1. Persegi Panjang tersebut digambar dengan menggunakan garis pinggir berwarna merah. Tebal garis 5 pixel. 2. Persegi Panjang tersebut kemudian akan di-‐fill dengan warna kuning Program anda akan memiliki kemampuan untuk berinteraksi dengan pengguna, melalui komponen JOptionPane. Berikut informasi yang harus anda kumpulkan dari pengguna: 1. Panjang dari Persegi Panjang 2. Lebar dari Persegi Panjang 3. Komponen axis dari titik awal Persegi Panjang 4. Komponen ordinat dari titik awal Persegi Panjang Program yang akan anda buat ini memanfaatkan Java2D dan Java Swing sebagai komponen GUI yang disediakan oleh java. Contoh Running Program 1. Program akan meminta pengguna untuk memasukkan input besaran panjang dari persegi panjang seperti gambar di bawah
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 )
Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
2.
3.
Program meminta input untuk lebar persegi panjang
Pengguna memasukkan input koordinat titik awal persegi panjang
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 )
Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
4.
Program menampilkan Persegi Panjang sesuai spesifikasi
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
Ide :
1. Meminta masukan 4 bilangan bulat dari 4 Input Dialog 2. Membuat 4 masukan tadi menjadi parameter sebuah objek dengan tipe kelas Rectangle 3. Menggambar persegi panjang sesuai input parameter yang diberikan. 4. Mewarnai persegi panjang dengan warna kuning. 5. Menggambar lagi persegi panjang dengan garis pinggir berwarna merah dan tebal 5 pixel.
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
Algoritma: 1. Membuat kelas untuk menampilkan Input Dialog. 2. Minta masukan bilangan buat pertama, kedua, ketiga, dan keempat . Masukan dibaca sebagai string. 3. Simpan ke dalam variabel x, y, panjang, lebar dengan tipe String. 4. Parsing semua variabel tersebut ke dalam format integer lalu disimpan variabel x, y, panjang, lebar di kelas RectangleMaker dengan tipe double. 5. Buat objek dari JFrame untuk menampilkan frame ke layar. 6. Membuat objek dari komponen yang akan dimasukkan ke frame dan ditampilkan ke layar. Kelas dari komponen menggambar dan mewarnai persegi panjang dan mengatur warna dan tebal garis pinggir persegi panjang. Kelas tersebut mengambil data koordinat x, y, panjang, dan lebar dari method di kelas RectangleMaker. 7. Masukkan komponen ke dalam frame dan mengatur tampilan ke layar visible. Catatan: 1. Buat untuk mem-‐parse String ke dalam bentuk integer, gunakan method parseInt() di kelas Integer. 2. Buat dokumentasi untuk seluruh program kalian sesuai format dokumentasi javadoc, seperti program di bawah: /** * This class is used to withdraw, deposit and get balance * from user account * */ public class BankAccount { private double balance; /** Construtor to assign the value of balance to 0 if user doesn't want to initiate it. */ public BankAccount() { balance = 0; } /** Constructor to initiate the value of balance
Modul Praktikum Object Oriented Programming ( OOP ) 2
Tim Asisten: M.Normansyah ( 0806459835 ) Ghiffari Aulia ( 0806339105 ) M.Adhitya Akbar ( 0806316801 ) Dosen : Prof.Dr-‐ing.Ir.Kalamullah Ramli, M.Eng
@param initialBalance */ public BankAccount(double initialBalance) { balance = initialBalance; } //Methods /** Deposit money to the bank account. @param amount the amount to deposit */ public void deposit(double amount) { balance = balance + amount; } /** Withdraw money to the bank account. @param amount the amount to deposit */ public void withdraw(double amount) { balance = balance - amount; } /** Get the current balance of the bank account. @return the current balance. */ public double getBalance() { return balance; } }
3. Ketik perintah javadoc *.java untuk menghasilkan file dokumentasi dari semua file java yang kalian buat.