pewarisan, polimorfisme, dan interface
DESCRIPTION
Menjelaskan tentang PEWARISAN, POLIMORFISME, DAN INTERFACE pada java programmingTRANSCRIPT
LAPORAN AKHIR PRAKTIKUM PEMROGRAMAN OBJEK DASAR
MODUL 9PEWARISAN, POLIMORFISME, DAN INTERFACE
NAMA : ANDRI ARIYANTO
NIM : 3411 14 1 137
PROGRAM STUDI INFORMATIKAFAKULTAS MATEMATIKAN DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS JENDERAL ACHMAD YANITAHUN AJARAN 2015
BAB 1HASIL 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
ditentukanpublic char kodeWarna='U';
//method menampilkan nilai suatu itempublic 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 constructorpublic Person(){
System.out.println("Inside Person Constructor");name="";address="";
}//constructor 2 parameterpublic 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 <= KAPASITAS){
bukaPintu=false;
}else{System.out.println("Elevator kelebihan
beban!");System.out.println("Pintu akan tetap
terbuka sampai seseorang keluar");}
}
public void hitungKapasitas(){berat=(int)(Math.random()*1500);System.out.println("Berat :" +berat);
}
public void naik(){if(!bukaPintu){
if(lantaiSkrg < LANTAI_ATAS){lantaiSkrg++;System.out.println(lantaiSkrg);
}else{System.out.println("Sudah mencapai
lantai atas");}
}else{System.out.println("Pintu masih terbuka");
}}
public void turun(){if(!bukaPintu){
if(lantaiSkrg > 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<=LANTAI_ATAS)){while(lantaiSkrg != tujuan){
if(lantaiSkrg < tujuan){naik();
}else{turun();
}}
}else{System.out.println("Lantai salah");
}}
public int getLantai(){return lantaiSkrg;
}
public boolean getStatusPintu(){return bukaPintu;
}}
PrivateElevator2Test.java
public class PrivateElevator2Test{public static void main(String[] args){
PrivateElevator2 privElevator = new PrivateElevator2();
privElevator.buka();privElevator.tutup();privElevator.turun();privElevator.naik();privElevator.naik();privElevator.buka();privElevator.tutup();privElevator.turun();privElevator.buka();privElevator.turun();privElevator.tutup();privElevator.turun();privElevator.turun();
int lantai = privElevator.getLantai();
if(lantai != 5 && !privElevator.getStatusPintu()){
privElevator.setLantai(5);}privElevator.setLantai(10);privElevator.buka();
}}
b. Hasil Program
c. Analisa Program
Pada program IX-5 terdapat dua class yang dibuat, yaitu class
PrivateElevator2.java dan PrivateElevator2Test.java. pada program
PrivateElevator2.java terdapat beberapa atribut yang memiliki access modifier
bersifat private dan beberapa bersifat final, serta terdapat method-method
accessor dan mutator. Program PrivateElevator2.java dibuat untuk digunakan
oleh program PrivateElevator2Test.java.
6. Program IX-6 Abstract Class
a. Source Code
LivingThing.java
public abstract class LivingThing{public void breath(){
System.out.println("Living thing breathing ... ");
}public void eat(){
System.out.println("Living thing eating ... ");
}//abstract method walkpublic abstract void walk();
} Human.java
public class Human extends LivingThing{public void walk(){
System.out.println("Human walks ... ");}public static void main(String[] args){
Human hooman = new Human();hooman.walk();hooman.breath();hooman.eat();
}}
b. Hasil Program
c. Analisa Program
Pada Program IX-6 terdapat dua class yang dibuat, yaitu class LivingThing.java
dan class Human.java. Class LivingThing.java merupakan class abstract, yaitu
class yang memiliki method yang harus didefinisikan oleh class lain yang
menjadikannya sebagai superclass. Pada class Human.java, class
LivingThing,java dijadikan superclass sehingga class Human.java harus
mendefinisikan method abstract yang ada pada class LivingThing.java.
7. Program IX-7 Interface
a. Source Code
Line.java
public class Line implements Relation{private double x1, x2, y1, y2;
public Line(double x1, double x2, double y1, double y2){
this.x1 = x1;this.x2 = x2;this.y1 = y1;this.y2 = y2;
}public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
return length;}public boolean isGreater(Object a, Object b){
double aLen = ((Line)a).getLength();double bLen = ((Line)b).getLength();return(aLen > 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("Andri anak yang rajin
menabung");
}
public static void main(String[] args){
Mahasiswa budak = new Mahasiswa();
budak.setName("erik andri ariyanto");
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.
DAFTAR PUSTAKA
Yuniarti Rezki,.Modul Pratikum Pemrograman Objek Dasar. Informatika
Fakultas MIPA-UNJANI,Cimahi.