modul 5
DESCRIPTION
Modul 5 Pemrograman Berbasis ObjekTRANSCRIPT
![Page 1: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/1.jpg)
MODUL PRAKTIKUM V
ABSTRACT CLASS, INTERFACE DAN POLYMORPHISM
A. Tujuan
1. Memahami class abstract
2. Memahami interface
3. Memahami polymorphism
B. Dasar Teori
1. Kelas Abstrak (Abstract Class)
Kelas abstrak adalah kelas yang terletak di posisi tertinggi dalam hierarki class. Kelas
ini tidak dapat diinstansiasi karena masih bersifat abstrak. Kelas ini hanya berisi variabel-
variabel umum dan deklarasi method tanpa detail implementasi. Selanjutnya kelas-kelas
yang menjadi turunan dari kelas abstraklah yang akan mengimplementasikan method-
method tanpa implementasi tersebut.
2. Interface
Interface memungkinkan pemrogram untuk berbagi konstanta atau menentukan
bentuk metode yang dapat digunakan oleh sejumlah kelas. Beda interface dengan kelas
abstrak :
1) Kelas abstrak dapat mengandung method abstract maupun method tidak abstract,
sedangkan interface hanya boleh mengandung method abstract
2) Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface hanya
dapat mendeklarasikan konstanta
3) Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan kata kunci
extends, sedangkan sebuah interface diimplementasikan ke dalam suatu class dengan
menggunakan kata kunci implements, dan sebuah kelas dapat mengimplementasikan
lebih dari satu interface.
3. Polymorphism
Polymorphism merupakan konsep sederhana dalam bahasa pemrograman berorientasi
obyek yang berarti kemampuan sebuah obyek untuk menghasilkan aksi yang berbeda,
bila method yang sama dipanggil, dimana aksi method yang dikerjakan tergantung dari
tipe obyeknya.
![Page 2: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/2.jpg)
C.Latihan
Petunjuk : Sebelum melakukan percobaan latihan, mengenai source code latihan dibawah
sudah lolos uji kompilasi pada Java 7. Jika terjadi sebuah kesalahan kemungkinan besar
merupakan kesalahan murni dari praktikan.
Percobaan Polymorphism
public class Person { protected String name; protected String address; /** * Default constructor */ public Person(){ System.out.println("Inside Person:Constructor"); name = ""; address = ""; } /** * Constructor dengan dua parameter */ public Person( String name, String address) { this.name = name; this.address = address; } /** * Method accessor */ public String getName() { System.out.println("Person Name : " +name); return name;} public String getAddress() { return address; } public void setName(String name) { this.name = name; } public void setAddress(String add) { this.address = add; } } public class Student extends Person{ public Student() { //super( "SomeName", "SomeAddress"); //super(); //super.name = "name"; System.out.println("Inside Student:Constructor"); } public String getName() { System.out.println("Student Name : " +name); return name;
![Page 3: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/3.jpg)
} public static void main( String[] args) { Student anna = new Student();} } } public class Employee extends Person{ public String getName() { System.out.println("Employee Name:" +name); return name; } } public static void main(String[] args) { { Person ref; Student studentObject = new Student(); Employee employeeObject = new Employee(); ref = studentObject; //Person menunjuk kepada object Student String temp = ref.getName(); //getName dari Student class dipanggil System.out.println(temp); ref = employeeObject; //Person menunjuk kepada object Employee temp = ref.getName(); //getName dari Employee class dipanggil System.out.println(temp); } } } }
Percobaan Abstract
public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk(); } public class Human extends LivingThing{ public void walk(){ System.out.println("Human walks..."); } }
Percobaan Inferface
public class Line implements Relation{ private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2;
![Page 4: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/4.jpg)
} public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); } } public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
D. PRAKTIKUM
1. Impementasikan UML class diagram dibawah!
![Page 5: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/5.jpg)
Berikut dibawah contoh member kelas implementasi:
class demo interface{ public static void main(String args[]) { implementasi impl=new implementasi(); impl.method1(); impl.method2(); impl.method3(); impl.method4(); } }
Tampilan yang diharapkan(contoh):
Implementasi method 1……
Implementasi method 2……
Implementasi method 3……
Implementasi method 4……
2. Let’s make something useful!
import java.awt.*; import java.awt.event.*; class ImplementsDemo extends Frame implements WindowListener { Label label; ImplementsDemo(String title) { super(title); label = new Label("Close the frame."); this.addWindowListener(this); } void launchFrame() { setSize(300,300); setVisible(true); } /* Method dibawah merupakan implementasi dari Interface 'WindowListener' */ public void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowClosing(WindowEvent e) { setVisible(false); System.exit(0); } public void windowDeactivated(WindowEvent e) {
![Page 6: Modul 5](https://reader036.vdocuments.pub/reader036/viewer/2022071700/563db7e0550346aa9a8ecde2/html5/thumbnails/6.jpg)
} public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { } public static void main(String args[]) { ImplementsDemo cf = new ImplementsDemo("Close Window Example"); cf.launchFrame(); } }
3. Dari percobaan praktikum 2 tambahkan ucapan selamat datang dengan menggunakan
kotak dialog(misal: JOptionPane) ketika Window dibuka!
E. TUGAS RUMAH
1. Berikan argumentasi anda tentang perbedaan antara Interface dan Abstract? Sertakan
contoh program untuk memperkuat argumen anda!
2. Jelaskan mengapa diperlukan konsep Polymorphism!
3. Jelaskan kondisi yang tepat untuk penggunaan Abstract dan Interface!
4. Berikan capaian pemahaman anda dalam bentuk persentase (0%-100%) tentang
praktikum pertemuan ini!