You are on page 1of 11

LAPORANTUGAS3

OOP:
Bentuk2D

Dosen:SirojulMunir
Nama
NIK

:WatikAdidaya
:0110212042

A. Deskripsi Tugas Java Coffee Machine


Tujuan dari tugas ini adalah :
1. Mahasiswa diharapkan mampu mendefinisikan class abstract dengan kosep polimorphisme
OOP
2. Membuat class Bentuk2D yang menjadi superclass dari benda-benda berbentuk 2 Dimensi

Analisa Masalah :
Buatlah sub class dari class Bentuk2D :
a) PersegiPanjang
b) BujurSangkar
c) SegiTiga
Tambah objek instan dari class PersegiPanjang, BujurSangkar, dan SegiTiga pada class
KumpulanBentuk
Keluaran :
run:
Lingkaran jari-jari 8.0 luasnya 200.96
Lingkaran jari-jari 5.0 luasnya 78.5
SegiTiga sisinya 2.0 , 3.0 , 5.0 luasnya 0.0
PersegiPanjang panjang 9.0 lebar 5.0 luasnya 45.0
BujurSangkar sisi 5.0 luasnya 25.0
Lingkaran jari-jari 8.0 kelilingnya 50.24
Lingkaran jari-jari 5.0 kelilingnya 31.400000000000002
SegiTiga sisinya 2.0 , 3.0 , 5.0 kelilingnya 10.0
PersegiPanjang panjang 9.0 lebar 5.0 kelilingnya 28.0
BujurSangkar sisi 5.0 kelilingnya 20.0
BUILD SUCCESSFUL (total time: 3 seconds)
Ide pemecahan masalah beserta Algoritma :

Pertama buatlah file bernama Bentuk2D.java dalam package Bentuk, file ini dimaksudkan
sebagai superclass yang akan digunakan oleh oleh sub class yang lain.
buat abstract class sebagai gambaran umum dari semua Bentuk2D yang akan dideklarasikan
nanti:
package bentuk;
/**
*
* @author siswa
*/
public abstract class Bentuk2D {

public String namaBentuk(){


return getClass().getSimpleName();
}
Buat 2 Method luasBidang dan kelilingBidang :
public abstract double luasBidang();
public abstract double kelilingBidang();
Buat sub class dari Bentuk2D yaitu class Lingkaran, dengan nama file Lingkaran.java dalam
package bentuk. Lalu tentukan tipe data untuk jari-jari yaitu doble dan final double untuk PHI,
buat constructor untuk lingkaran this.jari2=jari2
package bentuk;
/**
*
* @author siswa
*/
public class Lingkaran extends Bentuk2D {
double jari2;
public static final double PHI = 3.14;

public Lingkaran(double jari2) {


this.jari2 = jari2;
}
Lalu kita lakukan overriding di class Lingkaran untuk method luasBidang dan kelilingBidang,
overriding dimaksudkan untuk memanggil class induk dan mengupdate class induk tersebut
pada class anaknya. Pada method luasBidang dan kelilingBidang kita tambahkan return value
dari hasil perhitungan rumus luas Lingkaran dan keliling lingkaran :
@Override
public double luasBidang() {
return PHI * this.jari2 * this.jari2;
}
@Override
public double kelilingBidang() {
return 2.0 * PHI * this.jari2;

}
Lakukan overriding lagi untuk namaBentuk, kita lakukan method toString untuk mempassing
suatu objek ke method system.out.println. Disini yang nanti akan kita cetak adalah nama bentuk
2D dan jari-jarinya :
@Override
public String toString() {
return namaBentuk() + " jari-jari " + this.jari2;
Buat sub class yang lain yaitu Persegipanjang.java dalam package bentuk. Tentukan variable
panjang dan bentuk dan tentukanlah tipe datanya :
package bentuk;

/**
*
* @author siswa
*/
public class PersegiPanjang extends Bentuk2D{
double panjang;
double lebar;
Buat konstruktor untuk class persegi panjang
public PersegiPanjang(double panjang, double lebar) {
this.panjang = panjang;
this.lebar = lebar;
Lalu kita lakukan overriding di class PersegiPanjang untuk method luasBidang dan
kelilingBidang, overriding dimaksudkan untuk memanggil class induk dan mengupdate class
induk tersebut pada class anaknya. Pada method luasBidang dan kelilingBidang kita tambahkan
return value dari hasil perhitungan rumus luas PersegiPanjang dan keliling PersegiPanjang :
@Override
public double luasBidang() {
return this.panjang * this.lebar;
}

@Override
public double kelilingBidang(){
return 2 * (this.panjang + this.lebar);
}
Lakukan overriding lagi untuk namaBentuk, kita lakukan method toString untuk mempassing
suatu objek ke method system.out.println. Disini yang nanti akan kita cetak adalah nama bentuk
2D, panjang dan lebar :
@Override
public String toString(){
return namaBentuk() + " panjang " + this.panjang + " lebar " + this.lebar;
}
Buat sub class yang lain yaitu SegiTiga.java dalam package bentuk. Tentukan variable ke 3
sisinya dan tentukan variable s untuk menghitung luas bidang segitiga, dimana s didapat dari
hasil penjumlahan ketiga sisinya lalu dibagi dengan 1/2 dan tentukanlah tipe datanya :
package bentuk;
/**
*
* @author siswa
*/
public class SegiTiga extends Bentuk2D {
double a;
double b;
double c;
double s;
Tentukan constructor SegiTiga nya :
public SegiTiga(double a, double b,double c){
this.a = a;

this.b = b;
this.c = c;
Lalu kita lakukan overriding di class SegiTiga untuk method luasBidang dan kelilingBidang,
overriding dimaksudkan untuk memanggil class induk dan mengupdate class induk tersebut
pada class anaknya. Pada method luasBidang dan kelilingBidang kita tambahkan return value
dari hasil perhitungan rumus luas SegiTiga dan keliling SegiTiga :
@Override
public double luasBidang() {
s = 0.5 *(this.a+this.b+this.c);
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
@Override
public double kelilingBidang(){
return this.a+this.b+this.c;
Lakukan overriding lagi untuk namaBentuk, kita lakukan method toString untuk mempassing
suatu objek ke method system.out.println. Disini yang nanti akan kita cetak adalah nama bentuk
2D, dan nilai ketiga sisi segitiga :
@Override
public String toString(){
return namaBentuk() + " sisinya " + this.a + " , " + this.b +" , "+
this.c;
Buat sub class yang lain yaitu BujurSangkar.java dalam package bentuk. Tentukan variable
untuk sisinya beserta tipe datanya :
package bentuk;
/**
*
* @author siswa
*/
public class BujurSangkar extends Bentuk2D{
double sisi;
Tentukan constructor BujurSangkar nya :
public BujurSangkar(double sisi) {
this.sisi = sisi;
Lalu kita lakukan overriding di class BujurSangkar untuk method luasBidang dan
kelilingBidang, overriding dimaksudkan untuk memanggil class induk dan mengupdate class
induk tersebut pada class anaknya. Pada method luasBidang dan kelilingBidang kita tambahkan
return value dari hasil perhitungan rumus luas BujurSangkar dan keliling BujurSangkar :
@Override
public double luasBidang() {
return this.sisi * this.sisi;
}
@Override
public double kelilingBidang(){
return 4 * (this.sisi);
Lakukan overriding lagi untuk namaBentuk, kita lakukan method toString untuk mempassing
suatu objek ke method system.out.println. Disini yang nanti akan kita cetak adalah nama bentuk

2D, dan nilai sisi BujurSangkar :


@Override
public String toString(){
return namaBentuk() + " sisi " + this.sisi;
Buat class main untuk mengeksekusi kumpulan bentuk 2D yang class nya telah dibuat tadi, beri
nama KumpulanBentuk.java dalam package bentuk, lalu buat instance objek dari masingmasing bentuk 2D yang classnya telah dibuat tadi. Dan masukkan ke dalam array dengan nama
array ar_bentuk :
package bentuk;
/**
*
* @author CDK
*/
public class KumpulanBentuk {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bentuk2D b1 = new Lingkaran(8);
Bentuk2D b2 = new Lingkaran(5);
Bentuk2D b3 = new SegiTiga(2, 3, 5);
Bentuk2D b4 = new PersegiPanjang(9, 5);
Bentuk2D b5 = new BujurSangkar(5);

Bentuk2D ar_bentuk[] = {b1, b2, b3, b4, b5};


Cetak luas dan keliling masing-masing bentuk 2D tadi dengan melakukan looping FOR didalam
ar_bentuk :
for (Bentuk2D b2d : ar_bentuk) {
System.out.println(b2d + " luasnya " + b2d.luasBidang());
}
for (Bentuk2D b2d : ar_bentuk) {
System.out.println(b2d + " kelilingnya " + b2d.kelilingBidang());

Komentar :
Belum terbiasa menggunakkan overriding dengan Banyaknya instan objek yang dibuat, jadi harus lebih
teliti dan rapih lagi kedepannya dalam membuat program yang serupa.
Kode program Bentuk2D.java :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package bentuk;
/**
*
* @author siswa
*/
public abstract class Bentuk2D {
public String namaBentuk(){
return getClass().getSimpleName();
}
public abstract double luasBidang();
public abstract double kelilingBidang();
}
Kode Program Lingkaran.java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bentuk;
/**
*
* @author siswa
*/
public class Lingkaran extends Bentuk2D {
double jari2;
public static final double PHI = 3.14;
public Lingkaran(double jari2) {
this.jari2 = jari2;
}
@Override
public double luasBidang() {
return PHI * this.jari2 * this.jari2;
}
@Override
public double kelilingBidang() {
return 2.0 * PHI * this.jari2;
}
@Override
public String toString() {
return namaBentuk() + " jari-jari " + this.jari2;
}

}
Kode program BujurSangkar.java :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bentuk;
/**
*
* @author siswa
*/
public class BujurSangkar extends Bentuk2D{
double sisi;
public BujurSangkar(double sisi) {
this.sisi = sisi;
}
@Override
public double luasBidang() {
return this.sisi * this.sisi;
}
@Override
public double kelilingBidang(){
return 4 * (this.sisi);
}
@Override
public String toString(){
return namaBentuk() + " sisi " + this.sisi;
}
}
Kode program SegiTiga.java :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bentuk;
/**
*
* @author siswa
*/
public class SegiTiga extends Bentuk2D {
double a;
double b;

double c;
double s;
public SegiTiga(double a, double b,double c){
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double luasBidang() {
s = 0.5 *(this.a+this.b+this.c);
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
@Override
public double kelilingBidang(){
return this.a+this.b+this.c;
}
@Override
public String toString(){
return namaBentuk() + " sisinya " + this.a + " , " + this.b +" , "+
this.c;
}
}
Kode program PersegiPanjang.java :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bentuk;
/**
*
* @author siswa
*/
public class PersegiPanjang extends Bentuk2D{
double panjang;
double lebar;
public PersegiPanjang(double panjang, double lebar) {
this.panjang = panjang;
this.lebar = lebar;
}
@Override
public double luasBidang() {
return this.panjang * this.lebar;

}
@Override
public double kelilingBidang(){
return 2 * (this.panjang + this.lebar);
}
@Override
public String toString(){
return namaBentuk() + " panjang " + this.panjang + " lebar " + this.lebar;
}
}
Kode program KumpulanBentuk.java :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bentuk;
/**
*
* @author CDK
*/
public class KumpulanBentuk {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bentuk2D b1 = new Lingkaran(8);
Bentuk2D b2 = new Lingkaran(5);
Bentuk2D b3 = new SegiTiga(2, 3, 5);
Bentuk2D b4 = new PersegiPanjang(9, 5);
Bentuk2D b5 = new BujurSangkar(5);
Bentuk2D ar_bentuk[] = {b1, b2, b3, b4, b5};
for (Bentuk2D b2d : ar_bentuk) {
System.out.println(b2d + " luasnya " + b2d.luasBidang());
}
for (Bentuk2D b2d : ar_bentuk) {
System.out.println(b2d + " kelilingnya " + b2d.kelilingBidang());
}

}
}

You might also like