Anda di halaman 1dari 16

LAPORAN PRAKTIKUM KE - 9

OOP DASAR

Disusun Oleh :

Nama : ANISSA KARUNIA

NIM : M3111014

Kelas : TI A

DIPLOMA III TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SEBELAS MARET

2012
DASAR TEORI

Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki kelas. Kelas
ini digunakan sebagai basis bagi penurunan kelas lainnya, sehingga abstract class tidak
dapat diinstansiasi secara langsung menjadi object. Suatu abstract class bisa
mengandung method kongkrit dan/atau method abstract. Abstract method meruapakan
suatu method yang tidak mempunyai badan method. Hanya berupa nama method dan
parameter inputan method. Ketika suatu abstract class diturunkan/ di-extends, maka
subclass harus mengimplementasikan semua method abstract pada parent/ base class.
Jika tidak mengimplementasikan semua method abstract maka subclass harus
dideklarasikan sebagai abstract class.

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. Interface digunakan bila Anda ingin
mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses
inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah
mengetahui apa itu interface. Timbul pertanyaan Mengapa membutuhkan interface?

 Memecahkan bagian yang rumit dan spesifik. Dengan menggunakan class atau
interface oleh vendor maka dalam pembuatan perangkat lunak menjadi lebih
cepat.
 Keterbatasan inheritance pada Java. Interface menjawab kebutuhan untuk
melakukan multiple inheritance

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.

Karena abstract class adalah class yg udah hampir jadi(50%), maka bisa dilihat
perbedaannya dengan interface yg bukan sama sekali class(0%)..
1. Abstract class boleh punya attribut, sedangkan interface tidak boleh punya attribut
(hanya boleh punya konstanta).

2. Abstract class boleh punya methode yg sudah diimplementasikan, sedangkan


interface tidak boleh punya methode yg sudah diimplementasikan

3. Abstract class punya constructor, sedangkan interface tidak

4.Sebuah class hanya boleh mengextend dari satu abstract class tapi boleh
mengimplementasikan banyak interface.

LANGKAH PRAKTIKUM
Membuat program pada netbeans

Interface Interface
/*
* To change this template, choose Tools | Te mplates
* and open the template in the editor.
*/
package interfacePack;

/**

*
* @author Administrator
*/
public class Interface {
interface CD{
public void setID(String ID);
public void setTitle(String nameTitle);
public void setJml(int jml);
public void setDate(int date);
public void setKalanganUmur(int umur);
public void setJenisCD(String jenis);
public void setHarga(int harga);

public String getID();


public String getTitle();
public int getJml();
public int getDate();
public int getKalanganUmur();
public String getJenisCD();
public int getHarga();

}
}

Interface tersebut diimplementasikan di class NewCD


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfacePack;

import interfacePack.Interface.CD;

/**
*
* @author Administrator
*/
public class NewCD implements CD{
// abstract class NewCD{
String id;
String title;
int jml;
int date;
int umur;
String jenis;
int harga;

@Override
public void setID(String ID) {
this.id = ID;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public void setTitle(String nameTitle) {
this.title = nameTitle;
throw new UnsupportedOperationEx ception("Not supported yet.");
}
@Override
public void setJml(int jml) {
this.jml = jml;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public void setDate(int date) {
this.date = date;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public void setKalanganUmur(int umur) {
this.umur = umur;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public void setJenisCD(String jenis) {
this.jenis = jenis;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public void setHarga(int harga) {
this.harga = harga;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

@Override
public String getID() {
return id;
}

@Override
public String getTitle() {
return title;
}

@Override
public int getJml() {
return jml;
}
@Override
public int getDate() {
return date;
}

@Override
public int getKalanganUmur() {
return umur;
}

@Override
public String getJenisCD() {
return jenis;
}

@Override
public int getHarga() {
return harga;
}

// abstract void transaksi(int datePinjam);


}

Class CDFilm
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfacePack;

/**
*
* @author Administrator
*/
public class CDFilm extends NewCD{
int datePinjam;
int tanggalKembali;

// @Override
void transaksi(int datePinjam) {
this.datePinjam = datePinjam;
this.tanggalKembali = this.datePinjam +7;
}
}

Class NewCD
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfacePack;

import interfacePack.Interface.CD;

/**
*
* @author Administrator
*/
//public class NewCD implements CD{
abstract class NewCD{
String id;
String title;
int jml;
int date;
int umur;
String jenis;
int harga;

// @Override
public void setID(String ID) {
this.id = ID;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setTitle(String nameTitle) {
this.title = nameTitle;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setJml(int jml) {
this.jml = jml;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setDate(int date) {
this.date = date;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setKalanganUmur(int umur) {
this.umur = umur;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setJenisCD(String jenis) {
this.jenis = jenis;
throw new UnsupportedOperationEx ception("Not supported yet.");
}

// @Override
public void setHarga(int harga) {
this.harga = harga;
throw new UnsupportedOperationException("Not supported yet.");
}

// @Override
public String getID() {
return id;
}

// @Override
public String getTitle() {
return title;
}

// @Override
public int getJml() {
return jml;
}

// @Override
public int getDate() {
return date;
}
// @Override
public int getKalanganUmur() {
return umur;
}

// @Override
public String getJenisCD() {
return jenis;
}

// @Override
public int getHarga() {
return harga;
}

abstract void transaksi(int datePinjam);


}

class CDFilm kita override


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfacePack;

/**
*
* @author Administrator
*/
public class CDFilm extends NewCD{
int datePinjam;
int tanggalKembali;

@Override
void transaksi(int datePinjam) {
this.datePinjam = datePinjam;
this.tanggalKembali = this.datePinjam +7;
}

}
PEMBAHASAN

Sifat dari interface itu sendiri adalah berisi method-method tetapi kosong / tidak
diimplementasikan
Isinya.

Pada class interface terdapat method-method mutator dan accessor kosong yang
nantinya
interface tersebut dapat diimplementasikan di class lain
dari class NewCD diturunkan semua behaviornya ke class CDFilm dengan cara
mengextends
dari class CDFilm ke class NewCD sehingga class CDFilm mempunyai semua behavior
dari class NewCD.
Class NewCD diubah menjadi abstract class. Abstract class bisa dibilang suatu
class yang setengah jadi. Boleh dipakai langsung atau diwariskan ke class lain karena di
dalam abstract
class sudah terdapat implementasi dari setiap methodnya. Berbeda dengan interface
yang di dalamnya
hanya terdapat method-method kosong.
Override dihilangkan dan di paling bawah ditambahi dengan code:
abstract void transaksi(int datePinjam);

KESIMPULAN
 Saat yang tepat menggunakan interface ketika mendefinisikan method standar
yang sama dalam class-class yang berbeda. Sekali kita telah membuat kumpulan
definisi method standar(abstrak), kita dapat menulis method tunggal(spesifik)
untuk memanipulasi semua class-class yang mengimplementasikan interface
tersebut.
 Saat yang tepat menggunakan class abstract ketika mendefinisikan secara luas
sifat-sifat dari class tertinggi pada hirarki OOP, dan gunakan subclassnya
(turunannya/child class) untuk melengkapi deskripsi method dari class abstract.
 Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki
kelas. Kelas ini digunakan sebagai basis bagi penurunan kelas lainnya, sehingga
abstract class tidak dapat diinstansiasi secara langsung menjadi object
 Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur
method, tanpa detail implementasinya

 Suatu kelas yang dinyatakan abstract yang umumnya memiliki satu atau lebih
abstract method

 Abstract method adalah suatu method yang belum memiliki implementasi dan
menggunakan modifier abstract.

 Abstract class biasanya dijadikan parent atau super class dari kelas-kelas yang
dapat membuat object. (tidak dapat membuat object dari abstrak class)

 Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap
kelas.

 Method di dalam interface tidak boleh memiliki modifier-modifier berikut :

1. static

2. final

3. strictfp

4. native

 Suatu interface tidak dapat meng-implements interface atau class yang lain
 Suatu interface tidak dapat meng-extends selain interface
 Suatu interface boleh meng-extends satu atau lebih interface yang lain
TUGAS
MENCARI CONTOH INTERFACE DAN ABSTRACT SERTA MENCARI PERBEDAAN
INTERFACE DAN ABSTRACT

CONTOH INTERFACE

Manusia.java

interface Manusia {

public void menyanyi();

public void ketawa();

SpongeBob.java

class SpongeBob extends Hewan implements Manusia {

public SpongeBob() {

super("sponge bob", 2, false);}

public void bersuara() {

System.out.println("\nhallo patrict..");}

public void menyanyi() {

System.out.println("nye, nye, nye, wik, wik, wik");}

public void ketawa() {

System.out.println("kek, kek, kek"); }

public static void makan() {

System.out.println("uenak tenan.."); }

public void makan2() {

super.makan(); }
public static void main(String[] args) {

SpongeBob s= new SpongeBob();

s.isHewan();

s.bersuara();

s.menyanyi();

s.ketawa();

s.makan2();

Hewan.makan();

makan();

Output :

CONTOH ABSTRACT

Hewan.java

abstract class Hewan {


protected String nama;

protected int jumKaki;

protected boolean bisaTerbang = false;

public Hewan(String nama, int kaki, boolean terbang) {

this.nama = nama;

jumKaki = kaki;

bisaTerbang = terbang;

public abstract void bersuara();

public static void makan() {

System.out.println("nyam, nyam, nyam");

public void isHewan() {

System.out.println("nama : "+nama);

System.out.println("jumlah kaki : "+jumKaki);

System.out.println("bisa terbang : "+bisaTerbang);

Perkutut.java

class Perkutut extends Hewan {

public Perkutut() {

super("perkutut",2,true);
}

public void bersuara() {

System.out.println("\ncuit, cuit, cuit");

public static void main(String[] args) {

Perkutut p = new Perkutut();

p.isHewan();

p.bersuara();

Output :

PERBEDAAN INTERFACE DAN ABSTRACT CLASS


1.Abstract class boleh punya attribut, sedangkan interface tidak boleh punya attribut
(hanya boleh punya konstanta).

2. Abstract class boleh punya methode yg sudah diimplementasikan, sedangkan


interface tidak boleh punya methode yg sudah diimplementasikan

3. Abstract class punya constructor, sedangkan interface tidak

4.Sebuah class hanya boleh mengextend dari satu abstract class tapi boleh
mengimplementasikan banyak interface.

DAFTAR PUSTAKA
http://yosepgustri.blogspot.com/2011/03/beda-interface-dan-abstract-class.html

http://catatan.desdrianton.net/scjp/content/INTERFACE.htm

http://matabathin-dery.blogspot.com/2012/06/tata-cara-membuat-film-pendek.html

Anda mungkin juga menyukai