ABSTRACT & INTERFACE Pemrograman Lanjut Herman Tolle
ABSTRACT Abstract Class (Abstraksi) adalah kelas yang memiliki satu atau lebih method yang belum didefinisikan Method dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, cukup menulis deklarasi method tanpa isi tubuh class dan digunakan menggunakan kata kunci abstract. Contoh: public abstract void somemethod();
ABSTRAKSI
Penggunaan class Abstract Class abstract dapat digunakan sebagai superclass untuk satu atau lebih sub class (kelas turunan) Method abstract didefinisikan pada class abstract sebagai definisi umum saja, yang harus didetailkan / diimplementasikan pada kelas turunannya.
INTERFACE Interface adalah sebuah blok (setingkat class) yang hanya berisi signature method dan constant (konstanta) Signature method dapat dianggap seperti sebuah abstract method. Method yang tidak memiliki implementasi tetapi hanya berupa nama method saja
public interface Movable { public void moveup(); public void movedown(); public void moveleft(); public void moveright();
public class MovablePoint implements Movable { // Private member variables private int x, y; // (x, y) coordinates of the point // Constructor public MovablePoint(int x, int y) { this.x = x; this.y = y; @Override public String tostring() { return "Point at (" + x + "," + y + ")"; // Implement abstract methods defined in the interface Movable @Override public void moveup() { y--; @Override public void movedown() { y++; @Override public void moveleft() { x--; @Override public void moveright() { x++; Movablepoint.class
public class TestMovable { public static void main(string[] args) { Movable m1 = new MovablePoint(5, 5); // upcast System.out.println(m1); m1.movedown(); System.out.println(m1); m1.moveright(); System.out.println(m1);
Implementasi Interface Menggunakan kata kunci IMPLEMENTS public class MovablePoint implements Movable Class hanya dapat mengextend SATU superclass, tetapi dapat mengimplementasikan BANYAK interface. Ketika class mengimplementasikan sebuah interface, selalu pastikan bahwa semua method dalam interface telah diimplementasikan semuanya pada class tsb, jika tidak, akan ada pesan kesalahan Line.java:4: Line is not abstract and does not override abstract
Kapan menggunakan interface? Kita menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method atau fungsi-fungsi yang sama. Melalui interface kita dapat menangkap kemiripan diantara class yang tidak berhubungan Sebuah Class dapat mengimplementasikan lebih dari satu interface.
Interface Naming Convention Use an adjective (typically ends with "able") consisting of one or more words. Each word shall be initial capitalized (camelcase). Forexample: Serializable, Extenalizable, Movable, Clonable, Runnable, etc.
Pewarisan Antar Interface Interface bukan bagian dari hirarki class. Interface dapat mempunyai hubungan pewarisan antara mereka sendiri. Contohnya, misal kita punya dua interface StudentInterface dan PersonInterface. Jika StudentInterface meng-extend PersonInterface, maka ia akan mewariskan semua deklarasi method dalam PersonInterface. public interface PersonInterface {... public interface StudentInterface extends PersonInterface {...
Contoh Interface
Contoh Kasus Ada 2 class: class Line dan class MyInteger class Line berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Class MyInteger berisi method yang membandingkan object MyInteger ke object dari class yang sama. Kedua class mempunyai method yang hampir sama, yaitu memperbandingkan dua object lain dalam tipe yang sama. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan fungsi yang sama, kita dapat menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method untuk fungsi-fungsi pembandingan.
public interface Relation { public boolean isgreater( Object a, Object b); public boolean isless( Object a, Object b); public boolean isequal( Object a, Object b);
public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; private String nama; public Line(double x1, double x2, double y1, double y2, String name){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.nama = name; 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);
Latihan Buat Class MyInteger yang mengimplementasikan penggunaan interface Relation Buat class MovableCircle yang mengimplementasi interface movable
Latihan 1. Buat Kode Program untuk menentukan mana garis terpanjang dan mana garis terpendek dari input 3 buah objek garis (Line) 2. Buat Class dan Program seperti kasus di atas untuk objek Persegi Panjang (atribut: X1, X2, Y1, Y2) Catatan: soal no 2 dikerjakan dan dikumpulkan
File 1: Relation.java File 2: Line.java File 3: TestLine.java // file 3: TestLine.java public static void main() { Line LineA = new Line(3,7,8,4, GarisA ); Line LineB = new Line(-2,2,2,-2, GarisB ); Line LineC = new Line(10,13,3,-2, GarisC ); Line Max = new Line(0,0,0,0, max ); Max = LineA; If Max.isGreater(LineB, Max) Max = LineB; If Max.isGreater(LineC, Max) Max = LineC; System.out.println( Garis terpanjang adalah = + Max.getName());
Interface dapat diturunkan dari satu atau lebih interface interface Hockey extends Sports, Event Class dapat mengimplement lebih dari satu Class PersegiPanjang implements Relation, Movable, Resizable
Latihan F 1. Buat Kode Program untuk menentukan mana garis terpanjang dan mana garis terpendek dari input 3 buah objek garis (Line) 2. Buat Class dan Program seperti kasus di atas untuk objek Persegi Panjang (atribut: X1, X2, Y1, Y2), mencari objek TERLUAS dari input 3 buah objek Persegi Catatan: soal no 2 dikerjakan dan dikumpulkan