0% menganggap dokumen ini bermanfaat (1 suara)
630 tayangan14 halaman

Bab 4

Laporan minggu ke-V membahas inheritance2. Terdapat 3 kalimat penting: 1. Membahas tiga modifier untuk pengontrolan akses yaitu public, private, dan protected. 2. Kata kunci super digunakan untuk mengakses member class milik parent class. 3. Konstruktor tidak diwariskan artinya subclass tidak mewarisi konstruktor dari parent class.

Diunggah oleh

KINGSTEEL TV
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (1 suara)
630 tayangan14 halaman

Bab 4

Laporan minggu ke-V membahas inheritance2. Terdapat 3 kalimat penting: 1. Membahas tiga modifier untuk pengontrolan akses yaitu public, private, dan protected. 2. Kata kunci super digunakan untuk mengakses member class milik parent class. 3. Konstruktor tidak diwariskan artinya subclass tidak mewarisi konstruktor dari parent class.

Diunggah oleh

KINGSTEEL TV
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

LAPORAN MINGGU KE-V

BAB 10 INHERITANCE1

NAMA LENGKAP : IHSAN MAULANA ADLI


NIM : 6304181130
PRODI : D4-RPL
SEMESTER : 4
KELAS : B
MATA KULIAH : PRAKTIKUM PEMROGRAMAN BERORIENTASI
OBYEK
DOSEN PENGAMPUH : DEPANDI ENDA, M.KOM

C. TUGAS PENDAHULUAN
1. Apa yang dimaksud dengan inheritance?
 Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana
sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya kepada
class lain.

2. Buatlah contoh kasus yang menerapkan konsep inheritance?


 public class Pegawai {
public String nama;
public double gaji;
}

public class Manajer extends Pegawai {


public String departemen;
}

3. Adakah perbedaan cara mengakses member class milik parent dan member class milik
sendiri? Jelaskan melalui contoh ! (Silahkan memanfaat jawaban soal nomor 2.)
 Pengaksesan member yang ada di parent class dari subclass-nya tidak berbeda
dengan pengaksesan member subclass itu sendiri. Misalnya di class Manajer kita
ingin mengakses data member nama melalui sebuah function member IsiData(),
sekaligus kita juga ingin mengakses data member departemen di class Manajer.

 public class Manajer extends Pegawai {


public String departemen;

public void IsiData(String n, String d) {


nama=n;
departemen=d;
}
}

4. Apa yang dimaksud dengan konsep single inheritance ?


 Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu
parent class.

5. Apa yang dimaksud dengan konsep multi level inheritance ?


 Konsep multilevel inheritance memperbolehkan suatu subclass mempunyai
subclass lagi.

D. PERCOBAAN
Penyembunyian Informasi
Source Code : Pegawai.java

public class Pegawai {


private String nama;
public double gaji;
}

Source Code : Manajer.java

public class Manajer extends Pegawai {


public String departemen;

public void IsiData(String n, String d) {


nama=n;
departemen=d;
}
}

Analisis :

Program di atas tidak bisa dijalan kan, itu terjadi karena class Manajer tidak mewarisi data
member nama dari parent class-nya (Pegawai). Dapat dilihat data member nama memiliki access
modifier private, yang dimana private tidak bisa dipanggil diluar classnya

E. LATIHAN
1. Latihan 1. Tempatkan class Base dan class Class1 di direktori yang sama. Apa yang
terjadi ketika Class1.java dikompile dan dijalankan jika sebelumnya Base.java
belum dikompile? Jelaskan !
Source Code : Base.java

package Base;
class Base {
protected void amethod() {
System.out.println("amethod");
}
}

Source Code : Class1.java

package Class1;

public class Class1 extends Base {


public static void main(String argv[]) {
Base b = new Base();
b.amethod();
}
}

Hasil setelah Base.java dikompile dan Class1.java dijalankan :

Analisis :

Program di atas terjadi error karena untuk mewarisi suatu class harus berada di satu package
yang sama

2. Latihan 2. Aturan ovverriding


a. Berdasarkan kode di bawah ini, akses modifier (public, protected atau private)
apa yang diijinkan di tambahan sebelum myMethod() baris 3?
b. Jika baris 3 seperti kode di bawah (apa adanya tanpa perubahan) keywords apa
yang diijinkan ditambahkan sebelum myMethod baris 8?
Source Code : Soal a

class HumptyDumpty {
private void myMethod() {}
}

class HankyPanky extends HumptyDumpty


{
void myMethod() {}
}

Source Code : Soal b

class HumptyDumpty {
void myMethod() {}
}

class HankyPanky extends HumptyDumpty


{
@Override
void myMethod() {}
}

Analisis :

Pada soal a jawabannya adalah access modifier private, karena private bisa digunakan jika dalam
class yang sama. Sedangkan soal b jawabannya adalah penambahan keywords @Override

3. Latihan 3.
a. Apa yang terjadi bila kedua kode dibawah ini dikompile dan dijalankan dalam
satu direktori? Jelaskan !
b. Bagaimana solusi supaya tidak terjadi error?
Source Code : P1.java

package P1;

public class P1 {
public void aFancyMethod() {
System.out.println("What a fancy method");
}
}

Source Code : P2.java

package P2;

import P1.P1;

public class P2 extends P1 {


public static void main(String argv[]) {
P2 p2 = new P2();
p2.aFancyMethod();
}
}
Hasil sebelum P1.java dan P2.java dilakukan perubahan :

Hasil setelah P1.java dan P2.java dilakukan perubahan :

Analisis :

Program di atas terjadi error karena access modifier dari class P1.java adalah default, yaitu hanya
bisa diturunkan dalam package yang sama. Untuk memperbaiki error ditambahkan public pada
class P1 dan pada method aFancyMethod(). Kemudian pada file P2.java ditambah kodingan
import P1.P1 untuk memanggil class P1 yang diluar package

4. Latihan 4. Mengimplementasikan UML class diagram dalam program untuk


package perbankan
Source Code : Tabungan.java

package perbankan;

public class Tabungan {


protected int saldo;
public Tabungan(){

}
public int getSaldo(){
return saldo;
}
public void setSaldo(int val){
this.saldo=val;
}
}

Source Code : PenyimpananUang.java

package perbankan;
public class PenyimpananUang extends Tabungan {

private double tingkatBunga;

public PenyimpananUang(int saldo, double tingkatBunga){


tingkatBunga=tingkatBunga*saldo;
this.tingkatBunga=saldo+tingkatBunga;
}

public double cekUang(){


return tingkatBunga;
}
}

Source Code : TesLatihan.java

package perbankan;

import perbankan.*;

public class TesLatihan {


public static void main(String args[]) {
PenyimpananUang tabungan = new PenyimpananUang(5000, 8.5/100);
System.out.println("Uang yang ditabung : 5000");
System.out.println("Tingkat bunga sekarang : 8.5%");
System.out.println("Total uang anda sekarang : " + tabungan.cekUang());
}
}

Hasil :

Analisis :

Program di atas mengimplementasikan UML perbankan ke dalam program. Program tersebut


menggunakan 3 class yaitu Tabungan, PenyimpananUang dan TesLatihan. Yang dimana
PenyimpananUang ini adalah warisan dari class Tabungan

F. TUGAS
Mengimplementasikan UML class diagram dalam program untuk package perbankan
Source Code : Tabungan.java

package perbankan;

public class Tabungan {


protected int saldo;
public Tabungan(){

}
public int getSaldo(){
return saldo;
}
public void setSaldo(int val){
this.saldo=val;
}
}

Source Code : PengambilanUang.java

package perbankan;

public class PengambilanUang extends Tabungan {


private int proteksi;
public PengambilanUang(int saldo){

}
public PengambilanUang(int saldo, int tingkatBunga){
super.setSaldo(saldo - tingkatBunga);
this.proteksi = tingkatBunga;
}
public int getSaldo(){
return super.getSaldo() + proteksi;
}
public boolean ambilUang(int jumlah){
if(jumlah <= super.getSaldo()){
super.setSaldo(super.getSaldo() - jumlah);
return true;
} else {
return false;
}
}
}

Source Code : TesTugas.java


package perbankan;

import perbankan.*;

public class TesTugas {


public static void main(String args[]){
PengambilanUang tabungan = new PengambilanUang(5000, 1000);
System.out.println("Uang yang ditabung : 5000");
System.out.println("Uang yang diproteksi : 1000");
System.out.println("-----------------------------");
System.out.println("Uang yang diambil : 4500 " + tabungan.ambilUang(4500));
System.out.println("Saldo sekarang : " + tabungan.getSaldo());
System.out.println("-----------------------------");
System.out.println("Uang yang diambil : 2500 " + tabungan.ambilUang(2500));
System.out.println("Saldo sekarang : " + tabungan.getSaldo());
}
}

Hasil :

Analisis :

Program di atas mengimplementasikan UML perbankan ke dalam program. Program tersebut


menggunakan 3 class yaitu Tabungan, PengambilanUang dan TesTugas. Yang dimana
PenyimpananUang ini adalah warisan dari class Tabungan
LAPORAN MINGGU KE-V
BAB 11 INHERITANCE2

NAMA LENGKAP : IHSAN MAULANA ADLI


NIM : 6304181130
PRODI : D4-RPL
SEMESTER : 4
KELAS : B
MATA KULIAH : PRAKTIKUM PEMROGRAMAN BERORIENTASI
OBYEK
DOSEN PENGAMPUH : DEPANDI ENDA, M.KOM

C. TUGAS PENDAHULUAN
1. Ada berapa modifier untuk pengontrolan akses? Jelaskan masing – masing!
2. Apakah kegunaan kata kunci super? Jelaskan!
3. Apakah yang dimaksud dengan konstruktor tidak diwariskan?

D. PERCOBAAN
1. Percobaan 1 : Menggunakan kata kunci super
Source Code : Parent.java

package Percobaan1;

public class Parent {


public int x =5;
}

class Child extends Parent {


public int x = 10;
public void Info(int x) {
System.out.println("Nilai x sebagai parameter = " + x);
System.out.println("Data member x di class Child = " + this.x);
System.out.println("Data member x di class Parent = " + super.x);
}
}

Source Code : NilaiX.java

package Percobaan1;

public class NilaiX {


public static void main(String args[]) {
Child tes = new Child();
tes.Info(20);
}
}

Hasil :

Analisis :

Program di atas adalah percobaan menggunakan kata kunci super. Yang dimana super ini berarti
mengambil nilai aslinya atau nilai pada kelas induknya.

2. Percobaan 2 : Konstruktor tidak diwariskan


Source Code : Parent.java

package Percobaan2;

public class Parent {

Source Code : Child.java

package Percobaan2;

public class Child extends Parent {


int x;
public Child() {
super();
x = 5;
}
}

Analisis :

Program di atas menjelaskan sebelum melakukan pemanggilan variabel, harus ada pemanggilan
dari class induk dengan menggunakan kata kunci super(). Jika kata kunci super() diletakkan
setelah pemanggilan variabel nilai, maka akan terjadi error pada program

E. LATIHAN
1. Latihan 1 : Konstruktor tidak diwariskan
Source Code : Parent.java

package Latihan1;

class Base {
Base(int i){
System.out.println("base constructor");
}
Base(){

}
}

public class Sup extends Base {


public static void main(String[] args) {
Sup s = new Sup();
s.derived();
}

Sup(){
super(1);
}

public void derived(){


Base b = new Base(2);
}
}

Hasil :

Analisis :

Untuk memanggil base constructor di class Base, menggunakan kata super ditambah dengan
nilai variabelnya. Untuk method derived di bikin object Base dan di panggil dengan syntax
s.derived()

2. Latihan 2 : Konstruktor tidak diwariskan


Source Code : Base.java

package Latihan2;

public class Base {


Base(){
int i = 100;
System.out.println(i);
}
}

Source Code : Pri.java

package Latihan2;

public class Pri extends Base {


static int i = 200;
public static void main(String argv[]){
Pri p = new Pri();
System.out.println(i);
}
}

Hasil :

Analisis :

Yang terjadi pada program di atas adalah, terpanggil variabel i baik di class induk maupun di
class anak. Hal ini terjadi karena di kelas anak ada jenis modifier yang digunakan, yaitu modifier
static. Yang dimana static ini adalah sebuah modifier di java yang berfungsi agar suatu varuabel
method dapat diakses oleh class atau object tanpa harus melakukan instansiasi terhadap class
tersebut. Jadi nilai i di class induk maupun anak akan tetap terpanggil karena modifier static

3. Latihan 3 : Apa yang tampil di layar bila kode dibawah ini dijalankan?
Source Code : Base.java

package Latihan3;

class X{
Y b = new Y();
X(){
System.out.println("X");
}
}

class Y{
Y(){
System.out.println("Y");
}
}

public class Z extends X {


Y y = new Y();
Z(){
System.out.println("Z");
}
public static void main(String[] args) {
new Z();
}
}

Hasil :

Analisis :

Hasil dari program tersebut adalah Y, X, Y, Z. Hasil nya seperti itu karena memanggil class Z,
dimana class Z ini adalah anak dari class X, maka X dipanggil. Di class X sendiri ada pembuatan
object dengan nilai class Y, y tercetak dan kemudian X tercetak di class Z juga ada pembuatan
object Y, maka Y tercetak dan terakhir Z tercetak

4. Latihan 4 : Kompile dan jalankan program berikut! Apa yang terjadi? Jelaskan!
Source Code : Base.java

package Latihan3;

class X{
Y b = new Y();
X(){
System.out.println("X");
}
}

class Y{
Y(){
System.out.println("Y");
}
}

public class Z extends X {


Y y = new Y();
Z(){
System.out.println("Z");
}
public static void main(String[] args) {
new Z();
}
}

Hasil :

Analisis :

Hasil dari program tersebut adalah Y, X, Y, Z. Hasil nya seperti itu karena memanggil class Z,
dimana class Z ini adalah anak dari class X, maka X dipanggil. Di class X sendiri ada pembuatan
object dengan nilai class Y, y tercetak dan kemudian X tercetak di class Z juga ada pembuatan
object Y, maka Y tercetak dan terakhir Z tercetak

F. TUGAS

Anda mungkin juga menyukai