Dengan menggunakan encapsulation kita dapat membatasi akses langsung suatu class atau program kecuali melalui suatu method yang sudah diberikan.

dokumen-dokumen yang mirip
Inheritance dan Kata Kunci static

Pemrograman Berorientasi Obyek. Ramos Somya

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

Inheritance (Pewarisan) Pengertian dasar inheritance

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Bahasa Pemrograman :: Polimorfism and Abstraction

Pemrograman Berorientasi Objek Danu Wira Pangestu

Modul Bahasa Pemrograman 1

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

Pemrograman Berbasis Objek Inheritance

Bab 8. Dasar-Dasar OOP

LAPORAN RESMI INHERITANCE

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Inheritance. Topik 5/17/2013

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Java Application. Aplikasi: Menampilkan Tulisan

Modul II Object Oriented Programming

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

KONSEP OOP: PEWARISAN / INHERITANCE

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

JOBSHEET 8 INHERITANCE (PEWARISAN)

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

UNIVERSITAS GUNADARMA

IKG2I4 / Software Project I

[Lanjutan] Nurochman

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK MODUL 3 ABSTRAKSI

Membuat dan Menggunakan Class

subclass class manapun private default protected public package yang sama

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Dasar-Dasar OOP di Java

Pemrograman Berorientasi. Class dan Obyek 2

ENKAPSULASI Data Hiding

Dasar-Dasar OOP di Java

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Java Application. Menampilkan Tulisan

Pemrograman Lanjut Review Class dan Object PTIIK

public class B extends A {... }

(INHERITANCE) Nurochman

CLASS PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM JOGJAKARTA

ENKAPSULASI. 1. Kompetensi Setelah kegiatan perkuliahan selesai, mahasiswa diharapkan dapat:

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

Bahasa Pemrograman 2.

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Bahasa Pemrograman :: Inheritance

Pemrograman Berorientasi. Inheritance

KONSEP OOP: PEWARISAN / INHERITANCE

Pemrograman Berorientasi Objek INHERITANCE

INTERAKSI ANTAR OBJECT

Konsep Dasar Pemrograman Berorientasi Objek

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

BAB 3 CLASS DAN OBJECT. Tujuan:

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

MODUL 3 Inheritance. Tujuan: Mahasiswa dapat mengenal dan memahami konsep inheritance dan cara menerapkan inheritance dengan constructor

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

BAB 6 INHERITANCE Tujuan:

MODUL 1 PENGENALAN OOP

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Pertemuan 4 Halaman 1/1. Class Inheritance

Other OOP Basic. Viska Mutiawani, M.Sc

Object Oriented Programming (OOP) --Inheritance- Saniati STMIK Teknokrat, Bandar Lampung

Konsep Pemrograman Berbasis Obyek

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Praktikum 6 Class Design (Encapsulation)

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Other OOP Basic. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

8 - Overriding dan Overloading

UJIAN TENGAH SEMESTER GENAP TA 2011/2012

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

Object Oriented Programming 1

Pemrograman Berorientasi Objek

Bahasa Pemrograman 2.

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

CLASS, METHOD DAN MODIFIER

Praktikum Minggu VI 1 dan 2 Dasar-dasar Object Oriented Programming PHP

Praktikum 3 Konsep Class, Attribute dan Method

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Pertemuan 11 Object Oriented Program

Class & Object 2. Imam Fahrur Rozi

BAB 12 ENKAPSULASI, INHERITANCE DAN POLIMORPISME

PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi. Abstract & Interface

MODUL 4 ENCAPSULATION, INHERITANCE DAN POLYMORPHISM

Praktikum KPLBO Class dan Object I

INHERITANCE. Gambar 1. Kelas Hierarki Java

Pemrograman Lanjut. Class : Deeper Look 2

Class & Sequence Diagram

BAB 1 PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK

Bahasa Pemrograman 2.

Transkripsi:

Encapsulation Encapsulation yang terkadang disebut juga dengan information hiding pada dasarnya adalah kombinasi antara data dan method pada sebuah class yang ditujukan untuk menyembunyikan detail dari user (pengakses class) terhadap suatu object. Jika kita ambil contoh, maaf, yang agak sedikit vulgar tentang bagaimana orang lain mengakses data milik kita. Anggaplah orang ingin tahu apakah kita mempunyai penyakit panu yang merupakan suatu data pada diri kita. Sudah barang tentu, secara umum, kita tidak akan mengijinkan orang lain melihat langsung kulit kita karena itu adalah bagian pribadi. Akan tetapi orang lain dapat mengetahuinya menggunakan metode penyampaian yang kita berikan: Saya tidak panuan. Jadi ada bagian publik dan juga ada bagian pribadi. Di dalam OOP, encapsulation dapat dilakukan dengan terlebih dahulu memahami access modifier yang mendefiniskan bagaimana suatu data atau method dapat diakses. Ada empat macam access modifier pada OOP, yaitu: - Private : hanya diakses class itu sendiri - Public : dapat diakses dari manapun - Protected : hanya dapat diakses dari package (satu folder) dan subclass - Default : tanpa modifier, hanya bisa diakses dari package dan class itu sendiri. Dengan menggunakan encapsulation kita dapat membatasi akses langsung suatu class atau program kecuali melalui suatu method yang sudah diberikan. Perhatikan class dan class Test berikut ini. Perhatikan pula cara deklarasi atribut dan methodmethod yang terdapat dalam class. Public class { //deklarasi private attribute private String nama; private String nim; private String alamat; public () { //Constructor dengan dua input parameter public (String nama, String nim) { this.nama = nama; this.nim = nim; //Constructor dengan tiga input parameter public (String nama, String nim, String alamat) { this.nama = nama; this.nim = nim; this.alamat = alamat; //mengakses atribut alamat public String getalamat() { return alamat; //mengakses atribut nama public String getnama() { return nama; //mengakses attribut nim public String getnim() {

return nim; //mengisi atribut alamat public void setalamat(string alamat) { this.alamat = alamat; Class Test class Test{ public static void main(string[] args){ objmhs; String localnama, localnim; objmhs=new ("Andriani","123456"); objmhs.setalamat("watugong 212 Malang"); localnama=objmhs.getnama(); localnim=objmhs.getnim(); Bukankah lebih sederhana jika pada class kita deklarasikan data nama, nim, dan alamat dengan acces modifier public daripada harus membuat method-method khusus untuk mengaksesnya. Demikian pula cara penggunaannya class Test, mengambil dan mengubah isi data akan lebih sederhana. class { //deklarasi private attribute public String nama; public String nim; public String alamat; class Test{ public static void main(string[] args){ objmhs; String localnama, localnim; objmhs=new ("Andriani","123456"); objmhs.alamat="watugong 212 Malang"; localnama=objmhs.nama; localnim=objmhs.nim; Saat membuat object objmhs yang bisa dianggap sebagai proses membuat seorang mahasiswa, maka data nama dan nim tidak boleh diubah selama mahasiswa tersebut ada sehingga kita harus membuat data nama dan nim sebagai data read only. Jika data-data ini dibuat tidak readonly yang dapat memberikan peluang akses penuh, maka kemungkinan akan terdapat masalah tersendiri. Dengan demikian kita perlu melindungi data nama dan nim dari perubahan-perubahan dari luar class, sehingga perlu diberikan modifier private. Kita akan buktikan pada kasuskasus berikutnya.

Method getnama, getnim, dan getalamat disebut sebagi accesor method karena method tersebut memberikan kembalian nilai data yang sederhana. Sedangkan setalamat disebut sebagai mutator method karena digunakan untuk memberikan suatu nilai yang sederhana. Langkah-langkah di atas selanjutnya dapat kita gunakan untuk menerapkan sifat encapsulation atau information hiding. Jadi pada dasarnya encapsulation dapat kita lakukan dengan : - Mendeklarasikan data atau attribut dengan modifier private - Memberikan accessor method (getter) untuk mengakses data - Memberikan mutator method (setter) untuk memberikan nilai ke suatu data. Panduan Mendesain Class 1. Selalu gunakan modifier private untuk data atau attributh Selain menerapkan sifat encapsulation, langkah ini akan memberikan keuntungan antara lain: o Desain yang lebih modular o Perubahan representasi class tidak terlalu berpengaruh pada class tersebut o Lebih mudah mendeteksi kesalahan 2. Selalu buat nilai inisial (nilai awal) pada data Inisialisasi data dapat dilakukan dengan menggunakan constructor atau dengan memberikan nilai default. 3. Hindari penggunaan banyak tipe data pada sebuah class Kumpulkan multiple tipe data menjadi sebuah kelas. Misalkan jika pada class terdapat private String jalan; private string kota; private string propinsi; private string kodepos; dapat diganti dengan sebuah class Alamat yang didalamnya terdapat data-data di atas. 4. Tidak semua data memerlukan setter dan getter Untuk data yang hanya perlu di set satu kali, cukup manfaatkan constructor. 5. Biasakan menggunakan standar penulisan yang sama pada setiap class Manfaatkan penulisan indent untuk menjaga kerapian code sehingga mempermudah trace kesalahan. 6. Buatlah class sesederhana mungkin, hindari membuat class yang kompleks Ubah class berikut class { private String nama; private String nim; private String alamat; private String[] namamk; private String[] nilaimk; public (String nama, String nim) {... public String getalamat() {... public String getnama() {... public String getnim() {... public void setnama(string nama) {... public String getnilaimk(int i ){... public String namamk(int i) {... Menjadi dua buah kelas berikut ini (contoh ini mungkin masih belum sederhana, harus disesuaikan dengan model permasalahan yang ada): class { private String nama; private String nim; private String alamat; private MataKuliah[] mk;

public (String nama, String nim) {... public String getalamat() {... public String getnama() {... public String getnim() {... public void setnama(string nama) {... public MataKuliah getmk(int i ){... class MataKuliah{ private nama; private int sks; private String nilai; private double nilaiangka;... constructor;... setter;... getter; 7. Gunakan nama class dan method sesuai fungsinya. Ini akan mempermudah kita (dan tim) dalam menggunakan class dan trace error. Ada saran untuk penulisan class dan method: - Gunakan kata benda (Noun) untuk sebuah nama class :, MataKuliah, JadwalKuliah - Gunakan kata kerja (Verb) untuk method : getnama, hitungipk, setnilai.

Inherintance Pada materi ini kita akan mengenal: constructor, override, overload, keyword extends, this, super. Pada materi sebelumnya telah dijelaskan tentang konsep inheritance. Istilah-istilah yang terkait dengan inheritance: - Superclass atau parentclass : Class yang mewariskan data dan methodnya kepada class lain. - Subclass atau childclass : Class yang mewarisi data dan method dari Superclass Sifat hierarki suatu inheritance pada class diagram adalah semakin keatas semakin generic. Pada bahasa pemrograman Java, inheritance ditandai dengan keyword extends pada saat deklarasi child class. Keyword super dan this Keyword super digunakan untuk merefer ke class parent, sedangkan this digunakan untuk ke kelas itu sendiri. Contoh: super.getnama() mengakses method getnama() yang dimiliki oleh parent class super.gajipokok mengakses data publik gajipokok yang dimiliki oleh parent class this.getnama() mengakses method getnama() yang dimiliki kelas ini sendiri. this.gajipokok mengakses data member (public ataupun privat) yang dimiliki kelas. Jika terdapat suatu method sbb: void gantinilai(string nilai){ this.nilai=nilai; Perhatikan pada this.nilai=nilai; Variable nilai di kanan tanda = adalah variabel lokal yang dimiliki oleh method gantinilai() sedangkan variable nilai pada this.nilai mengacu pada data member yang dimiliki oleh suatu class. Pada saat melakukan inheritance, semua method dan data member yang tidak privat akan diwariskan kepada child class. Akan tetapi hal tersebut tidak berlaku pada method constructor. Method constructor tidak dapat diwariskan, sehingga child class harus membuat constructor sendiri. Lalu bagaimana menjaga agar contstructor dapat identik dengan constructor pada parent class? Caranya adalah dengan memberikan akses ke constructor parent class pada constructor child class dengan menggunakan method super() super() mengakses constructor parent class Overload dan override Overload adalah membuat lebih dari satu method dengan nama sama pada suatu class (Lihat contoh pada materi sebelumnya) Override adalah proses implementasi yang memodifikasi method yang lebih spesifik pada child class, method hasil modifikasi tetap menggunakan nama dan parameter input yang sama seperti yang digunakan oleh parent class. Pada kasus inheritance child class sering memerlukan method yang lebih spesifik dibanding method dengan nama sama pada parent class.

Contoh:

Perhatikan suatu contoh inheritance dan penggunaan super berikut: Pada suatu perkuliahan, Assisten laboratorium adalah seorang. Maka semua sifat mahasiswa akan diwarisi oleh asisten. Akan tetapi Assisten akan mempunyai sifat yang lebih khusus yaitu asisten memiliki laboratorium (sebagai tempat memberi asistensi). -nama : string -nim : string -alamat : string -MK[] : MataKuliah +getter...() +setter...() Assisten -laboratorium : string Implementasi dengan java Class sebagai parent class sudah dibuat pada contoh sebelumnya //Class assisten mewarisi sifat class Assisten extends { private String laboratorium; //Attribut khusus yang dimiliki Assisten //Cosntructor public Assisten(){ super(); // super(), memanggil contrucor milik parent class (). String nama= Tidak ada nama ; String nim= Tida ada nim ; super(nama,nim); //Contructor dua input public Assisten(String nama, String nim) { super(nama, nim); //constructor 3 input, dengan input ketiga dikhususkan untuk data milik Child public Assisten(String nama, String nim, String laboratorium) { super(nama, nim); this.laboratorium = laboratorium; Contoh lain? Jumlah waktu maksimum perminggu yang diperlukan seorang mahasiswa dan asisten berbeda. biasa hanya perlu kira-kira 40 jam hanya terkait dengan tugas kuliahnya. Asisten adalah seoarang mahasiswa, oleh karena itu asisten juga memiliki 40 jam per minggu terkait kuliahnya. Akan tetapi asisten mempunyai tanggungan tambahan terkait jam belajar untuk asistensi, asisten akan memerlukan waktu 15 jam lebih banyak dari mahasiswa biasa sebagai waktu asistensi. Sehingga total jam terkait tugas kuliah seorang asisten adalah jam belajar mahasiswa ditambah jam belajar laboratorium. Masing-masing akan memberitahukan jam belajar.

Bagaimana mewujudkannya dalam OOP? Obyek:, Asisten Proses: : Menghitung jam belajar. Asisten: Menghitung jam belajar Relasi antar object/ class: memiliki jam belajar Asisten memiliki jam Asistensi Asisten adalah. Class diagram (hanya digambarkan bagian penting) -jambelajar : int +getjambelajar() : int Asisten -jamasistensi : int +getjambelajar() : int class { private String nama; private String nim; private int jambelajar=40; (){ public (String nama, String nim) { this.nama = nama; this.nim = nim; public int getjambelajar() { return jambelajar; public String getnama() { return nama; public String getnim() { return nim; class Assisten extends { private int JamAsistensi=15; public Assisten(String nama, String nim) {

super(nama, nim); public Assisten() { @Override public int getjambelajar() { //mengubah method getjambelajar return super.getjambelajar()+this.jamasistensi; Mencegah Inheritance Dari Sebuah Class (final Class) Ada kalanya diperlukan suatu class yang tidak boleh diwariskan lagi menjadi class baru. Class yang seperti ini Jika misalnya seorang eksekutif manajer merupakan ujung dari organisasi maka di organisasi tersebut sudah tidak ada lagi variasi atau kekhasan suatu jabatan yang merupakan turunan dari eksekutif manajer. Dengan demikian perlu dilakukan pencegahan pewarisan dari class eksekutif manajer. Untuk mencegah suatu kelas diwariskan digunakan keyword final pada saat deklarasi kelas. Contoh: final class EksekutifManajer extend Manajer {.... Contoh lagi: final class ClassTerakhir {.... Mencegah Override oleh Child Class (final method) Keyword final juga dapat diterapkan pada method. Jika keyword final diterapkan pada method maka method tersebut tidak dapat dioverride oleh child class. Child class masih mewarisi method tersebut hanya saja tidak dapat melakukan override. Contoh deklarasi pada parent class public final String getnama(){.... Mencegah Pembuatan Object dari Sebuah Class (Abstract Class) Pada suatu hierarki inheritance, grand parent tertinggi selalu mempunyai sifat yang lebih umum dibandingkan dengan sub class nya. Misalnya, class Civitas adalah (dapat dianggap) class tertinggi pada model struktur kampus. Yang termasuk civitas antara lain, Dosen, Karyawan, StakeHolder. Jika dinyatakan bahwa setiap orang yang merupakan bagian dari civitas harus berada pada kelompok tersebut, maka tidak boleh ada orang yang hanya menyebut diri sebagai civitas tetapi tidak bisa menyebutkan kelompoknya. Disini terlihat bahwa, tidak boleh membuat object dari class Civitas. Class yang dicegah untuk diwujudkan menjadi sebuah object disebut sebagai abstract Class. Untuk membuatnya, cukup diberikan keyword abstract pada saat deklarasi class. Contoh:

abstract class Civitas{ private String nama; private String jeniskelamin; public getnama(){ return nama Java akan menganggap error jika kita instance class tersebut, misal: Civitas myciv; myciv= new Civitas(); //error Q: Kapan memerlukan inheritance? A: Inherintance diperlukan ketika kita ingin membuat class baru yang merupakan jenis dari class yang sudah ada. Jika dibuat kalimatnya akan berbunyi Class baru adalah class lama adalah civitas Asisten termasuk

Hubungan antar Class Secara umum relasi antar class adalah - Inheritance: is-a (adalah) - Dependensi : uses-a (menggunakan) - Agregasi, Assosiasi : has-a, part-of (mempunyai) Model Kalimat Java Asisten adalah class { mahasiswa Asisten Jenis: Inheritance class Asisten extend (){ Transkrip BukuPerpustakaan * * Penjualan CreditCard +bayarcreditcard(in jumlah : int) +bayar(in jumlah : int) mempunyai transkrip. Jenis: Asosisasi satu arah memiliki pinjaman buku perpustakaan, buku perpustakaan mempunyai mahasiswa yang meminjam buku. Jenis: Asosiasi dua arah Penjualan memerlukan proses pembayaran yang dilakukan oleh CreditCard Jenis: Dependesi class Transkrip { class { private Transkrip mytranskrip; class BukuPerpus { private mymhs; class { private BukuPerpus mybuku; class Penjualan{ public void bayarcc(int Jumlah){ CreditCard.bayar(Jumlah); class CreditCard{ public void bayar(int Jumlah) {

TUGAS: Pada sebuah organisasi terdapat beberapa jenis pegawai pada suatu perusahaan yaitu Pegawai biasa, Manajer, Eksekutif Manajer, Sekretaris, dan Programmer. Seorang eksekutif manajer adalah seorang manajer yang memilki sekretaris. Semua mempunyai base salary (gaji pokok) yang sama. Akan tetapi masing-masing mempunyai perhitungan gaji yang berbeda. Masing-masing dalam organisasi tersebut harus dapat menginformasikan nama, jabatan, dan total gaji. - Pegawai biasa hanya dibayar dengan gaji pokok - Manajer mendapatkan dua kali gaji pokok plus bonus - Eksekutif manajer mendapatkan satu setengah kali total gaji Manajer - Sekretaris mendapatkan gaji pokok plus upah lembur. Tugas: - Definisikan obyek-obyek (kata benda) yang terdapat dalam permasalahan - Definiskan proses/tindakan (kata kerja) yang terdapat dalam permasalahan dan tetapkan (apa atau siapa/ object) pelakunya - Definiskan relasi antar classnya (menggunakan kalimat) - Gambarkan class diagramnya - Implementasikan dalam Java - Simulasikan untuk menampilkan nama, jabatan, dan total gaji masing-masing pegawai.