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;

}

}