Dasar-Dasar OOP di Java

dokumen-dokumen yang mirip
Dasar-Dasar OOP di Java

Bab 8. Dasar-Dasar OOP

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Praktikum 7. Dasar-dasar OOP di Java

Praktikum 6 Class Design (Encapsulation)

INTERAKSI ANTAR OBJECT

Enkapsulasi. Politeknik Elektronika Negeri Surabaya. Enkapsulasi. public void Info() { System.out.println( Saya siswa PENS );

Pemrograman Berbasis Objek. Enkapsulasi. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

Pengenalan pemrograman berorientasi obyek

A. TUJUAN PEMBELAJARAN. 1. Menerapkan konsep enkapsulasi pada class 2. Mendeklarasikan suatu constructor

A. TUJUAN PEMBELAJARAN 1. Memahami konsep package dan import 2. Menggunakan kata kunci this

Inheritance (Pewarisan) Pengertian dasar inheritance

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

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

Inheritance. Topik 5/17/2013

Pemrograman Berbasis Objek Inheritance

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

Politeknik Elektronika Negeri Surabaya

Polymorphism. Oleh : Agus Priyanto, M.Kom

BAB 6 INHERITANCE Tujuan:

Pemrograman Berorientasi. Class dan Obyek 2

subclass class manapun private default protected public package yang sama

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

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

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

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

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

(INHERITANCE) Nurochman

Dasar Pemrograman Java

Class & Object 2. Imam Fahrur Rozi

CLASS PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM JOGJAKARTA

Deklarasi atribut dapat dilakukan dengan sintaks sebagai berikut:

Inheritance dan Kata Kunci static

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Percobaan 5 Paket dan Import, Interface

Bahasa Pemrograman 2.

B. DASAR TEORI MENGENAL OBJEK & CLASS

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

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

B. DASAR TEORI MENGENAL OBJEK & CLASS

Pengenalan pemrograman berorientasi obyek. Politeknik Elektronika Negeri Surabaya. Topik

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD

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

SUMBER BELAJAR PENUNJANG PLPG

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

public class B extends A {... }

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

Membuat dan Menggunakan Class

Other OOP Basic. Viska Mutiawani, M.Sc

ENKAPSULASI Data Hiding

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

MODUL 1. Class, Object, Constructor dan Method

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

[Lanjutan] Nurochman

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PENGENALAN OBJECT ORIENTED PROGRAMMING

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

MODUL 1 PENGENALAN OOP

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

Algoritma Pemrograman [BS204]

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

Bahasa Pemrograman 2.

UNIVERSITAS GUNADARMA

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

UML (Unified Modelling Language)

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

Modul II Object Oriented Programming

Modul Praktikum Bahasa Pemrograman 1

Praktikum 3 Konsep Class, Attribute dan Method

PRAKTIKUM 5 PAKET, IMPORT DAN INTERFACE

Pengenalan pemrograman berorientasi iobyek

MODUL PRAKTIKUM BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class

UJIAN TENGAH SEMESTER GENAP TA 2011/2012

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

Java Application. Aplikasi: Menampilkan Tulisan

Pemrograman Berorientasi Obyek. Ramos Somya

Pemrograman Berorientasi Objek INHERITANCE

Pemrograman Lanjut. Constructor. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

BAB 12 ENKAPSULASI, INHERITANCE DAN POLIMORPISME

Java Application. Menampilkan Tulisan

IKG2I4 / Software Project I

Employee employee=new Manager();

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

Pertemuan 11 Object Oriented Program

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 4 PENGKAPSULAN

OBJECT ORIENTED PROGRAMMING (OOP)

Modul Bahasa Pemrograman 1

BAB 7 OVERLOADING DAN OVERRIDING

Pemrograman Lanjut Review Class dan Object PTIIK

Pemrograman Lanjut. Class : Deeper Look 2

Java Fundamentals. Herman Tolle. Program Teknologi Informasi & Ilmu Komputer UNIVERSITAS BRAWIJAYA

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Keyword this untuk memanggil private String pengarang; private String judul;

UJIAN TENGAH SEMESTER GENAP TA 2011/2012

Kita akan membuat class yang mengandung informasi dari Siswa dan operasi operasi yang dibutuhkan pada record siswa.

Transkripsi:

Dasar-Dasar OOP di Java Information hiding Pada bab sebelumnya telah dibahas bagaimana mengakses anggota class, baik yang berupa atribut ataupun method. Misalnya saja kita mempunyai sebuah class seperti dibawah ini : public int nrp; public String nama; public void Info() { System.out.println( Saya siswa PENS ); Jika kita ingin mengakses anggota-anggota class Siswa diatas dari luar class, maka kita dapat langsung mengaksesnya dengan menyebutkan nama anggota class yang ingin kita akses. Hal ini dapat kita lihat pada program dibawah ini : 1 2 3 4 5 6 7 8 public class IsiData { public static void main(string args[]) { Siswa IT2=new Siswa(); IT2.nrp=5; IT2.nama= Andi ; IT2.Info(); Pada baris ke-3, kita membuat sebuah obyek dari class Siswa yang bernama IT2. Dari obyek IT2 tersebut pada baris ke-4, 5 dan 6 kita langsung dapat mengakses anggota-anggota dari obyek IT2. Kita juga dapat menyembunyikan information dari suatu class sehingga anggota-anggota class tersebut tidak dapat diakses dari luar. Adapun caranya adalah cukup dengan memberikan akses control private ketika mendeklarasikan suatu atribut atau method. Sebagai contoh adalah class Siswa diatas. Jika kita ingin membuat nrp dari class Siswa tidak dapat diakses dari luar class Siswa, maka kita dapat merubahnya menjadi : Pada saat kita mendeklarasikan seperti diatas, ketika kita mencoba mengakses nrp dari class IsiData pada baris ke-4, maka yang terjadi akan muncul pesan kesalahan kompilasi seperti di bawah ini : Hallo.java:4: nrp has private access in Siswa IT2.nrp=5; Contoh lain: Misalnya saja kita mempunyai sebuah class seperti dibawah ini : public class MyDate { public int day; public int month; public int year; 1

Jika kita ingin mengakses anggota-anggota class MyDate diatas dari luar class, maka kita dapat langsung mengaksesnya dengan menyebutkan nama anggota class yang ingin kita akses. Misalkan kita punya object d yang merefer ke class MyDate MyDate d = new MyDate(); Maka kita bisa mengakses semua atribut secara langsung dan membuat kesalahan, misalnya d.day = 32; //invalid day d.month = 2; d.day = 30; //plausible but wrong d.day = d.day + 1; //no check for wrap around Untuk menghindari kasus seperti di atas, kita bisa menyembunyikan infomasi dari sebuah class sehingga anggota-anggota class tersebut (dalam hal ini atribut-atributnya) tidak dapat diakses dari luar. Caranya dengan memberikan akses control private ketika mendeklarasikan atribut atau method. Selain itu juga menyediakan akses pembacaan melalui method getxxx() yang sering disebut sebagai getters dan akses penyimpanan melalui method setxxx() yang sering disebut sebagai setter. Method-method ini akan memungkinkan class untuk memodifikasi data internal, namun yang lebih penting lagi, untuk memverifikasi perubahan yang diinginkan adalah dengan nilai yang valid. Encapsulation (Enkapsulasi) Encapsulation (Enkapsulasi) adalah suatu cara untuk menyembunyikan implementasi detail dari suatu class. Enkapsulasi mempunyai dua hal mendasar, yaitu : - information hiding - interface to access data Misalnya saja kita ambil contoh kasus program yang sebelumnya. NRP dari siswa-siswa IT2 adalah berada dalam range 1-10. Jika kita tidak melakukan enkapsulasi pada class Siswa, maka data nrp yang kita masukkan tentunya akan diperbolehkan nilai bilangan bulat dalam range tipe data int. Oleh karena itu, information hiding terhadap atribut nrp sangat diperlukan, sehingga nrp tidak bisa diakses secara langsung. Lalu, kalau atribut nrp tersebut disembunyikan, bagaimana cara mengakses atribut nrp itu untuk memberikan atau mengubah nilai?. Nah, di saat ini kita memerlukan suatu interface to access data, yang berupa method dimana di dalamnya terdapat implementasi untuk mengakses data nrp. Berkaitan dengan kasus diatas, class Siswa dapat kita modifikasi agar memakai konsep enkapsulasi seperti terlihat dibawah ini: public String nama; public void setnrp(int n) { if(n>=1 && n<=10) else System.out.println("Error...!!"); public void Info() { System.out.println( Saya siswa PENS ); Dengan memenuhi konsep enkapsulasi, seorang user yang mengakses data nrp tidak perlu dipusingkan dengan implementasi pengisian data nrp. User tersebut cukup dengan memanggil method isinrp() dengan memasukkan nilai nrp-nya sebagai nilai parameter, maka class Siswa akan mengakses data nrp selama diperkenankan. 2

Deklarasi contructor (konstruktor) Contructor (konstruktor) adalah suatu method yang pertama kali dijalankan pada saat pembuatan suatu obyek. Konstruktor mempunyai ciri yaitu : - mempunyai nama yang sama dengan nama class - tidak mempunyai return type (seperti void, int, double dll) Setiap class pasti mempunyai konstruktor. Jika kita membuat suatu class tanpa menuliskan konstruktornya, maka kompiler dari Java akan menambahkan sebuah konstruktor kosong. Misalnya saja kita mempunyai suatu class Siswa seperti dibawah ini: Disana kita tidak mendeklarasikan konstruktornya secara eksplisit. Ketika proses kompilasi, Kompiler Java akan menambahkan konstruktor kosong sehingga class Siswa tersebut akan tampak sebagai berikut : Karena konstruktor adalah method yang pertama kali dijalankan pada saat suatu obyek dibuat, maka konstruktor sangat berguna untuk menginisialisasi data member. Misalnya saja class Siswa diatas mempunyai data member. Kita dapat menginisialisasi nrp di dalam kontruktor yang kita deklarasikan secara ekslipit, seperti yang tampak dibawah ini: nrp=0; Kita juga dapat menginisialisasi suatu data member dengan nilai yang diinginkan oleh user dengan cara memasukkannya pada parameter konstruktor. Misalnya class Siswa diatas dapat kita modifikasi sebagai berikut : public Siswa(int n) { Dengan mendeklarasikan konstruktor seperti itu, user dapat membuat obyek dengan menginisialisasi nrp sesuai yang ia kehendaki, misalnya saja seperti berikut : Siswa TA1 = new Siswa(); Siswa TA2 = new Siswa(5); Siswa TA3 = new Siswa(7, Andi ); 3

Overloading constructor Suatu class dapat mempunyai lebih dari 1 konstruktor dengan syarat daftar parameternya tidak boleh ada yang sama. Misalnya saja kita ingin menginisialisasi data member nrp dengan 2 cara. Pertama, jika user tidak memberikan nilai inisialisasi nrp dan nama maka nrp akan diset dengan nilai 0 dan nama diset dengan. Kedua, jika user ingin menginisialisasi nrp sesuai dengan nilai yang diinginkan, maka nrp akan diisi sesuai nilai yang diinginkan oleh user dan nama diset dengan.kedua, jika user ingin menginisialisasi nrp dan nama sesuai dengan nilai yang diinginkan, maka nrp dan nama akan diisi sesuai nilai yang diinginkan oleh user. Sehingga class Siswa diatas dapat kita deklarasikan 3 buah konstruktor seperti yang tampak sebagai berikut : private String nama; nrp=0; nama= ; public Siswa(int n) { nama= ; public Siswa(int n, String s) { nama = s; Package Package adalah suatu cara untuk memenej class-class yang kita buat. Package akan sangat bermanfaat jika class-class yang kita buat sangat banyak sehingga perlu dikelompokkan berdasarkan kategori tertentu. Misalnya saja kita mempunyai 2 buah class Siswa, dimana yang pertama adalah class Siswa untuk mahasiswa jurusan IT dan yang kedua adalah class Siswa untuk mahasiswa Telkom. Kita tetap dapat mendeklarasikan 2 class tersebut dengan nama Siswa, dengan cara mendeklarasikannya package masingmasing class seperti yang tampak di bawah ini: package it; package telkom; Yang perlu kita perhatikan pada saat deklarasikan package, bahwa class tersebut harus disimpan pada suatu direktori yang sama dengan nama package-nya. Berkenaan dengan class Siswa diatas, class Siswa pada package it harus disimpan pada direktori it, dan class Siswa pada package telkom harus disimpan pada direktori telkom. 4

it telkom Import class Suatu class dapat meng-import class lainnya sesuai dengan nama package yang dipunyainya. Misalnya saja kita dapat meng-import class dalam package it dengan mendeklarasikan kata kunci import. import it.siswa; public class IsiData { Jika kita ingin meng-import semua class yang ada pada package it, maka kita dapat mendeklarasikannya dengan menuliskan tanda *. import it.*; Satu hal yang perlu kita ketahui, pada saat kita ingin meng-import suatu class dalam suatu package, pastikan letak package tersebut satu direktori dengan class yang ingin meng-import. Dalam contoh diatas, representasi direktori akan tampak seperti berikut : it telkom IsiData.java Jika letak package tersebut tidak satu direktori dengan class yang ingin meng-import, maka letak direktori package itu haruslah terdaftar dalam CLASSPATH. Kata kunci this Kata kunci this sangat berguna untuk menunjukkan suatu member dalam class-nya sendiri. This dapat digunakan baik untuk data member maupun untuk function member, serta dapat juga digunakan untuk konstruktor. Adapun format penulisannya adalah : this.data_member merujuk pada data member this.function_member() merujuk pada function member this() merujuk pada konstruktor 5

Sebagai contohnya adalah sebagai berikut. Misalnya kita mempunyai suatu class diagram dibawah ini : Siswa nrp : int umur : int + Siswa(n : int) public class Siswa{ public int nrp; public int umur; public Siswa(int n){ //nrp = n; Pada saat kita membaca class diagram diatas, maka kita merasa kesulitan untuk memahami sesungguhnya nilai variabel n pada parameter konstruktor itu akan dipakai untuk menginisialisasi nrp atau umur. Untuk lebih memudahkan, kita dapat menuliskan class diagram yang lebih mudah dimengerti seperti yang tampak dibawah ini : Siswa nrp : int umur : int + Siswa(nrp : int) Dengan class diagram diatas, kita lebih mudah memahami bahwa nilai variabel nrp pada parameter konstruktor tersebut akan dipakai untuk menginisialisasi data member nrp pada class Siswa. Sehingga programnya akan tampak sebagai berikut : 1 2 3 4 5 6 7 8 private int umur; public Siswa(int nrp) { this.nrp = nrp; Pada saat kita menulis baris ke-6, maka yang kita inginkan adalah : nrp = nrp; merujuk pada parameter konstruktor merujuk pada data member nrp pada class Siswa Namun dengan cara menulisan seperti itu, maka semua nrp yang ada disana akan merujuk pada nrp yang terdekat, yaitu nrp pada parameter konstuktor, sehingga data member nrp tidak akan diinisialisasi. Nah, untuk memberitahu kompiler Java bahwa yang kita maksud adalah nrp pada member class Siswa, kita dapat memakai kata kunci this, sehingga penulisannya baris-6 tersebut yang benar adalah seperti ini : this.nrp = nrp akan merujuk pada suatu member yang bernama nrp pada class yang bersangkutan (class Siswa) 6

This dapat juga dipakai untuk memanggil konstruktor yang lain pada class yang bersangkutan. Misalnya saja contoh class Siswa pada overloading constructor dapat kita modifikasi sebagai berikut : this(0); public Siswa(int nrp) { this.nrp=nrp; Pada saat kita menuliskan this(0); kompiler Java akan merujuk pada suatu konstruktor di class tersebut yang mempunyai daftar parameter yang sesuai, yaitu : public Siswa(int n) Adapun nilai parameter yang dikirim adalah nilai 0. 7