Object-Oriented Programming
-
Upload
mercubuana -
Category
Documents
-
view
1 -
download
0
Transcript of Object-Oriented Programming
Object-Oriented Programming
[email protected]://romisatriawahono.net
ObjectObject--Oriented Oriented Programming (OOP)Programming (OOP)
Romi Satria WahonoRomi Satria [email protected]@romisatriawahono.nethttp://romisatriawahono.nethttp://romisatriawahono.net
YM: YM: romi_swromi_sw
1
Lahir di Madiun, 2 Oktober 1974Lahir di Madiun, 2 Oktober 1974SD Sompok SD Sompok Semarang (1987)Semarang (1987)SMPN 8SMPN 8 Semarang (1990)Semarang (1990)SMA Taruna NusantaraSMA Taruna Nusantara, Magelang (1993), Magelang (1993)S1, S2 dan S3 (onS1, S2 dan S3 (on--leave) dari leave) dari Department Department of Computer of Computer
Romi Satria WahonoRomi Satria Wahono
2
, da, da a daa da papa ppSciences, Sciences, Saitama UniversitySaitama University, Japan (1994, Japan (1994--2004)2004)Core Competence: Core Competence: Software Software EngineeringEngineering, eLearning , eLearning System, Knowledge ManagementSystem, Knowledge ManagementPNS PNS didi LembagaLembaga IlmuIlmu PengetahuanPengetahuan IndonesiaIndonesiaFounder Founder dandan KoordinatorKoordinator IlmuKomputer.ComIlmuKomputer.ComCEO CEO PT Brainmatics Cipta InformatikaPT Brainmatics Cipta Informatika
Mata Kuliah OOP Mata Kuliah OOP -- KontrakKontrakPertemuan di Kelas:Pertemuan di Kelas:
Kuliah model tutoringKuliah model tutoring, konsep diberikan dan langsung , konsep diberikan dan langsung praktek dilakukanpraktek dilakukanKetidakhadiran diperbolehkanKetidakhadiran diperbolehkan, hanya , hanya tidak akan ada tidak akan ada pengulangan bahasanpengulangan bahasan bagi yang tidak hadirbagi yang tidak hadir
Penilaian Mata Kuliah:Penilaian Mata Kuliah:Penilaian Mata Kuliah:Penilaian Mata Kuliah:Nilai Total dari Nilai Total dari TM TM -- UTS UTS –– UASUASTugas harus diupload Tugas harus diupload di University.RomiSatriaWahono.Netdi University.RomiSatriaWahono.Net
Modul Kuliah dan Pengiriman Tugas:Modul Kuliah dan Pengiriman Tugas:eLearning System: eLearning System: http://university.romisatriawahono.nethttp://university.romisatriawahono.netCourse Name: Course Name: ObjectObject--Oriented ProgrammingOriented ProgrammingEnrolment Key: Enrolment Key: oopoop
3
Mata Kuliah OOP Mata Kuliah OOP -- MateriMateri
1.1. OOP ConceptsOOP Concepts::Konsep Pemrograman dan paradigma ObjectKonsep Pemrograman dan paradigma Object--Oriented Oriented
2.2. Java FundamentalsJava Fundamentals::Bagaimana Membuat Program dengan JavaBagaimana Membuat Program dengan Java
J Ad dJ Ad d3.3. Java AdvancedJava Advanced::Eksepsi, Thread, Java APIEksepsi, Thread, Java API
4.4. Java GUIJava GUI::GUI Component, Swing, Event HandlingGUI Component, Swing, Event Handling
4
OOP ConceptsOOP Concepts
5
Materi DiskusiMateri Diskusi
1.1. Konsep Pemrograman dan Paradigmanya:Konsep Pemrograman dan Paradigmanya:Tingkat Bahasa Pemrograman, Paradigma Pemrograman, Tingkat Bahasa Pemrograman, Paradigma Pemrograman, Tool PemrogramanTool Pemrograman
2.2. KonsepKonsep DasarDasar PemrogramanPemrograman BerorientasiBerorientasi ObObyyekek::Kelas (Class), Obyek (Object), Pengkapsulan Kelas (Class), Obyek (Object), Pengkapsulan (Encapsulation) Pewarisan (Inheritance) Keyword This (Encapsulation) Pewarisan (Inheritance) Keyword This
6
(Encapsulation), Pewarisan (Inheritance), Keyword This, (Encapsulation), Pewarisan (Inheritance), Keyword This, ConstructorConstructor
3.3. Konsep Lanjut Konsep Lanjut PemrogramanPemrograman BerorientasiBerorientasi ObyekObyek::Polymorphisme (Overloading dan Overriding), Package, Polymorphisme (Overloading dan Overriding), Package, InterfaceInterface
Object-Oriented Programming
[email protected]://romisatriawahono.net
Konsep Pemrograman Konsep Pemrograman dan Paradigmanyadan Paradigmanya
7
Bahasa Pemrograman?Bahasa Pemrograman?
Komputer bekerja seperti Komputer bekerja seperti switchingswitching dan hanya dan hanya mengenali 0 dan 1mengenali 0 dan 1Manusia Manusia tidak (paham) berbicara tidak (paham) berbicara dengan bahasa dengan bahasa 0 dan 10 dan 1P l b h p d p t j di P l b h p d p t j di Perlu bahasa pemrograman yang dapat menjadi Perlu bahasa pemrograman yang dapat menjadi perantara percakapan perantara percakapan antara komputer dan antara komputer dan manusiamanusiaBahasa pemrograman diubah ke dalam bahasa Bahasa pemrograman diubah ke dalam bahasa yang dipahami oleh komputer dengan yang dipahami oleh komputer dengan menggunakan menggunakan interpreterinterpreter atau atau kompilerkompiler
8
Compiler or Interpreter?Compiler or Interpreter?
Compiler:Compiler:Mengkompilasi source code Mengkompilasi source code menjadi bentukmenjadi bentuk file yang bisa file yang bisa dieksekusidieksekusidieksekusidieksekusi
Interpreter:Interpreter:Mengkompilasi dan menjalankan Mengkompilasi dan menjalankan source code source code secara langsungsecara langsung
9
Tingkat Bahasa PemrogramanTingkat Bahasa Pemrograman
Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat RendahRendah(Assembler)(Assembler)Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat SedangSedang(C Pascal Fortran)(C Pascal Fortran)(C, Pascal, Fortran)(C, Pascal, Fortran)Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat TinggiTinggi(Java, C++, C#)(Java, C++, C#)
10
Assembly LanguageAssembly Language
0001010000010100001100101001100101
LDA #47LDA #47STA $STA $570570DEXDEXJSR JSR $817$817CPX #0CPX #0BNE #14BNE #14
Assembly language programAssembly language program
TranslationTranslationprogramprogram
(Assembler)(Assembler)
11
00001000000010001001001011001001010101010100101010101001010010
Machine language programMachine language program(executable file)(executable file)
y g g p gy g g p g
C LanguageC Language
##include <include <stdio.hstdio.h>>
mainmain()(){{
printf(“Hall ”)printf(“Hall ”)CC CompilerCompiler
000101000000010100001100101000110010100001000100100100010010010101010100101010101010100101010010
12
printf(“Hallo”);printf(“Hallo”);}}
C ProgramC Program
10100101010010
Machine language programMachine language program((executable “.exe” executable “.exe” file)file)
Object-Oriented Programming
[email protected]://romisatriawahono.net
Java LanguageJava Language
javacjavac(Java Compiler)(Java Compiler)
javajava(Java Interpreter)(Java Interpreter)
13
Paradigma PemrogramanParadigma PemrogramanSudut pandang dan style pemrograman Sudut pandang dan style pemrograman berhubungan dengan bagaimana sebuah masalah berhubungan dengan bagaimana sebuah masalah diformulasikan dalam bahasa pemrogramandiformulasikan dalam bahasa pemrograman
Functional ProgrammingFunctional Programming: Urutan fungsi secara : Urutan fungsi secara sekuensialsekuensial (Scheme Lisp)(Scheme Lisp)sekuensialsekuensial (Scheme, Lisp)(Scheme, Lisp)Procedural ProgrammingProcedural Programming: Pemecahan masalah : Pemecahan masalah berdasarkan prosedural kerja yg terkumpul dalam unit berdasarkan prosedural kerja yg terkumpul dalam unit pemrograman bernama pemrograman bernama fungsifungsi (C, Pascal)(C, Pascal)ObjectObject--Oriented ProgrammingOriented Programming: Koleksi object yang : Koleksi object yang saling berinteraksi . saling berinteraksi . ClassClass adalah unit pemrograman adalah unit pemrograman (Java, C#, C++)(Java, C#, C++)
14
Install, Compile and Install, Compile and Running JavaRunning Java
15
Tool Pemrograman JavaTool Pemrograman Java
1.1. Compiler (Interpreter)Compiler (Interpreter)::Java Standard Edition Java Standard Edition (JSE)(JSE)
2.2. Text/Code EditorText/Code Editor::TextPadTextPad, Notepad++, Notepad++
3.3. Integrated Development EnvironmentIntegrated Development Environment(IDE):(IDE):Netbeans, Eclipse, JCreatorNetbeans, Eclipse, JCreator
(*) IDE mengintegrasikan Compiler, Code Editor dan (*) IDE mengintegrasikan Compiler, Code Editor dan Visual (GUI) secara lengkapVisual (GUI) secara lengkap
16
Java Java Standard Edition Standard Edition ((JJava ava SESE))
For For desktop, client/server desktop, client/server applicationapplication
Java Java EnterpriseEnterprise EEditiondition
Java Family SuiteJava Family Suite
pp((JJava ava EEEE))
For eFor e--businessbusiness, e, e--commerce commerce web based applicationweb based application
Java Java Micro EditionMicro Edition((JJava ava MEME))
For For small devicessmall devices, like , like palm,palm, handphonehandphone, etc, etc
Instalasi Java Standard EditionInstalasi Java Standard Edition1.1. Download Java Standard Edition dari: Download Java Standard Edition dari:
http://java.sun.com/javase/downloads/http://java.sun.com/javase/downloads/2.2. Instal Java Standard Edition dengan mengklik:Instal Java Standard Edition dengan mengklik:
jdkjdk--6u66u6--windowswindows--i586i586--p.exep.exe33 Klik Klik StartStart Control Panel Control Panel SystemSystem3.3. Klik Klik StartStart Control Panel Control Panel SystemSystem
AdvancedAdvanced Environment Variables Environment Variables dan set dan set PATH:PATH:;;C:C:\\Program FilesProgram Files\\JavaJava\\jdk1.6.0_jdk1.6.0_0606\\binbin
4.4. Instal text editor untuk editing code:Instal text editor untuk editing code:textpad, notepad++, JCreatortextpad, notepad++, JCreator
18
Object-Oriented Programming
[email protected]://romisatriawahono.net
javac (java javac (java compilercompiler))InterpreterInterpreter InterpreterInterpreter InterpreterInterpreter InterpreterInterpreter
Jalankan dengan:Jalankan dengan:
1.1. C:C:\\>java >java Hello Hello (Application)(Application)2.2. Web BrowserWeb Browser (Applet)(Applet)
How Java Works?How Java Works?public class Hellopublic class Hello
public static void main(String[] public static void main(String[] argsargs){){System.out.printlnSystem.out.println("Hello World!");("Hello World!");
}}}} Hello.java
Hello.class
Kompiler memproduksiKompiler memproduksiBytecode (Class)Bytecode (Class)
Web ServerWeb ServerWrite Once Run Everywhere !Write Once Run Everywhere !
Compile and Run Java AppletCompile and Run Java Appletimport import java.appletjava.applet.*;.*;import java.awt.*;import java.awt.*;
public public class class HelloWorldHelloWorld extends Applet {extends Applet {public void paint(Graphics g) {public void paint(Graphics g) {
g.drawStringg.drawString("Hello world!",50,25("Hello world!",50,25););}}
}}
<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>
C:C:\\javac HelloWorld.javajavac HelloWorld.java
C:C:\\appletviewer Hello.htmlappletviewer Hello.html
Menulis Program Menulis Program ““Halo SemarangHalo Semarang””public public class class HHalalo{o{
public static void main(String[] public static void main(String[] argsargs){){System.out.printlnSystem.out.println(“(“Halo SemarangHalo Semarang");");
}}}}
21
GUI Version GUI Version ““Halo Semarang”Halo Semarang”import import javax.swingjavax.swing.*;.*;
public class public class HaloGUIHaloGUI{{public static void main( String[] public static void main( String[] argsargs ){){
JOptionPane.showMessageDialogJOptionPane.showMessageDialog(null, "Halo Semarang");(null, "Halo Semarang");}}
22
}}
Menulis Java ProgramMenulis Java Program
PProgram harus punya method di public class:rogram harus punya method di public class:public public static void main(String[] static void main(String[] argsargs))
Program Java mulai dari siniProgram Java mulai dari sini!!
Bentuk program:Bentuk program:1.1. GUI applicationGUI application public public class class biasanya biasanya
menggunakan Frame (AWT), menggunakan Frame (AWT), JframeJframe(Swing)(Swing)2.2. “Text “Text based” Console based” Console ApplicationApplication public public class class
adalah adalah classclass yang sederhanayang sederhana
Latihan: Tulis dan Compile Halo.javaLatihan: Tulis dan Compile Halo.javapublic class Halo{public class Halo{public static void main(String[] args)public static void main(String[] args){{
System.out.println(“Halo Semarang”);System.out.println(“Halo Semarang”);}}
24
}}
Object-Oriented Programming
[email protected]://romisatriawahono.net
Konsep Dasar Konsep Dasar Pemrograman Pemrograman Berorientasi ObjekBerorientasi Objek
25
Berorientasi Objek?Berorientasi Objek?
Attribute:Attribute:Topi, Baju, Tas Topi, Baju, Tas Punggung, Jaket, Punggung, Jaket, Tangan, Kaki, MataTangan, Kaki, Mata
hh
26
Behavior:Behavior:Cara Cara Jalan ke DepanJalan ke DepanCara Jalan MundurCara Jalan MundurCara Cara Belok ke KiriBelok ke KiriCara MemanjatCara Memanjat
Berorientasi Objek?Berorientasi Objek?Attribute (State):Attribute (State):
Ban, Stir, Pedal Kopling/Gas/Rem,Ban, Stir, Pedal Kopling/Gas/Rem,Warna, Tahun Warna, Tahun ProduksiProduksi
Behavior:Behavior:Cara Menghidupkan MesinCara Menghidupkan MesinCara Manjalankan MobilCara Manjalankan MobilCara Memundurkan MobilCara Memundurkan Mobil
27
Attribute Attribute Variable(Member)Variable(Member)Behavior Behavior Method(FungsiMethod(Fungsi))
LatihanLatihan1.1. Lakukan kegiatan berorientasi objek dengan Lakukan kegiatan berorientasi objek dengan
target target SepedaSepeda2.2. Pikirkan apa Pikirkan apa atribut dan behavior atribut dan behavior yang yang
dimiliki oleh Sepeda tersebutdimiliki oleh Sepeda tersebut
28
Karakteristik OOP Karakteristik OOP --11--
AbstractionAbstraction:Cara kita :Cara kita melihat suatu sistem melihat suatu sistem dalam bentuk yang lebih sederhanadalam bentuk yang lebih sederhana, yaitu , yaitu sebagai suatu kumpulan subsistem (object) sebagai suatu kumpulan subsistem (object) yang saling berinteraksi.yang saling berinteraksi.
Mobil adalah kumpulan sistem pengapian, sistem Mobil adalah kumpulan sistem pengapian, sistem d p p g p ,d p p g p ,kemudi, sistem pengeremankemudi, sistem pengereman
ModularityModularity: : Sifat object adalah modular. Sifat object adalah modular. Object Object dapat ditulis dan dimaintain terpisah dapat ditulis dan dimaintain terpisah (independen) (independen) dari object laindari object lain
29 30
Object-Oriented Programming
[email protected]://romisatriawahono.net
31
Karakteristik OOP Karakteristik OOP --22--EncapsulationEncapsulation: Mekanisme : Mekanisme menyembunyikan menyembunyikan suatu proses dalam sistem suatu proses dalam sistem untuk menghindari untuk menghindari interferensi dan menyederhanakan penggunaan interferensi dan menyederhanakan penggunaan sistem itu sendirisistem itu sendiri
Tongkat transmisi (gigi) pada mobilTongkat transmisi (gigi) pada mobilT b l / ff/ t h d ACT b l / ff/ t h d ACTombol on/off/pengaturan suhu pada ACTombol on/off/pengaturan suhu pada AC
32
33 34
Karakteristik OOP Karakteristik OOP --33--
InheritanceInheritance: Suatu class dapat : Suatu class dapat mewariskan mewariskan atribut dan methodatribut dan method kepada class lain (subclass), kepada class lain (subclass), serta membentuk class hierarchyserta membentuk class hierarchy
35
Karakteristik OOP Karakteristik OOP --44--
PolymorphismPolymorphism: Suatu : Suatu object dapat memiliki object dapat memiliki berbagai bentukberbagai bentuk, sebagai object dari classnya , sebagai object dari classnya sendiri atau object dari superclassnyasendiri atau object dari superclassnya
OverloadingOverloading: Penggunaan : Penggunaan satu nama untuk beberapa satu nama untuk beberapa methodmethod yang berbeda (beda parameter)yang berbeda (beda parameter)methodmethod yang berbeda (beda parameter)yang berbeda (beda parameter)OverridingOverriding: Terjadi ketika deklarasi method subclass : Terjadi ketika deklarasi method subclass dengan dengan nama dan parameter yang sama nama dan parameter yang sama dengan dengan method dari superclassnyamethod dari superclassnya
36
Object-Oriented Programming
[email protected]://romisatriawahono.net
Class dan Object Class dan Object --11--
Class: Class: mobilmobilObject: Object: mobilnya pak Joko, mobilkumobilnya pak Joko, mobilku
Class seperti Class seperti cetakan kuecetakan kue, dimana kue yg , dimana kue yg dihasilkan dari cetakan kue itu adalah dihasilkan dari cetakan kue itu adalah objectobjectdihasilkan dari cetakan kue itu adalah dihasilkan dari cetakan kue itu adalah objectobjectWarna kue bisa bermacamWarna kue bisa bermacam--macam meskipun macam meskipun berasal dari cetakan yang sama (berasal dari cetakan yang sama (object memiliki object memiliki sifat independensifat independen))
Object adalah Object adalah instance dari Classinstance dari Class
37
Class and Object Class and Object --22--Class = Class = method+method+variablevariable
The The BicycleBicycle classclass
Class dan Object Class dan Object --33--
39
Bicycle Bicycle dimodelkan dimodelkan sebagai sebuah sebagai sebuah objectobject::10 mph, 90 rpm, 510 mph, 90 rpm, 5thth gear adalah gear adalah instance variableinstance variablechangegearschangegears, brake, , brake, changecadencechangecadence adalahadalah instance instance methodmethod
AttributeAttributeAAttributettribute adalah berbagai variable yang adalah berbagai variable yang mengitari class, dengan nilai datanya bisa mengitari class, dengan nilai datanya bisa ditentukan di object.ditentukan di object. NameName, age, , age, dan dan weight weight adalah atribute dari class Personadalah atribute dari class Person
Membuat Class, Object dan Memanggil AtributMembuat Class, Object dan Memanggil Atributclass Mobil {class Mobil {
String warna;String warna;int tahunProduksi;int tahunProduksi;
}}
public class MobilBeraksi{public class MobilBeraksi{public static void main(String[] args){public static void main(String[] args){
// Membuat object// Membuat object
Mobil.javaMobil.java
MobilBeraksi.javaMobilBeraksi.java
41
// Membuat object// Membuat objectMobil mobilku = new Mobil();Mobil mobilku = new Mobil();
/* memanggil atribut dan memberi nilai *//* memanggil atribut dan memberi nilai */mobilku.warna = "Hitam";mobilku.warna = "Hitam";mobilku.tahunProduksi = 2006;mobilku.tahunProduksi = 2006;System.out.println("Warna: " + System.out.println("Warna: " + mobilku.warnamobilku.warna););System.out.println("Tahun: " + System.out.println("Tahun: " + mobilku.tahunProduksi)mobilku.tahunProduksi);;
}}}}
MethodMethod
MMethodethod adalah adalah implementasi dari implementasi dari bagaimana bekerjanya sebuah classbagaimana bekerjanya sebuah class
M th d l k kM th d l k kMethod melakukan:Method melakukan:1.1. Manipulasi dataManipulasi data2.2. PerhitunganPerhitungan matematikamatematika3.3. Memonitor kejadian Memonitor kejadian dari suatu eventdari suatu event
Object-Oriented Programming
[email protected]://romisatriawahono.net
Membuat dan Memanggil MethodMembuat dan Memanggil Methodclass Mobil2{class Mobil2{
String warna;String warna;int tahunProduksi;int tahunProduksi;void void printMobil()printMobil(){{
System.out.println("Warna: " + warna);System.out.println("Warna: " + warna);System.out.println("Tahun: " + tahunProduksi);System.out.println("Tahun: " + tahunProduksi);
}}}}
bl l b l kbl l b l k
Mobil2.javaMobil2.java
43
public class Mobil2Beraksi{public class Mobil2Beraksi{public static void main(String[] args){public static void main(String[] args){
// Membuat object// Membuat objectMobil2 mobilku = new Mobil2();Mobil2 mobilku = new Mobil2();
/* memanggil atribut dan memberi nilai *//* memanggil atribut dan memberi nilai */mobilku.warna = "Hitam";mobilku.warna = "Hitam";mobilku.tahunProduksi = 2006;mobilku.tahunProduksi = 2006;mobilku.printMobil();mobilku.printMobil();
}}}}
Mobil2Beraksi.javaMobil2Beraksi.java
LatihanLatihan
Kembangkan Class Kembangkan Class Mobil2Mobil2Ubah nama classs menjadi Ubah nama classs menjadi MobilLengkapMobilLengkap dan dan masukkan method:masukkan method:
hidupkanMobil()hidupkanMobil()matikanM bil()matikanM bil()matikanMobil()matikanMobil()ubahGigi()ubahGigi()
Isi masingIsi masing--masing method dengan tampilan masing method dengan tampilan status menggunakan status menggunakan System.out.println()System.out.println()Panggil methodPanggil method--method diatas dari method diatas dari MobilLengkapBeraksiMobilLengkapBeraksi
44
Message Message dan Parameter dan Parameter --11--Bicycle akan berguna apabila ada object lain Bicycle akan berguna apabila ada object lain ((misalnya andamisalnya anda) ) yang berinterasi dengan Bicycle tersebutyang berinterasi dengan Bicycle tersebutObject software berinteraksi dan berkomunikasi dengan Object software berinteraksi dan berkomunikasi dengan object lain dengan cara mengirimkan object lain dengan cara mengirimkan messagemessage . Informasi . Informasi dalam message ini dikenal dengan nama dalam message ini dikenal dengan nama ParameterParameter
45
Message Message dan Parameterdan Parameter --22--
46
1.1. YouYou object pengirim (object pengirim (sendersender))
2.2. YourBicycleYourBicycle object penerima (receiver)object penerima (receiver)
3.3. cchangeGearshangeGears the message, the method to performthe message, the method to perform
4.4. lowerGearlowerGear information from You to information from You to YourBicycleYourBicycle, the , the parametersparameters needed by the methodneeded by the method
47
Membuat Class (Sepeda.java)Membuat Class (Sepeda.java)class Sepeda{class Sepeda{
int kecepatan = 0;int kecepatan = 0;int gir = 0;int gir = 0;
// method// methodvoid ubahGir(void ubahGir(int pertambahanGirint pertambahanGir)) {{
gir= gir+ pertambahanGirgir= gir+ pertambahanGirgir= gir+ pertambahanGir;gir= gir+ pertambahanGir;System.out.println(" Gir:" + gir);System.out.println(" Gir:" + gir);
}}void tambahKecepatan(void tambahKecepatan(int pertambahanKecepatanint pertambahanKecepatan) ) {{
kecepatan = kecepatan+ pertambahanKecepatan;kecepatan = kecepatan+ pertambahanKecepatan;System.out.println(" Kecepatan:" + kecepatan);System.out.println(" Kecepatan:" + kecepatan);
}}}}
48
Object-Oriented Programming
[email protected]://romisatriawahono.net
Membuat dan Memanggil Object Membuat dan Memanggil Object (SepedaBeraksi.java)(SepedaBeraksi.java)public class SepedaBeraksi{public class SepedaBeraksi{
public static void main(String[] args) {public static void main(String[] args) {// Membuat object// Membuat objectSepeda sepedaku = new Sepeda();Sepeda sepedaku = new Sepeda();
// ggil t ib t d b i il i// ggil t ib t d b i il i//memanggil atribut dan memberi nilai//memanggil atribut dan memberi nilaisepedaku.kecepatan=10;sepedaku.kecepatan=10;sepedaku.gir=2;sepedaku.gir=2;
// Memanggil method dan menunjuk nilai parameter// Memanggil method dan menunjuk nilai parametersepedaku.tambahKecepatan(30);sepedaku.tambahKecepatan(30);sepedaku.ubahGir(3);sepedaku.ubahGir(3);
}}}}49
LatihanLatihanBuat Class bernama Buat Class bernama MatematikaMatematika, yang berisi , yang berisi method dengan method dengan dua parameterdua parameter::
pertambahanpertambahanpenguranganpenguranganperkalianperkalianpembagianpembagianp gp g
Buat Class bernama Buat Class bernama MatematikaBeraksiMatematikaBeraksi, yang , yang mengeksekusi method dan menampilkan:mengeksekusi method dan menampilkan:
Pertambahan: 20 + 20 = 40Pertambahan: 20 + 20 = 40Pengurangan: 10Pengurangan: 10--5 = 55 = 5Perkalian: 10x20 = 200Perkalian: 10x20 = 200Pembagian: 21/2 = 10.5 (float or double)Pembagian: 21/2 = 10.5 (float or double)
50
Tips Membuat CTips Membuat Classlass
1 file 1 file bisa berisi bisa berisi >=1>=1 classclass1 file 1 file hanya dapat berisi 1 public classhanya dapat berisi 1 public classNama file harus sama dengan namaNama file harus sama dengan namapublic public classclass sifatnya adalah csifatnya adalah casease sensitivesensitive
51
public public classclass sifatnya adalah csifatnya adalah casease sensitivesensitiveTips: Tips: Lebih baik dan lebih mudah Lebih baik dan lebih mudah dipahami apabila dipahami apabila satu file berisi hanya satu file berisi hanya satu classsatu class
Kata Kunci thisKata Kunci this
Digunakan pada pembuatan class dan digunakan Digunakan pada pembuatan class dan digunakan untuk untuk menyatakan object sekarangmenyatakan object sekarang
class Mobil{class Mobil{String warna;String warna;Int tahunProduksi;Int tahunProduksi;
class Mobil{class Mobil{String warna;String warna;Int tahunProduksi;Int tahunProduksi;
52
vvoid isiData(Stringoid isiData(String warnaMobil, int warnaMobil, int tahunProduksiMobil){tahunProduksiMobil){
warna = warnaMobil;warna = warnaMobil;tahunProduksi = tahunProduksiMobil;tahunProduksi = tahunProduksiMobil;
}}
vvoid isiData(Stringoid isiData(String warna, int warna, int tahunProduksi){tahunProduksi){
this.warna = warna;this.warna = warna;this.tahunProduksi = tahunProduksi;this.tahunProduksi = tahunProduksi;
}}
Konstruktor Konstruktor --11--
Method yang digunakan untuk memberi Method yang digunakan untuk memberi nilai awal nilai awal pada saat object diciptakanpada saat object diciptakanDipanggil secara otomatis ketika Dipanggil secara otomatis ketika newnewdigunakan untuk membuat instan classdigunakan untuk membuat instan classggSifat konstruktor:Sifat konstruktor:
Nama konstruktor Nama konstruktor sama dengan nama classsama dengan nama classTidak memiliki nilai balikTidak memiliki nilai balik dan tidak boleh ada dan tidak boleh ada kata kunci voidkata kunci void
53
Konstruktor Konstruktor --22--class Mobil {class Mobil {
String warna;String warna;int tahunProduksi;int tahunProduksi;
public Mobil(String warna, int tahunProduksi){public Mobil(String warna, int tahunProduksi){this.warna = warna;this.warna = warna;this.tahunProduksi = tahunProduksi;this.tahunProduksi = tahunProduksi;
}}public void info(){public void info(){
System.out.println("Warna: " + this.warna);System.out.println("Warna: " + this.warna);System.out.println("Tahun: " + this.tahunProduksi);System.out.println("Tahun: " + this.tahunProduksi);
}}}}public class MobilKonstruktor{public class MobilKonstruktor{
public static void main(String[] args){public static void main(String[] args){Mobil mobilku = new Mobil(“Merah”, 2003);Mobil mobilku = new Mobil(“Merah”, 2003);mobilku.info();mobilku.info();
}}}}54
Object-Oriented Programming
[email protected]://romisatriawahono.net
Class Access Level Class Access Level
SpecifierSpecifier ClassClass PackagePackage SubClassSubClass WorldWorld
privateprivate
55
no specifierno specifier
protectedprotected
publicpublic
LatihanLatihan1.1. Buat class Buat class BukuBuku2.2. Tentukan variable buku: Tentukan variable buku: Judul, Pengarang, Penerbit Judul, Pengarang, Penerbit
dan Tahundan Tahun3.3. Buat konstruktor class Buku dengan parameter: Buat konstruktor class Buku dengan parameter:
Judul, Pengarang, Penerbit dan TahunJudul, Pengarang, Penerbit dan TahunB h d B h d kB kkB k4.4. Buat method Buat method cetakBukucetakBuku
5.5. Buat class Buat class BukuBeraksiBukuBeraksi dan tampilkan 2 buku:dan tampilkan 2 buku:Pemrograman Berbasis Objek dengan Java, Indrajani, Pemrograman Berbasis Objek dengan Java, Indrajani, Elexmedia Komputindo, 2007Elexmedia Komputindo, 2007Dasar Pemrograman Java, Abdul Kadir, Andi Offset, Dasar Pemrograman Java, Abdul Kadir, Andi Offset, 20062006
56
Inheritance (Pewarisan) Inheritance (Pewarisan)
ReusabilityReusabilityTop down:Top down:
Being more Being more specificspecificBottom Up:Bottom Up:
Find Find similiaritysimiliarity
57
ind ind imi ia ityimi ia ityJava Keyword: Java Keyword: extendsextends
Sepeda.javaSepeda.javaclass Sepeda{class Sepeda{
int kecepatan = 0;int kecepatan = 0;int gir = 0;int gir = 0;
// method// methodvoid ubahGir(int pertambahanGir)void ubahGir(int pertambahanGir) {{
gir= gir+ pertambahanGirgir= gir+ pertambahanGirgir= gir+ pertambahanGir;gir= gir+ pertambahanGir;System.out.println("Gir:" + gir);System.out.println("Gir:" + gir);
}}void tambahKecepatan(int pertambahanKecepatan) void tambahKecepatan(int pertambahanKecepatan) {{
kecepatan = kecepatan+ pertambahanKecepatan;kecepatan = kecepatan+ pertambahanKecepatan;System.out.println("Kecepatan:" + kecepatan);System.out.println("Kecepatan:" + kecepatan);
}}}}
58
Class SepedaGunung Mewarisi Class SepedaClass SepedaGunung Mewarisi Class Sepedaclass class SepedaGunung SepedaGunung extendsextends Sepeda Sepeda { {
int setSadel; int setSadel;
public void spublic void setSadeletSadel((intint nilaiSadelnilaiSadel) { ) { setSadel =setSadel = nilaiSadelnilaiSadel; ; System.out.println(“Tinggi System.out.println(“Tinggi Sadel:”+setSadel);Sadel:”+setSadel);} }
class SepedaGunungBeraksi {class SepedaGunungBeraksi {public static void main(String[] args) {public static void main(String[] args) {// Membuat object// Membuat objectSepedaGunung sepedaku = new sepedaGunung();SepedaGunung sepedaku = new sepedaGunung();
// Memanggil method di object// Memanggil method di objectsepedaku.tambahKecepatan(10);sepedaku.tambahKecepatan(10);sepedaku.ubahGir(2);sepedaku.ubahGir(2);
ll} } } }
59
sepedaku.setSadel(20);sepedaku.setSadel(20);
}}}}
SepedaGunung.javaSepedaGunung.java SepedaGunungBeraksi.javaSepedaGunungBeraksi.java
LatihanLatihan
Buat class Buat class MobilBMWMobilBMW yang merupakan inherit yang merupakan inherit dari class dari class MobilLengkapMobilLengkapTambahkan method Tambahkan method nontonTV() nontonTV() yang yang menampilkan tulisan di layar:menampilkan tulisan di layar:
TV dihidupkanTV dihidupkanTV dihidupkanTV dihidupkanTV mencari channelTV mencari channelTV menampilkan gambarTV menampilkan gambar
Buat class Buat class MobilBMWBeraksiMobilBMWBeraksi yang memanggil yang memanggil method method nontonTV, hidupkanMobil, nontonTV, hidupkanMobil, matikanMobil, ubahGigimatikanMobil, ubahGigi
60
Object-Oriented Programming
[email protected]://romisatriawahono.net
Konsep Lanjut Konsep Lanjut PemrogramanPemrogramanBerorientasiBerorientasi ObObjjekek
61
PolymorphismPolymorphism
PolymorphismPolymorphism: Suatu object dapat : Suatu object dapat memiliki berbagai bentuk, sebagai memiliki berbagai bentuk, sebagai object dari classnya sendiri atau object object dari classnya sendiri atau object dari superclassnyadari superclassnya
ll
62
1.1. OverloadingOverloading: Penggunaan : Penggunaan satu nama untuk satu nama untuk beberapa method yang berbeda parameterbeberapa method yang berbeda parameter
2.2. OverridingOverriding: Terjadi ketika : Terjadi ketika deklarasi method deklarasi method subclass sama dengan method dari subclass sama dengan method dari superclassnyasuperclassnya
Polymorphism Polymorphism –– OverloadingOverloadingclass Mobil {class Mobil {
String warna;String warna;int tahunProduksi;int tahunProduksi;
public Mobil(String warna, int public Mobil(String warna, int tahunProduksi){tahunProduksi){
this.warna = warna;this.warna = warna;this.tahunProduksi = tahunProduksi;this.tahunProduksi = tahunProduksi;
}}
public class MobilKonstruktor{public class MobilKonstruktor{public static void main(String[] args){public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, Mobil mobilku = new Mobil(“Merah”, 2003);2003);mobilku.info();mobilku.info();
Mobil mobilMobil mobilmumu = new Mobil();= new Mobil();mobilmobilmu.mu.info();info();}}
public Mobil(){public Mobil(){}}
void info(){void info(){System.out.println("Warna: " + System.out.println("Warna: " +
this.warna);this.warna);System.out.println("Tahun: " + System.out.println("Tahun: " +
this.tahunProduksi);this.tahunProduksi);}}
}}
63
}}}}
Contoh Lain OverloadingContoh Lain Overloadingclass Lingkaran{class Lingkaran{
public public buatLingkaran(int diameter)buatLingkaran(int diameter){{......}}public public buatLingkaran(int diameter, int x, int y)buatLingkaran(int diameter, int x, int y){{......}}public public buatLingkaran(int diameter, int x, int y, int buatLingkaran(int diameter, int x, int y, int warna, String namaLingkaran)warna, String namaLingkaran){{......}}
}}64
Polymorphism Polymorphism -- OverridingOverridingclass Sepeda{class Sepeda{
int kecepatan = 0;int kecepatan = 0;int gir = 0;int gir = 0;
// method// methodvoid ubahGir(int pertambahanGir)void ubahGir(int pertambahanGir) {{
gir= gir+ pertambahanGirgir= gir+ pertambahanGirgir= gir+ pertambahanGir;gir= gir+ pertambahanGir;System.out.println("Gir:" + gir);System.out.println("Gir:" + gir);
}}void tambahKecepatan(int pertambahanKecepatan) void tambahKecepatan(int pertambahanKecepatan) {{
kecepatan = kecepatan+ pertambahanKecepatan;kecepatan = kecepatan+ pertambahanKecepatan;System.out.println("Kecepatan:" + kecepatan);System.out.println("Kecepatan:" + kecepatan);
}}}}
65
Class SepedaGunung Mewarisi Class SepedaClass SepedaGunung Mewarisi Class Sepedaclass class SepedaGunung SepedaGunung extendsextends Sepeda Sepeda { {
int setSadel; int setSadel;
void ubahGir(int pertambahanGir)void ubahGir(int pertambahanGir){{
gir= 2*(gir+ pertambahanGir );gir= 2*(gir+ pertambahanGir );System.out.println("Gir:" + gir);System.out.println("Gir:" + gir);
}}
class SepedaGunungBeraksi {class SepedaGunungBeraksi {public static void main(String[] args) {public static void main(String[] args) {// Membuat object// Membuat objectSepedaGunung sepedaku = new sepedaGunung();SepedaGunung sepedaku = new sepedaGunung();
// Memanggil method di object// Memanggil method di objectsepedaku.tambahKecepatan(10);sepedaku.tambahKecepatan(10);sepedaku.ubahGir(2);sepedaku.ubahGir(2);
ll}}} }
66
sepedaku.setSadel(20);sepedaku.setSadel(20);
}}}}
SepedaGunung.javaSepedaGunung.java SepedaGunungBeraksi.javaSepedaGunungBeraksi.java
Object-Oriented Programming
[email protected]://romisatriawahono.net
LatihanLatihan
1.1. Kembangkan class Kembangkan class MatematikaMatematika dan dan MatematikaBeraksiMatematikaBeraksi
2.2. Lakukan Lakukan overloading pada Method overloading pada Method yang ada yang ada (pertambahan, pengurangan, perkalian, (pertambahan, pengurangan, perkalian, pembagian) . Method baru adalah bertipe data pembagian) . Method baru adalah bertipe data p g pp g pdoubledouble (pecahan) dan (pecahan) dan memiliki 3 parametermemiliki 3 parameter
3.3. Uji di kelas Uji di kelas MatematikaBeraksiMatematikaBeraksi dengan dengan parameter pecahan: 12.5, 28.7, 14.2parameter pecahan: 12.5, 28.7, 14.2
4.4. Misalnya: Misalnya: pertambahan(12.5, 28.7, 14.2)pertambahan(12.5, 28.7, 14.2)
67
Matematika.javaMatematika.javaclass Matematika{class Matematika{
int hasilPertambahan1, hasilPertambahan2;int hasilPertambahan1, hasilPertambahan2;
public void public void pertambahan (int a, int b)pertambahan (int a, int b){{hasilPertambahan1 = a + b;hasilPertambahan1 = a + b;System.out.println(“hasil:” + hasilPertambahan1);System.out.println(“hasil:” + hasilPertambahan1);System.out.println( hasil: hasilPertambahan1);System.out.println( hasil: hasilPertambahan1);
}}public void public void pertambahan (double a, double b, double c)pertambahan (double a, double b, double c){{
hasilPertambahan2 = a + b + c;hasilPertambahan2 = a + b + c;System.out.println(“hasil:” + hasilPertambahan2);System.out.println(“hasil:” + hasilPertambahan2);
}}......
}}68
LatihanLatihan
1.1. Kembangkan class Kembangkan class Buku Buku dan dan BukuBeraksiBukuBeraksi2.2. Selain konstruktor class Buku dengan Selain konstruktor class Buku dengan
parameter: parameter: Judul, Pengarang, Penerbit dan Judul, Pengarang, Penerbit dan Tahun, Tahun, buat konstruktor lagi dengan buat konstruktor lagi dengan
llparameterparameter: Judul : Judul dandan Pengarang Pengarang sajasaja3.3. Panggil kedua konstruktor class Panggil kedua konstruktor class BukuBuku tadi tadi
dari class dari class BukuBeraksiBukuBeraksi
69
PackagesPackages
PPackageackage adalah adalah koleksi dari beberapa class koleksi dari beberapa class dan interface yang berhubungan, dan dan interface yang berhubungan, dan menyediakan proteksi akses dan pengelolaan menyediakan proteksi akses dan pengelolaan namespacenamespace1 package 1 package adalah adalah 1 1 subfolder subfolder di di file file systemsystem
70
1 package 1 package adalah adalah 1 1 subfolder subfolder di di file file systemsystemPackage sangat berguna untuk Package sangat berguna untuk mengorganisir file dalam suatu project atau mengorganisir file dalam suatu project atau librarylibraryNama package menggunakan lowercaseNama package menggunakan lowercaseKeywordKeyword: : package name;package name;
Budi.javaBudi.java
package kelasku;package kelasku;
publicpublic class Budi{class Budi{p bli id i f (){p bli id i f (){public void info(){public void info(){
System.out.println(“Kelas Budi”);System.out.println(“Kelas Budi”);}}
}}
71
Joko.javaJoko.java
package kelasku;package kelasku;
publicpublic class Joko{class Joko{p bli id i f (){p bli id i f (){public void info(){public void info(){
System.out.println(“Kelas Joko”);System.out.println(“Kelas Joko”);}}
}}
72
Object-Oriented Programming
[email protected]://romisatriawahono.net
PaketBeraksi.javaPaketBeraksi.javaimport kelasku.Budi;import kelasku.Budi;import kelasku.Joko;import kelasku.Joko;
public class PaketBeraksi{public class PaketBeraksi{public static void main(String[] args){public static void main(String[] args){
Budi objectBudi = new Budi();Budi objectBudi = new Budi();objectBudi.info();objectBudi.info();Joko objectJoko = new Joko();Joko objectJoko = new Joko();objectJoko.info();objectJoko.info();
}}}}
73
LatihanLatihanKembangkan class Kembangkan class BudiBudi dan dan JokoJokoBuat method Buat method matakuliah()matakuliah() menampilkan menampilkan mata kuliah yang diajar Budi dan Jokomata kuliah yang diajar Budi dan JokoPaketkan kedua class tadi dalam satu Package Paketkan kedua class tadi dalam satu Package bernama bernama dosen dosen (gunakan keyword: (gunakan keyword: packagepackage))bernama bernama dosen dosen (gunakan keyword: (gunakan keyword: packagepackage))Buat Class Buat Class DosenBeraksiDosenBeraksi yang menjalankan yang menjalankan method yang ada di kedua Class tadi method yang ada di kedua Class tadi (gunakan keyword: (gunakan keyword: importimport))
74
InterfaceInterface
Interface digunakan apabila kita ingin Interface digunakan apabila kita ingin menentukan apa yang harus dilakukan menentukan apa yang harus dilakukan oleh suatu class tapi oleh suatu class tapi tidak menentukan tidak menentukan bagaimana cara untuk melakukannyabagaimana cara untuk melakukannya
75
bagaimana cara untuk melakukannyabagaimana cara untuk melakukannyaInterface sebenarnya sama dengan class, Interface sebenarnya sama dengan class, tapi hanya memiliki tapi hanya memiliki deklarasi method deklarasi method tanpa implementasitanpa implementasi
interfaceinterface IntLampuIntLampu{{public public static final static final intint KeadaanHidupKeadaanHidup=1;=1;public public static final static final intint KeadaanMatiKeadaanMati=0;=0;
bli bli b t tb t t id id hid khid k ()()
InterfaceBeraksi.javaInterfaceBeraksi.java
76
public public abstractabstract void void hidupkanhidupkan();();public public abstractabstract void void matikanmatikan();();
}}
class class LampuLampu implementsimplements IntLampuIntLampu{{intint statusLampustatusLampu=0;=0;
ppublicublic void void hidupkanhidupkan(){(){if (if (this.statusLamputhis.statusLampu == == KeadaanMatiKeadaanMati){){
this.statusLamputhis.statusLampu = = KeadaanHidupKeadaanHidup;;System.out.printlnSystem.out.println("("HidupkanHidupkan LampuLampu! ! ----> > LampuLampu HidupHidup");");
}else{}else{System.out.printlnSystem.out.println("("HidupkanHidupkan LampuLampu! ! ----> > LampuLampu SudahSudah HidupHidup
KokKok");}");}
77
KokKok );});}}}
public void public void matikanmatikan(){(){if (if (this.statusLamputhis.statusLampu == == KeadaanHidupKeadaanHidup){){
this.statusLamputhis.statusLampu = = KeadaanMatiKeadaanMati;;System.out.printlnSystem.out.println("("MatikanMatikan LampuLampu! ! ----> > LampuLampu MatiMati");");
}else{}else{System.out.printlnSystem.out.println("("MatikanMatikan LampuLampu! ! ----> > LampuLampu SudahSudah MatiMati KokKok");");}}}}}}
public class public class InterfaceBeraksiInterfaceBeraksi{{public static void main(String[] public static void main(String[] argsargs){){
LampuLampu lampuKamarlampuKamar = new = new LampuLampu();();
System.out.printlnSystem.out.println("Status ("Status LampuLampu SaatSaat IniIni: : MatiMati");");
78
lampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampulampuKamar.matikanlampuKamar.matikan(); //(); //MatikanMatikan LampuLampulampuKamar.matikanlampuKamar.matikan(); //(); //MatikanMatikan LampuLampulampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampulampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampu
}}}}
Object-Oriented Programming
[email protected]://romisatriawahono.net
Latihan Latihan
Buat program serupa dengan Buat program serupa dengan InterfaceBeraksi.java tapi untuk InterfaceBeraksi.java tapi untuk ACBeraksi.javaACBeraksi.javaM kk th dM kk th d th d di b h k th d di b h k Masukkan methodMasukkan method--method di bawah ke method di bawah ke dalam dalam ACBeraksi.javaACBeraksi.java
matikanAC() dan hidupkanAC()matikanAC() dan hidupkanAC()dinginkanAC() dan panaskanAC ()dinginkanAC() dan panaskanAC ()
79
Tugas MandiriTugas Mandiri
Buat situs blogBuat situs blog, bisa ditempat gratis semacam , bisa ditempat gratis semacam wordpress.com atau blogspot.com, atau hosting wordpress.com atau blogspot.com, atau hosting secara profesionalsecara profesionalPilih satu topik tentang konsep OOPPilih satu topik tentang konsep OOP, jelaskan , jelaskan d b h d (b h ) d d b h d (b h ) d dengan bahasa sendiri (bahasa manusia) dan dengan bahasa sendiri (bahasa manusia) dan sampaikan code yang orisinal (tidak mengambil sampaikan code yang orisinal (tidak mengambil dari tempat lain)dari tempat lain)Daftar di university.romisatriawahono.netDaftar di university.romisatriawahono.net, , upload url blog yang telah dibuat melalui fitur upload url blog yang telah dibuat melalui fitur tugas mandiritugas mandiri
80
Java API untuk Referensi Java API untuk Referensi PemrogramanPemrograman
81
Referensi Referensi --11--
Sharon Zakhour et al, Sharon Zakhour et al, The Java Tutorial The Java Tutorial Fourth EditionFourth Edition, , http://java.sun.com/docs/books/tutorialhttp://java.sun.com/docs/books/tutorialDeitel & Deitel, Deitel & Deitel, Java How to ProgramJava How to Program Sixth Sixth EditionEdition Prentice Hall 2004 Prentice Hall 2004EditionEdition, Prentice Hall, 2004, Prentice Hall, 2004Kathy Sierra & Bert Bates, Kathy Sierra & Bert Bates, Head First Java Head First Java 2nd Edition2nd Edition, O’Reilly, 2005, O’Reilly, 2005Rogers Cadenhead & Laura Lemay, Rogers Cadenhead & Laura Lemay, Teach Teach Yourself Java 6 in 21 DaysYourself Java 6 in 21 Days, Sams Publishing, , Sams Publishing, 20072007
84
Object-Oriented Programming
[email protected]://romisatriawahono.net
Referensi Referensi --22--
Tim Pengembang JENI, Tim Pengembang JENI, JENI 1JENI 1--66, , Depdiknas, 2007Depdiknas, 2007Abdul Kadir, Abdul Kadir, Dasar Pemrograman Java 2Dasar Pemrograman Java 2, , Penerbit Andi, 2004Penerbit Andi, 2004Indrajani dan Martin Indrajani dan Martin P mr graman B rbasis P mr graman B rbasis Indrajani dan Martin, Indrajani dan Martin, Pemrograman Berbasis Pemrograman Berbasis Objek dengan JavaObjek dengan Java, Elex Media Komputindo, , Elex Media Komputindo, 20072007
85