Jumat, 17 Juni 2011

PENGKAPSULAN

Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu
class. Dua hal yang mendasar dalam enkapsulasi yakni : Information hiding , Interface to
access data.
Enkapsulasi menunjuk pada prinsip dari menyembunyikan desain atau
mengimplementasikan informasi yang tidak sesuai pada object yang ada. Menyembunyikan
elemen dari penggunaan sebuah class dapat dilakukan dengan pembuatan anggota yang ingin
Anda sembunyikan secara private.
Hak akses public memungkinkan semua kelas mengaksesnya, hak akses protected
hanya diberikan kepada kelasnya sendiri dan turunannya, serta kelas-kelas dalam satu paket.
sedangkan private hanya boleh diakses oleh kelasnya sendiri.

Prepraktikum
Apa yang anda ketahui tentang Information hiding ?
Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private.
Jelaskan tentang Interface to access data dalam konsep Pengkapsulan?
Jika kita telah melakukan information hiding terhadap suatu attribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap attribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu attribut tersebut
Jelaskan mengenai keyword public, protected dan private ?
Atribut Public: izin akses public sebuah atribut biasanya digunakan oleh sebuah class jika sebuah atribut diperbolehkan diakses secara langsung oleh class lain. sebuah atribut yang dinyatakan sebagai public dapat diakses secara langsung oleh class lain di luar class yang membungkusnya.
Atribut Protected:izin akses protected sebuah atribut biasanya digunakan oleh sebuah class jika sebuah atribut diperbolehkan diakses secara langsung oleh class lain yang merupakan class turunannya (inheritance). sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses secara langsung oleh class lain di luar class yang membungkusnya kecuali class class turunannya.
Atribut Private: izin akses private pada sebuah atribut biasanya digunakan oleh sebuah class untuk melindungi atribut-atributnya agar tidak dapat diakses oleh class lain. sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya.

Kegiatan Praktikum
1. Kompile dan jalankan kelas manusia dan andi!




2. Ubah hak akses makan dari public menjadi protected dan ulangi praktikum nomor 1 ! Apayang terjadi? Jelaskan!


3. Tambahkan pada kelas andi untuk memanggil metodh bunuh diri, ulangi praktikum no 1.
Apa yang terjadi? Jelaskan!


Tugas Akhir



Tugas Tambahan
1. Mengapa jika hak akses public pada konstruktor manusia di ganti dengan PRIVATE, program akan ERROR???
Private, adalah level proteksi untuk andi yang berada di dalam manusia. Si
andi tidak boleh keluar dari manusia karena mempunya level proteksi paling
tinggi. Dalam implementasinya, field dengan level proteksi private
hanya dapat diakses di dalam class tersebut.
2. Dalam teori, dapatkah kita memberikan hak akses pada konstruktor???
Constructor berfungsi untuk menginisialisasi obyek dari class dan mempersiapkan ruang memory, sedangkan destructor menghapus dan membersihkan obyek ketika sudah tidak terpakai dan membebaskan memory yang tadinya terpakai. Constructor method merupakan method yang namanya sama dengan nama classnya dan bersifat public tapi tidak berjenis void ataupun non void. Constructor dapat menerima parameter namun tidak bisa mengembalikan nilai apapun.
3. Bagaimana solusi agar program dapat berjalan??

Senin, 13 Juni 2011

INHERITANCE (PEWARISAN)

Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya.
Prepraktikum
Pertanyaan:
1.Apa yang perbedaan antara Induk Kelas dengan Kelas Turunan?
2.Jelaskan keyword super dan extends dalam Pewarisan?
Jawaban:
1. Induk Kelas: kelas yang menjadi dasar acuan dari semua kelas turunannya. Dalam sebuah hirarki tertentu, induk kelas merupakan kelas yang mewarisi sifat-sifat tertentu kepada kelas turunannya.
Kelas Turunan: kelas yang mewarisi sifat-sifat tertentu dari kelas induk. Jadi tidak perlu menuliskan method lagi. Tinggal meg-extends dari induk class untuk mendapatkan method tertentu.
2.Super
Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya.
Contoh class Person dan Student.
public Student(){
super( “SomeName”, “SomeAddress” );
System.out.println(“Inside Student:Constructor”);
}
Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya.
Extends
Misalkan kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada.
Penulisannya:
[modifier1] class NamaSubKelas extends NamaKelasSuper {
classBody
}
Kegiatan Praktikum
Pada bagian kegiatan praktikum ini, kita akan belajar membuat class yang dikelompokkan dalam package kemudian menggunakan package ini dari class lain.













Tugas Akhir
Buatlah program java untuk menurunkan 2 buah kelas turunan dari kelas induk yang berupa lingkaran dimana program ini dapat menghitung luas dan keliling lingkaran !





Senin, 06 Juni 2011

POLYMORPHISM


Polymorphism merupakan konsep OOP yang memberikan fleksibilitas kepada programmer dalam menulis program.  Dengan mengaplikasikan konsep polymorphism, programmer dapat memperlakukan seluruh object yang berasal dari superclass yang sama seakan-akan mereka adalah object dari superclass.
Dari pengertian tersebut,  polymorphism dapat didefinisikan dengan penggunaan lebih dari satu  method dengan nama yang sama (pembedanya adalah berdasarkan jumlah dan jenis parameter yang didefinisikannya). Polymorphism bisa dibangun dengan menerapkan :
•  Overiding  : mendefinisikan method dengan nama sama pada class yang berbeda
•  Overloading : mendefinisikan method dengan nama sama dalam satu class.
Konsep overloading, sudah sering kita gunakan dalam penggunaan  constructor. Sedangkan konsep overiding, dapat kita manfaatkan dalam beberapa kasus  inheritance, di mana menginginkan penamaan method dengan nama sama namun berbeda dalam impelementasinya, atau dalam kata lain dalam penggunaan interface.
Dari pengertian lain bahwa polymorphism dapat berperan untuk penerapan  reusability lebih mudah ketika menerapkan proses penurunan  class. Atau dengan kata lain, dengan  polymorphism,  reference type  dapat merupakan  superclass dari  object type  yang digunakan.
Dalam kasus dunia nyata, jika kita bekerja sebaga tim, kita bisa mempercayakan proses pembuatan berbagai  class kepada teman satu tim kita dengan mudahnya, jika  class tersebut telah merupakan  subclass dari  superclass yang menjadi  class utama dalam pembuatan program tersebut, namun proses tersebut tidak perlu mengubah class-class yang telah kita buat sebelumnya.
Keuntungan apa yang bisa didapat dengan Polymorphism yaitu:
1.      Aplikasi Mudah Terjulur: 
Setelah aplikasi ditulis menggunakan konsep polimorfisme, dengan mudah dapat diperpanjang, menyediakan objek baru yang sesuai dengan antarmuka asli. Hanya menghubungkan kembali perlu menunjukkan perubahan baru bersama dengan aplikasi lama. Dalam bahasa pemrograman, selalu ada kebutuhan untuk menambahkan dan mengubah. Dengan memanfaatkan konsep polimorfisme, waktu dan tenaga kerja berkurang di samping perawatan membuat masa depan lebih mudah.
2.      Helps in reusability of code. Membantu dalam usabilitas kode.
3.      Provides easier maintenance of applications. Menyediakan lebih mudah pemeliharaan aplikasi.
4.      Helps in achieving robustness in applications. Membantu dalam mencapai ketahanan dalam aplikasi.
Bagaimana hubungan antar teknik overloading dengan Polymorphism yaitu keadaan pada saat terjadinya polimorfisme pada class yang sama atau pada suatu parent class dan subclassnya,yang mempunyai ciri-ciri adalah : Nama Method harus sama,Daftar parameter harus beda,Return Tipe boleh sama,juga boleh beda.
Contoh :
Membuat tiga object class dengan nama Student, subclass StudentGrad dan class StudentInfo
class Student {
   public void Write(int ID, int Grad, String Fname, String Lname) {
       m_ID = ID;
       m_Graduation = Grad;
       m_First = Fname;
       m_Last = Lname;
    }  
    public void Display(){
        System.out.println( "Student: " + m_ID + " " + m_First + " " + m_Last + " Graduated: " + m_Graduation);
    }  
    private int m_ID, m_Graduation;  
    private String m_First;  
    private String m_Last;
}
class StudentGrad extends Student {
   public void Write(int ID, int Grad, String Fname, String Lname, int yrGrad, String unSch, String major) {
       super.Write(ID, Grad, Fname, Lname);
       m_UndergradSchool = unSch;
       m_Major = major;
       m_Grad = Grad;
       YearGraduated = yrGrad;
    }
    public void Display(){
        super.Display();
        System.out.println(" Graduated: " + m_Grad + " " + m_UndergradSchool + " " + m_Major + " " + YearGraduated);
    }  
    private Integer YearGraduated,m_Grad;
    private String m_UndergradSchool;
    private String m_Major;
}

class StudentInfo {
     public static void main (String args[]) {
         StudentGrad myStudent = new StudentGrad();
         myStudent.Write(10, 1,"Hilyati","Safitri", 2000,"Harvard University","CS");
         myStudent.Display();  
        }
}
Hasil Running Program:



Contoh 2:Kucing, Ayam, dan Anjing merupakan makhluk hidup yang masuk kategori hewan, tiap hewan pasti mempunyai identitas baik itu berupa tipe hewan dan suaranya.
Gambar 2 : Class Hewan dan subclass nya




Source Codenya:
 
Hasil Running Program: