Anda di halaman 1dari 19

LAPORAN PRAKTIKUM

MODUL 4
PEWARISAN TUNGGAL (INHERITANCE)

Nama:
Febri Y Silalahi (21103016)

Dosen:
Nicolaus Euclides

PROGRAM STUDI S1 SISTEM INFORMASI


FAKULTAS INFORMASI
INSTITUT TEKNOLOGI TELKOM PURWOKERTO
2022
I. TUJUAN
a. Mengerti dan memahami tentang konsep pewarisan tunggal (Inheritance)
b. Mampu mewujudkan bentuk pewarisan tunggal dalam C++ dan Java

II. TOOL
a. CodeBlocks / Borland C++ / Visual C++
b. NetBeans IDE 8.1
c. Java SE Development Kit 8

III. DASAR TEORI


A. Pengertian Pewarisan Tunggal
Inheritance adalah konsep OOP dimana sebuah class dapat menurunkan property dan
method yang dimilikinya kepada class lain. Konsep inheritance dipakai untuk
memanfaatkan fitur code reuse, yakni menghindari terjadinya duplikasi kode program.
Dalam bahasa Indonesia, inheritance ini disebut juga sebagai pewarisan atau penurunan.
Konsep inheritance membuat sebuah struktur atau hierarki class dalam kode program.
Class yang akan diturunkan bisa disebut sebagai class induk (parent class), super class,
atau base class.
Sedangkan class yang menerima penurunan bisa disebut sebagai class anak (child class),
sub class, derived class atau heir class.
Salah satu kemampuan atau fitur yang menarik di dalam paradigma pemrograman
beriorientasi obyek (PBO) adalah pewarisan (inheritance). Melalui fitur ini, kita dapat
membuat class baru yang memiliki karakteristik mirip dengan class yang lainnya.
Dikatakan mirip karena class yang baru ini nantinya dapat memiliki atribut dan method
yang sama dengan class yang lain. Selain itu, pada class yang baru ini dapat kita
tambahkan atribut dan method khusus yang tidak dimiliki oleh class yang lain.
Untuk mengakses sifat atau objek dari class lain, kita harus menggunakan kata kunci
extends pada class anak/subclass, dengan menggunakan kata kuni extends, kita dapat
mewarisi sifat-sifat dari superclass yang dituju.

B. Cara Menggunakan Konsep Inheritance pada Java


Pertama buatlah package (opsional) dan 3 buah class baru, berinama masing-masing
class tersebut, misalnya class kendaraan, mobil dan class motor, class kendaraan akan
kita gunakan sebagai superclass (class induk), class motor dan class mobil akan
digunakan sebagai subclass (class anak) dimana class motor dan mobil akan mewarisi
sifat-sifat dari class kendaraan.
Buka class kendaraan.java pada project kalian, lalu masukan beberapa atribut seperti
variable dan method:
package WILDAN_TECHNO_ART;

public class kendaraan {

String Merek;
int Kecepatan;
String Jenis;

void Melaju(int Kecepatan){


this.Kecepatan = Kecepatan;
System.out.println("======== MELAJU ========");
System.out.println("Kecepatan "+Kecepatan+" Km/Jam");
}

void setAtribut(String Merek, String Jenis){


this.Merek = Merek;
this.Jenis = Jenis;
}

String getMerek(){
return Merek;
}

String getJanis(){
return Jenis;
}
}

Selanjutnya buka class motor.java, untuk menggunakan konsep Inheritance, kita perlu
menggunakan kata kunci extends pada subclass tersebut dan untuk mengakses atribut-
atributnya, kita perlu membuat objek dari class motor terlebih dahulu. Seperti berikut ini:

package WILDAN_TECHNO_ART;

public class motor extends kendaraan{


public static void main(String[] args){
//Membuat Objek Dari Class Motor
motor data = new motor();

//Memasang Atribut untuk Merek dan Jenis


data.setAtribut("HONDA", "Motor");

//Menampilkan hasil
System.out.println("Jenis Kendaraan: "+data.getJanis());
System.out.println("Merek Kendaraan: "+data.getMerek());
data.Melaju(290);
}
}

Kita juga dapat menggunakn atribut yang sama pada class mobil.java, yang diwariskan
dari class kendaraan, pada class mobil kalian tinggal mengganti nilai-nilainya seperti
berikut ini:

package WILDAN_TECHNO_ART;

public class mobil extends kendaraan{


public static void main(String[] args){
//Membuat Objek Dari Class Mobil
mobil data = new mobil();

//Memasang Atribut untuk Merek dan Jenis


data.setAtribut("SUZUKI", "Mobil");
//Menampilkan hasil
System.out.println("Jenis Kendaraan: "+data.getJanis());
System.out.println("Merek Kendaraan: "+data.getMerek());
data.Melaju(180);
}
}

Ketika mempelajari kode yang agak panjang dan melibatkan banyak object seperti diatas,
mulailah membaca kode program dari main() terlebih dahulu.
Jika terdapat proses instansiasi object dengan argument, baru masuk ke dalam
pendefinisian class tersebut dan ikuti alur pengiriman argumen hingga mengisi property
dari sebuah class. Apabila kita mulai membaca dari pendefinisian class terlebih dahulu,
biasanya memang lebih rumit.

Inheritance atau proses pewarisan class memang menjadi topik yang cukup rumit tapi
sangat penting. Untuk kode program yang kompleks, bisa saja ada sebuah class yang
diturunkan kepada class lain, dan kemudian di turunkan lagi kepada class selanjutnya.

C. Konstruktor dan Destruktor


Konstruktor dan destruktor kelas dasar tidak diwariskan kepada kelas turunan. Kelas
turunan menggunakan konstruktor sendiri baik konstruktor default maupun membuat
konstruktor pada kelas turunan itu sendiri. Inisialisasi atribut kelas dasar dilakukan
dengan menggunakan konstruktor kelas dasar yang dipanggil secara eksplisit dalam
konstuktor kelas turunan. Destruktor kelas turunan dipanggil sebelum pemanggilan
destruktor kelas dasar.
Kelas turunan DAPAT mengakses setiap public member kelas dasar, kelas lain juga
DAPAT mengakses member kelas dasar secara langsung. Kelas turunan TIDAK DAPAT
mengakses private member kelas dasar, kelas lain juga TIDAK DAPAT mengakses
member kelas dasar secara langsung.
Kelas turunan DAPAT mengakses setiap protected member kelas dasar, tetapi kelas lain
TIDAK DAPAT mengakses member kelas dasar secara langsung.
D. Overriding (Redefinisi)
Overriding atau sering pula disebut dengan redefinisi adalah kemampuan suatu kelas
anak untuk memodifikasi (mendefinisikan kembali) data dan method dari kelas induknya.
Proses ini akan mengubah data method dari keduanya, kelas induk dan kelas anaknya.
Alasan mengapa dilakukan overriding antara lain jika akan dilakukan perubahan secara
menyeluruh, baik jumlah maupun tipe parameter maupun behaviour pemrosesan datanya.
Overriding dapat juga dilakukan jika akan dilakukan perubahan hanya untuk
menambahkan behaviour khusus yang dimiliki hanya oleh kelas anak tersebut.
Yang perlu diperhatikan dalam melakukan overriding adalah modifier penentu
aksesbilitas data dan methodnya yakni private, public atau protected.
1. Public
Mengijinkan kelas dan sub kelas dari package manapun untuk mengaksesnya.
2. Private
Membatasi akses hanya untuk kelas itu sendiri dan objek yang diinstans darinya.
3. Protected
Akses hanya diberikan kepada kelas itu sendiri dan sub kelas yang diturunkan
darinya. Jadi , jelas bahwa overriding hanya bisa dilakukan untuk data dan method
yang memiliki modifier penentu aksesbilitas public dan protected.
IV. GUIDED 1
a. projectPoint
Source Code
Project Point.java
package edu.praktikumpbo.projectpoint;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class ProjectPoint {

public static void main(String[] args) {


//Membuat instans dari kelas anak dan memanggil method yang dimilikinya
Circle circle1 = new Circle (6.5f, 8.2f, 1.9f);
circle1.cetakPoint();
System.out.println("");
Circle circle2=new Circle (10,5,5);
circle2.cetakPoint();

}
}

Point.java

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/

//Parent Class (Super Class)


public class Point {
protected float x, y;

public Point (float a, float b){


System.out.println("Konstruktor Point dijalankan");
x = a;
y = b;
}
public void cetakPoint(){
System.out.println("Point: [" + x + "," + y +"]");
}
}

Circle.java
package edu.praktikumpbo.projectpoint;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Circle extends Point {
private float radius;

//Konstraktor Kelas Anak memanggil konstruktor kelas Induk


public Circle(float r, float a, float b) {
super(a, b);
//super.x = a;
//super.y = b;
radius = r;
System.out.println("Konstruktor Circle dijalankan");
}

//Method yang memanggil method Induk dari kelas induknya dengan menggunakan
keyword super

@Override
public void cetakPoint() //redefinisi fungsi kelas induk
{
super.cetakPoint();
System.out.println("Radius:" + radius);
}

Output
b. projectSpeak
Source Code
ProjectSpeak.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class ProjectSpeak {

public static void main(String[] arguments) {


Dog guffy = new Dog();
Duck donald = new Duck();
MorleySafer morley = new MorleySafer();
Owl woodsy = new Owl();
guffy.name = "Guffy";
donald.name = "Donald";
morley.name = "Morley Safer";
woodsy.name = "Woodsy";
System.out.println("First we'll get the dog to speak:");
guffy.speak();
System.out.println(" ");
System.out.println("Now, the duck will speak:");
donald.speak();
System.out.println(" ");
System.out.println("Now it's Morley's turn to speak:");
morley.speak();
System.out.println(" ");
System.out.println("Finally, the owl will speak:");
woodsy.speak();
System.out.println(" ");
System.out.println("Time for all four to sleep:");
guffy.sleep();
donald.sleep();
morley.sleep();
woodsy.sleep();
}
}

Dog.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Dog extends Mammal {
public void speak(){
System.out.println("Arf! arf!");
}

Duck.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Duck extends Mammal{
public void speak(){
System.out.println("Quack! Quack!");
}

Horse.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Horse extends Mammal {
public void speak(){
System.out.println("Whinny! Whinny!");
}
}

Mammal.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Mammal {
protected String name;

public void sleep(){


System.out.println("zzzz zzzz zzzz");
}
}

MikeWallace.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class MikeWallace extends Mammal{
public void speak(){
System.out.println("Can you honestly look the American people in the eye and say
that?");
}
}

MorleySafer.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class MorleySafer extends Mammal{
public void speak(){
System.out.println("Can I ask you a few questions about your 1987 tax statement?");
}

Owl.java
package edu.praktikumpbo.projectspeak;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class Owl extends Mammal{
public void speak(){
System.out.println("Whoo! Whoo!");
}
@Override
public void sleep(){
System.out.println(" "); //Owl makes no noise when sleeping
}

}
Output

V. UNGUIDED 1
Source Code
ProjectPegawaiPerusahaan.java
package edu.praktikumpbo.projectphonetriall;

import java.util.Scanner;

/**
*
* @author Febri S
* 21103016
* SI 05-A
*/
public class ProjectPhoneTriall {

public static void main(String[] args) {


// membuat objek HP
Phone redmiNote8 = new Xiaomi();
Phone IPhone9 = new IPhone ();
Phone SamsungA13 = new Samsung ();
Phone OppoA57 = new Oppo ();
// membuat objek user
PhoneUser febri = new PhoneUser(redmiNote8);

// kita coba nyalakan HP-nya


febri.turnOnThePhone();

// biar enak, kita buat dalam program


Scanner input = new Scanner(System.in);
String aksi;

while (true) {
System.out.println("=== APLIKASI INTERFACE ===");
System.out.println("[1] Nyalakan HP");
System.out.println("[2] Matikan HP");
System.out.println("[3] Perbesar Volume");
System.out.println("[4] Kecilkan Volume");
System.out.println("[0] Keluar");
System.out.println("--------------------------");
System.out.print("Pilih aksi> ");
aksi = input.nextLine();

if(aksi.equalsIgnoreCase("1")){
febri.turnOnThePhone();
} else if (aksi.equalsIgnoreCase("2")){
febri.turnOffThePhone();
} else if (aksi.equalsIgnoreCase("3")){
febri.makePhoneLouder();
} else if (aksi.equalsIgnoreCase("4")){
febri.makePhoneSilent();
} else if (aksi.equalsIgnoreCase("0")){
System.exit(0);
} else {
System.out.println("Kamu memilih aksi yang salah!");
}
}

Sales.java
package edu.praktikumpbo.projectpegawaiperusahaan;

/**
*
* @author User
*/
public class Sales {
private int nip;
private String nama;
private String alamat;
private int thn_kerja;
private int jmlPelanggan;
private int gajiPokok;
private int gajiAkhir;

//methods
public Sales(){
//constructor
System.out.println("Konstruktor sales dijalankan..");
}

//fungsi mutator
public void setNip(int Nip){
nip=Nip;
}
public void setNama(String Nama){
nama=Nama;
}
public void setAlamat(String Alamat){
alamat=Alamat;
}
public void setThn_kerja(int Thn_kerja){
thn_kerja=Thn_kerja;
}
public void setGajiPokok(int GajiPokok){
gajiPokok=GajiPokok;
}
public void setJmlPelanggan(int JmlPelanggan){
jmlPelanggan=JmlPelanggan;
}
public void setSales(int gajiPokok){
gajiPokok=5000000;
gajiAkhir=(int)(gajiPokok+(jmlPelanggan * 50000));
}

public void cetak(){


System.out.println(" \n");
System.out.println(" Data Sales\n");
System.out.println("NIP :"+nip);
System.out.println("Nama :"+nama);
System.out.println("Alamat :"+alamat);
System.out.println("Tahun Masuk :"+thn_kerja);
System.out.println("Jumlah Pelanggan :"+jmlPelanggan);
System.out.println("Gaji pokok :"+gajiPokok);
System.out.println("Total gaji :"+gajiAkhir);
}
}

Satpam.java
package edu.praktikumpbo.projectpegawaiperusahaan;

/**
*
* @author User
*/
public class Satpam {
private int nip;
private String nama;
private String alamat;
private int thn_kerja;
private int gajiPokok;
private int jamLembur;
private int gajiAkhir;

//methods
public Satpam(){
System.out.println("Konstruktor satpam dijalankan..");
}

//fungsi mutator
public void setNip(int Nip){
nip=Nip;
}
public void setNama(String Nama){
nama=Nama;
}
public void setAlamat(String Alamat){
alamat=Alamat;
}
public void setThn_kerja(int Thn_kerja){
thn_kerja=Thn_kerja;
}
public void setJamLembur(int JamLembur){
jamLembur=JamLembur;
}
public void setGajiPokok(int GajiPokok){
gajiPokok=GajiPokok;
}
public void setSatpam(int gajiPokok){
gajiAkhir = (int) (gajiPokok + (jamLembur * 10000));
}

public void cetak(){


System.out.println(" \n");
System.out.println(" Data Satpam\n");
System.out.println("NIP :"+nip);
System.out.println("Nama :"+nama);
System.out.println("Tahun Masuk :"+thn_kerja);
System.out.println("Alamat :"+alamat);
System.out.println("Gaji pokok :"+gajiPokok);
System.out.println("Jumlah lembur "+jamLembur+ " jam");
System.out.println("Total gaji :"+gajiAkhir);
}
}

Manjer,java
package edu.praktikumpbo.projectpegawaiperusahaan;

/**
*
* @author User
*/
public class Manajer {
private String nama;
private String alamat;
private int gajiPokok;
private String divisi;
private int tunjangan;
private int gajiAkhir;
private int lamaKerja;
//methods
public Manajer(){
//constructor
System.out.println("Konstruktor manajer dijalankan..");
}

//fungsi mutator
public void setNama(String Nama){
nama=Nama;
}
public void setAlamat(String Alamat){
alamat=Alamat;
}
public void setGajiPokok(int GajiPokok){
gajiPokok=GajiPokok;
}
public void setDivisi(String Divisi){
divisi=Divisi;
}
public void setLamaKerja(int LamaKerja){
lamaKerja=LamaKerja;
}
public void setInfo(){

gajiPokok=7000000;

if(lamaKerja > 3 || lamaKerja < 5){


tunjangan = (int) (0.05 * gajiPokok);
gajiAkhir = gajiPokok + tunjangan;
}else if(lamaKerja > 5){
tunjangan = (int) (0.10 * gajiPokok);
gajiAkhir = gajiPokok + tunjangan;
}
}

public void cetak(){


System.out.println(" \n");
System.out.println(" Data Manajer\n");
System.out.println("Nama :"+nama);
System.out.println("Divisi :"+divisi);
System.out.println("Alamat :"+alamat);
System.out.println("Lama Bekerja : "+lamaKerja+ " tahun");
System.out.println("Gaji pokok :"+gajiPokok);
System.out.println("Total gaji :"+gajiAkhir);
}
}

Output

Anda mungkin juga menyukai