modul 5

6
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.

Upload: setiawan

Post on 03-Dec-2015

67 views

Category:

Documents


0 download

DESCRIPTION

Modul 5 Pemrograman Berbasis Objek

TRANSCRIPT

Page 1: Modul 5

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

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

} 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

} 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

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

} 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!