Anda di halaman 1dari 10

A.

PENDAHULUAN

Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman


dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya
kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur
‘code reuse’ untuk menghindari duplikasi kode program.
Konsep inheritance membuat sebuah struktur atau
‘hierarchy’ 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 atauheir class.

B. DASAR TEORI
Pemrograman berorientasi objek (Object Oriented Programming atau disingkat OOP)
adalah paradigma pemrograman yang berorientasikan kepada objek yang merupakan suatu
metode dalam pembuatan program, dengan tujuan untuk menyelesaikan kompleksnya berbagai
masalah program yang terus meningkat. Objek adalah entitas yang memiliki atribut, karakter
(bahavour) dan kadang kala disertai kondisi (state) (Douglas, 1992).
Ide dasar pada OOP adalah mengkombinasikan data dan fungsi untuk mengakses data
menjadi sebuah kesatuan unit yang dikenal dengan nama objek. Objek adalah struktur data yang
terdiri dari bidang data dan metode bersama dengan interaksi mereka untuk merancang aplikasi
dan program komputer. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-
kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim
pesan ke objek lainnya.
Kelas (class) merupakan penggambaran satu set objek yang memiliki atribut yang sama.
Kelas mirip dengan tipe data ada pemrograman non objek, akan tetapi lebih komprehensif karena
terdapat struktur sekaligus karakteristiknya. Kelas baru dapat dibentuk lebih spesifik dari kelas
ada umumnya.kelas merupakan jantung dalam pemrograman berorientasi objek.
Objek bertugas membungkus data dan fungsi bersama menjadi suatu unit dalam
sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam
sebuah program komputer berorientasi objek.menyatakan visualilasi seperti bentuk huruf (font).
Abstraksi merupakan kemampuan sebuah program untuk melewati aspek informasi yang
diolah adalah kemampuan untuk fokus pada inti permasalahan. Setiap objek dalam sistem
melayani berbagai model dari pelaku abstrak yang dapat melakukan kerja, laporan dan
perubahan serta berkomunikasi dengan objek lain dalam sistem, tanpa harus menampakkan
kelebihan diterapkan.
Enkapsulasi adalah proses memastikan pengguna sebuah objek tidak dapat
menggantikan keadaan dari sebuah objek dengan cara yang tidak sesuai prosedur. Artinya,
hanya metode yang terdapat dalam objek tersebut yang diberi izin untuk mengakses keadaan
yang diinginkan. Setiap objek mengakses interface yang menyabutkan bagaimana objek lainnya
dapat berintegrasi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada
representasi dalam objek tersebut.
Polimorfise merupakan suatu fungsionalitas yang diimplikasikan dengan berbagai cara
yang berbeda. Pada program berorientasi objek, pembuat program dapat memiliki  berbagai
implementasi untuk sebagian fungsi tertentu.

Konsep Inheritance(pewarisan) adalah sebuah cara mewariskan atau menurunkan


atribut atau method yang di miliki oleh superclass (induk) kepada subclassnya.
Superclass merupakan class induk yang akan mewariskan apa yang dimilikinya.
Sedangkan subclass merupakan class yang diwarisi oleh superclass. Sehingga subclass
dapat memiliki apa saya yang ada pada superclassnya. Sehingga subclass dapat memiliki
apa saja yang ada pada superclassnya Untuk mendefinisikan superclass dapat
menggunakan keywords extends. Sedangkan untuk memanggil constructor superclass
cukup menggunakan keyword super.
C. URAIAN TUGAS ANGGOTA KELOMPOK

Nama Uraian Tugas Hasil pekerjaan


I Wayan Chandra
M. Afif Hibatullah
Eron Wahyu
M. Lukman Al Hakim
Rasyidah Herawati
Vanessa Adhelia

D. SOURCE CODE DAN PENJELASAN PROGRAM


1. Orang.java
import java.util.Scanner;

public class Orang {

private String nama;


private String alamat;
private String kota;
private int umur;
private char jenis_kelamin;

public Orang(String nama, String alamat, String kota, int umur, char
jenis_kelamin) {
this.nama=nama;
this.alamat=alamat;
this.umur=umur;
this.jenis_kelamin=jenis_kelamin;
}
void setnama(String nama) {
this.nama = nama;
}

void setalamat(String alamat) {


this.alamat = alamat;
}

void setkota(String kota) {


this.kota = kota;
}

void setumur(int umur) {


/*
Umur harus lebih dari 0
*/
while (umur <= 0) {
System.out.println("Umur Tidak Valid");
Scanner scanner = new Scanner(System.in);
umur = Integer.parseInt(scanner.nextLine());
}
this.umur = umur;
}

void setjenis_kelamin(char jenis_kelamin) {


/*
Validasi bahawa karakter jenis kelamin adalah
L: laki-laki dan
P: perempuan
*/
if(jenis_kelamin=='L'||jenis_kelamin=='P'){
this.jenis_kelamin=jenis_kelamin;
}else {
while (jenis_kelamin != 'L' && jenis_kelamin != 'P') {
System.out.println("Jenis Kelamin Tidak Valid");
System.out.print("Masukkan Jenis Kelamin = ");
Scanner scanner = new Scanner(System.in);
jenis_kelamin = scanner.nextLine().charAt(0);
}
this.jenis_kelamin = jenis_kelamin;
}
}

String getnama() {
return nama;
}

String getalamat() {
return alamat;
}

String getkota() {
return kota;
}

int getumur() {
return umur;
}

char getjenis_kelamin() {
return jenis_kelamin;
}

public String toString() {


return "Orang = [" + "nama = '" + nama +
", alamat = '" + alamat +
", kota = '" + kota +
", umur = " + umur +
"jenis kelamin " + jenis_kelamin +
"]";
}
}

Class ini digunakan sebagai super class dalam program java kali ini. Disini
terdapat atribut-atribut yang manusia miliki sebagai contoh di program ini adalah nama,
alamat, kota, umur dan jenis kelamin. Fungsi yang menggunakan format “void set…”
digunakan untuk memasukkan data sesuai dengan kategorinya, misal setNama yang
digunakan untuk memasukkan data nama. Didalam setUmur terdapat percabangan
sebagai batasan dalam memasukkan umur dimana umur sendiri tidak mungkin 0 ataupun
dibawah 0. Lalu fungsi yang menggunakan format “tipedata get…” digunakan untuk
memanggil data tersebut sesuai dengan data yang dimasukkan. Selanjutnya terdapat
fungsi toString yang digunakan untuk memberi luaran program.

2. Dosen.java
public class Dosen extends Orang {
private String mk;
private String strata;
private int salary; // Nilai salary harus lebih dari 0

public Dosen(String nama, String alamat, String kota, int umur, char
jenis_kelamin, String mk, String strata, int salary)
{
super(nama, alamat, kota, umur, jenis_kelamin);
this.mk=mk;
this.strata=strata;
this.salary=salary;

}
public void setStrata(String strata) {
this.strata=strata;
}
public void setMk(String tittle) {
this.mk=mk;
}
public void setSalary(int salary) {
if(salary>0) this.salary=salary;
else System.out.println("Data Tidak Valid");
}
public String getStrata(){
return strata;
}
public String getMk() {
return mk;
}
public int getSalary() {
return salary;
}

@Override
public String toString()
{
return "Informasi Dosen\n" +
"============================ \n" +
"Nama \t : " + getnama() + '\n' +
"Alamat \t : " + getalamat() + '\n' +
"Kota \t : " + getkota() + '\n' +
"Umur \t : " + getumur() + '\n' +
"MK \t \t : " + mk + '\n' +
"Strata \t : " + strata + '\n' +
"Salary \t : " + salary + '\n';
}
}

Class ini merupakan subclass dari class Orang dimana yang dimaksudkan
disini adalah Dosen pasti memiliki semua atribut yang dimiliki manusia dan di class
ini ditambahkan atribut yang hanya dimiliki dosen. Class ini diketahui subclass dari
orang karena terlihat dari awal terdapat fungsi “extends”. Fungsi yang menggunakan
format “void set…” digunakan untuk memasukkan data sesuai dengan kategorinya.
Didalam setSalary terdapat percabangan dimana salary diberi batasan jika yang data
yang dimasukkan harus diatas nilai 0, atau program akan memberi luaran “Data tidak
valid”. Lalu fungsi yang menggunakan format “tipedata get…” digunakan untuk
memanggil data tersebut sesuai dengan data yang dimasukkan. Terdapat @Override
yang digunakan untuk mengecek apakah atribut tambahan dari dosen memiliki atribut
yang sudah dimiliki Class Orang sebelumnya sehingga tidak terjadi tumpeng tindih
antar atribut. Selanjutnya terdapat fungsi toString yang digunakan untuk memberi
luaran program.

3. Mahasiswa.java

public class Mahasiswa extends Orang {

private String NIP;


private String kelas;
private int semester;
private MahasiswaReport report;

public Mahasiswa(String nama, String alamat, String kota, int umur,


char jenis_kelamin, String NIP, String kelas, int semester,
MahasiswaReport report) {
super(nama, alamat, kota, umur, jenis_kelamin);

setnama(nama);
setalamat(alamat);
setkota(kota);
setumur(umur);
setjenis_kelamin(jenis_kelamin);

this.NIP = NIP;
this.kelas = kelas;
this.semester = semester;
this.report = report;
}

@Override
public String toString() {
return "Informasi Mahasiswa\n" +
"============================ \n" +
"Nama \t : " + getnama() + '\n' +
"Alamat \t : " + getalamat() + '\n' +
"Kota \t : " + getkota() + '\n' +
"Umur \t : " + getumur() + '\n' +
"NIP \t : " + NIP + '\n' +
"Kelas \t : " + kelas + '\n' +
"Semester : " + semester + '\n' + '\n' +
report.toString();
}
}

Class Mahasiswa ini umumnya memiliki bentuk yang sama seperti class Dosen
walaupun terdapat beberapa perbedaan. Perbedaannya yaitu terdapat tipedata bentukan
dari Class MahasiswaReport yang fungsinya nanti akan dipanggil di “report.toString()”
sebagai pemberi luaran laporan nilai-nilai mahasiswa tersebut.

4. MahasiwaRepor.java
public class MahasiswaReport {
private String mk1;
private String mk2;
private int sks1;
private int sks2;
private String nilai1;
private String nilai2;
public MahasiswaReport(String mk1, String mk2, int sks1, int sks2,
String nilai1, String nilai2) {
this.mk1 = mk1;
this.mk2 = mk2;
this.sks1 = sks1;
this.sks2 = sks2;
this.nilai1 = nilai1;
this.nilai2 = nilai2;
}
MahasiswaReport(MahasiswaReport sp){}

public void setMk1(String mk1) {


this.mk1 = mk1;
}
public String getMk1() {
return mk1;
}

public void setMk2(String mk2) {


this.mk2 = mk2;
}
public String getMk2() {
return mk2;
}

public void setSks1(int sks1) {


this.sks1 = sks1;
}
public int getSks1() {
return sks1;
}

public void setSks2(int sks2) {


this.sks2 = sks2;
}
public int getSks2() {
return sks2;
}

public void setNilai1(String nilai1) {


this.nilai1 = nilai1;
}
public String getNilai1() {
return nilai1;
}

public void setNilai2(String nilai2) {


this.nilai2 = nilai2;
}
public String getNilai2() {
return nilai2;
}

public float HitungNR() {


float mutu = ( ((ConvertNilaiMutu(nilai1)*sks1) +
(ConvertNilaiMutu(nilai2)*sks2)) / (sks1 + sks2));
return mutu;
}

public float ConvertNilaiMutu(String HurufMutu) {


switch (HurufMutu) {
case "A":
return 4;
case "B":
return 3;
case "C":
return 2;
case "D":
return 1;
default:
return 0;
}
}

public String toString() {


return "Information from Student Report\n" +
"============================ \n" +
"MK1 \t : " + getMk1() + '\n' +
"SKS1 \t : " + getSks1() + '\n' +
"Nilai1 \t : " + (int) ConvertNilaiMutu(getNilai1()) + '\n'
+
"MK2 \t : " + getMk2() + '\n' +
"SKS2 \t : " + getSks2() + '\n' +
"Nilai2 \t : " + (int) ConvertNilaiMutu(getNilai2()) + '\n'
+
"NR \t \t : " + HitungNR() + '\n';
}
}

Class ini bukan merupakan subclass dari Orang tetapi class ini digunakan sebagai
penampung laporan yang berisi atribut nilai dan sks dari mahasiswa yang berkaitan.
Fungsi yang menggunakan format “void set…” digunakan untuk memasukkan data
sesuai dengan kategorinya. Lalu fungsi yang menggunakan format “tipedata get…”
digunakan untuk memanggil data tersebut sesuai dengan data yang dimasukkan. Terdapat
fungsi ConvertNilaiMutu yang berfungsi untuk mengubah nilai masukkan yang semula
bertipe String menjadi bertipe float agar memudahkan perhitungan yang dilakukan di
fungsi HitungNR(). Selanjutnya terdapat fungsi toString yang digunakan untuk memberi
luaran program.

5. Driver.java
public class Driver {
public static void main(String[] args) {
Dosen dosen = new Dosen("Umar Bakri",
"jl.umar",
"Bandung",
30,
'L',
"PBO",
"S1",
1000);
System.out.println(dosen.toString());

Mahasiswa mhs = new Mahasiswa("Barak Obama",


"Way Hui",
"Bandar Lampung",
21,
'L',
"14117001",
"RC",
4,
new MahasiswaReport("PBO","PBO Lanjut",3, 3, "A", "B"));
System.out.println(mhs.toString());
}
}

Lalu yang terakhir adalah Class Driver yang merupakan class main dalam
program ini. Didalam class ini terdapat inisialisasi objek dosen dan objek mahasiswa
serta terdapat fungsi luaran untuk memberi luaran data-data dosen dan mahasiswa sesuai
dengan fungsi-fungsi lain yang terdapat pada class-class sebelumnya.

6. SCREENSHOOT HASIL OUTPUT PROGRAM

Anda mungkin juga menyukai