Nama : Rendra Yulianto Dwi Saputra
Nim : 09530466
kelas : TI 2A
Polymorphism
Salah satu pilar Pemrograman Berorientasi Objek yang lain adalah polymorphism yaitu kemampuan objek bertipe sama beraksi berbeda terhadap “pesan” yang sama.
Polymorphism adalah suatu object dapat memiliki berbagai bentuk, sebagai object dari class sendiri atau object dari superclassnya
- Overloading : penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
- Overriding : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya.
a). Overloading
- class luas.java
Source bisa di download disini
class luasBeraksi.java
Source bisa di download disini
hasil dari script diatas adalah dibawah ini:
b). Overriding
- class mobilBeraksi.java
Source bisa di download disini
- class kijang.java
Source bisa di download disini
hasil dari script diatas adalah dibawah ini:
Enkapsulasi
Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni : • Information hiding.• Interface to access data.Information hidingSebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah ‘public’.
Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol ‘private’ ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding. Interface to access dataJika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.
Implementasi UMLBerikut ini kita akan coba untuk lebih memahami penggunaan konsep enkapsulasi dengan mengimplementasikan UML berikut :

Vehicle class berisi atribut yang mempunyai modifier public(+), sehingga TestVehicle1 sebagai test program mempunyai akses langsung terhadap atribut pada Vehicle.
Listing program – Vehicle.java
public class Vehicle{
public double load, maxLoad;
public Vehicle (double maxLoad){
maxLoad = maxLoad + load;
}
public double getLoad(){
return load;
}
public double getLoad(){
return load;
}
public double getMaxLoad(){
return maxLoad;
}
Listing program – TestVehicle.java
public class TestVehicle{
public static void main(String[] args){
System.out.println(“Creating a vehicle with a 10,000kg maximum load.”);
Vehicle vehicle = new Vehicle(10000.0);
System.out.println(“Add box #1 (500kg)”);
vehicle.load = vehicle.load + 500.0;
System.out.println(“Add box #2 (250kg)”);
vehicle.load = vehicle.load + 250.0;
System.out.println(“Add box #3 (5000kg)”);
vehicle.load = vehicle.load + 5000.0;
System.out.println(“Add box #4 (4000kg)”);
vehicle.load = vehicle.load + 4000.0;
System.out.println(“Add box #4 (300kg)”);
vehicle.load = vehicle.load + 300.0;
System.out.println(“Vehicle load is = ” +vehicle.getLoad() + “kg”);
}
}
Compile Vehicle.java dan TestVehicle.java lalu jalankan TestVehicle.java. Seharusnya akan keluar tampilan sebagai berikut :
Analisa program
Kita lihat bahwa pada output program tersebut kita menginisialisasi batas maximum load 10,000 kg,
Vehicle vehicle = new Vehicle(10000.0);
akan tetapi dengan memberikan akses kontrol / modifier public pada atribut class Vehicle
public double load, maxLoad;
kita dapat mengakses langsung atribut class yang seharusnya perlu diberi pengecekan agar tidak sampai melebihi maxload
vehicle.load = vehicle.load + 500.0;
maka dapat mengakibatkan masalah(trouble) yakni batas maximum load yang kita buat tidak berpengaruh apapun sehingga terdapat penambahan boxes yang melebihi kapasitas(10050.0kg) dikaernakan tidak ada pengecekan kapasitas maksismum.
UML Vehicle class with hiding
Vehicle class berisi atribut yang mempunyai modi_er public, sehingga TestVehicle1 sebagai test program mempunyai akses langsung terhadap atribut pada Vehicle.
Listing program – Vehicle.java
public class Vehicle1{
private double load, maxLoad;
public Vehicle1 (double max){
this.maxLoad = max;
}
public double getLoad(){
return this.load;
}
public double getMaxLoad(){
return this.maxLoad;
}
public boolean addBox(double weight){
double temp = 0.0D;
temp = this.load + weight;
if(temp <= maxLoad){
this.load = this.load + weight;
return true;
}
else{
return false;
}
}
}
Listing program – TestVehicle.java
public class TestVehicle1{
public static void main(String[] args){
System.out.println(“Creating a vehicle with a 10,000 kg maximum load.”);
Vehicle1 vehicle = new Vehicle1(10000);
System.out.println(“Add box #1 (500kg) : ” + vehicle.addBox(500));
System.out.println(“Add box #2 (250kg) : ” + vehicle.addBox(250));
System.out.println(“Add box #3 (5000kg) : ” + vehicle.addBox(5000));
System.out.println(“Add box #4 (4000kg) : ” + vehicle.addBox(4000));
System.out.println(“Add box #5 (300kg) : ” + vehicle.addBox(300));
System.out.println(“Vehicle load is ” +vehicle.getLoad() + “kg”);
}
}
Compile Vehicle1.java dan TestVehicle1.java lalu jalankan TestVehicle1.java. Maka akan keluar tampilan sebagai berikut :
Analisa programKita lihat bahwa pada output program tersebut pada penambahan box ke-5 terjadi kelebihan kapasitas maksimal sehingga method addBox mengembalikan nilai false, dalam arti bahwa terjadi penolakan terhadap penambahan box ke 5.
Inheritance
Inheritance, adalah salah satu konsep utama dalam Pemrograman Berorientasi Objek. Inheritance memperbolehkan penggunaan kembali kode-kode yang ada pada Base Class nya untuk diturunkan pada Derived Class. Contohnya seperti dibawah ini.
Dibawah ini adalah Base Class
class kumpulanVariabel
{
SqlConnection conn;
SqlDataAdapter da;
DataSet ds = new DataSet;
}
dibawah ini adalah Derived Class
class aksesData : kumpulanVariabel
{
static aksesData()
{
conn=new SqlConnection(“Data Source=namaServer;Database=northwind;UID=sa;PWD=sa”);
conn.Open();
}
public DataSet dataCustomer()
{
da=new SqlDataAdapter(“SELECT * FROM customer”,conn);
da.Fill(ds,”customer”);
return ds;
}
}










