Nothing Special   »   [go: up one dir, main page]

Academia.eduAcademia.edu

LAPORAN PRAKTIKUM PBO MODUL 3 INHERITANCE

LAPORAN MODUL III INHERITANCE Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek Dibimbing oleh Ibu Kartika Candra Kirana, S.Pd.,M.Kom Oleh: Eva Yulia Safitri (160533611462) Fachryzal Candra Trisnawan (160533611466) Karina Aulia Faradila (160533611413) S1 PTI’16 OFF B UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA Oktober 2017 A. LATIHAN Latihan 1 Script Program : a.  Class Pertama package Latihan1; class Pertama { private int a = 10; protected void terprotek(){ System.out.println("Method ini hanya untuk anaknya"); } public void info(){ System.out.println("a = "+a); System.out.println("Dipanggil pada = "+this.getClass().getName()); } }  Class Kedua package Latihan1; class Kedua extends Pertama{ private int b = 8; protected void BacaSuper (){ System.out.println("Nilai b = "+b); terprotek(); info(); } }  Class TestPertama Kedua package Latihan1; class TestPertamaKedua { public static void main (String [] args){ Kedua D2 = new Kedua (); D2.BacaSuper (); D2.info (); Pertama S1 = new Pertama (); S1.terprotek (); S1.info(); } } b. Output :  Class Pertama  Class Kedua  Class TestPertamaKedua Penjelasan : Program pada Latihan 1 ini memiliki tiga kelas, yaitu kelas Pertama, Kelas Kedua, dan kelas TestPertamaKedua. Kelas pertama meruapak induk, sedangkan kelas Kedua merupakan anaknya. Kedua kelas tersebut tidak dapat dikompilasi karena tidak terdapat main method di dalamnya, sehingga dibutuhkan sebuah kelas yang digunakan untuk menampilkan program pada latihan satu ini. Yaitu kelas TestPertamaKedua. Sebelum membahas kelas Test pertama dan kedua, akan dijelaskan terlebih dahulu kelas Pertama. Pada kelas Pertama terlebih dahulu mendeklarasikan variabel a = 10, dimana tipe datanya berupa int dan modifiernya private. Tipe data int digunakan untuk mendeklarasikan angka bilangan bulat. Kemudian modifier private digunakan agar variabelnya hanya dapat diakses oleh kelas dimana variabel kelas tersebut dideklarasikan. protected void terprotek(){ System.out.println("Method ini hanya untuk anaknya"); } Pada script di atas yaitu mendeklarasikan method terprotek dengan modifier protected. Fungsinya yaitu agar method tersebut dapat diakses oleh object lain dalam satu keturunan (inheritance). Kemudian terdapat perintah untuk menampilkan kalimat “Method ini hanya untuk anaknya”. public void info(){ System.out.println("a = "+a); System.out.println("Dipanggil pada = "+this.getClass().getName()); Kemudian terdapat sebuah method lagi yaitu method info dengan menggunakan modifier public agar methodnya dapat diakses oleh object lain. Lalu terdapat perintah untuk menampilkan nilai a.. lalu untuk perintah tampilan kedua yaitu menampilkan asal variabel dari kelas apa.perintah tampilan kedua yaitu dipanggil pada , menggunakan this getClass dan getName yang berfungsi untuk membaca nilai pada kelas dan menampilkan nama kelasnya. Kemudian pada kelas Kedua terdapat ; class Kedua extends Pertama{ private int b = 8; pada kelas kedua pertama membuat kelas Kedua dengan extends kelas Pertama, sehingga kita tidak perlu lagi membuat script yang sama pada classs yang akakn kita buat dengan class yang kita buat sebelumnya. Kemudian mendeklarasikan nilai b dengan tipe data int dan modifier private. protected void BacaSuper (){ System.out.println("Nilai b = "+b); terprotek(); info(); pada kelas Kedua ini juga terdapat method yang modifiernya protected yaitu BacaSuper. Kemudian perintah menampilkan nilai b. Lalu pada kelas ini , program akan memanggil method info dan terprotek yang terdapat pada kelas Pertama. Untuk menjalankan program ini, maka kita membuat kelas baru yaitu TestPertamaKedua. Pada kelas ini terdapat main method. Program akan menampilkan data yang sudah dideklarasikan sebelunya pada kelas Pertama dan Keduadengan memanggil method – method pada kesua kelas tersebut. c. Hilangkan baris S1.terprotek() dari class TestPertama Penejalasan : Program tetap bisa dijalankan karena pada TestPertamaKedua telah dibuat object terprotek. Sehingga tidak mempengaruhi hasilnya. d. Hapus semua file yang berektensi .class dari folder e. Kompilasi class TestPertamaKedua saja. Perhatikan file apa yang dihasilkan dari kompilasi tersebut : f. Jelaskan fungsi perintah this.getClass.getName(). Perintah this.getClass.getName() yaitu digunakan untuk mendapat data dari kelas beserta nama yang dipanggil dari kelas yang telah dirujuk. Sehingga secara otomatis akan menampilkan data dari kelas yang telah dipanggil. Latihan 2 Script Program  : Class Person package Latihan2; class Person { protected String name; protected int age; public Person(String name, int age){ this.name = name; this.age = age; } //metode public void info(){ System.out.println("Nama : "+this.name); System.out.println("Usia : "+this.age); } }  Class Employ package Latihan2; class Employ extends Person{ private String noKaryawan; //konstruktor public Employ(String noKaryawan, String name, int age){ super (name, age); this.noKaryawan = noKaryawan; } //method public void info(){ System.out.println("No.karyawan : "+this.noKaryawan); super.info(); } }  Class KonstruktorSuperKelas package Latihan2; public class KonstruktorSuperKelas { public static void main (String [] args){ Employ programer1 = new Employ ("12345678", "Yanto", 32); programer1.info(); } } Output  Class Person  Class Employ :  Class KonstruktorSuperKelas Penjelasan - : Kelas Person Kelas person merupakan kelas induk yang disebut dengan superclass. class Person { protected String name; protected int age; pertama yaitu mendeklarasikan tipe data dari name yaitu String yang berfungsi untuk memuat karakter dengan modifier protected yang berfungsi agar method tersebut dapat diakses oleh object lain dalam satu keturunan (inheritance). Kemudian mendeklarasikan tipe data age yaitu int (untuk bilangan bulat) dengan modifier protected. public Person(String name, int age){ this.name = name; this.age = age; agar keluarannya tidak menghasilkan null maka maka digunakan keyword this, karena penamaan parameter sengan field nya mempunyai nama yang sama sehingga dipakailah this untuk menyatakan objek sekarang. public void info(){ System.out.println("Nama : "+this.name); System.out.println("Usia : "+this.age); Lalu membuat method info dengan modifier public. Dalam method terdapat perintah untuk menampilkan nama dan usia sesuai dengan object sekarang. Kelas Person ini tidak dapat dikompilasi karena tidak memiliki main method. - Kelass Employ Kelas Employ merupakan kelas turunan dari kelas Person yang disebut dengan SubClass. class Employ extends Person{ private String noKaryawan; extends digunakan untuk memanggil fungsi dari class lain, sehingga kita tidak perlu lagi membuat script yang sama pada class yang akan kita buat dengan class yang kita buat sebelumnya. Kemudian mendeklarasikan tipe data noKaryawan yaitu String dengan modifier private. Jadi variabel noKaryawan hanya bisa diakses pleh method internal class itu. public Employ(String noKaryawan, String name, int age){ super (name, age); this.noKaryawan = noKaryawan; script di atas merupakan sebuah konstruktor, jadi nantinya yang pertama kali dijalankan adalah perintah pada script diatas pada saat sebuah objek pertama kali diciptakan. Super( name,age) merupakan sebuah pemanggil konstruktor sehingga subclass akan menghasilkan eksekusi dari superclass konstruktor yang bersangkutan. this.noKaryawan = noKaryawan; merupakan deklarasi dari no karyawan yang akan dimasukkan. public void info(){ System.out.println("No.karyawan : "+this.noKaryawan); super.info(); kemudian dibuatlah sebuah method info dengan modifier public. Kemudian terdapat perintah untuk menampilkan no.Karyawan. oleh karena itu digunakanlah keyword super info untuk memanggil method info yang terdapat pada superclass (Kelas Person) - KonstruktorSuperKelas public class KonstruktorSuperKelas { public static void main (String [] args){ Employ programer1 = new Employ ("12345678", "Yanto", 32); programer1.info(); untuk menjalankan program ini, maka digunakan kela ini. Karena pada kelas ini terdapat method main. Kemudian data diinputkan menggunakan syntax programer1 = new Employ ("12345678", "Yanto", 32); Employ kemudian memanggil method info. Setelah itu hasilnya akan langsung ditampilkan oleh program. Latihan 3 Script Program  : Class Hewan public class Hewan { public static void testClassMethod() { System.out.println ("The Class Method in Hewan . . ."); } public void testInstanceMethod() { System.out.println ("The Instance Method in Hewan .. ."); } }  } Class Gajah public class Gajah extends Hewan { public static void testClassMethod() { System.out.println(" The Instance method in Gajah . . ."); } public void testInstanceMethod() { System.out.println ("The Instance method in Gajah . . ."); } public static void main (String[]args) { Kucing myKucing = new Kucing (); Hewan MyHewan= myKucing; Hewan.testClassMethod(); MyHewan.testInstanceMethod(); }  } Perbaikan Class Gajah public class Gajah extends Hewan { public static void testClassMethod() { System.out.println(" The Instance method in Gajah . . ."); } public void testInstanceMethod() { System.out.println ("The Instance method in Gajah . . ."); } public static void main (String[]args) { Gajah myGajah = new Gajah (); Hewan MyHewan= myGajah; Hewan.testClassMethod(); MyHewan.testInstanceMethod(); } } Output : Penjelasan : Program ini memiliki dua kelas. Yaitu kelas Hewan dan kelas Gajah. Kelas Hewan sebagai Superclass dan kelas Gajah sebagai Subclass. - Kelas Hewan public class Hewan { public static void testClassMethod() { System.out.println ("The Class Method in Hewan . . ."); } public void testInstanceMethod() { System.out.println ("The Instance Method in Hewan .. ."); Script di atas kita menggunakan method testClassMethod kemudian terdapat perintah tampilan ("The Class Method in Hewan . . ."); lalu mendeklarasikan method lagi yaitu method tesdInstanceMethod yang merupakan overriding dari superclass. Overriding merupakan method sublass sama dengan mehod super class, parameternya sama tetapi pernyataan atau implementasinya berbeda. Kemudian terdapat perintah untuk menampilkan ("The Instance Method in Hewan .. ."). program ini belum bisa dijalankan karena belum terdapat main method. Oleh karena itu diperlukan kelas Gajah untuk menjalankan perintahnya. - Kelas Gajah public class Gajah extends Hewan { digunakan keyword extends karena untuk memanggil fungsi dari class lain, sehingga kita tidak perlu lagi membuat script yang sama pada class yang akan kita buat dengan class yang kita buat sebelumnya. public static void testClassMethod() script di atas merupakan method dengan konstruktor modifiernya berupa public. System.out.println(" The Instance method in Gajah . . ."); Perintah untuk menampilkan kalimat (" The Instance method in Gajah . . ." public void testInstanceMethod() script di atas merupakan method dengan konstruktor modifiernya berupa public. System.out.println ("The Instance method in Gajah . . ."); Digunakan untuk menampilkan kalimat ("The Instance method in Gajah . . ." Kemudian script di bawah ini adalah main method kelas Gajah sebelum dilakukan perbaikan. public static void main (String[]args) { Kucing myKucing = new Kucing (); Hewan MyHewan= myKucing; Hewan.testClassMethod(); MyHewan.testInstanceMethod(); Kesalahannya yaitu pada panggilan untuk konstruktornya, dimana pada kelas lain disebutkan Gajah. Jadi untuk pembuatan objek gajah dan hewan harus sesuai dengan kata kuci yang digunakan di claas lain. Untuk perbaikannya adalah sebagai berikut ; public static void main (String[]args) { Gajah myGajah = new Gajah (); Hewan MyHewan= myGajah; Hewan.testClassMethod(); MyHewan.testInstanceMethod(); Script di atas adalah untuk memanggil fungsi yang telah dibuat pada kelas sebelumya, sehingga program dapat menampilkan hasilnya. Latihan 4 Script Program  : Class A package Latihan4; class A { private int a; public void setA (int nilai){ a=nilai; } public int getA(){ return a; } public void tampilkanNilai(){ System.out.println("Nilai a = "+getA()); } }  Class B package Latihan4; class B extends A{ private int b; public void setB(int nilai){ b=nilai; } public int getB(){ return b; } public void tampilkanNilai(){ super.tampilkanNilai(); System.out.println("Nilai b = "+getB()); } }  Class DemoOverride2 package Latihan4; class DemoOverride2 { public static void main (String [] args){ B obj = new B(); obj.setA(50); obj.setB(150); obj.tampilkanNilai(); obj.getB(); obj.tampilkanNilai(); } } Output :  Class A  Class B  Class DemoOverride2 Penjelasan : Progam diatas memiliki 3 kelas, yang pertama yaitu kelas A dimana kelas A menjadi superclass atau kelas induk, yang kedua yaitu kelas B dimana kelas B menjadi Subclass atau kelas anak dari kelas A keduannya menggunakan variabel dengan modifier private private int a; kedua kelas tersebutt tidak dapat dijalankan karena keduanya tidak memiliki method. Untuk bisa menjalan program diatas diperlukan kelas DemoOverrider2. Pada progaram diatas menggunakan 3 method method setA adalah pendeklarasian variabel A=nilai yang digunakan untuk return A dengan parameter nilai public menampilkan nilai void setA (int nilai){, public int getA(){ menampilkan nilai dan menggunakan method getA yang digunakan utnuk dan method tampilanNilai digunakan untuk public void tampilkanNilai(){ketiga method tersebut menggunakan modifier public agar dapat diakses oleh kelas lain. Pada kelas B juga menggunakan method setB, getB dan tampilkanNilai dengan modifier public. Method tampilkan nilai yang ada di kelas B adalah Override dari kelas A yaitu method yang digunakan pada Subclass sama dengan method yang digunakan Superclass dengan parameter yang sama tetapi yang dihasilkan berbeda. Oleh karena itu method ini menggunakan keyword super karena akan meiliki fungsi memanggil method tampilkanNilai yang terdapat pada kelas A. Dan pada ketiga yaitu kelas DemoOverride2 yang memiliki method main args){dimana public static void main (String [] kelas ini digunakan untuk menampilkan hasil dengan menginputkan nilai a dan nilai b dengan menggunakan obj.setA(50);dan obj.setB(150);. Latihan 5 Script Program : a.  Class Truck package Latihan5; class Truck { public static int cadence; public static int gear; public static int speed; public void Truck(int startCadence, int startSpeed, int startGear){ gear = startGear; cadence = startCadence; speed = startSpeed; } public void setCadence(int newValue){ cadence = newValue; } public void setGear(int newValue){ gear = newValue; } public void applyBrake(int decreement){ speed -= decreement; } public void speedUp(int increement){ speed += increement; } }  Class Mountain Truck package Latihan5; public class MountainTruck extends Truck{ public int seatHeight; public void MountainTruck(int startHeight, int startCadence, int startSpeed, int startGear){ super.Truck(startHeight, startCadence, startGear); seatHeight = startHeight; } public void setHeight(int newValue){ seatHeight = newValue; } public static void main(String[] abc){ System.out.println("Mulai Berjalan"); MountainTruck MB = new MountainTruck(); MB.MountainTruck(0, 0, 0, 0); System.out.println("gear = "+gear); System.out.println("speed = "+speed); MB.setGear(2); MB.speedUp(2); System.out.println("gear = "+gear); System.out.println("speed = "+speed); MB.speedUp(2); System.out.println("gear = "+gear); System.out.println("speed = "+speed); MB.applyBrake(1); System.out.println("direm"); System.out.println("speed= "+speed); } } b. Output  : Class Mountain Truck Penjelasan : Program diatas memiliki 2 kelas, yaitu kelas Truck dimana kelas ini menjadi Superclass atau kelas induk, yang kedua yaitu kelas MountainTruck dimana kelas ini menjadi Subclass atau kelas anak dari kelas Truck. Pada kelas Truck ini tidak bisa dijalankan kerena kelas ini tidak memiliki method main. Di kelas Truck terdapat 4 konstruktor dan 4 method yaitu ada method setCadence, method setGear, method applyBreak dan method speedUp. Untuk menambahkan kecepatan pada kelas Truck menggunakan method speedUp dengan menggunakan decrement untuk kecepatan awal. Untuk mengurangi kecepatan pada kelas Truck menggunakan method applyBreak dengan menggunakan increment yang menghitung kecepatan semakin berkurang. Dan pada kelas MountainTruck terdapat pewarisan atau inheritance dengan memiliki 1 kontruktor dan 1 method yaitu setHeight yang memiliki modifier public. Kelas ini dapat menampilkan hasil karena memiliki method main.tahapan progam diatas bisa berjalan yaitu ketikan kelas truck mulai berjalan keadaan awal gear = 0 dan speed = 0 dan ketika gear bertambah 2 kali lebih banyak dari awal maka speed juga ikut bertambah. Untuk bisa bertambah seperti itu terdapat operasi decrement System.out.println("gear = "+gear); System.out.println("speed = "+speed); MB.setGear(2);MB.speedUp(2); . Penambahan hutuf MB pada method yang digunakan berfungsi dapat dikompilasi karena pada awal pembuatan objek baru menggunakan MB yaitu pada sintaks MountainTruck MB = new MountainTruck(); c. Modifikasi class MountBike sedemikian sehingga mensimulasikan proses perjalanan sepeda dari posisi diam sampai berjalan normal, kemudian diikuti dengan berjalan tanjakan jalan, dilanjutkan lagi menuruni tanjakan dan diakhiri dengan berhenti. Code yang dihasilkan Script : public class MountainBike extends Truck{ public int seatHeight; public void MountainBike(int startHeight, int startCadence, int startSpeed, int startGear){ super.Truck(startHeight, startCadence, startGear); seatHeight = startHeight; } public void setHeight(int newValue){ seatHeight = newValue; } public static void main(String[] abc){ System.out.println("Diam"); MountainBike MB = new MountainBike(); MB.MountainBike (0,0,0,0); System.out.println("gear ="+MB.gear); System.out.println("Speed ="+MB.speed); MB.setGear(0); MB.speedUp(0); System.out.println("Jalan Normal"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); MB.setGear(1); MB.speedUp(1); System.out.println("Jalan di tanjakan"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); MB.setGear(2); MB.speedUp(3); System.out.println("Turun Tanjakan"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); MB.setGear(1); MB.speedUp(6); System.out.println("Berhenti"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); MB.setGear(0); MB.speedUp(0); } } d. Output dari point C: Penjelasan : Pada program modifikasi diatas memiliki hanya 1 kelas yaitu kelas MountainBike. Program tersebut bisa dijalankan karena memiliki method main main(String[] abc){ public static void sama sepertikelas sebulumnya kelas ini menggunakan pewarisan atau inheritance yang digunakan untuk konstruktor. Konstruktor pada kelas ini hanya 1 dan sebagai fungsi utama. Tahapan progam diatas bisa berjalan yaitu akan menampilkan kecepatan awal atau diam dengan speed = 0 MB.MountainBike (0,0,0,0); System.out.println("gear ="+MB.gear); System.out.println("Speed ="+MB.speed); setelah itu berjalan speed akan ditambahkan menjadi speed = 4 pada saat kelas truck berada ditanjakan maka kecepatan speed akan menjadi 1, System.out.println("Jalan Normal"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); pada saat menuruni tanjakan speed bertambah lagi menjadi 3 System.out.println("Turun Tanjakan"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); hingga truck dapat berhenti dengan sendirinya kecepatan speed= 0 System.out.println("Berhenti"); System.out.println("gear ="+MB.gear); System.out.println("speed ="+MB.speed); B. TUGAS PRAKTIKUM Tugas Praktikum Script Program : Class Induk class Induk { public void test (){ System.out.println("Method di dalam kelas induk"); } } Class Turunan class Turunan extends Induk { public void test(String s){ System.out.println("Method overload di dalam turunan"); System.out.println("s :"+s); } public void test (){ System.out.println("Method override di dalam kelas turunan"); } } Class TesIndukTurunan class TesIndukTurunan { public static void main (String[]args){ Turunan A = new Turunan(); A.test("Method Overload"); A.test(); } } Output :  Class Induk  Class Turunan  Class TesIndukTurunan Penjelasan : Pada class induk hanya menggunakan method test tanpa parameter, yang akan mengoutputkan Method di dalam kelas induk ketika method ini dipanggil. Class ini tidak bisa dijalankan karena kelas ini tidak mempunyai fungsi main. Pada class turunan menggunakan method test juga, namun dengan parameter String s. terdapat overload pada method ini. Class ini tidak bisa dijalankan karena kelas ini tidak mempunyai fungsi main. Pada class TestIndukTurunan menggunakan fungsi utama, yang didalamnya mendeklaraskan objek yaitu Turunan A. program ini untuk membedakan antara overloading dan overriding. Overloading merupakan method dengan nama yang sama dengan method lain pada suatu class tetapi dengan parameter yang berbeda. Pada subclass, overloadingnya adalah method test(String s). sedangkan overridingnya merupakan method subclass yang sama dengan method super class, parameternya sama tetapi pernyataannya berbeda. Overriding pada subclass tersebut adalah method test(). Perbedaan keduanya hanya terletak pada parameter yang digunakan. C. TUGAS RUMAH Tugas Rumah Script Program  : Class Fakultas class Fakultas { protected String namaFakultas; protected String namaMahasiswa; public Fakultas (String namaFakultas, String namaMahasiswa) { this.namaFakultas = namaFakultas; this.namaMahasiswa = namaMahasiswa; } public void info() { System.out.println ("Nama Fakultas :"+this.namaFakultas); System.out.println("Nama Mahasiswa :"+this.namaMahasiswa); }  } Class Jurusan public class Jurusan extends Fakultas{ private String namaJurusan; private String NIM; public Jurusan (String namaJurusan, String NIM, String namaFakultas, String namaMahasiswa) { super (namaFakultas, namaMahasiswa); this.namaJurusan = namaJurusan; this.NIM = NIM; } public void info() { System.out.println ("nama Jurusan :"+this.namaJurusan); System.out.println ("NIM :"+this.NIM); super.info(); } }  TestFakultasJurusan public class TestFakultasJurusan { public static void main (String [] args) { Jurusan mhs1 = new Jurusan("Teknik Elektro","160533611462","Teknik", "Eva Yulia Safitri"); mhs1.info(); } } Output  : Class Fakultas  Class Jurusan  TestFakultasJurusan Penjelasan : Pada class fakultas menggunakan variable string namaFakultas dan namaMahasiswa dimana variable tersebut dideklarasikan sebagai protected sehingga variable tersebut tidak dapat diakses oleh kelas lain kecuali menggunakan inheritance. Konstruktornya dideklarasikan sebagai public agar dapat diakses oleh kelas lain. Class ini tidak mempunyai main method sehingga apabila di jalankan, akan error. Pada class fakultas menggunakan method info untuk pemanggilan namaFakultas dan namaMahasiswa dengan menggunakan fungsi this. Pada class jurusan menggunakan variable string namaJurusan dan NIM, dimana variable tersebut dideklarasikan sebagai private sehingga hanya kelas jurusan yang dapat mengakses variable ini. Menggunakan method info juga pada class ini, namun di dalamnya terdapat pemanggilan namaJurusan dan NIM, berbeda dengan method info yang ada dalam class fakultas dan didalamnya menggunakan fungsi untuk inheritance yaitu super.info(); (memanggil method info pada class fakultas/orang tua/parent). Pada class ini tidak ada fungsi utamanya, sehingga apabila dijalankan program akan error. Pada class TestFakultasJurusan menggunakan fungsi utama, mendeklarasikan objek baru dengan nama mhs1, untuk pemanggilan method info pada class jurusan. DAFTAR PUSTAKA Kartika,Candra Kirana.2017.Inheritance.Malang:Universitas Negeri Malang Reza Maulana. 2015. “ Class dan Object pada Pemrograman https://blog.teknorial.com/class-dan-object-pada-pemrograman-java/. Java”. Diakses pada 16 Oktober 2017 Triyanto, Wiwit Agus. 2013. “Perbedaan Superclass dan Subclass di http://www.atwiwit.net/2013/09/perbedaan-superclass-dan-subclass-di.html. Diakses pada 16 Oktober 2017 Java”.