LABORATORIUM KOMPUTER DASAR PROGRAM STUDI INFORMATIKA / ILMU KOMPUTER PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA PRAKTIKUM PEMROGRAMAN LANJUT SEMESTER :GENAP TAHUN : 2013/2014 MODUL 6 Judul Bab Disusun Oleh NIM Dilaksanakan Tanggal Asisten 1 Asisten 2 Dosen Pengampu : Interface : Gustian Ri’pi : 135150201111060 : 2 Mei 2014 : Faisol Andi Sefihara : Ovan Jaya Wardana : Issa Arwani, S.Kom., M.Sc. Pengesahan Tanggal: Asisten A. Definisi Masalah 1. Membuat sebuah kelas baru yang mengimplementasikan kelas interface Eatable. 2. Membuat kelas interface Colorable yang memiliki method dengan nama howToColor(). Kemudian implementasikan interface ini pada kelas Rectangle, dimana method howToColor() digunakan untuk memberikan warna dari bangun seraca random. 3. Membuat program yang melakukan instansiasi kelas dari soal nomor 1 dan soal nomor 2. B. Source Code 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Eatable.java public interface Eatable { public String howToEat(); } Telur.java public class Telur implements Eatable { //atribut data private int berat; private String warna; private double harga; //Constructor class Telur public Telur(int b, String w, double h) { berat = b; warna = w; harga = h; } //Procedure untuk menampilkan Jenis telur public void Jenis() { System.out.println("Jenis Telur ini adalah Telur Ayam"); } //Procedure untuk menampilkan berat, warna, dan harga telur public void cetak() { System.out.println("Memiliki Berat : " + berat + " gram"); 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 System.out.println("Memiliki Warna : " + warna); System.out.println("Memiliki Harga : Rp " + harga); } //Procedure untuk menampilkan cara mengolah telur untuk dimakan @Override public String howToEat() { String st = "Telur ini dapat dimakan dengan cara Digoreng atau Direbus"; return st; } } Colorable.java public interface Colorable { public String howToColor(); } Comparable.java public interface Comparable { public boolean compareTo(Object obj); } Rectangle.java public class Rectangle implements Comparable, Colorable { //atribut data private double height; private double width; public Rectangle() { height = 0.0; width = 0.0; } //Constructor class Rectangle public Rectangle(double h, double w) { height = h; width = w; } 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 //Fungsi untuk Mendapatkan nilai atribut height public double getH() { return height; } //Fungsi untuk Mendapatkan nilai atribut width public double getW() { return width; } //Fungsi untuk memberikan nilai atribut height dan width public void setHW(double h, double w) { height = h; width = w; } //Procedure untuk menghitung luas public double area() { return height * width; } //Procedure untuk menghitung keliling public double perimeter() { return 2 * (height + width); } //procedure untuk mencetak data dari bangun public void print() { System.out.println("Segi Empat :"); System.out.println(" Panjang : " + width + ", Lebar : " + height); System.out.println(" Luas : " + area()); System.out.println(" Keliling : " + perimeter()); } //Procedure untuk membandingkan Luas bidang1 dengan bidang2 @Override public boolean compareTo(Object obj) { if (area() == ((Rectangle) obj).area()) { System.out.println("Kedua bidang memiliki luas yang Sama."); return true; } else { System.out.println("Kedua bidang memiliki luas yang Berbeda"); return false; } 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 1 2 3 4 5 6 7 8 9 10 } //Procedure untuk memberikan warna bidang @Override public String howToColor() { String color = ""; int i = (int) (Math.random() * 11); switch (i) { case (1): color = "Merah"; break; case (2): color = "Jingga"; break; case (3): color = "Kuning"; break; case (4): color = "Hijau"; break; case (5): color = "Biru"; break; case (6): color = "Nila"; break; case (7): color = "Ungu"; break; default: color = "Warni"; } return color; } } TelurDemo.java public class TelurDemo { public static void main(String[] args) { Telur yes = new Telur(200, "Putih kekuningkuningan", 1500); yes.Jenis(); yes.cetak(); System.out.println(yes.howToEat()); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 RectangleDemo.java public class RectangleDemo { public static void main(String[] args) { Rectangle rect1 = new Rectangle(7, 5); Rectangle rect2 = new Rectangle(5, 4); System.out.println("Bidang 1 "); System.out.println("---------"); rect1.print(); System.out.println(" Warna : " + rect1.howToColor() + "\n"); System.out.println("Bidang 2"); System.out.println("--------"); rect2.print(); System.out.println(" Warna : " + rect2.howToColor() + "\n"); System.out.println("Hasil pembandingan Bidang1 dan Bidang2 : " + rect1.compareTo(rect2)); } } C. Pembahaasan Eatable.java 1-4 Deklarasi class interface dengan nama Eatable, dimana interface ini hanya memiliki sebuah method abstrak dengan nama howToEat. Telur.java 1 3-6 8-13 15-19 21-30 32-40 Deklarasi class dengan nama Telur; implementasi dari interface Eatable. Deklarasi atribut dengan nama: berat, warna, harga Constructor untuk class Telur; dengan parameter int b, String w, double h. Procedure untuk menampilkan jenis telur Procedure untuk menampilkan data telur yang meliputi : berat, warna, dan harga. Procedure untuk menampilkan cara mengolah telur; melakukan override pada method howToEat. Colorable.java 1-4 Deklarasi class interface dengan nama Colorable, dimana interface ini hanya memiliki sebuah method abstrak dengan nama howToColor. 1-4 Deklarasi class interface dengan nama Comparable, dimana interface ini hanya memiliki sebuah method abstrak dengan nama compareTo. Comparable.java Rectangle.java 1-2 4-6 8-11 13-17 19-22 24-27 29-34 36-39 41-44 46-54 56-69 71-102 Deklarasi class dengan nama Rectangle; implementasi dari kelas interface Comparable dan Colorable. Deklarasi atribut bertipe double dengan nama: height, width. Inisialisasi awal pada atribut height dan width dengan nilai 0.0 Constructor class rectangle; berparameter double h, double w. Fungsi untuk mendapatkan nilai atribut height; return height Fungsi untuk mendapatkan nilai atribut width; return width Fungsi untuk memberikan nilai pada atribut height dan width. Procedure untuk menghitung luas bidang; return height*width Procedure untuk menghitung keliling bidang Procedure untuk mencetak data dari kedua bangun Procedure untuk membandingkan luas bidang1 dan bidang2; override pada method compareTo. Procedure untuk memberikan warna bangun secara random; override pada method howToColor TelurDemo.java 1 2 3-4 4-8 5-7 Deklarasi kelas dengan nama TelurDemo Deklarasi method main Deklarasi obyek baru dengan nama yes; memberikan argument pada constructor class Telur. Mengakses data dari method Jenis() dan method cetak(), dan method howToEat. RectangleDemo.java 1 2 3 4 5-9 10-14 15-17 Deklarasi kelas dengan nama RectangleDemo Deklarasi method main Deklarasi obyek baru dengan nama rect1; memberikan argument(7, 5) pada constructor class Rectangle. Deklarasi obyek baru dengan nama rect2; memberikan argument(5, 4) pada constructor class Rectangle. Menampilkan data untuk bidang1; Mengakses data dari method print dan howToColor. Menampilkan data untuk bidang2; Mengakses data dari method print dan howToColor. Menampilkan hasil pembandingan Luas bidang1 dan bidang2; Mengakses data dari method compareTo. D. Screenshoot Program E. Kesimpulan A. Kesimpulan Program Program ini menggunakan konsep Interface. Class interface Eatable dimplementasikan pada class Telur, sedangkan class interface Comparable dan Colorable diimplementasikan pada class Rectangle. B. Kesimpulan Modul 1) Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. 2) Perbedaan Interface dan Abstract class : Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya hanya berupa konstanta Method pada abstract class dapat berupa method kongkrit dan method abstract. Sedangkan pada interface semua method harus berupa method abstract. 3) Interface dibutuhkan untuk mengaplikasikan suatu method yang rumit dan spesifik. Dengan menggunakan class interface maka dalam pembuatan program menjadi lebih cepat. Karena dapat melakukan multiple inheritance. F. Saran Sejauh ini sudah bagus.