Konsep Pemrograman Berorientasi Obyek

advertisement
Konsep Pemrograman
Berorientasi Obyek
Sumber IlmuKomputer.com
Java Language
javac
java
(Java Compiler)
(Java Interpreter)
Paradigma Pemrograman
Sudut pandang dan style pemrograman
berhubungan dengan bagaimana sebuah masalah
diformulasikan dalam bahasa pemrograman
• Functional Programming: Urutan fungsi secara sekuensial
(Scheme, Lisp)
• Procedural Programming: Pemecahan masalah
berdasarkan prosedural kerja yg terkumpul dalam unit
pemrograman bernama fungsi (C, Pascal)
• Object-Oriented Programming: Koleksi object yang saling
berinteraksi . Class adalah unit pemrograman (Java, C#,
C++)
Tool Pemrograman Java
1. Compiler (Interpreter):
Java Standard Edition (JSE)
2. Text/Code Editor:
TextPad, Notepad++
3. Integrated Development Environment (IDE):
Netbeans, Eclipse, JCreator
(*) IDE mengintegrasikan Compiler, Code Editor dan Visual (GUI)
Programming secara lengkap
Java Family Suite
Java Standard Edition
(Java SE)
 For desktop, client/server
application

Java Enterprise Edition
(Java EE)


For e-business, e-commerce
web based application
Java Micro Edition
(Java ME)

For small devices, like
palm, handphone, etc
Konsep Dasar Pemrograman
Berorientasi Objek
Berorientasi Objek?
Attribute:
Topi, Baju, Tas
Punggung, Jaket,
Tangan, Kaki, Mata
Behavior:
Cara Jalan ke Depan
Cara Jalan Mundur
Cara Belok ke Kiri
Cara Memanjat
Berorientasi Objek?
Attribute (State):
Ban, Stir, Pedal Kopling/Gas/Rem,
Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin
Cara Manjalankan Mobil
Cara Memundurkan Mobil
Attribute  Variable(Member)
Behavior  Method(Fungsi)
Karakteristik OOP -1• Abstraction:Cara kita melihat suatu sistem
dalam bentuk yang lebih sederhana, yaitu
sebagai suatu kumpulan subsistem (object)
yang saling berinteraksi.
– Mobil adalah kumpulan sistem pengapian, sistem
kemudi, sistem pengereman
• Modularity: Sifat object adalah modular.
Object dapat ditulis dan dimaintain terpisah
(independen) dari object lain
Karakteristik OOP -2• Encapsulation: Mekanisme menyembunyikan
suatu proses dalam sistem untuk menghindari
interferensi dan menyederhanakan
penggunaan sistem itu sendiri
– Tongkat transmisi (gigi) pada mobil
– Tombol on/off/pengaturan suhu pada AC
Karakteristik OOP -3• Inheritance: Suatu class dapat mewariskan
atribut dan method kepada class lain
(subclass), serta membentuk class hierarchy
Karakteristik OOP -4• Polymorphism: Suatu object dapat memiliki
berbagai bentuk, sebagai object dari classnya
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
Perbedaan Class dan Object
• Class: mobil
• Object: mobilnya pak Joko, mobilku
• Class seperti cetakan kue, dimana kue yg
dihasilkan dari cetakan kue itu adalah object
• Warna kue bisa bermacam-macam meskipun
berasal dari cetakan yang sama (object memiliki
sifat independen)
• Object adalah instance dari Class
Attribute
Berbagai variable yang mengitari class,
dengan nilai datanya bisa ditentukan di
object. Name, age, dan weight adalah
atribute dari class Person
Membuat Class, Object dan Memanggil Atribut
class Mobil {
String warna;
int tahunProduksi;
}
public class MobilBeraksi{
public static void main(String[] args){
// Membuat object
Mobil mobilku = new Mobil();
Mobil.java
MobilBeraksi.java
/* memanggil atribut dan memberi nilai */
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
System.out.println("Warna: " + mobilku.warna);
System.out.println("Tahun: " + mobilku.tahunProduksi);
}}
Method
• Method adalah implementasi dari
bagaimana bekerjanya sebuah class
• Method melakukan:
1. Manipulasi data
2. Perhitungan matematika
3. Memonitor kejadian dari suatu event
Membuat dan Memanggil Method
class Mobil2{
String warna;
int tahunProduksi;
void printMobil(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
public class Mobil2Beraksi{
public static void main(String[] args){
// Membuat object
Mobil2 mobilku = new Mobil2();
Mobil2Beraksi.java
/* memanggil atribut dan memberi nilai */
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
mobilku.printMobil();
}}
Mobil2.java
Latihan
• Kembangkan Class Mobil2
• Ubah nama class menjadi MobilLengkap dan
tambahkan method:
– hidupkanMobil()
– matikanMobil()
– ubahGigi()
• Isi masing-masing method dengan tampilan
status menggunakan System.out.println()
• Panggil method-method diatas dari
MobilLengkapBeraksi
Message dan Parameter -1• Bicycle akan berguna apabila ada object lain (misalnya anda)
yang berinterasi dengan Bicycle tersebut
• Object software berinteraksi dan berkomunikasi dengan object
lain dengan cara mengirimkan message . Informasi dalam
message ini dikenal dengan nama Parameter
Message dan Parameter -2-
1. You  object pengirim (sender)
2. YourBicycle  object penerima (receiver)
3.
changeGears  the message, the method to perform
4. lowerGear information from You to YourBicycle, the
parameters needed by the method
Membuat Class (Sepeda.java)
class Sepeda{
int kecepatan = 0;
int gir = 0;
// method
void ubahGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
System.out.println(" Gir:" + gir);
}
void tambahKecepatan(int pertambahanKecepatan) {
kecepatan = kecepatan+ pertambahanKecepatan;
System.out.println(" Kecepatan:" + kecepatan);
}
}
Membuat dan Memanggil Object (SepedaBeraksi.java)
public class SepedaBeraksi{
public static void main(String[] args) {
// Membuat object
Sepeda sepedaku = new Sepeda();
//memanggil atribut dan memberi nilai
sepedaku.kecepatan=10;
sepedaku.gir=2;
// Memanggil method dan menunjuk nilai parameter
sepedaku.tambahKecepatan(30);
sepedaku.ubahGir(3);
}}
Latihan
• Buat Class bernama Matematika, yang berisi
method dengan dua parameter:
–
–
–
–
pertambahan
pengurangan
perkalian
pembagian
pertambahan(20,20)
• Buat Class bernama MatematikaBeraksi, yang
mengeksekusi method dan menampilkan:
–
–
–
–
Pertambahan: 20 + 20 = 40
Pengurangan: 10-5 = 5
Perkalian: 10x20 = 200
Pembagian: 21/2 = 10
Tips Membuat Class
• 1 file bisa berisi >=1 class
• 1 file hanya dapat berisi 1 public class
• Nama file harus sama dengan nama public
class
• Java menganut case-sensitive
• Tips: Lebih baik dan lebih mudah dipahami
apabila satu file berisi hanya satu class
Kata Kunci this
Digunakan pada pembuatan class dan digunakan
untuk menyatakan object sekarang
class Mobil{
String warna;
Int tahunProduksi;
class Mobil{
String warna;
Int tahunProduksi;
void isiData(String warnaMobil, int
tahunProduksiMobil){
void isiData(String warna, int
tahunProduksi){
warna = warnaMobil;
tahunProduksi = tahunProduksiMobil;
}
this.warna = warna;
this.tahunProduksi = tahunProduksi;
}
Konstruktor -1• Method yang digunakan untuk memberi nilai
awal pada saat object diciptakan
• Dipanggil secara otomatis ketika new
digunakan untuk membuat instan class
• Sifat konstruktor:
– Nama konstruktor sama dengan nama class
– Tidak memiliki nilai balik dan tidak boleh ada kata
kunci void
Konstruktor -2class Mobil {
String warna;
int tahunProduksi;
public Mobil(String warna, int tahunProduksi){
this.warna = warna;
this.tahunProduksi = tahunProduksi;
}
public void info(){
System.out.println("Warna: " + this.warna);
System.out.println("Tahun: " + this.tahunProduksi);
}
}
public class MobilKonstruktor{
public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, 2003);
mobilku.info();
}}
Class Acces Level
Specifier
Class
Package
SubClass
private

no specifier


protected



public



World

Latihan
1. Buat class Buku
2. Tentukan variable buku: Judul, Pengarang,
Penerbit dan Tahun
3. Buat konstruktor class Buku dengan parameter:
Judul, Pengarang, Penerbit dan Tahun
4. Buat method cetakBuku
5. Buat class BukuBeraksi dan tampilkan 2 buku:
–
–
Pemrograman Berbasis Objek dengan Java, Indrajani,
Elexmedia Komputindo, 2007
Dasar Pemrograman Java, Abdul Kadir, Andi Offset,
2006
Inheritance (Pewarisan)
• Reusability
• Top down:
– Being more specific
• Bottom Up:
– Find similiarity
• Java Keyword:
extends
Sepeda.java
class Sepeda{
int kecepatan = 0;
int gir = 0;
// method
void ubahGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
System.out.println("Gir:" + gir);
}
void tambahKecepatan(int pertambahanKecepatan) {
kecepatan = kecepatan+ pertambahanKecepatan;
System.out.println("Kecepatan:" + kecepatan);
}
}
Class SepedaGunung Mewarisi Class Sepeda
class SepedaGunung extends Sepeda {
int setSadel;
class SepedaGunungBeraksi {
public static void main(String[] args) {
// Membuat object
SepedaGunung sepedaku = new sepedaGunung();
public void setSadel(int nilaiSadel) {
setSadel = nilaiSadel;
System.out.println(“Tinggi
Sadel:”+setSadel);
}
// Memanggil method di object
sepedaku.tambahKecepatan(10);
sepedaku.ubahGir(2);
sepedaku.setSadel(20);
}
}
}
SepedaGunung.java
SepedaGunungBeraksi.java
Latihan
• Buat class MobilBMW yang merupakan inherit
dari class MobilLengkap
• Tambahkan method nontonTV() yang
menampilkan tulisan di layar:
– TV dihidupkan
– TV mencari channel
– TV menampilkan gambar
• Buat class MobilBMWBeraksi yang memanggil
method nontonTV, hidupkanMobil,
matikanMobil, ubahGigi
Konsep Lanjut Pemrograman
Berorientasi Objek
Polymorphism
• Polymorphism: Suatu object dapat
memiliki berbagai bentuk, sebagai object
dari classnya sendiri atau object dari
superclassnya
1. Overloading: Penggunaan satu nama untuk
beberapa method yang berbeda parameter
2. Overriding: Terjadi ketika deklarasi method
subclass sama dengan method dari
superclassnya
Polymorphism – Overloading
class Mobil {
String warna;
int tahunProduksi;
public Mobil(String warna, int
tahunProduksi){
this.warna = warna;
this.tahunProduksi = tahunProduksi;
}
public Mobil(){
}
void info(){
System.out.println("Warna: " +
this.warna);
System.out.println("Tahun: " +
this.tahunProduksi);
}
}
public class MobilKonstruktor{
public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”,
2003);
mobilku.info();
Mobil mobilmu = new Mobil();
mobilmu.info();
}
}
Contoh Lain Overloading
class Lingkaran{
public buatLingkaran(int diameter){
...
}
public buatLingkaran(int diameter, int x, int y){
...
}
public buatLingkaran(int diameter, int x, int y, int warna,
String namaLingkaran){
...
}
}
Polymorphism - Overriding
class Sepeda{
int kecepatan = 0;
int gir = 0;
// method
void ubahGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
System.out.println("Gir:" + gir);
}
void tambahKecepatan(int pertambahanKecepatan) {
kecepatan = kecepatan+ pertambahanKecepatan;
System.out.println("Kecepatan:" + kecepatan);
}
}
Class SepedaGunung Mewarisi Class Sepeda
class SepedaGunung extends Sepeda {
int setSadel;
class SepedaGunungBeraksi {
public static void main(String[] args) {
// Membuat object
SepedaGunung sepedaku = new sepedaGunung();
void ubahGir(int pertambahanGir) {
gir= 2*(gir+ pertambahanGir );
System.out.println("Gir:" + gir);
}
// Memanggil method di object
sepedaku.tambahKecepatan(10);
sepedaku.ubahGir(2);
sepedaku.setSadel(20);
}
}
}
SepedaGunung.java
SepedaGunungBeraksi.java
Latihan
1.
2.
3.
4.
Kembangkan class Matematika dan
MatematikaBeraksi
Lakukan overloading pada Method yang ada
(pertambahan, pengurangan, perkalian,
pembagian) . Method baru adalah bertipe data
double (pecahan) dan memiliki 3 parameter
Uji di kelas MatematikaBeraksi dengan
parameter pecahan: 12.5, 28.7, 14.2
Misalnya:
pertambahan(12.5, 28.7, 14.2)
Matematika.java
class Matematika{
int hasilPertambahanBulat;
double hasilPertambahanPecahan;
public void pertambahan (int a, int b){
hasilPertambahanBulat = a + b;
System.out.println(“hasil:” + hasilPertambahanBulat);
}
public void pertambahan (double a, double b, double c){
hasilPertambahanPecahan = a + b + c;
System.out.println(“hasil:” + hasilPertambahanPecahan);
}
...
}
Packages
• Package adalah koleksi dari beberapa class
dan interface yang berhubungan, dan
menyediakan proteksi akses dan pengelolaan
namespace
• 1 package adalah 1 subfolder di file system
• Package sangat berguna untuk mengorganisir
file dalam suatu project atau library
• Nama package menggunakan lowercase
• Keyword: package name;
Budi.java
package kelasku;
public class Budi{
public void info(){
System.out.println(“Kelas Budi”);
}
}
Joko.java
package kelasku;
public class Joko{
public void info(){
System.out.println(“Kelas Joko”);
}
}
PaketBeraksi.java
import kelasku.*;
public class PaketBeraksi{
public static void main(String[] args){
Budi objectBudi = new Budi();
objectBudi.info();
Joko objectJoko = new Joko();
objectJoko.info();
}
}
Latihan
• Kembangkan class Budi dan Joko
• Buat method matakuliah() menampilkan mata
kuliah yang diajar Budi dan Joko
• Paketkan kedua class tadi dalam satu Package
bernama dosen (gunakan keyword: package)
• Buat Class DosenBeraksi yang menjalankan
method yang ada di kedua Class tadi (gunakan
keyword: import)
Interface
• Interface digunakan apabila kita ingin
menentukan apa yang harus dilakukan
oleh suatu class tapi tidak menentukan
bagaimana cara untuk melakukannya
• Interface sebenarnya sama dengan class,
tapi hanya memiliki deklarasi method
tanpa implementasi
InterfaceBeraksi.java
interface IntLampu{
public static final int KeadaanHidup=1;
public static final int KeadaanMati=0;
}
public abstract void hidupkan();
public abstract void matikan();
class Lampu implements IntLampu{
int statusLampu=0;
public void hidupkan(){
if (this.statusLampu == KeadaanMati){
this.statusLampu = KeadaanHidup;
System.out.println("Hidupkan Lampu! --> Lampu Hidup");
}else{
System.out.println("Hidupkan Lampu! --> Lampu Sudah Hidup
Kok");}
}
public void matikan(){
if (this.statusLampu == KeadaanHidup){
this.statusLampu = KeadaanMati;
System.out.println("Matikan Lampu! --> Lampu Mati");
}else{
System.out.println("Matikan Lampu! --> Lampu Sudah Mati Kok");
}}}
public class InterfaceBeraksi{
public static void main(String[] args){
Lampu lampuKamar = new Lampu();
System.out.println("Status Lampu Saat Ini: Mati");
}
}
lampuKamar.hidupkan(); //Hidupkan Lampu
lampuKamar.matikan(); //Matikan Lampu
lampuKamar.matikan(); //Matikan Lampu
lampuKamar.hidupkan(); //Hidupkan Lampu
lampuKamar.hidupkan(); //Hidupkan Lampu
Latihan
• Buat program serupa dengan
InterfaceBeraksi.java tapi untuk
ACBeraksi.java
• Masukkan method-method di bawah ke
dalam ACBeraksi.java
– matikanAC() dan hidupkanAC()
– dinginkanAC() dan panaskanAC ()
Download