pemrograman lanjut - · pdf filepemrograman lanjut fakultas ilmu ... delphi/objectpascal, c++,...
TRANSCRIPT
PEMROGRAMAN LANJUT
FakultasIlmuKomputer,UniversitasBrawijaya
KONSEP CLASS & OBJEK pada Object Oriented Programming
Dr.Eng.HermanTolle,ST.,MT
Sistem Informasi FILKOM UBSemester Genap 2016/2017
Pemrograman Lanjut
1. Nama Matakuliah : Pemrograman Lanjut2. Kode/SKS : CSD60022 / 5 (4-1) SKS 3. Semester : Genap4. Kelas : A5. Program Studi : Teknologi Informasi –Universitas Brawijaya6. Dosen : Dr. Eng. Herman Tolle, ST., MT.7. Asisten :8. Jadwal Kuliah :
– 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. Review Pemrograman Dasar2. Konsep OOP, 3. Class dan object, 4. Diagram UML Class, 5. Fungsi Overloading dan Konstruktor,6. Enkapsulasi, 7. Inheritance/pewarisan, 8. Polymorphism9. Interface & Abstract Class10. Generic Class11. Pengantar ke Graphical User Interface (GUI)
PemrogramanBerorientasi
Objek
Info Pertemuan
Tanggal : 27 Februari 2017Ruang & Waktu : E1.2, Jam 14.30 – 16.00Materi : 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
Member4. Behavior (Tingkah Laku) | Method | Function5. Instance of (Instansiasi)
Selesai materi kelas hari ini, semua istilah tersebut harussudah 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 KopiMain Program{
Siapkan Gelas // variabelMasukkan Kopi 1 sendok makan // inputMasukkan Gula 1 sendok makan // inputMasukkan Air panas s/d 7/8 gelas // inputDiaduk // prosesKopi siap Diminum // output
}
Main Program {
BuatKopi();}
Prosedur BuatKopi(){
Siapkan GelasMasukkan Kopi 1 sendok makanMasukkan Gula 1 sendok makanMasukkan Air panas s/d 7/8 gelasDiadukKopi siap Diminum
}
Procedural
Berorientasi Object
• Pendekatan memandang sesuatu (things) sebagaimanamanusia 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, BotolMinum, Sepatu, Rambut, dll
Behaviour:• Bisa tertawa• Bisa berjalan• Bisa berlari• Bisa menyapa• dll
Berorientasi Objek?
Attribute:Topi,Baju,Jaket,TasPunggung,Tangan,Kaki,Mata
Behavior:Cara JalankeDepanCara JalanMundurCara BelokkeKiriCara Memanjat
Berorientasi Objek?
Attribute(State):Ban,Stir,PedalRem,PedalGas,Warna,TahunProduksiBehavior:CaraMenghidupkanMesinCaraManjalankanMobilCaraMemundurkanMobil
Attributeà Variable(Member)BehavioràMethod(Fungsi)
Sequiensial
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);
System.out.print(“Alas?”);int Alas = Input.Scan.nextInt();System.out.print(“Tinggi?”);int Tinggi = Input.Scan.nextInt();
double Luas = hitungLuas(Alas,Tinggi); System.out.println(“Luas = “, Luas);
----double hitungLuas(int A, int T){ return A*T/2; };
Procedural
Object Oriented
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());
}
Class Segitiga
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 à CetakanObjek à Hasil cetakan
Class = Method + Variable
variablekecepatan
gir
tampilkankecepatan
ubahgir method
ClassSepeda
Object = Method + Variable yg Memiliki Nilai
instance variable
kecepatan =10km/jam
gir =3
tampilkankecepatan ()kecepatan=10km/jam
ubah gir (2)gir=5
instancemethod
ObjectSepedaku
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;
}
publicclassMobilBeraksi{publicstaticvoidmain(String[]args){
//MembuatobjectMobilmobilku=newMobil();
/*memanggilatributdanmemberinilai*/mobilku.warna="Hitam";mobilku.tahunProduksi=2006;System.out.println("Warna:"+mobilku.warna);System.out.println("Tahun:"+mobilku.tahunProduksi);
}}
Mobil.java
MobilBeraksi.java
Latihan: Membuat Program dg Netbeans
1. Buka Netbeans IDE2. Ikuti langkah berikut
Behavior
• Setiap objek selain memiliki atribut, dapat juga memilikibehavior
• 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 tidakmengembalikan suatu nilai (void)
– Function: kumpulan proses yang mengembalikan suatu nilai dalamtipe data tertentu (ada tipe data)
Method
• Method adalah urutan instruksi yang mengakses data dari object
• Method melakukan:1. Manipulasi data2. Perhitungan matematika3. Memonitor kejadian dari suatu event
Method
Membuat dan Memanggil Methodpublic 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){
Mobil2 mobilku = new Mobil2();
mobilku.warna = "Hitam";mobilku.tahunProduksi = 2006;mobilku.printMobil();
}}
Mobil2.java
Mobil2Beraksi.java
class MahasiswaContoh{public static void main (String arg[]) {Mahasiswa MhsTI1 = new Mahasiswa();MhsTI1.nama = “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);
}
Case: Mahasiswa
class Mahasiswa{
String nama;String nim;String prodi;int umur;
}
Atribut
Output:Data Mahasiswa:Nama : Bela LunaNIM : 1601Prodi : TIUmur : 17
class Mahasiswa{
String nama;String nim;String prodi;int umur;
void cetakData(){S.o.p(“Nama :“, nama);S.o.p(“NIM :“, nim);S.o.p(“Prodi :“, prodi);S.o.p(“Umur :“, umur);}
}
class MahasiswaContoh2{public static void main (String arg[]) {Mahasiswa MhsTI1 = new Mahasiswa();MhsTI1.nama = “Bela Luna”;MhsTI1.nim = “1601”;MhsTI1.prodi = “TI”;MhsTI1.umur = 17;
S.o.println(“Data Mahasiswa:”);MhsTI1.cetakData();
}
Case: MahasiswaAtribut + method
Output:Data Mahasiswa:Nama : Bela LunaNIM : 1601Prodi : TIUmur : 17
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 :“, nama);S.o.p(“NIM :“, nim);S.o.p(“Prodi :“, prodi);S.o.p(“Umur :“, umur);}
}
Case: MahasiswaAtribut + 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();
}
Case: MahasiswaAtribut + method + konstruktor
Output:Data Mahasiswa:Nama : Bela LunaNIM : 1601Prodi : TIUmur : 17
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();
}
Case: MahasiswaAtribut + method + konstruktor
Output:Data Mahasiswa 1:Nama : Bela LunaNIM : 1601Prodi : TIUmur : 17
Data Mahasiswa 2:Nama : AliandoNIM : 1602Prodi : TIUmur : 18
Latihan
• Buat class Handphone, masukkan dalam package hp– Class Handphone berisi empat method di bawah:
1. hidupkan()2. lakukanPanggilan()3. kirimSMS()4. matikan()
– Isi masing-masing method dengan tampilan status menggunakan System.out.println()
• Buat class HandphoneBeraksi, dan panggil method-method diatas dalam class tersebut
Latihan: Contoh Hasil Tampilan
Handphone hidup …Kring, kring, kring … panggilan dilakukanDung, dung … sms berhasil terkirimHandphone mati …
public class Handphone{void hidupkan(){
System.out.println(" Handphone hidup");}
void lakukanPanggilan(){System.out.println(“Kring.. Kring.. Kring.. Panggilan dilakukan!");
}// lanjutkan method yang lainnya
}
publicclassHandphoneBeraksi{publicstaticvoidmain(String[]args){
HandphonetelponKu =newHandphone();telponKu.hidupkan();telponKu.lakukanPanggilan();telponKu.kirimSMS();telponKu.matikan();
}}
Handphone.java
handphoneBeraksi.java
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.
PEMODELAN CLASSDIAGRAM CLASS
Diagram Class
• Digunakan untuk mendefiniskan sebuah kelas / memodelkan kelas
NAMA CLASS
Daftar Atribut
Daftar Method
Handphone
-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 TelevisiIlustrasi Penggunaan dan OutputnyaChallenge: membuat kelasnya.
Contoh Penggunaan Kelas TelevisiTelevisi tvKu = new Televisi();tvKu.hidupkan();tvKu.upChannel();tvKU.upVolume(10);tvku.GantiChannel(7);tvKu.matikan();
Contoh Output dari PenggunaanTelevisi HidupChannel Aktif = 1. Volume = 50
Anda sekarang menonton Channel 2Volume naik menjadi 60Anda sekarang menonton Channel 7Televisi Mati.. Hzhzhzhz…..
Terima Kasih
Referensi1. Sharon Zakhour et al, The Java Tutorial Fourth Edition,
http://java.sun.com/docs/books/tutorial2. Cay Horstmann, Big Java: Earl Objects 5th Edition, John Wiley &
Sons, 20133. Deitel & Deitel, Java Howto Program 9th Edition, Prentice Hall, 20124. Richard M. Reese, Oracle Certified Associate Java SE 7 Programmer
Study Guide, Packt Publishing, 20125. Walter Savitch, Absolute Java 5th Edition, Pearson Education, 20136. Mark Allen Weiss, Data Structures and Algorithm Analysis in Java
3rd Edition, Pearson Education, 20127. Anany Levitin, Introduction to the Design and Analysis of
Algorithms 3rd Edition, Pearson Education, 20128. 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