• Tidak ada hasil yang ditemukan

Konsep Lanjut Pemrograman Objek

N/A
N/A
Protected

Academic year: 2021

Membagikan "Konsep Lanjut Pemrograman Objek"

Copied!
6
0
0

Teks penuh

(1)

Konsep Lanjut

Pemrograman Objek

Restyandito

e-mail : dito@ukdw.ac.id website : http://lecturer.ukdw.ac.id/~dito

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 2

Constructor

Constructor merupakan metode khusus yang

memiliki nama sama dengan kelasnya. Jika kita

tidak mengkodekan sebuah constructor, JAVA

akan membuat sebuah constructor default untuk

kita. Constructor default tidak melakukan

apa-apa, namun memungkinkan semua variabel yang

tidak diinisialisasi dalam deklarasi diberi suatu

nilai default.

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 3

class Mahasiswa { private String nama = ""; private int nim = 0; private static int NIM = 0; private double ipk = 0.0;

public Mahasiswa() { this.nim = ++NIM; } public Mahasiswa(String na, double i) {

this.nama = na; this.ipk = i; this.nim = ++NIM; } public void LihatData() {

System.out.println("Nama : " + nama + "\tNIM : " + nim + "\tIPK : " + ipk ); }

}

Constructor

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 4

public class MahasiswaInfo { public static void main(String args[]) {

Mahasiswa mhs1 = new Mahasiswa( "Dinda“ , 3.4 ); Mahasiswa mhs2 = new Mahasiswa( "Ninda“ , 3.25 ); Mahasiswa mhs3 = new Mahasiswa();

mhs1.LihatData(); mhs2.LihatData(); mhs3.LihatData(); } }

Constructor

1. Buatlah suatu class Mobil dengan atribut berupa pabrik,

tipe, mesin dan kapasitas penumpang.

2. Buatlah suatu constructor dengan 4 parameter untuk

menset nilai dari pabrik, tipe, mesin dan kapasitas

penumpang.

3. Buatlah suatu method untuk menampilkan atribut Mobil.

4. Buatlah 2 buah instance object, sedan dengan atribut

Honda, JAZZ, 2000CC, 5 penumpang dan MPV dengan

atribut VW,Caravelle,3000CC, 7 penumpang.

5. Tampilkan atribut kedua buah instance tersebut (sedan

dan MPV)

Class Activity

Pemrograman berorientasi obyek adalah

sekumpulan class-clas yang saling berintarksi.

Ada banyak cara suatu class dapat berinteraksi

dengan class lainnya, seperti pewarisan

(GenSpec), agregasi (WholePart) dan asosiasi

(instance/ message connection)

(2)

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 7

Pewarisan merupakan hubungan antar class

dimana ciri-ciri dan sifat dari class induknya

diturunkan ke class anaknya.

Pewarisan

- nama : String = “” - alamat : String = “” - jumAnak : int = 0 - noInduk : int = 0 Pegawai

+ Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData()

+ lihatNama()

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 8

Pewarisan

- gajiHarian : int = 0 - hariKerja : int = 0

Pegawai Harian

+ PegawaiHarian(nama:String, alamat:String, jumAnak:int, gajiHarian:int, hariKerja:int) + lihatData() - nama : String = “” - alamat : String = “” - jumAnak : int = 0 - noInduk : int = 0 Pegawai

+ Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData()

+ lihatNama()

Catatan: + (plus) = public, – (dash) = private, # (compound) = protected

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 9

Pewarisan

class Pegawai { private String nama; private String alamat; private int jumAnak; private int noInduk; private static int no = 0;

public Pegawai(String n, String a, int x) { this.nama = n; this.alamat = a; this.jumAnak = x; this.noInduk = ++no; }

Contoh:

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 10

Pewarisan

public void lihatData() {

System.out.print("nomor: " + this.noInduk); System.out.print("\tnama: " + this.nama); System.out.print("\t\talamat: " + this.alamat); System.out.print("\t\tanak: " + this.jumAnak + "\n\n"); }

public void lihatNama() {

System.out.println("\t\tnama: " + this.nama + "\n\n"); }

}

Pewarisan

class PegawaiHarian extends Pegawai { int gajiHarian;

int hariKerja;

public PegawaiHarian(String n, String a, int x, int gaji, int hari) { super(n, a, x);

this.gajiHarian = gaji; this.hariKerja = hari; }

public void lihatData() { super.lihatData(); System.out.print("gaji: " + this.gajiHarian); System.out.print("\thari: " + this.hariKerja + "\n\n"); } }

Pewarisan

public class DataPegawai {

public static void main(String[] args) { Pegawai emp1 =

new Pegawai("Dini", "Jl.Markisa 26", 2); Pegawai emp2 =

new Pegawai("Dono", "Jl.Solo 345",6); PegawaiHarian emp3 =

new PegawaiHarian ("Dana", "Jl.Bulan 44", 8, 50000, 40); emp1.lihatData(); emp2.lihatData(); emp3.lihatData(); emp3.lihatNama(); } }

(3)

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 13

Polymorphism

( revisited )

Hewan

Anjing

Anjing coki = new Anjing() ; Hewan coki = new Anjing() ;

Hewan lumping = new Kuda() ;

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 14

Polymorphism

( revisited )

Hewan[ ] binatang = new Hewan[5]; binatang[0] = new Serigala(); binatang[1] = new Anjing(); binatang[2] = new Kucing(); binatang[3] = new KudaNil(); binatang[4] = new Singa();

for ( int i = 0; i < binatang.length; i++ ) { binatang[i].makan();

binatang[i].bersuara(); }

Dengan polymorphism, reference type dapat

merupakan superclass dari object type yang

digunakan

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 15

Polymorphism

( revisited )

class DokterHewan {

public void menyuntik ( Hewan a) { // mengobati hewan

a.bersuara() ; }

}

class PemilikHewan {

public void memeriksakanHewan() { DokterHewan d = new DokterHewan(); Anjing a = new Anjing(); d.menyuntik(a); Kucing k = new Kucing(); d.menyuntik(k); }

}

Polymorphism memungkinkan pembuatan subclass

baru, tanpa harus merubah program utama.

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 16

Suatu class dikatakan memiliki hubungan

agregasi (aggregation) apabila kelas tersebut

berisi sebuah obyek dari kelas lain. Agregasi

secara umum menunjukkan suatu hubungan

one-to-many atau dikenal dengan istilah

Whole-Part.

Agregasi

Agregasi

Roda Mobil 1..* Modul Kursus

Agregasi

Suatu bentuk khusus dari agregasi adalah

komposisi (composition), dimana suatu bagian

dari class tidak dapat berdiri sendiri.

1..*

Halaman Buku

(4)

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 19 -nama : String = “” -alamat : String = “” -noInduk : int = 0 Pegawai + Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData() + lihatNama() - namaOrganisasi : String = “” - alamatSekretariat : String = “” - noAktaPendirian : String = “” SerikatPegawai + lihatData()

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 20

Agregasi

import java.util.*; import java.util.Date; public class SerikatPegawai {

private String NamaOrganisasi; private String AlamatSkretariat; public Pegawai pegawai;

}

public class Pegawai { private String nama; private String alamat; private int noInduk;

}

Contoh:

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 21

Hubungan ketergantungan (dependency)

menunjukkan bahwa suatu class membutuhkan

class yang lain dalam melaksanakan

operasinya. Jika dipahami secara logika

hubungan ketergantungan memang sedikit

berbeda dengan hubungan agregasi.

Ketergantungan

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 22

Untuk menerapkan multiplicity n atau 1..* atau

0..* atau 1..n atau 0..n pada JAVA dapat

digunakan beberapa pilihan, antara lain: array,

class Vector dan class Collection.

Multiplicity

ARRAY

Salah satu kelemahan dari array adalah

pendefinisian jumlah elemen yang dapat

ditampung pada suatu array bersifat terbatas

pada saat runtime.

VECTOR

Vector adalah obyek seperti array dengan

jumlah elemen yang dinamis. Perbedaan

antara vector dengan array:

Multiplicity

‰

Array pada JAVA dapat menyimpan tipe apapun,

termasuk numerik atau class

‰

Vector pada JAVA harus menyimpan obyek.

Misalnya untuk menyimpan nilai int, maka harus

dilakukan casting ke obyek Integer.

Untuk mendefinisikan sebuah vector digunakan

perintah:

Multiplicity

Vector namaObyek = new Vector(jumlahElemenAwal);

Setelah itu berikut beberapa method yang dapat

digunakan untuk operasinya:

size mengetahui jumlah elemen dalam vector addElement menambah elemen baru clear menghapus semua elemen vector

elementAt(posisi) mengambil nilai elemen vector ke posisi

setElementAt(posisi) menempatkan sebuah elemen obyek pada posisi tertentu removeElementAt(posisi) menghapus elemen dan menggeser ke bawah semua

elemen di atasnya

(5)

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 25

Untuk menampilkan semua elemen dalam vektor

dapat digunakan perulangan:

Multiplicity

for (int i= 0; i < ovector.size(); i++) { System.out.println(ovector.elementAt(i)); }

Contoh:

-kode: String -harga: int=100 Produk + getTotal(): int Pesanan 1 1..* 1 1..*

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 26

import java.util.*; class Produk {

private String kode; private int harga = 100; public Pesanan pesanan; public String getKode() { return kode; } public void setKode(String _kode) { kode = _kode; } public int getHarga() { return harga; }

public void setHarga(int _harga) { harga = _harga; } public Pesanan getPesanan() { return pesanan; } public void setPesanan(Pesanan pesanan) {

if (this.pesanan != pesanan) {

if (this.pesanan != null) this.pesanan.removeProduk(this); this.pesanan = pesanan;

if (pesanan != null) pesanan.addProduk(this); }

} }

Contoh: Produk.java

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 27

import java.util.*; class Pesanan {

private Vector produk = new Vector(); public Vector getProduk() { return produk; } public void addProduk(Produk produk) {

boolean ada = false;

for(int i=0; i<this.produk.size(); i++) {

if(((Produk)this.produk.elementAt(i)) == produk) ada=true; } if (!ada) { this.produk.addElement(produk); produk.setPesanan(this); } }

Contoh: Pesanan.java

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 28

public void removeProduk(Produk produk) { for(int i=0; i<this.produk.size(); i++) {

if(((Produk)this.produk.elementAt(i)) == produk) { this.produk.removeElementAt(i); produk.setPesanan((Pesanan)null); } } }

public int getTotal() { int n = 0;

for(int i=0; i<this.produk.size(); i++) {

n += ((Produk)this.produk.elementAt(i)).getHarga(); } return n; } }

Contoh: Pesanan.java

import java.util.*;

public class PesananProduk { public static void main(String[] args) { Pesanan order = new Pesanan(); Produk p1 = new Produk(); p1.setKode("AA1234"); p1.setHarga(1200); Produk p2 = new Produk(); p2.setKode("AB5678"); p2.setHarga(5000); order.addProduk(p1); order.addProduk(p2); System.out.println(order.getTotal()); }

Contoh: PesananProduk.java

Pertama kali suatu class dibuat, tidak mungkin

sempurna tanpa kesalahan. Jika terjadi kesalahan

pemrogram dapat melakukan hal-hal berikut:

1. Tidak mengindahkan permasalahan

2. Cek hal-hal yang berpotensi menjadi masalah, dan

membatalkan program saat menemukan masalah.

3. Cek hal-hal yang berpotensi menjadi masalah,

ambil (catch) kesalahan dan mencoba memperbaiki

persoalan

4. Membuat suatu pengecualian (throw exception)

(6)

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 31

Exception adalah adalah hal-hal tak terduga yang

terjadi pada sistem.

Error Handling

try {

// kemungkinan kode program yang salah } catch (Exception e) {

// program untuk menangani kesalahan }

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 32

Exception adalah adalah hal-hal tak terduga yang

terjadi pada sistem.

Error Handling

try {

// kemungkinan kode program yang salah } catch (Exception e) {

// program untuk menangani kesalahan }

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 33

Contoh:

Error Handling

try { count = 0; count = 5 / count; } catch (Exception e) { System.out.println(e.getMessage()); count = 1; }

System.out.println(“Exception telah dapat diatasi”);

TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 34

Referensi

• Garrido, Jose M., Object Oriented Programming:

From Problem Solvint to Java, Charles iver Mdia, Inc.,

2003. hal 25-90

• Weisfeld, Matt, The Object-Oriented Thought Process,

Developer’s Library, 2004. hal 5-28, 43-53

• Deitel H.M., Java How To Program, Prentice Hall,

2003. hal 341-500

• Hortsmann, Cay S., Core Java : Volume

1-Fundamentals, Sun Microsystems Press, 1999. hal

105-224

The End

Referensi

Dokumen terkait

Ketentuan Lampiran BAB IV Indeks Honorarium huruf B Kegiatan Yang Dilaksanakan Dalam Bantuk Panitia/Tim huruf B Kegiatan Khusus ditambah satu nomor yakni nomor 7 Tim Penyusunan

Islam tempat penting tentang memaafkan individu sehingga seseorang dapat menerima pengampunan dari Allah atas dosa-dosa sendiri, dan dapat memiliki kebahagiaan pada

Sosial Campaign dirancang dengan tujuan utama untuk membantu penyebaran informasi, edukasi, dan sosialisasi mengenai shopaholic dan bagaiman cara tetap bisa berbelanja

Pembangunan Rumah Oleh Perum Perumnas Provinsi Jawa Barat Tahun 2011. No Nama

Perumusan inti dari penelitian ini adalah menganalisis kelayakan investasi untuk membuka cabang dari Rumah Makan Made In Bandung yang dilihat dari beberapa aspek

“Bila pemakai sesuatu pesawat uap berlawanan dengan pendapat sebagaimana diberi- tahukan padanya oleh pegawai yang bersangkutan, merasa tidak beralasan cukup, baik untuk pengujian

Secara terinci, matriks aktualisasi telah mencoba menjabarkan masing-masing sila dari Pancasila mulai dari perwujudan dan aktualisasinya, hingga implikasinya dalam penanganan

pembudidaya di kelurahan Meruya Selatan atau tepatnya di kawasan Kayon, dengan bapak H.Gupron,…..saya mulai usaha penjualan dan budidaya sejak tahun 1980 sebelum dibangunnya