T1 Introduction to OOP
T1 Introduction to OOP
Pengenalan OOP
Oleh Politeknik Elektronika Negeri Surabaya
Konten
• Pengenalan konsep OOP
• Paradigma Pemrograman
• Perbedaan OOP dan terstruktur
• Capaian Pembelajaran
• Konsep utama OOP
• Konsep obyek, kelas, variabel, dan method
• Mengorganisasi program menjadi element yang disebut
sebagai class, dan bagaimana class ini digunakan untuk
membuat obyek.
Deskripsi
• Mata kuliah ini berisi tentang paradigma pemrograman yang
berorientasi obyek.
• Bagaimana cara menyusun langkah-langkah pemecahan masalah
menggunakan konsep class dan obyek, aturan-aturan berorientasi
obyek, dan menggunakan tool bahasa pemrograman Java & class
diagram beserta berbagai studi kasusnya dalam praktikum
Kompetensi
• Mampu membandingkan paradigma OOP dengan Struktural
• Mampu menjelaskan konsep utama OOP
• Mampu melakukan langkah-langkah pemecahan masalah
menggunakan OOP
• Mampu membuat program menggunakan konsep OOP dengan
bahasa Java
• Mampu menggunakan berbagai fitur Java lainnya secara umum
• Mampu menggunakan class diagram pada studi kasus
Generasi Bahasa Pemrograman
• Generasi 1: Machine / Binary
• Generasi 2: Assembly
• Generasi 3: (High Level)
• Java, C++, Pascal, C
• Generasi 4 (Special Purpose Language)
• Report Generator: Crystal Reports, RAVE
• Forms Generator: Delphi, VB, C#, FoxPro
• CASE: Rational Rose, Poseidon
• DBMS: FoxPro, Oracle, SQL
Paradigma Pemrograman
• Suatu cara berpikir dalam membuat program komputer yang
direpresentasikan dalam sejumlah konsep dan teknik pemrograman
• Terdapat banyak paradigma pemrograman
• Suatu bahasa pemrograman bisa mendukung lebih dari satu
paradigma pemrograman
Contoh Bahasa Pemrograman
• Procedural
• Pascal, C, COBOL, Fortran, ALGOL, Basic, PHP, dll.
• Object Oriented
• Java, C#, C++, Objective C, PHP, Visual Basic.Net, Object Pascal, dll.
• Pada C++, bisa procedural, bisa juga Object Oriented !
Bahasa yang mendukung OOP
Framework Berbasis OOP yang Populer
OOP
• Paradigma pemrograman yg menggunakan pendekatan berorientasi
pada obyek
• Jadi permasalahan yang ada dipandang sebagai obyek
• Obyek => suatu bentuk nyata yang dapat dibayangkan, memiliki
segala sesuatu yang memang melekat padanya, dan dapat melakukan
tindakan tertentu
Pemrograman Berorientasi Obyek
• Fungsi dan data bukan menjadi dua hal yang terpisah.
• Fungsi dan data menjadi satu kesatuan yang disebut sebagai obyek aktif.
• Cara pandang program adalah serangkaian obyek yang bekerjasama untuk menyelesaikan suatu problem.
• Kegiatan yang harus dilakukan ketika menyelesaikan masalah:
• Mengidentifikasi obyek2 apa saja yang terlibat
• Menententukan jenis dan jumlah class yang harus dibuat
F(1)
A
F(2)
C
….
Procedural / Struktural vs OOP
• Object Oriented
• Membuat class
• Segi empat memiliki panjang dan lebar variable/field/property/atribut
• Segi empat bisa dihitung luasnya dengan rumus panjang * lebar method
• Segi empat bisa dihitung kelilingnya dengan rumus 2*panjang+2 *lebar method
• Menyusun / merancang obyek yang akan dioperasikan
• Langkahnya:
• Buat class SegiEmpat
• Buat obyek bernama “kertas” dari kelas SegiEmpat, isikan data panjang dan lebar
• Meminta obyek segi empat “kertas” menghitung luasnya
class Persegi{ class TestPersegi{
int panjang; public static void main(String []a){
int lebar; Persegi x = new Persegi(); // membuat obyek x
x.panjang = 10; // x.setPanjang(10);
String warna; x.warna = “putih”;
//Int luas; x.lebar=15;
//Int keliling; System.out.println(“luas x:” + x.hitungLuas());
System.out.println(“kel x:” + x.hitungKeliling());
void setPanjang(int p){
this.panjang = p; Persegi y = new Persegi(); // membuat obyek x
}//setter Lingkaran k = new Lingkaran();
}
}
int getPanjang(){
return this.panjang;
}//getter class Lingkaran{
float jari;
int hitungLuas(){
return this.panjang*this.lebar; int hitungLuas(){
} return Math.PI*this.jari*this.jari;
}
int hitungKeliling(){
return (2*this.panjang+2 *this.lebar); int hitungKeliling(){
} return (2*Math.PI*this.jari);
} }
NAMING CONVENTION var, method, class, }
interface
Pemrograman berorientasi obyek
B,C
F(1)
A,B
F(2)
….
Obyek segi empat ”kertas” dibuat dari class
SegiEmpat
• Class: SegiEmpat
• Atribut: sifat atau identitas yg melekat
• Panjang
• Lebar
• Behaviour: tingkah laku / kegiatan
• Hitung Luas
• Hitung Keliling
Obyek dalam PBO
• Segi Empat merupakan salah satu dari sekian banyak bidang 2 dimensi.
• Contoh bidang 2 dimensi lainnya
• Segitiga
• Lingkaran
• Belah Ketupat
• Segilima
• Segienam
• Kebanyakan atribut dan behaviour untuk benda 2 dimensi adalah mirip
• Namun bisa juga spesifik untuk masing-masing bendanya
• Sangat tergantung bentuk bidangnya
Contoh class dan obyek
Learn Anytime & Anywhere, Java: Basic Syntax: Java Program, https://www.leaxr.com
Contoh OOP : Class
Class Diagram OOP: Inheritance
Procedural / Struktural vs OOP
• Procedural
• Lebih cepat untuk memecahkan masalah-masalah berskala kecil
• Mudah membuatnya
• Object Oriented
• Scalable, cocok untuk masalah-masalah berskala besar
• Pengembangannya mudah
Pemrograman Berorientasi Obyek
• Fungsi dan data bukan menjadi dua hal yang terpisah.
• Fungsi dan data menjadi satu kesatuan yang disebut sebagai obyek
aktif.
• Cara pandang program adalah serangkaian obyek yang
bekerjasama untuk menyelesaikan suatu problem.
Kata kunci OOP
• Class template untuk membuat obyek.
• Obyek dapat berupa Class atau Instances. Harus berasal dari entitas atau konsep
dunia nyata.
• Atribut/variable/data/field identitas unik dari obyek
• Method/fungsi/behaviour fungsi untuk pengaksesan atribut atau tugas tertentu
• Enkapsulasi menyembunyikan struktur data dan implementasi suatu class.
• Inheritansi merepresentasikan keterhubungan struktural antar class
• Polymorphism kemampuan untuk merepresentasikan 2 bentuk obyek yang
berbeda
Apakah Class?
• Definisi class: merupakan template untuk membuat obyek.
• Definisi class: merupakan prototipe / blue prints yang mendefinisikan
variabel – variabel dan method – method secara umum.
• Obyek merupakan hasil instansiasi dari suatu kelas.
• Proses pembentukan obyek dari suatu class disebut dengan
instantiation.
• Obyek disebut juga instances.
Apakah Obyek?
• Semua benda yang ada di dunia nyata dapat dianggap sebagai obyek.
• Contoh : rumah saya, mobil saya, sepeda motor saya, gelas saya,
computer saya, meja saya dll.
• Contoh :
• Class : Planet
• Obyek: merkurius, venus, bumi, mars, jupiter dll.
Karakteristik Obyek
• Setiap obyek memiliki state sebagai status (atribut).
• Setiap obyek memiliki tingkah laku (method)
• Contoh: obyek sepeda
• Memiliki atribut : pedal, roda, jeruji, warna, jumlah roda.
• Memiliki method : kecepatanya menaik, kecepatannya menurun,
perpindahan gigi sepeda.
Karakteristik Obyek
• Penggambaran pemrograman berorientasi obyek = penggambaran
pada dunia nyata.
• Pada pemrograman berorientasi obyek:
• State disimpan pada variabel
• Tingkah laku disimpan pada method
Atribut
• Definisi atribut : adalah data yang membedakan antara obyek satu
dengan yang lain.
• Contoh: VolcanoRobot A volcanic exploration vehicle, mempunyai
atribut sebagai berikut:
• Status exploring, moving, returning home
• Speed 1, 2, 3 dll in miles per hour)
• Temperature 100, 120, 130 dll (in Fahrenheit degrees)
• Dalam class atribut disebut juga dengan variabel.
Atribut
• Instance variable: adalah atribut untuk tiap obyek dari class yang sama.
• Tiap obyek mempunyai dan menyimpan nilai atributnya sendiri.
• Jadi tiap obyek dari class yang sama boleh mempunyai nilai yang sama atau beda.
• Class variable: adalah atribut untuk semua obyek yang dibuat dari class yang
sama.
• Semua obyek mempunyai nilai atribut yang sama.
• Jadi semua obyek dari class yang sama mempunyai hanya satu nilai yang value
nya sama.
Tingkah Laku
• Tingkah laku adalah hal – hal yang bisa dilakukan oleh obyek dari
suatu class.
• Tingkah laku dapat digunakan untuk mengubah nilai atribut suatu
obyek, menerima informasi dari obyek lain, dan mengirim informasi
ke obyek lain untuk melakukan suatu task.
• Contoh: VolcanoRobot
• Check current temperature
• Begin a survey
• Report its current location
• Dalam class, tingkah laku disebut juga sebagai method.
Tingkah Laku
• Method: adalah serangkaian statements dalam suatu class yang
menghandle suatu task tertentu.
• Cara obyek berkomunikasi dengan obyek lain adalah dengan
menggunakan method.
Contoh: class, object, attributtes, dan behavior
nama class
Attributes/instance variable
Methods/behavior
Contoh: lanjutan
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void printStates() {
System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
}
}
class BicycleDemo {
public static void main(String[] args) {
// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
Konsep Dasar OOP
• Enkapsulasi (Encapsulation)
• Penurunan (Inheritance)
• Polimorfisme (Polymorphism)
Enkapsulasi
• Definisi enkapsulasi: Pembungkusan variabel dan method dalam
sebuah obyek yang terlindungi serta menyediakan interface untuk
mengakses variabel tersebut.
• Variabel dan method yang dipunyai suatu obyek, bisa ditentukan hak
aksesnya.
Enkapsulasi
• Contoh: jam tangan
• Penting sekali untuk mengetahui waktu.
• Cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau
bertenaga gerak tidaklah penting kita ketahui.
• Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan
dari struktur dalam bahasa C.
Pewarisan
• Definisi : merupakan pewarisan atribut dan method dari sebuah class
ke class lainnya.
• Class yang mewarisi superclass
• Class yang diwarisi subclass
• Subclass bisa berlaku sebagai superclass bagi class lainya multilevel
inheritance.
Pewarisan
Contoh : terdapat class sepeda dan sepeda gunung.
• Sepeda superclass
• Sepeda gunung subclass
• Sepeda gunung memiliki variabel dan method yang dimiliki oleh sepeda.
• Prinsip : Persamaan-persamaan yang dimiliki oleh beberapa kelas
dapat digabungkan dalam sebuah class induk sehingga setiap kelas
yang diturunkannya memuat hal-hal yang spesifik untuk kelas yang
bersangkutan.
Parent class: Bidang
Pewarisan - var: warna, luas, keliling
- method: hitLuas(), hitKel(), tampilWarna()
Child class:
- Persegi
- var: panjang, lebar
Sepeda - Lingkaran
- var: jari
- Segitiga
- var: tinggi, alas