PEMROGRAMAN LANJUT
Fakultas Ilmu Komputer, Universitas Brawijaya
KONSEP CLASS & OBJEK
pada
Object Oriented Programming
Dr. Eng. Herman Tolle, ST., MT
Sistem Informasi FILKOM UB Semester Genap 2016/2017
Pemrograman Lanjut
1. Nama Matakuliah : Pemrograman Lanjut
2. Kode/SKS : CSD60022 / 5 (4-1) SKS
3. Semester : Genap
4. Kelas : A
5. Program Studi : Teknologi Informasi –Universitas Brawijaya 6. 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 Dasar 2. Konsep OOP,
3. Class dan object,
4. Diagram UML Class,
5. Fungsi Overloading dan Konstruktor,
6. Enkapsulasi,
7. Inheritance/pewarisan, 8. Polymorphism
9. Interface & Abstract Class
10. Generic Class
11. Pengantar ke Graphical User Interface (GUI)
Pemrograman
Berorientasi
Info Pertemuan
Tanggal
: 27 Februari 2017
Ruang & Waktu
: E1.2, Jam 14.30 – 16.00
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
Sequiensial
// Program membuat Kopi Main Program
{
Siapkan Gelas // variabel
Masukkan Kopi 1 sendok makan // input
Masukkan Gula 1 sendok makan // input
Masukkan Air panas s/d 7/8 gelas // input
Diaduk // proses
Kopi siap Diminum // output
} 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
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 ProduksiBehavior:
Cara Menghidupkan Mesin Cara Manjalankan Mobil Cara Memundurkan MobilAttribute à 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; };
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()); }
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
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
Class = Method + Variable
variable
kecepatan
gir
tampilkan kecepatan
ubah gir
method
Class
Sepeda
Object = Method + Variable yg Memiliki Nilai
instance
variable
kecepatan = 10km/jamgir = 3
tampilkan kecepatan ()
kecepatan = 10 km/jam
ubah gir (2)
gir = 5
instance
method
Object
Sepedaku
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
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(); /* memanggil atribut dan memberi nilai */ 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 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. Manipulasi data
2. Perhitungan matematika
Membuat dan Memanggil Method
public 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 Luna NIM : 1601Prodi : TI Umur : 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: Mahasiswa
Atribut + method Output: Data Mahasiswa: Nama : Bela Luna NIM : 1601Prodi : TI Umur : 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: Mahasiswa
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: Mahasiswa
Atribut + method + konstruktor
Output:
Data Mahasiswa: Nama : Bela Luna NIM : 1601
Prodi : TI Umur : 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: Mahasiswa
Atribut + method + konstruktor
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. 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 dilakukan
Dung, dung … sms berhasil terkirim
public class Handphone{
void hidupkan(){
System.out.println(" Handphone hidup"); }
void lakukanPanggilan(){
System.out.println(“Kring.. Kring.. Kring.. Panggilan dilakukan!"); }
// lanjutkan method yang lainnya
} public class HandphoneBeraksi{ public static void main(String[] args){ Handphone telponKu = new Handphone(); 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 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 Televisi
Ilustrasi Penggunaan dan Outputnya Challenge: membuat kelasnya.
Contoh Penggunaan Kelas Televisi
Televisi tvKu = new Televisi(); tvKu.hidupkan();
tvKu.upChannel(); tvKU.upVolume(10); tvku.GantiChannel(7); tvKu.matikan();
Contoh Output dari Penggunaan
Televisi Hidup
Channel Aktif = 1. Volume = 50 Anda sekarang menonton Channel 2 Volume naik menjadi 60
Anda sekarang menonton Channel 7 Televisi Mati.. Hzhzhzhz…..