i Class Dan Object

24
TUGAS PEMROGRAMAN BERBASIS OBJEK \ NAMA : SUHEN KHANAFI NIM : 100030169 KELAS : F103

Transcript of i Class Dan Object

TUGAS PEMROGRAMAN BERBASIS OBJEK

\

NAMA : SUHEN KHANAFI NIM : 100030169 KELAS : F103

I. CLASS DAN OBJECT Pengertian Class dan Object 1.Class Class adalah struktur dasar dari OOP (Object Oriented Programming). Terdiri dari dua tipe yaitu : field (attribute/property) dan method (behavior). Class digunakan untuk mendeklarasikan sebuah variabel yang berupa objek atau dinamakan referensi objek (object reference) a. Attribute Berlaku sebagai data, didefinisikan oleh class,individu, berbeda satu dengan lainnya. Menggambarkan tampilan, status, kualitas dari object. Contoh : class motorcycle attribute-nya = color [red, green, silver] style [cruiser, sport bike, standart] make [Honda, BMW] Didefinisikan dalam class dengan menggunakan variabel. b. Behavior Berlaku sebagai method (operasi). Menggambarkan bagaimana sebuah instance class beroperasi misal bagaimana reaksi dari class jika diminta untuk melakukan sesuatu hal. Contoh : class motorcycle behavior-nya = start the engine stop the engine change gear Untuk menentukan behavior dari object harus membuatMethods. Contoh Program:class Motorcycle { String make; String color; boolean engineState; void startEngine() { if (engineState == true) System.out.println("The engine is already on."); else { engineState = true; System.out.println("The engine is now on."); } } void showAtts() { System.out.println("This motorcycle is a " + color + " " + make); if (engineState == true) System.out.println("The engine is on."); else System.out.println("The engine is off.");

} public static void main (String args[]) { Motorcycle m = new Motorcycle(); m.make = "Yamaha RZ350"; m.color = "yellow"; System.out.println("Calling showAtts..."); m.showAtts(); System.out.println("------"); System.out.println("Starting engine..."); m.startEngine(); System.out.println("------"); System.out.println("Calling showAtts..."); m.showAtts(); System.out.println("------"); System.out.println("Starting engine..."); m.startEngine(); } }

2. Object Setiap Object (obyek) dibangun dari sekumpulan data (atribut) yang disebut"variabel" (untuk menjabarkan karakteristik khusus dari obyek) dan juga terdiri dari sekumpulan method (menjabarkan tingkah laku dari obyek) atau Obyek adalah = sebuah perangkat lunak yg berisi sekumpulan variabel dan method yg berhubungan. Obyek mrpk.sebuah instance (keturunan) dari class. Variabel dan method diketahui sbg. Variabel instance dan method instance. Program lengkapnya

Program di atas harus disimpan dengan nama DemoKotak1.java bukan Kotak.java karena method main ( ) terletak di class DemoKotak1. Pada saat kompilasi program akan membentuk 2 buah file class, yaitu Kotak.class dan DemoKotak1.class. Setiap objek dari class akan memiliki salinan data sendiri-sendiri, artinya antara objek satu dengan lainnya dapat mempunyai nilai data yang berbeda. Bandingkan contoh program di bawah: Program memiliki 2 objek yang masing-masing bernama k1 dan k2.

Contoh berikut merupakan conntoh deklarasi dari class Orang dengan objek adalah O. //PROGRAMclass Orang{ String nama; String alamat; String no_telp; };

class CobaOrang { public static void main(String[] args) { Orang O = new Orang(); // Mengisikan nilai ke dalam data-data kelas Orang O.nama = "Putri Mahadewi"; O.alamat = "Jl. Pemuda 113 Magelang" ; O.no_telp = "0293-360345"; //Menampilkan data Orang System.out.println("DATA ORANG"); System.out.println("========================="); System.out.println("NAMA = "+O.nama); System.out.println("ALAMAT = "+O.alamat); System.out.println("NO.TELP = "+O.no_telp); } }

A. Instansiasi objek Akses Variable Instance Untuk mengambil value dari suatu variable instance kita gunakan notasi titik(.). Dengan notasi titik, sebuah instance atau variable class dibagi dua bagian. Object berada di kiri titik dan variable berada di kanan titik Pegawai.tugas Pegawai adalah object, tugas adalah variable.Misalkan tugas adalah object yang mempunyai variable instance sendiri yaitu status, penulisan dapat ditulis sebagai berikut Pegawai.tugas.status; Memberi Nilai Variabel Untuk memberi nilai variable kita gunakan operator sama dengan(=) disebelah kanan ekspresi. Pegawai.tugas.status = SELESAI; // SELESAI==true Contoh :// Nama File : Testpoint.java import java.awt.font; class Testpoint { public static void main(String args[]) { Point poin = new Point(10,10); System.out.println(X = + point.x); System.out.println(Y = + point.y); System.out.println(Setting X = 6 ); poin.x = 6; System.out.println(Setting Y = 14); poin.y = 14; System.out.println(X = + point.x); System.out.println(Y = + point.y); } }

B. Constructor Constructor adalah method khusus yang didefinisikan di dalam kelas dan akan dipanggil secara otomatis setiap kali terjadi instansiasi objek, dan merupakan method yang mengembalikan tipe kelas (dirinya sendiri). Fungsi dari constructor adalah untuk melakukan instansiasi nilai terhadap data-data yang terdapat pada kelas bersangkutan. Apabila tidak mendefinisikan constructor maka secara otomatis Java akan membuatkannya untuk kita. Constructor semacam ini disebut dengan default constructor, yang akan menginisialisasikan semua data yang ada dengan nilai nol, string dengan nilai null, variabel boolean diset ke false.Beberapa hal yang perlu diperhatikan pada saat mendefinisikan constructor kelas adalah constructor tidak mempunyai tipe kembalian, nama constructor harus sama persis dengan nama kelas yang didefinisikan. Program. DemoConstructor1.javaclass Kotak { double panjang; double lebar; double tinggi; // Mendefinisikan constructor untuk kelas Kotak Kotak() { panjang = 4; lebar = 3; tinggi = 2; } double hitungVolume() { return (panjang * lebar * tinggi); } }

class DemoConstructor1 { public static void main(String[] args) { Kotak k1, k2; k1 = new Kotak(); k2 = new Kotak(); System.out.println("Volume k1 = " + k1.hitungVolume()); System.out.println("Volume k2 = " + k2.hitungVolume()); } double hitungVolume() { return (panjang * lebar * tinggi); } } class DemoConstructor1 { public static void main(String[] args) { Kotak k1, k2; k1 = new Kotak(); k2 = new Kotak(); System.out.println("Volume k1 = " + k1.hitungVolume()); System.out.println("Volume k2 = " + k2.hitungVolume()); }

}

Pada program di atas, ada proses inisialisasi nilai panjang, lebar dan tinggi masingmasing adalah 4, 3, 2. yang akan berlaku pada semua objek kotak.Untuk membuat Constructor berlaku dinamis, maka harus diberi parameter, seperti berikut. Program DemoConstructor2.java

Overload pada Constructor Berdasarkan contoh class Kotak di atas, maka dapatlah dibuat overload pada constructor. Kasusnya adalah membuat tiga buah constructor yaitu constructor tanpa parameter, constructor yang memiliki satu buah parameter, dan constructor yang memiliki tiga buah parameter.Kotak ( ){ panjang = 0; lebar = 0; tinggi = 0; } Definisi constructor tanpa parameter

Kotak (double sisi){ panjang = lebar = tinggi = sisi; } Definisi constructor dengan satu parameter

Kotak (double p,double l, double t){ panjang = p; lebar = l; tinggi = t; } Definisi constructor dengan tiga parameter

DemoOverloadConstructor.java// Deklarasi Class Kotak // Mendefinisikan constructor tanpa parameter // Mendefinisikan constructor dengan satu parameter // Mendefinisikan constructor dengan tiga parameter double hitungVolume() { return (panjang * lebar * tinggi); } } class DemoOverloadConstructor { public static void main(String[] args) { Kotak k1, k2, k3; k1 = new Kotak(); k2 = new Kotak(10); k3 = new Kotak(4, 3, 2); //Menampilkan volume dari masing-masing objek Kotak System.out.println("Volume k1 = " + k1.hitungVolume()); System.out.println("Volume k2 = " + k2.hitungVolume()); System.out.println("Volume k3 = " + k3.hitungVolume()); } }

C. Atribut & Method

Atribut Atribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau sebuah field data. Mendeklarasikan Atribut : ::= [= ]; ::= byte | short | int | long | char | float | double | boolean | Catatan : [] = Menunjukkan bahwa bagian ini hanya pilihan Contoh: public class AttributeDemo { private String studNum; public boolean graduating = false;

protected float unitsTaken = 0.0f; String college; }

Method Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik di dalam kelas. Method dapat dibagi menjadi fungsi dan prosedur. Fungsi adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah dengan mengembalikan hasil. Prosedur adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah tanpa mengembalikan suatu nilai hasil. Secara umum method dalam java adalah sebuah fungsi.

Karakteristik method : 1. Dapat mengembalikan satu nilai atau tidak sama sekali 2. Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali. Parameter bisa juga disebut sebagai argumen dari fungsi 3. Setelah method telah selesai dieksekusi, dia akan kembali pada method yang Memanggilnya. Deklarasi sebuah method Method terdiri atas dua bagian yakni : 1. Method declaration 2. Method Body Method dapat digambarkan sebagai sifat (behavior) dari suatu class. Untuk mendefinisikan method pada dalam class digunakan sintaks sintaks [modifier] nama_method( [parameter] ) { methode body } Contoh : public int Perkalian (int y;int z) { methode body }

Modifier pada method Modifier menentukan level pengaksesan sebuah method. Hal ini menentukan apakah sebuah method bisa diakses oleh objek lain, objek anak, objek dalam satu paket atau tidak dapat diakses oleh suatu object sama sekali berikut adalah beberapa jenis level access: Public

Atribut ini menunjukan bahwa fungsi/method dapat diakses oleh kelas lain.

Private Atribut ini menunjukan bahwa fungsi atau method tidak dapat diakses oleh kelas lain Protected Atribut ini menunjukan bahwa fungsi atau method bisa diakses oleh kelas lain dalam satu paket dan hanya kelas lain yang merupakan subclass nya pada paket yang berbeda. Tanpa modifier Atribut ini menunjukan bahwa method dapat diakses oleh kelas lain dalam paket yang sama. Abstract Fungsi tidak memiliki implementasi. Final Method tersebut tidak dapat dioverride oleh kelas turunan. Static Method dapat diakses tanpa harus melakukan instantiasi terlebih dahulu.

II. Abstraction Dengan kata lain Abstraction dapat diartikan sebagai cara pandang kita terhadap suatu sistem yang terdiri dari kumpulan subsistem yang saling berinteraksi. Subsistem dapat pula diartikan sebagai suatu objek. Contohnya pada Radio. Dalam Radio terdapat bermacam macam subsistem, antara lain : sistem antena dan channel, sistem playback, sistem on, sistem off dan lain sebagainya. Semua objek ( sub sistem ) yang terdapat dalam sistem Radio tersebut saling berinteraksi satu sama lain. Interaksi disini berupa pesan yang dapat disebut juga sebagai parameter. Contoh penerapan Abstraction dapat dilihat dibawah ini : class Radio { int volume = 0; void naikkanvolume(int volume) { this.volume = this.volume + volume; System.out.println(Volume Radio : + this.volume); } } public class RadioBeraksi {

public static void main (String[] args) { Radio radioku = new Radio(); radio.naikkanvolume(5); } } Dari contoh diatas, dapat dilihat terjadinya interaksi antar objek didalam system Radio, saya mengambil contoh volume Radio. Dari public class Radio Beraksi berinteraksi dengan class Radio dengan mengirimkan pesan informasi yang berupa parameter > naikkanvolume(5). Selain itu abstraction bisa disebut FILTERING,sistem apa saja yang di butuhkan/digunakan dalam membangun aplikasi. Dipilih relevan sistem yangakan dibangun.

III. Encapsulation Encapsulation dapat diartikan sebagai bungkusan (wrapper) pelindung program dan data yang sedang diolah. Sehingga pengguna (user) tidak perlu mengetahui isi dari method (fungsi) dan data yang digunakan. Pengguna (user) hanya cukup mengetahui tipe data, dan mengisi variable (atau membuat variable baru) sesuai dengan tipe data dari obyek yang bersangkutan. Pada Encapsulation dikenal dengan namanya Information Hiding.Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private.Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter. Jika kita telah melakukan information hiding terhadap suatu attribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap attribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu attribut tersebut, hal tersebut kita kenal dengan Interface to Access Pada encapsulation juga kita kenal istilah modifier public, private, dan protected: Public adalah izin akses public sebuah atribut biasanya digunakan oleh sebuah class jika sebuah atribut diperbolehkan diakses secara langsung oleh class lain. sebuah atribut yang dinyatakan sebagai public dapat diakses secara langsung oleh class lain di luar class yang membungkusnya. Private adalah izin akses private pada sebuah atribut biasanya digunakan oleh sebuah class untuk melindungi atribut-atributnya agar tidak dapat diakses oleh class lain. sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya. Protected adalah izin akses protected sebuah atribut biasanya digunakan oleh sebuah class jika sebuah atribut diperbolehkan diakses secara langsung oleh class lain yang merupakan class turunannya (inheritance). sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses

secara langsung oleh class lain di luar class yang membungkusnya kecuali class class turunannya. ImplementasiDari topik-topik diatas buatlah definisi/penjelasannya terlebih dahulu, lalu disertai dengan contoh kodingnya atau penerapannya pada Bahasa Java waktu (2 minggu) Tugas kelompok (max 4 orang) Tugas di upload di Blog dilarang full plagiat /* Disimpan dalam file andi.java */ class andi { public static void main(String arg[]) { manusia andi= new manusia("Andi"); System.out.println("Nama= "+ andi.tampilkanNama()); andi.makan(); } }

/* Disimpan dalam file manusia.java */ class manusia { public String nama; public manusia(String n) { this.nama = n; } public String tampilkanNama() { return nama; } protected void makan() { System.out.println("Nyam... nyam... nyam..."); } public void kerja() {

System.out.println("Kerja... kerjaaa..."); } public void bunuhDiri() { System.out.println("Dor .. bruk..."); } Hasil Running

class TingkatAkses{ int a; public int b; private int c; public void setc(int ci){ this.c=ci; } public int getc(){ return c; }

} class Coba{ public static void main (String []args){ TingkatAkses obj=new TingkatAkses(); obj.a=10; obj.b=20; // obj.ci=30; obj.setc(30); System.out.println("Nilai obj.a:" +obj.a); System.out.println("Nilai obj.b:" +obj.b); System.out.println("Nilai obj.c:" +obj.getc()); } }

Hasil Running

IV. INHERITANCE (PEWARISAN) Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya. 1. Induk Kelas: kelas yang menjadi dasar acuan dari semua kelas turunannya. Dalam sebuah hirarki tertentu, induk kelas merupakan kelas yang mewarisi sifat-sifat tertentu kepada kelas turunannya. Kelas Turunan: kelas yang mewarisi sifat-sifat tertentu dari kelas induk. Jadi tidak perlu menuliskan method lagi. Tinggal meg-extends dari induk class untuk mendapatkan method tertentu. 2.Super: Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya. Contoh class Person dan Student. public Student(){ super( SomeName, SomeAddress ); System.out.println(Inside Student:Constructor); } Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya.

Extends Misalkan kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Penulisannya: [modifier1] class NamaSubKelas extends NamaKelasSuper { classBody } Inheritance merupakan salah satu dari 3 konsep dasar OOP.dimana Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan. Pewarisan merupakan suatu class mewarisi data dan fungsi anggota dari kelas yang lain. Kelas yang mewarisi, diistilahkan dengan kelas anak atau kelas turunan, sedangkan kelas yang mewariskan, diistilahkan dengan induk. Pewarisan memungkinkan seorang programmer berorientasi obyek menghindari penulisan ulang fungsi dan data anggota berulang kali. Suatu kelas dapat diciptakan berdasarkan kelas lain. Kelas baru ini mempunyai sifat-sifat yang sama dengan kelas pembentuknya, ditambah sifat-sifat khusus lainnya. Dengan pewarisan kita dapat menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus menulis ulang bagian-bagian yang sama. Pewarisan merupakan unsur penting dalam pemrograman berorientasi objek dan merupakan blok bangunan dasar pertama penggunaan kode ulang (code reuse). Sifat pewarisan ini menyebabkan kelas-kelas dalam pemrograman berorientasi objek membentuk hirarki kelas mulai dari kelas dasar, kelas turunan pertama, kelas turunan kedua dan seterusnya. kita akan belajar membuat class yang dikelompokkan dalam package kemudian menggunakan package ini dari class lain.

Membuat class Rumah class Rumah { private String a = Rumahmewah ; public void info() { //System.out.println ( Dipanggil pada = +this); System.out.println ( );

System.out.println ( Rumah = +a); } } Membuat class rumahindah class rumahindah extends Rumah { private String b = tombol alarm ; public void info() { System.out.println ( ); super.info(); System.out.println ( rumahindah = +b); } } Membuat class tipe rumah public class tiperumah { public static void main(String[] args) { rumahindah C = new rumahindah(); C.info(); } } Hasil Running :

Membuat class keliling dan luas lingkaran public class circle{ public static void main(String[] args){ Scanner in=new Scanner(System.in); System.out.print(Masukkan jari-jarilingkaran : ); luas satu=new luas(); satu.R=in.nextInt();

satu.luas(); keliling dua=new keliling(); dua.R=satu.R; dua.keliling(); } } class lingkaran{ int R; double luas, keliling, phi=3.14; void luas(){ System.out.print(Luas lingkaran : ); } void keliling(){ System.out.print(Keliling lingkaran : ); } } class luas extends lingkaran{ void luas(){ luas=phi*R*R; super.luas(); System.out.format(%.2f\n,luas); } } class keliling extends lingkaran{ void keliling(){ keliling=2*phi*R; super.keliling(); System.out.format(%.2f\n,keliling) } } Hasil Running :

membuat shape class Shape{ String name, size; public Shape(String name){ this.name = name; } public void printShapeInfo(){ System.out.println(Shape name : +name); System.out.println(Shape Size : +size); } public void printShapeName(){ System.out.println(Shape name : +name); } public void printShapeSize(){ System.out.println(Shape size : +size); } } class square extends Shape{ String name, size; int length, width; public square(String name){ super(name); } public void printShapeInfo(){ super.printShapeInfo(); } public void printShapeName(){ super.printShapeName(); }

public void printShapeSize(){ super.size = String.valueOf(length*width); super.printShapeSize(); } public void printWidth(){ System.out.println(Lebar : +width); } public void printLength(){ System.out.println(Panjang : +length); } } class main{ public static void main (String[] args){ System.out.println(====================================); square persegi = new square(persegi); persegi.length = 10; persegi.width = 8; persegi.printShapeName(); persegi.printLength(); persegi.printWidth(); persegi.printShapeSize(); System.out.println(\n); System.out.println(Jadi kesimpulannya..); persegi.printShapeInfo(); } } Hasil Running :

V. Polymorphic (Banyak bentuk) Polymorphism adalah suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda. Contoh program java nya : Simpan dengan nama CoolMahasiswa.java public class CoolMahasiswa extends Mahasiswa{ public void printNama(){ System.out.println(Hallo, saya Mahasiswa yang baik); Super.printNama(); } } Simpan dengan nama Main.java public class Main{ public static void main(String[] args]) { CooltMahasiswa mhs = new CoolMahasiswa(); mhs.setNim(09530518); mhs.setNama(Nadia Kharisma Ulfah); mhs.printNim(); mhs.printNama(); } } Kemudian compile dan run. C:\>javac CoolMahasiswa.java C:\>javac Main.java C:\>java Main Kontruksi objek mahasiswa Nim:09530518 Hallo, saya Mahasiswa yang baik Nama:Nadia Kharisma Ulfah C:\> Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class CoolMahasiswa, memiliki perilaku yang berbeda dengan class Mahasiswa.

VI. ABSTRACT CLASSSaat kita membuat sebuah superclass, kita tahu bahwa kita dapat memakai semua metode yang dimilikinya pada class anaknya. Atau kalau kita butuh metode tersebut diperbarui, kita tinggal melakukan override pada metode tersebut.Tapi, pada suatu kasus, kita ingin membuat superclass yang bernama LivingThing(makhluk hidup).Class ini punya beberapa method yang sudah kita kenal seperti makan, bernafas, tidur, danberjalan. Ada satu metode yang tidak dapat kita generalisasi. Contohnya adalah method berjalan.Human sebagai subclass dari makhluk hidup berjalan dengan 2 kaki, sedangkan Dog berjalan dengan 4 kaki. Untuk membuat superclass yang umum, kita bisa membuat suatu superclass yangmemiliki beberapa metode dengan implementasi dan beberapa tidak. Class ini disebut abstractclass.

Secara umum, abstract class adalah class yang tak dapat diinstansiasi. Biasanya abstract classberada dalam hierarki tertinggi dalam PBO (pemrograman berorientasi objek).Metode di dalam abstract class yang tidak berisi kode program adalah abstract method (metode abstract). Nantinya, method ini harus di-override oleh subclass-nya. Jadi, kita hanya menulisdeklarasi method tanpa tubuh metode dan memakai keyword abstract. Contohnya:public abstract void iniMetode();

Deklarasi Method ini disebut sebagai prototype method.Sekarang, kita coba buat abstract class pertama kita:

Suatu metode yang sudah dideklarasikan abstract harus diakhiri tanpa memakai tubuh program. Jika ditulis seperti ini:

maka akan terjadi error seperti berikut:

Ketika sebuah class dibuat sebagai subclass dari class LivingThing, class itu harus meng-overridemetode abstract walk(). Jika tidak, class tersebut tidak akan dapat dikompilasi dan akan terjadi error. Contoh pembuatan subclass yang benar:

Jika class Human tidak meng-override metode walk(), maka akan muncul pesan error seperti berikut:

Tapi, walau class Human tidak meng-override metode yang lain seperti breath() dan eat() (yang tidak abstract) tidak akan terjadi error. Jadi, fungsi abstract class tak lain adalah untuk membuat prototype bagi class di tingkatan paling atas dalam hierarki class dan subclass-nya yang menyediakan detail implementasi dari abstract class tersebut.

VII. KONSEP INTERFACEPada Java juga dikenal konsep interface, yang merupakan device yang digunakan untuk komunikasi antar objek berbeda yang tidak memiliki hubungan apapun. Interface bisa dikatakan sebagai protokol komunikasi antar objek tersebut. Interface.java interface Control { public void pindahChannel(int channel); public void PerbesarVolume(int intensitas); public void PerkecilVolume(int intensitas); } class TelevisiA implements Control { String[] channelTv = {RCTI,SCTV,INDOSIAR,TRANS TV,TPI}; public void pindahChannel(int channel) { System.out.println(Pindah channel pada tv A ke : + channelTv[channel]); } public void PerbesarVolume(int intensitas) { System.out.println(Perbesar intensitas volume pada tv A sebanyak : + intensitas); } public void PerkecilVolume(int intensitas) { System.out.println(Perkecil intensitas volume pada tv A sebanyak : + intensitas); } } class TelevisiB implements Control { String[] chanTv = {TVRI,LA TV,TV 7,RCTI,SCTV}; public void pindahChannel(int channel) { System.out.println(Perintah pindah channel pada tv B ke : + chanTv[channel]); } public void PerbesarVolume(int intensitas) { System.out.println(Perbesar intensitas volume pada tv B sebanyak : + intensitas); } 33 public void PerkecilVolume(int intensitas) { System.out.println(Perkecil intensitas volume pada tv B sebanyak : + intensitas); } } class RemoteControl { public static final int PINDAH_CHANNEL = 1;\ public static final int PERBESAR_VOLUME = 2; public static final int PERKECIL_VOLUME = 3;\

public void kirimPerintahKeTv(int aksi,Control tv,int tombol) { switch(aksi) { case PINDAH_CHANNEL: tv.pindahChannel(tombol); break; case PERBESAR_VOLUME:\ tv.PerbesarVolume(tombol); break; case PERKECIL_VOLUME: tv.PerkecilVolume(tombol); } } class Interface { public static void main(String[] args) { TelevisiA tvA = new TelevisiA(); TelevisiB tvB = new TelevisiB(); RemoteControl rc = new RemoteControl(); //Kirim perintah ke tvA rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvA,2); rc.kirimPerintahKeTv(RemoteControl.PERBESAR_VOLUME,tvA,5); //Kirim perintah ke tvB rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvB,1); rc.kirimPerintahKeTv(RemoteControl.PERKECIL_VOLUME,tvB,3); } }