Materi Oop1
Materi Oop1
Bahasa Pemrograman?
Komputer bekerja seperti switching dan hanya mengenali 0 dan 1 Manusia tidak (paham) berbicara dengan bahasa 0 dan 1
Perlu bahasa pemrograman yang dapat menjadi perantara percakapan antara komputer dan manusia Bahasa pemrograman diubah ke dalam bahasa yang dipahami oleh komputer dengan menggunakan interpreter atau kompiler
Compiler or Interpreter? 1. Compiler: Mengkompilasi source code menjadi bentuk file yang bisa dieksekusi 2. Interpreter: Mengkompilasi dan menjalankan source code secara langsung
C Language (Compiler)
#include <stdio.h>
main() { printf(Hallo); }
C Compiler
C Program
java
(Java Interpreter)
Paradigma Pemrograman
Sudut pandang dan style pemrograman berhubungan dengan bagaimana sebuah masalah diformulasikan dalam bahasa pemrograman
1. Functional Programming: Urutan fungsi secara sekuensial (Scheme, Lisp) 2. Procedural Programming: Pemecahan masalah berdasarkan prosedural kerja yg terkumpul dalam unit pemrograman bernama fungsi (C, Pascal)
3. Object-Oriented Programming: Koleksi object yang saling berinteraksi . Class adalah unit pemrograman (Java, C#, C++)
Java Version
Version 1.0 1.1 1.2 1.3 Year 1996 1997 1998 2000 Inner classes Swing, Collections Performance enhancements Important New Features
1.4
5 6 7
2002
2004 2006 2010
Assertions, XML
Generic classes, enhanced for loop, auto-boxing, enumerations Library improvements Small language changes and library improvements
Why Java?
Simple and familiar object oriented programming Architecture neutral (platform independent) Open Source First rank in TIOBE Index De-Facto standard programming language in education
2. Code Editor:
1. Text Editor:
TextPad, Notepad++
Hello.java
Hello.class
Web Server
C:\javac HelloWorld.java
<HTML> <HEAD> <TITLE>A Simple Program</TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET> </BODY> </HTML>
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
variable
kecepatan = 10km/jam
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
Mobil.java
}
public class MobilBeraksi{ public static void main(String[] args){ // Membuat object Mobil mobilku = new Mobil();
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); } }
Method
Method adalah urutan instruksi yang mengakses data dari object Method melakukan:
1. Manipulasi data 2. Perhitungan matematika 3. Memonitor kejadian dari suatu event
Method
Mobil2.java
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(); }
Mobil2Beraksi.java
Latihan
Buat class Handphone yang berisi empat method:
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
Parameter
Sepeda akan berguna apabila ada object lain yang berinterasi dengan sepeda tersebut Object software berinteraksi dan berkomunikasi dengan object lain dengan cara mengirimkan message atau pesan Pesan adalah suatu method, dan informasi dalam pesan dikenal dengan nama parameter
1. You 2. YourBicycle
3. changeGears
4. lowerGear
Sepeda.java
public class Sepeda{ int gir;
}
// method (accessor) int getGir() { return gir; } }
SepedaBeraksi.java
public class SepedaBeraksi{ public static void main(String[] args) { // Membuat object
Pengurangan: 10-5 = 5
Perkalian: 10*20 = 200 Pembagian: 21/2 = 10
Variasi Tampilan
pertambahan(int a, int b){ System.out.println(a + + + b + = + (a+b))
}
pertambahan(int a, int b){ System.out.println(Hasil = + (a+b)) } pertambahan(int a, int b){
int hasil = a + b;
System.out.println(Hasil = + hasil) }
Konstruktor -1 Method yang digunakan untuk memberi nilai awal pada saat object diciptakan
Dipanggil secara otomatis ketika new digunakan untuk membuat instan class
Sifat konstruktor:
Nama konstruktor sama dengan nama class Tidak memiliki nilai balik dan tidak boleh ada kata kunci void
Mobil.java
this.warna = warna;
this.tahunProduksi = tahunProduksi; } public void info(){
public class MobilKonstruktor{ MobilKonstruktor.java public static void main(String[] args){ Mobil mobilku = new Mobil(Merah, 2003); mobilku.info(); } }
Latihan
1. Buat class Bank
Buat konstruktor class Bank dengan parameter: saldo
2. Buat class BankBeraksi, tetapkan saldo awal lewat konstruktur Rp. 100000, jalankan 3 method di atas, dan tampilkan proses sebagai berikut:
Selamat Datang di Bank ABC Saldo awal: Rp. 100000 Simpan uang: Rp. 500000 Saldo saat ini: Rp. 600000 Ambil uang: Rp. 150000 Saldo saat ini: Rp. 450000
Abstraction
Cara kita melihat suatu sistem dalam bentuk yang lebih sederhana, yaitu sebagai suatu kumpulan subsistem (object) yang saling berinteraksi.
Mobil adalah kumpulan sistem pengapian, sistem kemudi, sistem pengereman
Encapsulation
Mekanisme menyembunyikan suatu proses dan data dalam sistem untuk menghindari interferensi, dan menyederhanakan penggunaan proses itu sendiri
Tongkat transmisi (gigi) pada mobil Tombol on/off/pengaturan suhu pada AC
Class access level (public, protected, privat) adalah implementasi dari konsep encapsulation
Enkapsulasi data dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private
2. mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut
protected
public
Encapsulation
Enkapsulasi data juga dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private 2. mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut
Sepeda.java
public class Sepeda{ int gir; void setGir(int pertambahanGir) { gir= gir+ pertambahanGir; } int getGir() { return gir; } }
SepedaBeraksi.java
public class SepedaBeraksi{ public static void main(String[] args) {
Sepeda.java
public class Sepeda{ private int gir; // access modifier private pada instance variable void setGir(int pertambahanGir) { gir= gir+ pertambahanGir; } int getGir() { return gir; } }
Inheritance (Pewarisan)
Suatu class dapat mewariskan atribut dan method kepada class lain (subclass), serta membentuk class hierarchy Penting untuk Reusability
Sepeda.java
public class Sepeda{ private int gir; void setGir(int pertambahanGir) { gir= gir+ pertambahanGir; } int getGir() { return gir; } }
private int sadel; void setSadel (int jumlah) { sadel = getGir() - jumlah;
}
int getSadel(){ return sadel; } }
SepedaGunung.java
SepedaGunungBeraksi.java
2. Buat class MatematikaCanggihBeraksi yang memanggil method pertambahan, perkalian dan modulus
Polymorphism
Kemampuan untuk memperlakukan object yang memiliki perilaku (bentuk) yang berbeda Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda parameter (tipe dan atau jumlah) 2. Overriding: Kemampuan subclass untuk menimpa method dari superclass, yaitu dengan cara menggunakan nama dan parameter yang sama pada method
Polymorphism Overloading
class Mobil { String warna; int tahunProduksi;
mobilku.info();
public Mobil(String warna, int tahunProduksi){
this.warna = warna; this.tahunProduksi = tahunProduksi; } public Mobil(){ } void info(){
System.out.println("Warna: " + warna); System.out.println("Tahun: " + tahunProduksi);
} }
Polymorphism Overloading
class Lingkaran{ void gambarLingkaran(){ } void gambarLingkaran(int diameter){ ... }
Polymorphism - Overriding
public class Sepeda{ private int gir; void setGir(int pertambahanGir) { gir= gir+ pertambahanGir; } int getGir() { return gir; } }
Polymorphism - Overriding
public class SepedaGunung extends Sepeda{ public class SepedaGunungBeraksi { public static void main(String[] args) {
SepedaGunung sg=new SepedaGunung();
SepedaGunung.java
SepedaGunungBeraksi.java
2.
Lakukan overloading pada Method yang ada (pertambahan, pengurangan, perkalian, pembagian, modulus)
Tambahkan method baru bertipe data double (pecahan) dan memiliki 3 parameter Uji di kelas MatematikaBeraksi dengan parameter pecahan: 12.5, 28.7, 14.2 Misalnya:
pertambahan(12.5, 28.7, 14.2) pertambahan(23, 34) pertambahan(12, 28, 14) pertambahan(3.4, 4.9)
3. 4. 5.
Matematika.java
public class Matematika{ void pertambahan (int a, int b){ int hasil= a + b; System.out.println(hasil: + hasil); } void pertambahan (double a, double b, double c){ int hasil= a + b + c; System.out.println(hasil: + hasil); } ... }
Pengorganisasian Class
Package, Interface, JAR, Java API Library and Documentation
Packages
Package adalah koleksi dari beberapa class dan interface yang berhubungan, dan menyediakan proteksi akses dan pengelolaan namespace 1 package adalah 1 folder di file system Package berguna untuk mengorganisir file dalam suatu project atau library Nama package menggunakan lowercase Nama package mengikuti nama domain (perusahaan) dengan susunan terbalik
Contoh: com.brainmatics.kendaraan
Packages
Packages
Base directory: holds your program's Files Path name, relative to base directory, must match package name:
com/horstmann/bigjava/Financial.java
Budi.java
package kelasku; public class Budi{ public void info(){
System.out.println(Kelas Budi);
}
Joko.java
package kelasku; public class Joko{ public void info(){
System.out.println(Kelas Joko);
}
PaketBeraksi.java
import kelasku.Joko;
PaketBeraksi.java
import kelasku.*;
objectJoko.info();
} }
kelasku
Budi.java Joko.java
Interface
Interface digunakan apabila kita ingin menentukan apa yang harus dilakukan oleh suatu class tapi tidak menentukan bagaimana cara untuk melakukannya
Interface sebenarnya sama dengan class, tapi hanya memiliki deklarasi method tanpa implementasi
InterfaceLampu.java
interface InterfaceLampu{ public static final int KEADAAN_HIDUP=1; public static final int KEADAAN_MATI=0;
Lampu.java
public class Lampu implements InterfaceLampu{ int statusLampu; public void hidupkan(){ if (statusLampu == KEADAAN_MATI){ statusLampu = KEADAAN_HIDUP; System.out.println("Hidupkan Lampu! --> Lampu Hidup"); }else{ System.out.println("Hidupkan Lampu! --> Lampu Sudah Hidup Kok");} } public void matikan(){ if (statusLampu == KEADAAN_HIDUP){ statusLampu = KEADAAN_MATI; System.out.println("Matikan Lampu! --> Lampu Mati"); }else{ System.out.println("Matikan Lampu! --> Lampu Sudah Mati Kok"); } } }
LampuBeraksi.java
public class LampuBeraksi{ public static void main(String[] args){
Latihan: InterfaceAC
Buat program serupa dengan InterfaceBeraksi.java tapi untuk ACBeraksi.java Masukkan method-method di bawah ke dalam ACBeraksi.java
matikanAC() dan hidupkanAC() dinginkanAC() dan panaskanAC ()
JAR menampung file .class dan file lain yang dibutuhkan supaya program bisa berjalan dengan baik
Kompresi dapat dilakukan setelah semua class dikompilasi
Penggunaan JAR
Perintah Membuat file JAR:
jar cvf namafile.jar file1.class file2.class
Keterangan Pilihan:
c = create (membuat file JAR) v = verbose (menampilkan informasi pada layar) f = filename (daftar nama file yang akan dikompresi)
JAR Manifest
JAR Manifest dibuat secara otomatis dan diletakkan di dalam folder META-INF pada file kompresi yang kita buat JAR Manifest digunakan untuk mendeskripsikan file-file yang terdalam dalam file JAR
Purpose
Sample Class
Math
Random PrintStream Color Applet Socket ResultSet
Language support
Utilities Input and output Abstract Windowing Toolkit Applets Networking Database Access
javax.swing
omg.w3c.dom
JButton
Document
Method Summary
Tugas
Kerjakan semua latihan dan tugas yang ada di slide OOP Concepts
Kirimkan netbeans project yang sudah di zip ke [email protected] dengan subject: [OOP1-Universitas] NamaNIM Deadline: 4 minggu
Meng-copy file orang lain akan menyebabkan nilai tugas 0
Referensi
1. Sharon Zakhour et al, The Java Tutorial Fourth Edition, http://java.sun.com/docs/books/tutorial