Senin, 29 Maret 2010

tugas kelompok PBO gw..

Diposting oleh febrina tomodachi di Senin, Maret 29, 2010
Oleh:
1.Ajeng Kartika H.
2. Suci Wulandari
3. Galuh Sekar Ambar Sari
4.Pebrina Tambunan
5. Agung Ananda Katunde

Kelas : 2 IA 13


UNIVERSITAS GUNADARMA
2010

Encapsulation (Enkapsulasi / Pengkapsulan)

Enkapsulasi dapat diartikan sebagai pengkapsulan yang artinya adalah pembungkus. Pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarang atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting di gunakan untuk menjaga keutuhan program agar dapat dengan mudah digunakan pada waktu yang akan datang, sekaligus menjaga program dari “keanehan-keanehan” yang dapat timbul jika diakses secara sembarang oleh program lain.

Dua hal yang mendasar dalam enkapsulasi yakni :
• Information hiding.
• Interface to access data.

Information hiding
Sebelumnya 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 data
Jika 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.
Contoh enkapsulasi dalam sebuah perumpamaan misalnya sistem lampu sorot, dan sistem perputaran roda pada sebuah kereta api. Kerja sistem lampu sorot tidak dapat mempengaruhi kerja dari sistem perputaran roda pada kereta api, begitu pula sebaliknya. Karena di dalam sistem lampu sorot tersebut, kita tidak perlu mengetahui bagaimana kinerja dari sistem perputaran roda kereta api, apakah roda akan maju berputar ke depan atau pun ke belakang. Begitupun di dalam sistem perputaran roda kereta api, kta tidak perlu tahu bagaimana sistem lampu sorot bekerja, apakah menyala atau tidak. Lalu jam tangan Penting sekali untuk mengetahui waktu. Cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
Begitulah konsep dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang akan mempengaruhinya. Hal ini menjaga keutuhan program yang telah dibuat sesuai dengan deskripsi atau konsep dari program itu sendiri yang telah ditentukan dari awal.

Contoh dalam program :



Output program






Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi privatetidak dapat dipanggil didalam class Belajar.
Ada beberapa keuntungan prinsip enkapsulasi, antara lain:
• Bersifat Indenpenden
Suatu modul yang terbungkus dengan baik akan bersifat indenpenden/ berdiri sendiri dari modul lainnya, sehingga dapat digunakan pada bagian manapun dari program. Modul yang terenkapsulasi tidak akan terikat pada bagian tertantu program.
• Bersifat Transparan
Bersifat transparan berarti ketika anda memodifikasi modul program, maka semua bagian programyang menggunakan modul tersbut akan mengalami perubahan juga
• Menghindari efek di luar perancangan
Modul yang terenkapsulasi hanya berinteraksi dengan variable – variable input dan output yang didefinisikan. Sehingga mengurangi pemrosesan di luar perencanaan
• Melindungi listing program
Saat program didistribusikan pada khalayak, untuk melindungi listing program. Anda dapat menerapkan prinsip enkapsulasi. Di sini pengguna hanya dapat menggunakan program melalui variable input/ output yang didefinisikan tanpa disertai bagimana proses yang terjadi di dalam modul tersebut.
Pada enkapsulasi terdapat prose's pengaturan pengaksesan data. Hak akses itu sendiri adalah kata kunci dari public,protected dan private. Format hak akses adalah
Hak_akses data (saat deklarasi)
Berikut adalah saran-saran dari Ivon Horton untuk pemberian hak akses pada kompone-komponen kelas:
 Untuk kelas dalam suatu paket yang tidak perlu public (sehingga tidak dapat diakses dari luar paket), kita dapat merasa aman untuk mengijinkan kelas yang masih dalam satu paket untuk mengakses data dari kelas ini.
 Jika anda memiliki data yang bersifat final maka data ini kemungkinan sangat berguna jka diakses dari luar kelas.
 Anda mungkin memiliki method yang hanya digunakan secara interval oleh method-method lain dalam kelas.
Inheritance (Pewarisan / Turunan )
Inheritance atau pewarisan merupakan konsep OOP yang mudah di pahami. Pewarisan atau turunan lebih dekat dengan kehidupan sehari-hari dari manusia atau mahluk hidup lainnya. Jika kita coba untuk mengambil contoh nyata adalah diri kita sendiri yang merupakan “turunan” dari orang tua kita. Ataupun seekor kambing yang merupakan turunan dari induknya.Inheritance atau pewarisan dapat dibilang seperti sistem hirarki keturunan manusia, untuk jenjang yang paling atas disebut dengan induk atau orang tua sedangkan jenjang yang berada dibawahnya disebut dengan anak dan tentunya seorang anak akan mewarisi sifat-sifat dari orang tua atau induknya.

Didalam pemrograman java, Inheritance merupakan turunan dan pengembangan dari sebuah class menjadi class lainnya dan mempunyai suatu hubungan antar class dan mewarisi (inherits) semua attribute dan method dari class pendahulunya. Untuk class yang menjadi pendahulu / induknya disebut sebagai super class / parent class / based class. Sedangkan classbaru yang menjadi turunannya disebut dengan subclass / child class / derived class.

Contoh dalam program :


Output program


Kalimat extends yang terdapat dalam class Anak, menjelaskan bahwa class Anak merupakan subclass dari classOrangTua. Hal ini menjadikan bahwa semua sifat dan variabel yang berada pada class OrangTua dapat diakses oleh classAnak.

Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
Contoh dari hierarki class :


• Kelas yang mewariskan : Super Class atau Kelas Induk
• Kelas yang diwariskan : Sub Class atau Kelas Anak

Superclass
class yang letaknya di atas class tertentu di dalam hierarki.
Subclass
class yang letaknya di bawah class tertentu di dalam hierarki.

 Keuntungan penggunaan Inheritance:
◦ Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass
◦ dapat mengkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass
◦ Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya
◦ Bersifat reusable : Tidak harus menyalin semua data dan method dari suatu kelas jika akan menggunakannya lagi
 Beberapa aturan tentang pewarisan(inheritance) yang perlu diperhatikan :
1. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class B.
3. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di dalam java, kontrol pengaksesan dapat digambarkan dalam tabel berikut ini:


Dibawah ini contoh gambaran Inheritance beserta programnya, sebelum itu lihat bagan berikut ini:


Di sini dapat kita lihat dengan jelas penurunan sifat dari kelas parent(super class), kepada kelas childnya (sub class.)

coding programnya:
◦ import java.io.*;
public class Mamalia {
void KelasMamalia () {
System.out.println("Ciri umum mamalia adalah bernapas dengan paru-paru, " +
"berkembang biak dengan cara beranak");
}}

class Paus extends Mamalia {
String x = "Ikan Paus";
void TampilkanPaus () {
System.out.println("dan Mamalia yang Anda pilih adalah "+ x );
System.out.println("Mamalia ini berada di laut");
System.out.println("Paus termasuk jenis mamalia terbesar");
}}

class Cheetah extends Mamalia {
String x = "Cheetah";
void TampilkanCheetah () {
System.out.println("dan Mamalia yang Anda pilih adalah "+ x );
System.out.println("Mamalia ini berada di darat");
System.out.println("Cheetah termasuk mamalia pelari tercepat di darat");
}}

class Sapi extends Mamalia {
String x = "Sapi";
void TampilkanSapi () {
System.out.println("dan Mamalia yang Anda pilih adalah "+ x );
System.out.println("Mamalia ini berada di darat");
System.out.println("Sapi termasuk jenis mamalia pemamahbiak");
}}

class Turunan {
public static void main(String[] args) throws IOException{
String sInput = null ;
System.out.println("____JENIS MAMALIA____");
System.out.println("[1]. IKAN PAUS");
System.out.println("[2]. CHEETAH");
System.out.println("[3]. SAPI");
System.out.print("Masukkan pilihan [1..3] :");
Mamalia generalx = new Mamalia();
Paus turunan1 = new Paus();
Cheetah turunan2 = new Cheetah();
Sapi turunan3 = new Sapi ();
Sapi subxc = new Sapi();
InputStreamReader inputan = new InputStreamReader(System.in);
BufferedReader jm = new BufferedReader(inputan);
sInput = jm.readLine();
int i = Integer.parseInt(sInput);
switch (i) {
case 1 :
generalx.KelasMamalia ();
turunan1.TampilkanPaus ();break;
case 2 :
generalx.KelasMamalia ();
turunan2.TampilkanCheetah ();break;
case 3 :
generalx.KelasMamalia ();
turunan3.TampilkanSapi ();break;
default:
System.out.println("Pilihan yang Anda masukkan salah!!");break;
}
}
}
coding program diatas


Output


Polymorphism (Polimorfisme / Berubah Bentuk)

Kemampuan sebuah variabel untuk merubah behavior sesuai dengan apa yang dipunyai object. polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan. Dan akan secara otomatis dapat memanggil method yang spesifik untuk tipe-tipe itu.
.

Contoh Program :


Output Program


Contoh program

Output


Hasil yang akan ditampilkan ketika class LihatNilai di atas dijalankan adalah x = 1 dan y = Dua, hal ini membuktikan bahwa sifat polimorfisme yang ada di java. Class LihatNilai memanggil method Nilai tanpa parameter, sehingga nilai yang dikembalikan adalah nilai yang ada dimana nilai tersebut berada di method yang tidak memiliki parameter.
 Beberapa syarat yang harus dipenuhi pada polymorphism
a. Method dari kelas turunan yang akan dieksekusi,dipanggil oleh objek dari kelas induk
b. Method ini harus merupakan member dari kelas induk
c. Nama method di kelas induk harus sama dengan yang ada di kelas turunan
d. Tipe yang dikembalikan juga harus sama
e. Atribut akses dari method di kelas turunan tidak boleh lebih terbatas dari yang ada di kelas induknya.
 Langkah-langkah membuat polymorphism
• Deklarasikan method yang akan di polymorphism-kan dalam body kelas induk
• Definisikan method dalam kelas induk sebagai method yang tidak melakukan apapun (hanya terdiri dari ‘{‘ dan ‘}’).
• Dalam tiap kelas turunan dari kelas induk,definisikan ulang method tadi dengan memastikan atribut aksesnya tidak lebih terbatas yang ada di kelas induk.

Ada 2 bentuk dari polimorfisme, yaitu overloading dan overriding.
Overloading
Overloading adalah pemakaian beberapa methods ataupun properties dengan nama yang sama, tetapi memiliki daftar parameter/argument yang berbeda. Perbedaan yang dimaksud adalah beda jumlah parameter, beda tipe data, atau beda keduanya (jumlah parameter dan tipe data). Methods ataupun properties yang hanya beda return value (nilai balik) tidak bisa dikatakan sebagai overloading.
Keyword yang dipakai adalah Overloads. Jika dalam satu class, keyword ini bersifat optional artinya kita tidak harus menambahkan keyword Overloads ketika mendefinisikan beberapa methods ataupun properties yang menerapkan konsep overloading. Apabila kita tetap ingin memakainya, maka keyword Overloads harus digunakan di semua methods ataupun properties tadi. Apabila beda class, keyword Overloads ini harus digunakan.
Ciri Overloading
* Nama method harus sama
* Daftar parameter harus berbeda
* Return type boleh sama, boleh berbeda
Contoh program

public class matematika {
int r=0;
double x=0;
//method
void tambah(int a,int b){
r=a+b;
System.out.println("a + b =" + r);
}
void kurang(int a,int b){
r=a-b;
System.out.println("a - b =" + r);
}
void Kali(int a,int b){
r=a*b;
System.out.println("a * b =" + r);
}
void bagi(int a,int b){
r=a/b;
System.out.println("a / b =" + r);
}
void tambah(double a,double b,double c){
x=a+b+c;
System.out.println("A + B + C =" + x);
}
void kurang(double a,double b,double c){
x=a+b+c;
System.out.println("A + B + C =" + x);
}
void Kali(double a,double b,double c){
x=a+b+c;
System.out.println("A + B + C =" + x);
}
void bagi(double a,double b,double c){
x=a+b+c;
System.out.println("A + B + C =" + x);
}
void Pecahan(double a,double b,double c){
x=a+b+c;
System.out.println("A + B + C =" + x);
}
}

public class MatematikaBeraksi{
public static void main(String[]args){
matematika matematikaku=new matematika();
//manggil atribut dan ngasih nilai
matematikaku.tambah(20,10);
matematikaku.kurang(10,5);
matematikaku.bagi(20,2);
matematikaku.Kali(20,2);
matematikaku.Pecahan(12.4,12.3,9.3);
matematikaku.tambah(5.4, 10.6, 11.5);

}
}

Overriding
Overriding adalah kemampuan class turunan untuk memodifikasi methods atau properties dari class induk. Dengan overriding kita bisa membuat implementasi baru pada methods atau properties di class turunan yang berbeda dengan methods atau properties yang ada pada class induk.
Perbedaan utama antara Overloading dengan Overriding adalah pada pemakaian parameter. Pada overloading kita bisa mengubah parameter, sedangkan pada overriding kita tidak boleh mengubah parameter.

Ciri dari overriding
* Nama method harus sama
* Daftar parameter harus sama
* Return type harus sama
Ada beberapa keyword yang bisa dipakai di overriding, antara lain:
1. Keyword Overridable
Keyword ini digunakan pada methods atau properties di class induk yang menandakan bahwa methods atau properties tadi bisa di-override pada class turunan.
2. Keyword Overrides
Keyword ini digunakan pada class turunan yang menandakan bahwa methods atau properties tadi meng-override methods atau properties yang ada di class induk.
3. Keyword NotOverridable
Keyword ini digunakan pada methods atau properties di suatu class yang menandakan bahwa methods atau properties tadi tidak bisa di-override pada class turunan.
4. Keyword MustOverride
Keyword ini digunakan untuk mendeklarasikan abstract methods atau abstract properties. Hanya ada deklarasi header di sini, tanpa ada pendefinisian implementasi. Class yang mempunyai abstract methods atau abstract properties harus didefinisikan juga sebagai abstract class dengan keyword MustInherit.

Contoh program

class Kendaraan {
----------------
public String getJenis(){
System.out.println(“Harga BBM Turun”);
}
}

class Motor extends Kendaraan{
…………………………………..
Public String getJenis(){
System.out.println(“Harga BBM menjadi 3000”);
}
}



Sumber :
http://ghofart.wordpress.com/2008/12/23/konsep-object-oriented-programming-dalam-java/
http://ronypapers.blogspot.com/2009_09_01_archive.html
http://lemahputro.co.cc/wp-content/
http://topi-hitam.blogspot.com
http://nur-arianto.blogspot.com

0 komentar:

Posting Komentar