Anda di halaman 1dari 26

PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

KELAS E
Praktikum Modul 08 - Pewarisan

DISUSUN OLEH :
Nama : Elisabeth Tiara Dewanti
NIM : 205314143

TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2021
LATIHAN
Buatlah project baru bernama Inheritance menggunakan NetBeans untuk mencoba
latihan-latihan di bawah ini
1. Latihan mewariskan superclass Atas ke subclass bawah.
a. Buatlah package baru bernama inheritance untuk meletakkan kelas-kelas yang
dibuat pada latihan ini dan package baru bernama mytest untuk meletakkan
kelas main
b. Buatlah kelas Atas di bawah ini di dalam package inheritance

c. Buatlah kelas Bawah di bawah ini di dalam package inheritance

d. Buatlah kelas main AtasBawahMain di bawah ini di dalam package mytest

e. Jalanlan program main di atas. Mengapa method cetak1 bisa digunakan oleh
obyek bwh dari kelas Bawah padahal dalam di kelas Bawah tidak terdapat
method cetak1? Jelaskan jawaban anda!

Karena kelas Bawah mewarisi dari kelas Atas dimana kelas Atas mempunyai Cetak1.
Untuk mewarisi ke kelas bawah menggunkan sintaks Bawah extends Atas { public
class (subclass) extends (superclass)}.

f. Buatlah diagram kelas UML untuk latihan no 1 ini.


2. Latihan menggunkan level akses protected.
a. Buatlah kelas AtasPrivate di bawah ini di dalam package inheritance

b. Buatlah kelas BawahPrivate di bawah ini di dalam package inheritance

c. Buatlah kelas main AtasBawahPrivateMain di bawah ini di dalam package


mytest

d. Jalanlan program main di atas. Kenapa terjadi error pada kelas BawahPrivate.

Terjadi error pada kelas BawahPrivate karena level akses atribut i bersifat private,
Dimana akses modifier private artinya atribut, data atau method tersebut hanya dapat
diakses oleh kelas yang memilikinya saja.
Coba level akses pada atribut i dalam kelas AtasPrivate diubah dari private
menjadi protected. Jalanlan kembali program main di atas.

e. Mengapa setelah level akses pada atribut i diubah sekarang program dapat
berjalan? Jelaskan jawaban anda!
Setelah level akses pada atribut i diubah menjadi protected dapat berjalan atau tidak
error karena level akses atribut i yang bersifat protected bisa diakses di kelas
turunannya tetapi tidak bisa diakses di kelas lain. Protected dapat diakses dari class
yang sama ,package yang sama ,subclass, tapi tidak dapat diakses dari package lain.

f. Buatlah diagram kelas UML untuk latihan no 2 ini. Perhatikan tanda level akses
private (-), public (+) sedangkan protected (#) di dalan diagram kelas UML.
g. Coba level akses pada atribut i dalam kelas AtasPrivate diubah dari protected
menjadi public. Jalanlan kembali program main di atas.

Mengapa setelah level akses pada atribut i diubah menjadi public program juga
dapat berjalan?
Karena level akses pada atribut i adalah public dimana artinya bisa diakses dari mana
saja. Public dapat di akses dari class yang sama,package yang sama ,subclass ,dan
package lain.
Menurut karakteristik/sifat utama dalam PBO dalam kasus ini untuk atribut i
sebaiknya mempunyai level akses protected atau public? Jelaskan jawaban
anda!
Menurut karakteristik/sifat utama dalam PBO dalam kasus ini untuk atribut i
sebaiknya mempunyai level akses protected karena aturan/konsep OOP tidak
memperbolehkan atribut di akses langsung dari kelas main atau tidak boleh diakses
secara sembarangan(Enkapsulasi) supaya tidak terakses langsung jadi kita
menggunakan akses modifier private atau protected
3. Latihan overriding.
a. Buatlah package baru bernama overriding untuk meletakkan kelas-kelas yang
dibuat pada latihan ini.
b. Buatlah kelas Atas di bawah ini di dalam package overriding

c. Buatlah kelas Bawah di bawah ini di dalam package overriding

d. Buatlah kelas main AtasBawahOverridingMain di bawah ini di dalam package


mytest

e. Jalanlan program main di atas. Mengapa yang tertampil “cetak 1 Ada di class
BAWAH ..” bukan “cetak 1 Ada di class ATAS ..” Jelaskan jawaban anda!

Karena Cetak1 di kelas Atas sudah diOverride di kelas Bawah. Overriding adalah
sebuah fungsi atau mathod dari superclass (kelas induk) yang ditulis kembali pada
subclassnya (kelas anak). Ketika di overide, maka isi dari method di superclass akan
di ubah pada subclass.

f. Buatlah diagram kelas UML untuk latihan no 3 ini

g. Cobalah untuk merubah level akses metohd cetak1() dari public menjadi private
atau protected. Jalanlan program main di atas. Mengapa terjadi error? Jelaskan
jawaban ini!

Jika level akses di kelas Bawah diubah menjadi private akan terjadi error karena
Aturan hak akses pada fungsi overriding di subclass tidak boleh lebih ketat di
bandingkan dengan hak akses method atau fungsi pada class induk atau method
subclass harus lebih luas atau sama dengan yang ada dalam superclass.

4. Menggunakan perintah super untuk memanggil method milik superclass.


a. Modifikasi kelas Bawah di latihan 4 seperti di bawah ini di dalam package
overriding.

b. Jalanlan program main di atas. Jelaskan kegunaan menggunakan perintah


super di latihan ini!

Kegunaan perintah super pada Latihan ini adalah digunakan untuk memanggil method
“cetak1” pada kelas Atas (perintah super adalah perintah yang digunakan method
subclass untuk memanggil method di superclasnya.)
Method Cetak1 pada kelas BawahModifikasi memanggil method “Cetak1” dari kelas
Atas dengan menggunakan perintah super. Sehingga jika dijalankan maka method
“Cetak1” pada kelas Atas akan tercetak dahulu kemudian di ikuti dengan perintah
selanjutnya dari method Cetak1 di kelas Bawah.
5. Latihan menggunakan perintah super dalam konstruktor
a. Buatlah kelas Hewan di bawah ini di dalam package inheritance

b. Buatlah kelas Karnivora di bawah ini di dalam package inheritance

c. Buatlah kelas main untuk mencoba membuat obyek Karnivora dalam package
mytest.

d. Jalanlan program main di atas. Jelaskan kegunaan menggunakan perintah


super di latihan ini!

Fungsi perintah perintah super adalah untuk memanggil method constructor dari
superclass. Supernya Karnivora adalah Hewan, pada kelas Karnivora method “public
karnivora(int u)” memanggil constructor pada kelas hewan yang memiliki 1 parameter
int u . jadi dia akan mencari constructor yang satu parameter int u.
TUGAS
A. Diagram UML
B. Algoritma Flowchart
1. Date
2. Pegawai
3. Manager

4. Sekretaris
5. Sales
6. Tugas_PegawaiMain
C. Source Code
1. Date
2. Pegawai

3. Manager

4. Sales
5. Sekretaris

6. Tugas_PegawaiMain
D. Output

E. Penjelasan
1. Date

Di kelas Date terdapat atribut day, month, year dengan tipe data int lalu
terdapat nilai konstanta/ nilai default yaitu DEFAULT_DAY = 31,
DEFAULT_MONTH = 12, DEFAULT_YEAR = 0. Accses modifier public
berarti dapat di accses dari class yang sama,package yang sama ,subclass
,dan package lain. Accses modifier private artinya data atau method tersebut
hanya dapat diakses oleh kelas yang memilikinya saja. Access modifier
private bersifat tertutup. Sesuai dengan konsep OOP Encapsulation, maka
setiap variabel wajib untuk dilindungi hak aksesnya secara langsung dari
luar. Oleh karena itu, variabel diberikan hak akses private dan untuk
melakukan pengaksesan/perubahan data digunakan setter getter.
Method Date() merupakan method Constructor, disebut method constructor
karena nama method sama dengan nama kelas yaitu Date. lalu ada method
constructor juga tetapi bedanya terletak pada parameternya, atau bisa di
sebut overloaded constructor.

Terdapat method setDay ( int day) dengan baris perintah jika day kurang dari
1 atau day lebih dari 31 maka cetak tulisan invalid day. Jika syarat if salah
maka masuk ke else yaitu this.day = day. Penggunaan this untuk merujuk
pada atribut.
Method getDay() dengan baris perintah jika day kurang dari 1 atau day lebih
dari 31 maka return day = 0 jika syarat if salah maka return day.
Method setMonth(int month) dengan baris perintah jika month kurang dari
1 atau month lebih dari 12 maka cetak invalid month, jika syarat if salah
maka masuk ke else this.month = month.
Method getMonth() dengan baris perintah jika month kurang dari 1 atau
month lebih dari 12 maka return month = 0 dan jika syarat if salah maka
masuk ke else return month. Merthod setYear(int year) dengan perintah
this.year = year
Method getYear() dengan nilai balikan year atau return year .
Method toString() untuk mencetak nilai method getDay(),getMonth() dan
getYear()

2. Pegawai

Di kelas Pegawai terdapat atribut nama, email dengan tipe data String lalu atribut
gol, nip, gajiPokok dengan tipe data int lalu ada atribut tglLhir dengan tipe data
Date. Accses modifier private artinya data atau method tersebut hanya dapat
diakses oleh kelas yang memilikinya saja. Access modifier private bersifat tertutup.
Sesuai dengan konsep OOP Encapsulation, maka setiap variabel wajib untuk
dilindungi hak aksesnya secara langsung dari luar. Oleh karena itu, variabel
diberikan hak akses private dan untuk melakukan pengaksesan/perubahan data
digunakan setter getter.

Method Pegawai(int nip, String nama, String email, int gol) merupakan method
constructor. Disebut method constructor karena nama method sama dengan nama
kelas yaitu Pegawai.
Method getNama() dengan return nama atau nilai balikan nama. Method getNIP()
dengan return nip.
Method getEmail() dengan return email Method getGol dengan return gol.
method getGajiPokok() dengan baris perintah if (golongan == 1) jika bernilai benar
maka gajiPokok = 5000000, jika tidak masuk ke else if (golongan == 2) jika
bernilai benar maka gajiPokok = 10000000. Jika tidak masuk ke else if (golongan
== 3) jika bernilai benar maka gajiPokok = 15000000. Jika tidak masuk ke else
if(golongan > 3) jika bernilai benar maka akan mencetak INVALID DAN Masukan
golongan 1 sampai 3. Lalu mengembalikan nilai gajiPokok atau return gajiPokok.
Method setTglLahir( Date tglLahir) parameter dari method tersebut bertipe Date.
method dengan baris perintah this.tglLahir = tglLahir
Method getTglLahir() dengan nilai balikan tglLahir atau return tglLahir
Method toString untuk mencetak nilai semua atribut dengan mengembalikan nilai
atau return String. Mencetak method getNama(), getNIP(), getTglLahir(), getGol(),
getGajiPokok() dan getEmail().
3. Manager

Kelas Manager mewarisi dari kelas Pegawai, kelas Manager sebagai subclass dan kelas
Pegawai sebagai superclass. Kelas Manager otomatis akan memiliki semua properti
yang ada di class induk/ class Pegawai Pada class anak/subclass , akan menggunakan
kata kunci extends untuk menyatakan kalau dia adalah class turunan dari superclass.
public class Manager extends Pegawai dikelas Manager ini terdapat atribut int
tunjangan yang akses modifiernya private. Accses modifier private artinya data atau
method tersebut hanya dapat diakses oleh kelas yang memilikinya saja. Access modifier
private bersifat tertutup. Sesuai dengan konsep OOP Encapsulation, maka setiap
variabel wajib untuk dilindungi hak aksesnya secara langsung dari luar. Oleh karena
itu, variabel diberikan hak akses private dan untuk melakukan pengaksesan/perubahan
data digunakan setter getter. Lalu terdapat method constructor Manager dengan
parameter int nip, String nama, String email, int golongan lalu isi atau body dari method
constructor ini adalah super(nip, nama, email, golongan). Kata kunci super Berfungsi
untuk memanggil method constructor dari superclass. Pada kelas Manager memanggil
constructor pada kelas Pegawai yang memiliki parameter int nip, String nama, String
email, int golongan , jadi dia akan mencari constructor yang berparameter int nip, String
nama, String email, int golongan. Lalu terdapat method SetTunjangan dengan
parameter int tunjangan dan body method this.tunjangan = tunjangan. ; Pemberian nama
yang sama antara variabel kelas dan variabel lokal mungkin saja terjadi maka untuk
membedakan nama pada variabel kelas dan variabel local digunakan this. Lalu terdapat
method getTunjangan dengan nilai balikan tunjangan atau return tunjangan. Lalu
terdapat method getGajiTotal () dengan nilai balikan atau return return
getGajiPokok()+ getTunjangan(). Method ini digunakan untuk menghitung total gaji
yang diperoleh manager.

4. Sales

Kelas Sales mewarisi dari kelas Pegawai, kelas Sales sebagai subclass dan kelas
Pegawai sebagai superclass. Kelas Sales otomatis akan memiliki semua properti yang
ada di class induk/ class Pegawai Pada class anak/subclass , akan menggunakan kata
kunci extends untuk menyatakan kalau dia adalah class turunan dari superclass. public
class Sales extends Pegawai. Di kelas Sales terdapat nilai konstanta int
KOMISI_PERBARANG = 10000 dengan Accses modifier public berarti dapat di
accses dari class yang sama,package yang sama ,subclass ,dan package lain. Dengan
menggunakan static maka variable akan menjadi milik class, bukan menjadi milik suatu
instance. Terdapat atribut int jmlhBarang dengan level akses private. Accses modifier
private artinya data atau method tersebut hanya dapat diakses oleh kelas yang
memilikinya saja. Access modifier private bersifat tertutup. Sesuai dengan konsep OOP
Encapsulation, maka setiap variabel wajib untuk dilindungi hak aksesnya secara
langsung dari luar. Oleh karena itu, variabel diberikan hak akses private dan untuk
melakukan pengaksesan/perubahan data digunakan setter getter. Lalu terdapat method
constructor Sales dengan parameter int nip, String nama, String email, int golongan lalu
isi atau body dari method constructor ini adalah super(nip, nama, email, golongan).
Kata kunci super Berfungsi untuk memanggil method constructor dari superclass. Pada
kelas Sales memanggil constructor pada kelas Pegawai yang memiliki parameter int
nip, String nama, String email, int golongan , jadi dia akan mencari constructor yang
berparameter int nip, String nama, String email, int golongan. Terdapat method
setJmlhBarang(int jumlahBarang) dengan body atau isi method this.jmlhBarang =
jumlahBarang. Pemberian nama yang sama antara variabel kelas dan variabel lokal
mungkin saja terjadi maka untuk membedakan nama pada variabel kelas dan variabel
local digunakan this. Lalu terdapat method getJmlhBarang() dengan nilai balikan atau
return jmlhBarang. Terdapat method getKomisi() dengan nilai balikan atau return
return jmlhBarang * KOMISI_PERBARANG method ini digunakan untuk menghitung
komisi yang didapat Sales. Lalu terdapat method getGajiTotal () dengan nilai balikan
atau return return getGajiPokok()+ getTunjangan(). Method ini digunakan untuk
menghitung total gaji yang diperoleh sales.

5. Sekretaris

Kelas Sekretaris mewarisi dari kelas Pegawai, kelas Sekretaris sebagai subclass dan
kelas Pegawai sebagai superclass. Kelas Sekretaris otomatis akan memiliki semua
properti yang ada di class induk/ class Pegawai Pada class anak/subclass , akan
menggunakan kata kunci extends untuk menyatakan kalau dia adalah class turunan dari
superclass. Public class Sekretaris extends Pegawai. Lalu terdapat method constructor
Sales dengan parameter int nip, String nama, String email, int golongan lalu isi atau
body dari method constructor ini adalah super(nip, nama, email, golongan). Kata kunci
super Berfungsi untuk memanggil method constructor dari superclass. Pada kelas
Sekretaris memanggil constructor pada kelas Pegawai yang memiliki parameter int nip,
String nama, String email, int golongan , jadi dia akan mencari constructor yang
berparameter int nip, String nama, String email, int golongan. Lalu terdapat method
getGajiTotal () dengan nilai balikan atau return return getGajiPokok() Method ini
digunakan untuk menghitung total gaji yang diperoleh Sekretaris.

6. Tugas_PegawaiMain
Di kelas ini untuk eksekusi program supaya menghasilkan output. Untuk
mengakses method yang diperlukan kita perlu mengimport dengan
Cetak tulisan PERUSAHAAN W, DATA PEGAWAI PERUSAHAAN W, Jln.Sering,
jadian kagak no.13 Bumi Telp. (021) 13021701
Lalu memanggil method constructor dari kelas Manager dengan parameter String nip,
String nama, String email dan int gol. dataManager sebagai obyek. Manager
dataManager = new Manager(101302, "Elisabeth Tiara Dewanti",
"elisabethtiarad@gmail.com", 3);
Memanggil method setTunjangan dengan dataManager sebagai obyek.
dataManager.setTunjangan(2500000); Lalu memanggil method constructor Date
dengan parameter int day, int month, int year. tglLahirPimpinan sebagi obyek. Lalu
memanggil method setTglLahir dengan parameter Date TglLahir dengan
tglLahirPimpinan sebagai parameter. Lalu cetak tulisan “ Data Manager “ lalu cetak
obyek dataManager dan cetak getGajiTotal() dengan dataManager sebagai obyek.

Lalu memanggil method constructor dari kelas Sekretaris dengan parameter String nip,
String nama, String email dan int gol. dataSekretaris sebagai obyek. Sekretaris
dataSekretaris = new Sekretaris(101603, "Angela Maricci",
"angelariccidewanti@gmail.com", 2); ); Lalu memanggil method constructor Date
dengan parameter int day, int month, int year. tglLahirSekretaris sebagai obyek. Lalu
memanggil method setTglLahir dengan parameter Date TglLahir dengan
tglLahirSekretaris sebagai parameter. Lalu cetak tulisan “ Data Sekretaris“ lalu cetak
obyek dataSekretaris dan cetak getGajiTotal() dengan dataSekretaris sebagai obyek.

Lalu memanggil method constructor dari kelas Sales dengan parameter String nip,
String nama, String email dan int gol. dataSales sebagai obyek. Sales dataSales = new
Sales(101702, "Samuel Arredondo", "arresamuel17@gmail.com", 1). Memanggil
method setJmlhBarang dengan dataSales sebagai obyek, dataSales.setJmlhBarang(50);
Lalu memanggil method constructor Date dengan parameter int day, int month, int year.
tglLahirSales sebagai obyek. Lalu memanggil method setTglLahir dengan parameter
Date TglLahir dengan tglLahirSales sebagai parameter. . Lalu cetak tulisan “ Data Sales
“ lalu cetak obyek dataSales dan cetak getGajiTotal() dengan dataSales sebagai obyek.

Anda mungkin juga menyukai