PEMROGRAMAN LANJUT Sistem Informasi FILKOM UB Semester Genap 2016/2017
KONSEP CLASS & OBJEK pada Object Oriented Programming
Dr. Eng. Herman Tolle, ST., MT Fakultas Ilmu Komputer, Universitas Brawijaya
Pemrograman Lanjut 1. 2. 3. 4. 5. 6. 7. 8.
Nama Matakuliah Kode/SKS Semester Kelas Program Studi Dosen Asisten Jadwal Kuliah
: Pemrograman Lanjut : CSD60022 / 5 (4-1) SKS : Genap :A : Teknologi Informasi –Universitas Brawijaya : Dr. Eng. Herman Tolle, ST., MT. : :
– Senin, 14.30 – 16.10, Ruang E1.2 (Teori) – Selasa, 07.00 – 8.40, Ruang A2.20 (Teori) – Rabu, 14.30 – 16.10, Ruang B1.8 (Praktikum)
Materi Pemrograman Lanjut 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Review Pemrograman Dasar Konsep OOP, Class dan object, Diagram UML Class, Fungsi Overloading dan Konstruktor, Enkapsulasi, Inheritance/pewarisan, Polymorphism Interface & Abstract Class Generic Class Pengantar ke Graphical User Interface (GUI)
Pemrograman Berorientasi Objek
Info Pertemuan Tanggal Ruang & Waktu Materi
: 27 Februari 2017 : E1.2, Jam 14.30 – 16.00 : Pengenalan Konsep Class & Objek
Tujuan Pembelajaran Setelah mengikuti materi ini, diharapkan • Mahasiswa dapat memahami perbedaan paradigma sequiensial, prosedural, dan OOP, serta memahami keuntungan pendekatan OOP • Mahasiswa dapat memahami konsep Objek dan Class dalam pemrograman berorientasi obyek (OOP) • Mahasiswa mampu mendefiniskan suatu objek • Mahasiswa mampu membuat class dan instansiasi objek class serta penggunaannya dalam kasus sederhana • Mengenal dan memahami kata kunci: Class, Object, Atribut, Behaviour, Instansiasi (Instance of)
Kata Kunci / Keyword 1. Class (Kelas) 2. Object (Objek) 3. Attribute (Atribut) | Property | Variabel | Data Member 4. Behavior (Tingkah Laku) | Method | Function 5. Instance of (Instansiasi) Selesai materi kelas hari ini, semua istilah tersebut harus sudah dipahami.. Ingat2!
Paradigma Pemrograman 1.
Pemrograman Sequiensial / Terstruktur –
Kode program mengalir dari atas ke bawah, bisa bercabang, bisa berulang
2. Pemrograman Prosedural –
Penggunaan method/prosedur untuk fungsi-fungsi tertentu yang sering digunakan. (Terstruktur dapat dikatakan termasuk dalam Prosedural)
3. Pemrograman Berorientasi Objek –
Pendekatan sesuatu sebagai objek yg memiliki atribut dan behaviour (fungsi)
4. Pemrograman Berbasis Kejadian –
Seseuatu terjadi karena ada pemicunya: di-click, di-doubleclick, mouseOver, saat Start, dll
Object-Oriented Programming Languages
Pure OO Languages Eiffel, Actor, Emerald, JADE, Obix, Ruby, Python, Scala, Smalltalk, Self.
Hybrid OO Languages Delphi/Object Pascal, C++, Java, C#, VB.NET, Pascal, Visual Basic, MATLAB, Fortran, Perl, COBOL 2002, PHP, ABAP, Ada 95.
Mengapa OOP • Procedural programming fokus pada struktur, sementara pendekatan OOP pada modeling data. • Memodelkan bagaimana manusia memandang sesuatu sbg objek • Dunia nyata (real world) dapat dimodelkan sbg koleksi dari objek yang saling terkoneksi --> real world modelling in interconnected object • OOP mendukung konsep reusable of code (penggunaan ulang dari kode) • Sistem yang kompleks dapat dikembangkan lebih mudah (konsep abstraksi), lebih relieable, dan lebih mudah di-maintenance
Learning about Programming from Making Coffee
Sequiensial // Program membuat Kopi Main Program { Siapkan Gelas Masukkan Kopi 1 sendok makan Masukkan Gula 1 sendok makan Masukkan Air panas s/d 7/8 gelas Diaduk // proses Kopi siap Diminum // output }
// variabel // input // input // input
Procedural
Main Program { BuatKopi(); } Prosedur BuatKopi() { Siapkan Gelas Masukkan Kopi 1 sendok makan Masukkan Gula 1 sendok makan Masukkan Air panas s/d 7/8 gelas Diaduk Kopi siap Diminum }
Berorientasi Object • Pendekatan memandang sesuatu (things) sebagaimana manusia memandang itu sebagai sebuah objek (object) • Setiap objek memiliki atribut (property) dan behaviour (method) (tingkah laku)
Definiskan Atribut dan Behaviour Atribut: Nama, Umur, Baju, Celana, Tas, Botol Minum, Sepatu, Rambut, dll Behaviour: • Bisa tertawa • Bisa berjalan • Bisa berlari • Bisa menyapa • dll
Berorientasi Objek? Attribute: Topi, Baju, Jaket, Tas Punggung, Tangan, Kaki, Mata Behavior: Cara Jalan ke Depan Cara Jalan Mundur Cara Belok ke Kiri Cara Memanjat
Berorientasi Objek? Attribute (State):
Ban, Stir, Pedal Rem, Pedal Gas, Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin Cara Manjalankan Mobil Cara Memundurkan Mobil
Attribute à Variable(Member) Behavior à Method(Fungsi)
Sequiensial
Procedural
System.out.print(“Alas?”); int Alas = Input.Scan.nextInt(); System.out.print(“Tinggi?”); int Tinggi = Input.Scan.nextInt();
System.out.print(“Alas?”); int Alas = Input.Scan.nextInt(); System.out.print(“Tinggi?”); int Tinggi = Input.Scan.nextInt();
double Luas = Alas * Tinggi / 2; System.out.println(“Luas = “, Luas);
double Luas = hitungLuas(Alas,Tinggi); System.out.println(“Luas = “, Luas); ---double hitungLuas(int A, int T) { return A*T/2; };
Object Oriented Class Segitiga Class Segitiga { int Alas; int Tinggi; Segitiga (int A, int T) { Alas = A; Tinggi = T; } double HitungLuas() { return (Alas*Tinggi/2); Main Program { } Segitiga Segi3 = new Segitiga(10, 20); }
S.o.println(“Segitiga dengan”); S.o.println(“Alas = “, Segi3.Alas); S.o.println(“Tinggi= “, Segi3.Tinggi); S.o.println(“maka luasnya adalah: “); S.o.println(“Luas = “, Segi3.HitungLuas());
}
Perbedaan Class dan Object • Class: konsep dan deskripsi dari sesuatu – Class mendeklarasikan method yang dapat digunakan (dipanggil) oleh object
• Object: instance dari class, bentuk (contoh) nyata dari class – Object memiliki sifat independen dan dapat digunakan untuk memanggil method
• Contoh Class dan Object: – Class: mobil – Object: mobilnya pak Joko, mobilku, mobil berwarna merah
Perbedaan Class dan Object • 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)
Class à Cetakan Objek à Hasil cetakan
Class = Method + Variable Class Sepeda
gir
kecepatan
variable
tampilkan kecepatan ubah gir
method
Object = Method + Variable yg Memiliki Nilai Object Sepedaku
gir = 3
kecepatan = 10km/jam
tampilkan kecepatan () kecepatan = 10 km/jam ubah gir (2) gir = 5
instance variable
instance method
Attribute • Variable yang mengitari class, dengan nilai datanya bisa ditentukan di object • Variable digunakan untuk menyimpan nilai yang nantinya akan digunakan pada program • Variable memiliki jenis (tipe), nama dan nilai • Name, age, dan weight adalah atribute (variabel) dari class Person
Resume Day 1 • Why OOP: – Easy for modelling (design), easy for maintenance, reusable
• Class adalah model umum (template) dari sebuah model objek • Setiap kelas dapat memiliki atribut (data member | properti | variabel) dan behaviour (method | fungsi | prosedur) • Object adalah instansiasi dari sebuah kelas • Satu kelas dapat diinstansiasi menjadi banyak objek yang saling independen
Tugas Latihan • Definisikan sebuah kelas: (a) Mahasiswa; (2) Pegawai; (3) Mobil; (4) Rekening Bank • Tentukan apa saja atributnya • Tentukan apa saja methodnya
DAY 2 OBJECT & CLASS
Membuat Class, Object dan Memanggil Atribut public 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); } }
Latihan: Membuat Program dg Netbeans
1. Buka Netbeans IDE 2. Ikuti langkah berikut
Behavior • Setiap objek selain memiliki atribut, dapat juga memiliki behavior • Perilaku, tingkah laku, kemampuan, prosedur, fungsi, method • Biasanya digunakan untuk memproses atribut • Dalam konsep dasar pemrograman ada 2 model method – Procedure: kumpulan proses (statement) yang tidak mengembalikan suatu nilai (void) – Function: kumpulan proses yang mengembalikan suatu nilai dalam tipe data tertentu (ada tipe data)
Method • Method adalah urutan instruksi yang mengakses data dari object • Method melakukan: 1. 2. 3.
Manipulasi data Perhitungan matematika Memonitor kejadian dari suatu event
Method
Membuat dan Memanggil Method public class Mobil2{ String warna; int tahunProduksi; void
Mobil2.java
printMobil(){ System.out.println("Warna: " + warna); System.out.println("Tahun: " + tahunProduksi);
} } public class Mobil2Beraksi{ public static void main(String[] args){ Mobil2 mobilku = new Mobil2(); mobilku.warna = "Hitam"; mobilku.tahunProduksi = 2006; mobilku.printMobil(); } }
Mobil2Beraksi.java
Case: Mahasiswa Atribut
class Mahasiswa MahasiswaContoh { public Stringstatic nama; void main (String arg[]) {String nim; String Mahasiswa prodi; MhsTI1 = new Mahasiswa(); int MhsTI1.nama umur; = “Bela Luna”; } MhsTI1.nim = “1601”; MhsTI1.prodi = “TI”; MhsTI1.umur = 17; S.o.println(“Data Mahasiswa:”); S.o.println(“Nama :“, MhsTI1.nama); S.o.println(“NIM :“, MhsTI1.nim); S.o.println(“Prodi :“, MhsTI1.prodi); S.o.println(“Umur :“, MhsTI1.umur); }
Output: Data Mahasiswa: Nama : Bela Luna NIM : 1601 Prodi : TI Umur : 17
Case: Mahasiswa Atribut + method class MahasiswaContoh2 { class Mahasiswa public static void main (String arg[]) { { String nama; Mahasiswa MhsTI1 = new Mahasiswa(); String nim; MhsTI1.nama = “Bela Luna”; String prodi; MhsTI1.nim = “1601”; int umur; = “TI”; MhsTI1.prodi MhsTI1.umur = 17; void cetakData() { S.o.println(“Data Mahasiswa:”); S.o.p(“Nama :“, nama); MhsTI1.cetakData(); S.o.p(“NIM :“, nim); } S.o.p(“Prodi :“, prodi); S.o.p(“Umur :“, umur); } }
Output: Data Mahasiswa: Nama : Bela Luna NIM : 1601 Prodi : TI Umur : 17
Case: Mahasiswa Atribut + method + konstruktor class Mahasiswa { String nama; String nim; String prodi; int umur; Mahasiswa(String N, String M, String P, int U) { nama = N; nim = M; prodi = P; umur = U; } void cetakData() { S.o.p(“Nama :“, S.o.p(“NIM :“, S.o.p(“Prodi :“, S.o.p(“Umur :“, } }
nama); nim); prodi); umur);
Case: Mahasiswa Atribut + method + konstruktor class MahasiswaContoh2 { public static void main (String arg[]) { Mahasiswa MhsTI1 = new Mahasiswa(“Bela Luna”,”1601”,”TI”,17); S.o.println(“Data Mahasiswa:”); MhsTI1.cetakData(); }
Output: Data Mahasiswa: Nama : Bela Luna NIM : 1601 Prodi : TI Umur : 17
Case: Mahasiswa Atribut + method + konstruktor class MahasiswaContoh2 { public static void main (String arg[]) { Mahasiswa MhsTI1 = new Mahasiswa(“Bela Luna”,”1601”,”TI”,17); Mahasiswa MhsTI2 = new Mahasiswa(“Aliando”,”1602”,”TI”,18); S.o.println(“Data Mahasiswa 1:”); MhsTI1.cetakData(); S.o.println(“\n Data Mahasiswa 2:”); MhsTI2.cetakData(); }
Output: Data Mahasiswa 1: Nama : Bela Luna NIM : 1601 Prodi : TI Umur : 17 Data Mahasiswa 2: Nama : Aliando NIM : 1602 Prodi : TI Umur : 18
Latihan • Buat class Handphone, masukkan dalam package hp – Class Handphone berisi empat method di bawah: 1. 2. 3. 4.
hidupkan() lakukanPanggilan() kirimSMS() matikan()
– Isi masing-masing method dengan tampilan status menggunakan System.out.println()
• Buat class HandphoneBeraksi, dan panggil methodmethod diatas dalam class tersebut
Latihan: Contoh Hasil Tampilan Handphone hidup … Kring, kring, kring … panggilan dilakukan Dung, dung … sms berhasil terkirim Handphone mati …
public class Handphone{ void hidupkan(){ Handphone.java System.out.println(" Handphone hidup"); } void lakukanPanggilan(){ System.out.println(“Kring.. Kring.. Kring.. Panggilan dilakukan!"); } // lanjutkan method yang lainnya } public class HandphoneBeraksi{ handphoneBeraksi.java public static void main(String[] args){ Handphone telponKu = new Handphone(); telponKu.hidupkan(); telponKu.lakukanPanggilan(); telponKu.kirimSMS(); telponKu.matikan(); } }
Latihan • Kelas Handphone pada contoh sebelumnya dikembangkan dengan menambahkan: – Atribut: hidup [tipe: boolean] dan jumlahPulsa [double] – Method: isiPulsa(jumlah: double), cekPulsa()
• Update method lakukanPanggilan() dan kirimSMS() dengan menambahkan statemen seleksi untuk mengecek bahwa handphone dalam status hidup dan jumlah pulsa > 0 • Update method hidupkan() dan matikan() untuk merubah status hidup.
DIAGRAM CLASS PEMODELAN CLASS
Diagram Class • Digunakan untuk mendefiniskan sebuah kelas / memodelkan kelas Handphone NAMA CLASS Daftar Atribut
Daftar Method
-hidup: boolean; -jumlahPulsa: double +hidupkan(); +lakukanPanggilan(); +kirimSMS(); +matikan(); +isiPulsa(jumlah:double); +cekPulsa();
• Visibility – Attributes normally should be private, methods invoked by clients should be public – Visibility markers in UML • A plus sign (+) indicates public visibility • A minus sign (-) indicates private visibility • A sharp sign (#) indicates protected visibility
Contoh: Class Segitiga Buat class Segitiga yang menyimpan informasi alas dan tinggi, dan menyimpan hasil perhitungan luas dan keliling – Atribut: tinggi, alas, keliling, luas – Method: hitungLuas(), hitungKeliling(), cetakLuas(), cetak Keliling()
• Dalam kasus-kasus di OOP, nilai (variable) yang diketahui akan di-set sebagai atribut yang public, sementara nilai yang diperoleh dari hasil perhitungan diset private (hanya bisa diakses dari dalam fungsi tersebut)
TUGAS • Buat Diagram Class dan implementasi Program dalam bentuk Class dan Program penggunaan Class tersebut • Pilihan Topik – – – –
Handphone untuk messaging Handphone untuk browsing TV (pilih channel tv, set volume) Radio (pilih stasiun radio, set volume)
• Untuk kelas TI-A: – Deadline: Senin 6 Maret, tercetak di kelas – Ke email dg Subject: PLA-1-nim
Contoh Kasus Televisi Ilustrasi Penggunaan dan Outputnya Challenge: membuat kelasnya. Contoh Penggunaan Kelas Televisi Televisi tvKu = new Televisi(); tvKu.hidupkan(); tvKu.upChannel(); tvKU.upVolume(10); Contoh Output dari Penggunaan tvku.GantiChannel(7); Televisi Hidup tvKu.matikan(); Channel Aktif = 1. Volume = 50 Anda sekarang menonton Channel 2 Volume naik menjadi 60 Anda sekarang menonton Channel 7 Televisi Mati.. Hzhzhzhz…..
Terima Kasih
Referensi 1. 2. 3. 4. 5. 6. 7. 8.
Sharon Zakhour et al, The Java Tutorial Fourth Edition, http://java.sun.com/docs/books/tutorial Cay Horstmann, Big Java: Earl Objects 5th Edition, John Wiley & Sons, 2013 Deitel & Deitel, Java Howto Program 9th Edition, Prentice Hall, 2012 Richard M. Reese, Oracle Certified Associate Java SE 7 Programmer Study Guide, Packt Publishing, 2012 Walter Savitch, Absolute Java 5th Edition, Pearson Education, 2013 Mark Allen Weiss, Data Structures and Algorithm Analysis in Java 3rd Edition, Pearson Education, 2012 Anany Levitin, Introduction to the Design and Analysis of Algorithms 3rd Edition, Pearson Education, 2012 Ying Bai, Practical Database Programming with Java, John Wiley & Sons, 2011
Referensi • Slide presentasi ini dimodifikasi dari slide yang diperoleh dari website: romisatriowahono.net karya Bapak Romi Satrio Wahono