Erras Lindiarda Mahentar - Modul 9 - Prak PO1 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

LAPORAN AKHIR PRAKTIKUM PEMROGRAMAN OBJEK 1 MODUL 9 Pewarisan, polimorfisme dan interface



Disusun oleh: Erras Lindiarda Mahentar 3411191102 D



PROGRAM STUDI INFORMATIKA FAKULTAS SAINS DAN INFORMATIKA UNIVERSITAS JENDERAL ACHMAD YANI 2021



DAFTAR ISI



DAFTAR ISI .......................................................................................................... 2 BAB 1 ..................................................................................................................... 3 HASIL PRAKTIKUM .......................................................................................... 3 1.



Program IX-1 Person.java ............................................................................ 3



2.



Program IX-2 Student.java........................................................................... 4



3.



Program IX-3 Superclass and Subclass........................................................ 4



4.



Program IX-4 Polimorfisme......................................................................... 6



5.



Program IX-5 Encapsulation ........................................................................ 8



6.



Program IX-6 Abstract Class ..................................................................... 11



7.



Program IX-7 Interface .............................................................................. 12



BAB 2 ................................................................................................................... 15 TUGAS AKHIR .................................................................................................. 15 1.



Program Extends ........................................................................................ 15



2.



Program Class Abstract .............................................................................. 17



BAB 3 ................................................................................................................... 19 KESIMPULAN.................................................................................................... 19



BAB 1 HASIL PRAKTIKUM 1. Program IX-1 Person.java a. Source Code public class Person{ protected String name; protected String address; public Person(){ System.out.println("Inside Person Constructor"); name=""; address=""; } public Person(String name, String address){ this.name = name; this.address =address; } public String getName(){ return name; } public String getAddress(){ return address; } public void setName(String name){ this.name = name; } public void setAddress(String add){ this.address = add; } } b. Hasil Program



c. Analisa Program Program IX-1 tidak dapat dieksekusi secara langsung karena program ini tidak memiliki main method. Program ini berisi atribut yang memiliki access modifier bersifat protected, beberapa method, dan beberapa



construktor yang dapat digunakan program lain yang memiliki main method dan subclass atau childclass dari program ini. 2. Program IX-2 Student.java a. Source Code public class Student extends Person{ public Student(){ //super("SomeName", "SomeAddress"); //super() //super.name = "name" System.out.println("Inside Student Constructor"); } public static void main(String[] args){ Student anna = new Student(); } } b. Hasil Program



c. Analisa Program Program IX-2 merupakan subclass dari program IX-1. Program ini dapat menggunakan atribut dan method yang ada pada program IX-1. Pada program ini terdapat sebuah constructor yang berfungsi untuk menampilkan tulisan “Inside Student Constructor” ketika melakukan pembuatan object dari class itu sendiri, serta akan menampilkan tulisan “Inside Person Constructor” yang merupakan salah satu fungsi dari constructor yang dimiliki superclass. 3. Program IX-3 Superclass and Subclass a. Source Code •



Pakaian.java public class Pakaian{ private int ID = 0; private String keterangan = "-keterangan diperlukan-"; private double harga= 0.0;



private int jmlStok=0; private static int UNIQUE_ID = 0; public Pakaian(){ ID = UNIQUE_ID++; } public int getID(){ return ID; } public void setKeterangan(String d){ keterangan = d; } public String getKeterangan(){ return keterangan; } public void setHarga(double p){ harga = p; } public double getHarga(){ return harga; } public void setJmlStok(int q){ jmlStok = q; } public int getJmlStok(){ return jmlStok; } •



} Baju.java public class Baju extends Pakaian{ //kode warna R = merah; B = Biru; G= hijau; U = Belum ditentukan public char kodeWarna='U'; //method menampilkan nilai suatu item public void tampilInformasiBaju(){ System.out.println("ID Baju : " +getID()); System.out.println("Keterangan: "+getKeterangan()); System.out.println("Kode Warna: "+kodeWarna); System.out.println("Harga: "+getHarga()); System.out.println("Jumlah Stok: "+getJmlStok()); }



} b. Hasil Program



c. Analisa Program Program IX-3 memiliki dua class, yaitu class Pakaian.java yang digunakan sebagai superclass dan class Baju.java yang merupakan subclass dari class Pakaian.java. Program Pakaian.java dan Baju.java tidak memiliki main method sehingga tidak dapat dieksekusi secara langsung. Program Pakaian.java memiliki beberapa atribut yang memiliki access modifier bersifat private serta method accessor dan mutator untuk merubah atribut tersebut. Program Baju.java merupakan exstends dari program Pakaian.java sehingga program memiliki sifat-sifat yang ada pada program Pakaian.java. 4. Program IX-4 Polimorfisme a. Source Code •



Person.java public class Person{ protected String name; protected String address; //default constructor public Person(){ System.out.println("Inside Person Constructor"); name=""; address=""; } //constructor 2 parameter public Person(String name, String address){ this.name = name; this.address =address; } // public String getName(){ System.out.println("Person Name : " +name);



return name; } public String getAddress(){ return address; } public void setName(String name){ this.name = name; } public void setAddress(String add){ this.address = add; } •



} Student.java







public class Student extends Person{ public Student(){ //super("SomeName", "SomeAddress"); //super() //super.name = "name" System.out.println("Inside Student Constructor"); } public String getName(){ System.out.println("Student name: "+name); return name; } public static void main(String[] args){ Student anna = new Student(); } } Employee.java public class Employee extends Person{ public String getName(){ System.out.println("Employee name: "+name); return name; } public static void main(String[] args){ Person ref; Student studentObject =new Student(); Employee employeeObject = new Employee(); ref = studentObject; //person menunjuk kepada student obect String temp = ref.getName(); //getname dari student class dipanggil System.out.println(temp);



ref = employeeObject; //person menunjuk kepada employeeObject temp = ref.getName(); //getname dari student class dipanggil System.out.println(temp); } } b. Hasil Program



c. Analisa Program Program class Employee.java merupakan subclass kedua setelah class Student.java. Class Employee.java mewarisi semua atribut yang terdapat pada class Person.java. Program ini hanya menampilkan method getName dari class student.java dan melakukan pembuatan object Person.java, serta melakukan dua kali definisi object Person.java dengan mengisi object Person.java dengan object Student.java dan object Employee.java. 5. Program IX-5 Encapsulation a. Source Code •



PrivateElevator2.java public class PrivateElevator2{ private boolean bukaPintu = false; private int lantaiSkrg = 1; private int berat =0; private final int KAPASITAS = 1000; private final int LANTAI_ATAS = 5; private final int LANTAI_BAWAH = 1;



public void buka(){ bukaPintu = true; } public void tutup(){ hitungKapasitas(); if(berat LANTAI_ATAS){ lantaiSkrg--; System.out.println(lantaiSkrg); }else{ System.out.println("Sudah mencapai lantai bawah"); } }else{ System.out.println("Pintu masih terbuka"); }



} public void setLantai(int tujuan){ if((tujuan>=LANTAI_BAWAH)&&(tujuan bLen); } public boolean isLess(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return(aLen < bLen); } public boolean isEqual(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return(aLen == bLen); } •



} Relation.java



public interface Relation{ public boolean isGreater(Object a, Object b); public boolean isLess(Object a, Object b); public boolean isEqual(Object a, Object b); } b. Hasil Program



c. Analisa Program Pada Program XI-7 terdapat dua buah class yang dibuat, yaitu class Relation.java dan Line.java. class Relation.java meruakan class interface yang di implements oleh class Line.java, sehigga class Line.java harus mendefinisikan method-method yang ada pada class Relation.java. kedua class ini tidak memiliki main method sehingga tidak dapat dieksekusi secara langsung.



BAB 2 TUGAS AKHIR 1. Program Extends a. Source Code •



StudentRecord.java public class StudentRecord{ private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; public StudentRecord(){ studentCount++; } public StudentRecord(String temp){ this.name = temp; studentCount++; } public StudentRecord(String name, String address){ this.name = name; this.address = address; studentCount++; } public StudentRecord(double mGrade, double eGrade, double sGrade){ mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade; studentCount++; } public String getName(){ return name; } public void setName(String temp){ name = temp; } public void setAddres(String temp){ address = temp; }



public String getAddress(){ return address; } public double getAverage(){ double result = 0; result = (mathGrade + englishGrade + scienceGrade)/3; return result; } public static int getStudentCount(){ return studentCount; } •



} Mahasiswa.java public class Mahasiswa extends StudentRecord{



public Mahasiswa(){ System.out.println("Mahasiswa merupakan Subclass"); } public void setAddress() { System.out.println("Hobi Olahraga Futsal"); } public static void main(String[] args){ Mahasiswa budak = new Mahasiswa(); budak.setName("Erras Lindiarda Mahentar"); System.out.println("Nama :"+budak.getName()); budak.setAddress(); } } b. Hasil Program



c. Analisa Program Program Mahasiswa.java dapat menggunakan semua atribut setra method yang ada pada class StudentRecord.java, dikarenakan program Mahasiswa.java telah melakukan extends terhadap class StudentRecord.java sehingga program Mahasiswa.java telah mewarisi sifat StudentRecord.java. 2. Program Class Abstract d. Source Code •



Shape.java







public abstract class Shape{ public abstract int getArea(); public abstract String getName(); } Cyrcle.java







public class Cyrcle extends Shape{ public int getArea(){ int temp = 90; return temp; } public String getName(){ String nama = "Lingkaran"; return nama; } public static void main(String[] args){ Cyrcle lingkaran = new Cyrcle(); System.out.println("Nama : "+lingkaran.getName()); System.out.println("Luas : "+lingkaran.getArea()); } } Square.java public class Square extends Shape{



public int getArea(){ int temp = 60; return temp; } public String getName(){ String nama = "Persegi"; return nama; } public static void main(String[] args){ Square persegi = new Square(); System.out.println("Nama : "+persegi.getName()); System.out.println("Luas : "+persegi.getArea()); } } e. Hasil Program



f. Analisa Program Terdapat tiga class yang di buat, yaitu class Shape.java, class Cyrcle.java, dan class Square.java. Class Shape.java dibuat bertipe abstract dengan dua method abstract di dalamnya. Class Shape.java dijadikan superclass oleh class Cyrcle.java dan class Square.java sehingga class-class tersebut harus mendefinisikan method abstract yang ada pada class Shape.java.



BAB 3 KESIMPULAN Pewarisan (Inheritance) merupakan sifat dalam bahasa berorientasi objek yang memungkinkan sifat-sifat dari suatu kelas diturunkan ke kelas lain. Sistem OOP memungkinkan kita untuk mendefinisikan suatu kelas baru dengan mewarisi sifat, dari kelas lain yang sudah ada. Penurunan sifat ini bisa dilakukan dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah maka kelas tersebut semakin spesifik. Polimorfisme merupakan suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku berbeda. Istilah ini sendiri berasal dari bahasa Yunani, yang berarti “Mempunyai banyak bentuk”. Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama. Polimarfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan. Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan jika ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan.