Anda di halaman 1dari 10

LAPORAN PRATIKUM 45

PEMOGRAMAN BERORIENTASI OBJEK

Disusun oleh :
NAMA : AL AMIN SYAHRUDIN SABAAR
NIM : 185410009
JURUSAN : TEKNIK INFORMATIKA
JENJANG : S1

STMIK AKAKOM
YOGYAKARTA
2019
PERTEMUAN 09
KELAS ABSTRAK

A. TUJUAN
1. Dapat menggunakan overriding method, menggunakan klausa super.
2. Dapat menggunakan klausa final pada metode dan kelas.
B. TEORI
Dalam Java, juga memungkinkan untuk mendeklarasikan class-class yang tidak dapat
menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi
final kita hanya menambahkan kata kunci final dalam deklarasi class. Untuk mendeklarasikan
method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method.
C. PRATIK
PRATIK 1 Penggunaan kelas abstrak berikut:
package pertemuan09;
abstract class Bentuk {
protected int panjang;
protected int lebar;

public String getBentuk(){


return "bentuk dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang, int lebar){
this.panjang=panjang;
this.lebar=lebar;
}
public String getBentuk(){
return "bentuk bujur sangkar";
}
public int hitungLuas(){
return panjang * lebar;
}
}
class Segitiga extends Bentuk {
public Segitiga(int panjang, int lebar){
this.panjang=panjang;
this.lebar=lebar;
}
public String getBentuk(){
return "bentuk segitiga";
}
public int hitungLuas(){
return(panjang*lebar)/2;
}
}
class TestAbstrak2{
public static void cetakLuasBentuk(Bentuk btk){
System.out.println(btk.getBentuk() + " \nluas : "+ btk.hitungLuas());
}
public static void main(String[]args){
BujurSangkar bs = new BujurSangkar(10,20);
Segitiga st = new Segitiga(5,10);
cetakLuasBentuk(bs);
cetakLuasBentuk(st);
}
}
PEMBAHASAN
abstract class Bentuk {
protected int panjang;
protected int lebar;

public String getBentuk(){


return "bentuk dasar";
}
public abstract int hitungLuas();
}
Code diatas digunakan sebagai class super yang dideklarasikan atribut panjang dan lebar dengan
tipe data int yang diakses dengan protocted, bisa diakses oleh kelas lain. Selanjutnya dibuat
method getBentuk() untuk mengembalikan statment “bentuk dasar”.
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang, int lebar){
this.panjang=panjang;
this.lebar=lebar;
}
public String getBentuk(){
return "bentuk bujur sangkar";
}
public int hitungLuas(){
return panjang * lebar;
}
}
Selanjutnya kelas Bentuk akan diturunkan pada sub classnya yaitu BujurSangkar dengan
menggunakan kata kunci extends agar dapat mengakses class supernya. Didalam sub class dibuat
method konstruktur yaitu public BujurSangkar(int panjang, int lebar) karena
penamaan kelassnya sama dengan nilai parameter diambil dari atribut yang ada pada class super.
Selanjutnya terdapat fungsi untuk mengembalikan sebuah statment “bentuk bujur sangkar”.
Dan dibuat fungsi baru untuk menghitung luas dari BujurSangkar yaitu public int
hitungLuas() fungsi ini akan mengembalikan hasil dari nilai panjang dikali dengan lebar.
class Segitiga extends Bentuk {
public Segitiga(int panjang, int lebar){
this.panjang=panjang;
this.lebar=lebar;
}
public String getBentuk(){
return "bentuk segitiga";
}
public int hitungLuas(){
return(panjang*lebar)/2;
}}
Selanjutnya dibuat kelas Segetiga sebagai turunan dari kelas Bentuk dan dibuat konstruktur
dengan nilai parameter panjang dan lebar. Untuk parameter sendiri masih tetap menggunakan dari
kelas supernya dan tidak ada penambahan apa-apa untuk sub kelas ini. Kemudian dibuat method
getter untuk mengembalikan statment “bentuk segitiga”. Dan untuk menghitung luas dari segitiga
dibuat lah method hitungLuas() yang akan menghasilkan nilai dari panjang*lebar/2.
class TestAbstrak2{
public static void cetakLuasBentuk(Bentuk btk){
System.out.println(btk.getBentuk() + " \nluas : "+ btk.hitungLuas());
}
public static void main(String[]args){
BujurSangkar bs = new BujurSangkar(10,20);
Segitiga st = new Segitiga(5,10);
cetakLuasBentuk(bs);
cetakLuasBentuk(st);
}
}
Agar program diatas bisa dijalankan maka dibuat program main(), program ini akan menjalankan
dan menghasilkan hasil codingan dari program-program diatas. Pada program ini dibuat dibuat
objek baru pada kelas BujurSangkar dengan objek bs = new BujurSangkar(10, 20) nilai yang
berada didalam parameter akan dikembalikan ke dalam parameter hitungLuas dan kemudian akan
dioperasikan 10*20 dan hasilnya akan disimpan dan dipanggil dengan
cetakLuasBentuk(bs), begitu juga dengan class Segitiga akan menghasilkan hasil luasnya
dan akan disimpan kemudian dipanggil cetakLuasBentuk(st). Jadi ketika dijalankan
program main() nya mka ia makan menghasilkan statment “bentuk bujur sangkar” seta luas : 200.
Stamtent berikutnya “bentuk segitiga” luas : 25.

OUTPUT

PRATIK 2 : Buat Objek dari kelas bentuk. Berikan penjelasan mengapa terjadi kesalahan
public static void main(String[]args){
Bentuk bt = new Bentuk();
BujurSangkar bs = new BujurSangkar(10,20);
Segitiga st = new Segitiga(5,10);
cetakLuasBentuk(bs);
cetakLuasBentuk(st);
}
}
PEMBAHASAN
Ini terjadi kesalahan class Bentuk merupakan class abstract dan class abstrak tidak dapat
dibuatkan instan atau objeknya menggunakan keyword new.

PRATIK 3 Buat kelas Lingkaran yang merupakan turunan dari kelas Bentuk
class Lingkar extends Bentuk{
public Lingkar(int panjang, int lebar){
this.panjang=panjang;
this.lebar=lebar;
}
public String getBentuk(){
System.out.println("kelas lingakran turunan dari kelas abstark
bentuk");
return "bentuk lingkaran";
}
public int hitungLuas(){
return panjang * lebar;
}
}
class TestAbstrak2{
public static void cetakLuasBentuk(Bentuk btk){
System.out.println(btk.getBentuk() + " \nluas : "+
btk.hitungLuas());
}
public static void main(String[]args){
Bentuk bt = new Lingkar(12,5);
cetakLuasBentuk(bt);
}
}
Berikan penjelasan kenapa tidak terjadi kesalahan pada pembuatan objek geometri
PEMBAHASAN :
Dalam pembuatan objek untuk kelas lingkaran tidak akan terjadi error, karena kelas lingkaran
bukan merupakan kelas abstract. Jadi dalam pembuatan objeknya tidak akan terjadi kesalahan,
karena kelas abstrac dapat membuat kelas objeknya pada sub classnya yaitu lingkaran.
Dan ketika dijalankan akan mengeluarkan luas lingkaran.
OUTPUT

D. LATIHAN
1. Buatlah sebuah class abstract bernama Mahasiswa memiliki method sbb :
 isiBiodata(String nama, int nilai) sebagai method abstract
 registrasi(), menampilkan tulisan ke layar : “nama.......telah melakukan registrasi”
 testMasuk(), menampilkan tulisan ke layar : “nilai test anda .......”
2. Tambahakan variabel nama dan nilai pada Mahasiswa
3. Buatlah class Mahasiswa baru yang melakukan extending dari class Mahasiswa.
Deklarasikan ulang method isiBiodata, bodi method akan menampilkan ke layar biodata
anda (“nama : .... nilai :...,, pilihan jurusan; ..... asal sekolah :....)
4. Tambahakn main method pada mahasiswaBaru sehingga output sbb;

PROGRAM
package pertemuan09;
abstract class Mahasiswa {
protected String nama;
protected int nilai;

public abstract void isiBiodata(String nama, int nilai);


public void registrasi(){
System.out.println("Nama "+nama+ " telah melakukan registrasi");
}
public void testMasuk(){
System.out.println("Nilai test Anda : "+nilai);
}
}
class MahasiswaBaru extends Mahasiswa {
public void isiBiodata(String nama,int nilai){
this.nama =nama;
this.nilai=nilai;
System.out.println("nama "+nama+ ", nilai : "+nilai);
}
public static void main(String[]arg){
MahasiswaBaru mhs = new MahasiswaBaru();
mhs.isiBiodata("ahamad", 80);
mhs.registrasi();
mhs.testMasuk();
}
}
PEMBAHASAN
Pembuatan program diatas sama hal nya dengan pratik-pratik sebelumnya. Kita hanya mengikuti
petunjuk sesuai dengan yang diberikan dan hasilnya harus sesuai dengan diatas.
abstract class Mahasiswa {
protected String nama;
protected int nilai;

Jadi akan dibuat class abstrak Mahasiswa yang mempunyai method isiBiodata dengan parameter
String nama, int nilai. Method berikutnya registrasi(), menampilkan tulisan ke layar :
“nama.......telah melakukan registrasi” dan testMasuk(), menampilkan tulisan ke layar : “nilai test
anda .......”
public abstract void isiBiodata(String nama, int nilai);
public void registrasi(){
System.out.println("Nama "+nama+ " telah melakukan registrasi");
}
public void testMasuk(){
System.out.println("Nilai test Anda : "+nilai);
}

Selanjutnya dibuat variabel nama dan nilai pada mahasiswa


class MahasiswaBaru extends Mahasiswa {
public void isiBiodata(String nama,int nilai){
this.nama =nama;
this.nilai=nilai;
System.out.println("nama "+nama+ ", nilai : "+nilai);
}

Dan kemudian membuat class mahasiswa baru yang melakukan extending dari class Mahasiswa.
Deklarasikan ulang method isiBiodata, bodi method akan menampilkan ke layar biodata.
public static void main(String[]arg){
MahasiswaBaru mhs = new MahasiswaBaru();
mhs.isiBiodata("ahamad", 80);
mhs.registrasi();
mhs.testMasuk();
}

Agar program bisa diajalankan maka deklarasikan progra utamanya dengan membuat objek baru pada kelas
mahasiswa dan mahasiswa baru.
OUTPUT
E. TUGAS
1. Buatlah kelas abstrak Manusia yang berisi deskripsi umum dari manusia. Kemudian buatlah kelas
Mahasiswa dan kelas Dosen yang merupakan turunan dari kelas Manusia, dan masing-masing kelas
menangani data mahasiswa dan dosen
package tugaspertemuan09;
abstract class Manusia {
public String jekel;
public Manusia(String jekel){
this.jekel=jekel;
}
public String getJekel(){
return jekel;
}
public void setJekel(String jekel){
this.jekel=jekel;
}
public void cetak(){
System.out.println("Jekel : "+this.jekel);
}
}
Program diatas merupakan subclass karena nannti nya akan dibuat sub class Dosen dan Mahasiswa.

package tugaspertemuan09;
public class Dosen extends Manusia {
private int nip;
private String nama;

public Dosen(String nama,int nip, String jekel ){


super(jekel);
this.nip=nip;
this.nama=nama;
}
public int getNip(){
return nip;
}
public String getNama(){
return nama;
}
public void cetak() {
System.out.println("Nama Dosen : "+this.nama);
System.out.println("Nip Dosen : "+this.nip);
System.out.println("Jenis Kelamin : "+this.jekel);
}
}
Program diatas meupakan sub class, progam ini akan menampilkan variabel nama, nip dan jenis kelamin.
Dengan membuat fungsi untuk menampilkannya.
package tugaspertemuan09;
public class Mahasiswa extends Manusia{
private int nim;
private String nama;
private String jurusan;

public Mahasiswa(String nama, String jurusan, int nim,String jekel){


super(jekel);
this.nama=nama;
this.nim=nim;
this.jurusan=jurusan;
}
public int getNim(){
return nim;
}
public void setNim(int nim){
this.nim=nim;
}
public String nama(){
return nama;
}
public void setNama(String nama){
this.nama=nama;
}
public String jurusan (){
return jurusan;
}
public void setJurusan(String jruusan){
this.jurusan=jurusan;
}
public void cetak(){
System.out.println("Nama Mahasiswa : "+this.nama);
System.out.println("Nim : "+this.nim);
System.out.println("Jurusan : "+this.jurusan);
System.out.println("Jenis kelamin : "+this.jekel);
}
}
Program diatas meupakan sub class, progam ini akan menampilkan variabel nama, nim. jurusan dan jenis
kelamin. Dengan membuat fungsi untuk menampilkannya.
2. Membuat objek
package tugaspertemuan09;
public class ProgramUtama {
public static void main(String[]arg){
System.out.println(" !!pemanggilan pada kelas manusia");
System.out.println("tidak bisa karena merupakan kelas abstrak\n");

System.out.println("pemanggilan pada kelas Dosen");


Dosen ds = new Dosen("Ani", 1243780, "Perempuan");
ds.cetak();
System.out.println();
System.out.println("pemanggilan pada kelas Mahasiswa");
Mahasiswa ms = new Mahasiswa("Al Amin", "Informatika", 185410009,
"Laki-Laki");
ms.cetak();
}
}
agar program bisa dijalankan maka harus membuat program utamanya seperti diatas.

F. KESIMPULAN
Dapat diambil kesimpulan bahwa 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.

Anda mungkin juga menyukai