Top Banner

of 13

oop konsep romi satria

Oct 16, 2015

Download

Documents

reza rahmad

oop konsep romi satria
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    OOP ConceptsOOP Concepts

    1

    RomiRomi SatriaSatria [email protected]@romisatriawahono.nethttp://romisatriawahono.nethttp://romisatriawahono.net

    YM: YM: romi_swromi_sw

    zz SD Sompok Semarang (1987)SD Sompok Semarang (1987)zz SMPN 8 Semarang (1990)SMPN 8 Semarang (1990)zz SMA Taruna Nusantara, Magelang (1993)SMA Taruna Nusantara, Magelang (1993)zz S1, S2 dan S3 (onS1, S2 dan S3 (on--leave) dari leave) dari Department Department of of

    Computer Sciences Computer Sciences Saitama UniversitySaitama University Japan (1994 Japan (1994

    Romi Satria WahonoRomi Satria Wahono

    2

    Computer Sciences, Computer Sciences, Saitama UniversitySaitama University, Japan (1994, Japan (1994--2004)2004)

    zz Core Competence: Core Competence: Software Software EngineeringEngineering, eLearning , eLearning System, Knowledge ManagementSystem, Knowledge Management

    zz PenelitiPeneliti didi LembagaLembaga IlmuIlmu PengetahuanPengetahuan IndonesiaIndonesiazz Founder Founder dandan KoordinatorKoordinator IlmuKomputer.ComIlmuKomputer.Com

    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) Polymorphisme (Encapsulation) Pewarisan (Inheritance) Polymorphisme

    3

    (Encapsulation), Pewarisan (Inheritance), Polymorphisme (Encapsulation), Pewarisan (Inheritance), Polymorphisme

    3.3. Konsep Lanjut Konsep Lanjut PemrogramanPemrograman BerorientasiBerorientasi ObyekObyek::Constructor, Destructor, Overloading, Overriding, Keyword Constructor, Destructor, Overloading, Overriding, Keyword This, Multithreading, Package, Interface, ExceptionThis, Multithreading, Package, Interface, Exception

    eLearningeLearning Course: Course: http://university.romisatriawahono.nethttp://university.romisatriawahono.netEnrolment Key: Enrolment Key: oopoop

    Konsep Pemrograman Konsep Pemrograman dan Paradigmanyadan Paradigmanya

    4

    Bahasa Pemrograman?Bahasa Pemrograman?

    zz Komputer bekerja seperti Komputer bekerja seperti switchingswitching dan hanya dan hanya mengenali 0 dan 1mengenali 0 dan 1

    zz Manusia Manusia tidak (paham) berbicara tidak (paham) berbicara dengan bahasa dengan bahasa 0 dan 10 dan 1P l b h p g g d p t j di P l b h p g g d p t j di zz Perlu bahasa pemrograman yang dapat menjadi Perlu bahasa pemrograman yang dapat menjadi perantara percakapan perantara percakapan antara komputer dan antara komputer dan manusiamanusia

    zz Bahasa 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

    5

    Tingkat Bahasa PemrogramanTingkat Bahasa Pemrograman

    zz Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat RendahRendah(Assembler)(Assembler)

    zz Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat SedangSedang(C Pascal Fortran)(C Pascal Fortran)(C, Pascal, Fortran)(C, Pascal, Fortran)

    zz Bahasa Pemrograman Tingkat Bahasa Pemrograman Tingkat TinggiTinggi(Java, C++, C#)(Java, C++, C#)

    6

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Compiler or Interpreter?Compiler or Interpreter?

    zzCompiler:Compiler:Mengkompilasi source code Mengkompilasi source code menjadi bentukmenjadi bentuk file yang bisa file yang bisa dieksekusidieksekusidieksekusidieksekusi

    zz Interpreter:Interpreter:Mengkompilasi dan menjalankan Mengkompilasi dan menjalankan source code source code secara langsungsecara langsung

    7

    Assembly LanguageAssembly Language

    0001010000010100001100101001100101

    LDA #47LDA #47STA $STA $570570DEXDEXJSR JSR $817$817CPX #0CPX #0BNE #14BNE #14

    Assembly language programAssembly language program

    TranslationTranslationprogramprogram

    (Assembler)(Assembler)

    8

    00001000000010001001001011001001010101010100101010101001010010

    Machine language programMachine language program(executable file)(executable file)

    y g g p gy g g p g

    C LanguageC Language

    ##include

    mainmain()(){{printf(Hall )printf(Hall )

    CC CompilerCompiler

    000101000000010100001100101000110010100001000100100100010010010101010100101010101010100101010010

    9

    printf(Hallo);printf(Hallo);}}

    C ProgramC Program

    10100101010010

    Machine language programMachine language program((executable .exe executable .exe file)file)

    Java LanguageJava Language

    10

    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

    zz Functional ProgrammingFunctional Programming: Urutan fungsi secara : Urutan fungsi secara sekuensial (Scheme Lisp)sekuensial (Scheme Lisp)sekuensial (Scheme, Lisp)sekuensial (Scheme, Lisp)

    zz Procedural ProgrammingProcedural Programming: Pemecahan masalah : Pemecahan masalah berdasarkan prosedural kerja. Fungsi adalah unit berdasarkan prosedural kerja. Fungsi adalah unit programming (C, Pascal, Fortran)programming (C, Pascal, Fortran)

    zz ObjectObject--Oriented ProgrammingOriented Programming: Koleksi object yang : Koleksi object yang saling berinteraksi . Class adalah unit programming saling berinteraksi . Class adalah unit programming (Java, C#, C++)(Java, C#, C++)

    11

    Tool Pemrograman JavaTool Pemrograman Java

    1.1. Text Editor + Compiler (Interpreter)Text Editor + Compiler (Interpreter)::TextPad, Notepad++, Java Standard EditionTextPad, Notepad++, Java Standard Edition

    2.2. Integrated Development EnvironmentIntegrated Development Environment (IDE):(IDE):Eclipse, Netbeans, JCreatorEclipse, Netbeans, JCreator

    12

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Install, Compile and Install, Compile and Running JavaRunning Java

    13

    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 For ee--bussinessbussiness, e, e--commerce commerce

    web based applicationweb based application

    Java Java Micro EditionMicro Edition((JJava ava MEME)) For small devices, like For small devices, like

    palm,handphonepalm,handphone, 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 StartStartControl Panel Control Panel SystemSystem3.3. Klik Klik StartStartControl Panel Control Panel SystemSystem

    AdvancedAdvancedEnvironment 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

    15

    javac javac compilercompilerInterpreterInterpreter 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

    Java bytecode(Hello.class)

    Kompiler memproduksiKompiler memproduksiBytecode (Class)Bytecode (Class)

    Web ServerWeb ServerWrite Once Run Everywhere !Write Once Run Everywhere !

    Menulis Program Menulis Program Halo SemarangHalo Semarangpublic public class class HHalalo{o{

    public static void main(String[] public static void main(String[] argsargs){){System.out.printlnSystem.out.println((Halo SemarangHalo Semarang");");

    }}}}

    17

    GUI Version GUI Version Halo SemarangHalo Semarangimport 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");}}

    18

    }}

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    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););

    }}}}

    A Simple Program

    Here is the output of my program:

    C:C:\\javac HelloWorld.javajavac HelloWorld.java

    C:C:\\appletviewer Hello.htmlappletviewer Hello.html

    Menulis Java ProgramMenulis Java Program

    zz 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!!

    zz 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

    Tugas: Tulis dan Compile Halo.JavaTugas: Tulis dan Compile Halo.Java

    public 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);

    21

    y p gy p g}}

    }}

    Konsep Dasar Konsep Dasar Pemrograman Pemrograman Berorientasi ObjekBerorientasi Objek

    22

    Berorientasi Objek?Berorientasi Objek?

    Attribute:Attribute:Topi, Baju, Tas Topi, Baju, Tas Punggung, Jaket, Punggung, Jaket, Tangan, Kaki, MataTangan, Kaki, Mata

    hh

    23

    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

    24

    Attribute Attribute Variable(Member)Variable(Member)Behavior Behavior Method(FungsiMethod(Fungsi))

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    TugasTugas

    1.1. Lakukan kegiatan berorientasi objek Lakukan kegiatan berorientasi objek dengan target dengan target SepedaSepeda

    2.2. Pikirkan apa Pikirkan apa atribut dan behavior atribut dan behavior yang yang dimiliki oleh Sepeda tersebutdimiliki oleh Sepeda tersebutdimiliki oleh Sepeda tersebutdimiliki oleh Sepeda tersebut

    25

    Procedural vs ObjectProcedural vs Object--OrientedOriented

    main

    perform transaction

    Accountcreditdebit

    26

    compute feesif checking then xxx if savings then xxx etc.

    compute interestif checking then xxx if savings then xxx etc.

    debitcreditSavingsAccount

    compute interestcompute fees

    CheckingAccount

    compute interestcompute fees

    Karakteristik OOP Karakteristik OOP --11--zz 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.zz Mobil adalah kumpulan sistem pengapian, sistem Mobil adalah kumpulan sistem pengapian, sistem

    kemudi sistem pengeremankemudi sistem pengeremankemudi, sistem pengeremankemudi, sistem pengeremanzz 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 sendirizz Tongkat transmisi (gigi) pada mobilTongkat transmisi (gigi) pada mobilzz Tombol on/off/pengaturan suhu pada ACTombol on/off/pengaturan suhu pada AC

    27

    Karakteristik OOP Karakteristik OOP --22--

    zz 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

    28

    Karakteristik OOP Karakteristik OOP --33--

    zz 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

    zz PolymorphismPolymorphism: Suatu : Suatu object dapat memiliki object dapat memiliki berbagai bentukberbagai bentuk, sebagai object dari classnya , sebagai object dari classnya gg g j yg j ysendiri atau object dari superclassnyasendiri atau object dari superclassnyazz OverloadingOverloading: Penggunaan : Penggunaan satu nama untuk beberapa satu nama untuk beberapa

    methodmethod yang berbeda (beda parameter)yang berbeda (beda parameter)zz OverridingOverriding: Terjadi ketika deklarasi method subclass : Terjadi ketika deklarasi method subclass

    dengan nama dan parameter yang sama dengan dengan nama dan parameter yang sama dengan method dari superclassnyamethod dari superclassnya

    29

    Class dan Object Class dan Object --11--

    zz Class: Class: mobilmobilzz Object: Object: mobilnya pak Joko, mobilkumobilnya pak Joko, mobilku

    zz 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 objectobject

    zz Warna 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))

    zz Object adalah Object adalah instance dari Classinstance dari Class

    30

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Class and Object Class and Object --22--Class = Class = method+method+variablevariable

    The The BicycleBicycle classclass

    Class dan Object Class dan Object --33--

    32

    Bicycle Bicycle dimodelkan sebagai sebuah dimodelkan sebagai sebuah objectobject::zz 10 mph, 90 rpm, 510 mph, 90 rpm, 5thth gear adalah gear adalah instance variableinstance variablezz changegearschangegears, 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

    MethodMethod

    zzMMethodethod adalah adalah implementasi dari implementasi dari bagaimana bekerjanya sebuah classbagaimana bekerjanya sebuah classzzMethod melakukan:Method melakukan:

    11 Manipulasi dataManipulasi data1.1. Manipulasi dataManipulasi data2.2. Perhitungan matematikaPerhitungan matematika3.3. Memonitor kejadian dari suatu eventMemonitor kejadian dari suatu event

    Membuat Class dan Memanggil Object Membuat Class dan Memanggil Object (MobilBeraksi.java)(MobilBeraksi.java)class 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){// M b t bj t// M b t bj t// Membuat object// Membuat object

    Mobil 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);;

    }}}}35

    Membuat Class dan Memanggil Object Membuat Class dan Memanggil Object (MobilBeraksi2.java)(MobilBeraksi2.java)class 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);

    }}}}public class MobilBeraksi2{public class MobilBeraksi2{

    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();

    }}}}36

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    TugasTugas

    zz Kembangkan Class Kembangkan Class Mobil2Mobil2, ubah nama menjadi , ubah nama menjadi Mobil3Mobil3 masukkan method:masukkan method:zz hidupkanMobil()hidupkanMobil()zz matikanMobil()matikanMobil()

    b h ()b h ()zz ubahGigi()ubahGigi()zz Isi masingIsi masing--masing method dengan tampilan masing method dengan tampilan

    status menggunakan status menggunakan System.out.println()System.out.println()zz Panggil methodPanggil method--method diatas dari method diatas dari

    MobilBeraksi3MobilBeraksi3

    37

    Message Message dan Parameter dan Parameter --11--zz 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 tersebutzz Object 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

    38

    Message Message dan Parameterdan Parameter --22--

    39

    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 perform4.4. lowerGearlowerGearinformation from You to information from You to YourBicycleYourBicycle, the , the

    parametersparameters needed by the methodneeded by the method

    Membuat Class (SepedaBeraksi.java)Membuat Class (SepedaBeraksi.java)class 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);

    }}}}

    40

    Membuat dan Memanggil ObjectMembuat dan Memanggil Objectpublic 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();

    //memanggil atribut dan memberi nilai//memanggil atribut dan memberi nilaisepedaku kecepatan=10sepedaku kecepatan=10sepedaku.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);

    }}}}

    41

    TugasTugaszz Buat Class bernama Buat Class bernama MatematikaMatematika, yang berisi , yang berisi

    method dengan dua parameter:method dengan dua parameter:zz pertambahanpertambahanzz penguranganpenguranganzz perkalianperkalianzz pembagianpembagianp gp g

    zz Buat Class bernama Buat Class bernama MatematikaBeraksiMatematikaBeraksi, yang , yang mengeksekusi method dan menampilkan:mengeksekusi method dan menampilkan:zz Pertambahan: 20 + 20 = 40Pertambahan: 20 + 20 = 40zz Pengurangan: 10Pengurangan: 10--5 = 55 = 5zz Perkalian: 10x20 = 200Perkalian: 10x20 = 200zz Pembagian: 21/2 = 10.5 (float or double)Pembagian: 21/2 = 10.5 (float or double)

    42

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Tips Membuat CTips Membuat Classlass

    zz 1 file 1 file bisa berisi bisa berisi >=1>=1 classclasszz 1 file 1 file hanya dapat berisi 1 public classhanya dapat berisi 1 public classzzNama file harus sama dengan namaNama file harus sama dengan nama

    public public classclass sifatnya adalah csifatnya adalah casease sensitivesensitive

    43

    public public classclass sifatnya adalah csifatnya adalah casease sensitivesensitivezz Tips: 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;

    44

    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--

    zz Method yang digunakan untuk memberi Method yang digunakan untuk memberi nilai awal nilai awal pada saat object diciptakanpada saat object diciptakan

    zz Dipanggil secara otomatis ketika Dipanggil secara otomatis ketika newnewdigunakan untuk membuat instan classdigunakan untuk membuat instan classgg

    zz Sifat konstruktor:Sifat konstruktor:zz Nama konstruktor Nama konstruktor sama dengan nama classsama dengan nama classzz Tidak memiliki nilai balikTidak memiliki nilai balik dan tidak boleh ada dan tidak boleh ada

    kata kunci voidkata kunci void

    45

    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();

    }}}}46

    Class Access Level Class Access Level

    SpecifierSpecifier ClassClass PackagePackage SubClassSubClass WorldWorld

    privateprivate 99

    47

    no specifierno specifier 99 99

    protectedprotected 99 99 99

    publicpublic 99 99 99 99

    Tugas:Tugas:1.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:zz Pemrograman Berbasis Objek dengan Java, Indrajani, Pemrograman Berbasis Objek dengan Java, Indrajani,

    Elexmedia Komputindo, 2007Elexmedia Komputindo, 2007zz Dasar Pemrograman Java, Abdul Kadir, Andi Offset, Dasar Pemrograman Java, Abdul Kadir, Andi Offset,

    20062006

    48

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Inheritance (Pewarisan) Inheritance (Pewarisan)

    zz ReusabilityReusabilityzz Top down:Top down:zz Being more Being more specificspecific

    zz Bottom Up:Bottom Up:zz Find Find similiaritysimiliarity

    49

    ind ind imi ia ityimi ia ityzz Java 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);

    }}}}

    50

    SepedaGunungBeraksi.javaSepedaGunungBeraksi.java

    class class SepedaGunung SepedaGunung extendsextends Sepeda Sepeda { {

    int setSadel; int setSadel;

    public void spublic void setSadeletSadel((intint nilaiSadelnilaiSadel) { ) { setSadel =setSadel = nilaiSadelnilaiSadel; ;

    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 objectSystem.out.println(Tinggi System.out.println(Tinggi Sadel:+setSadel);Sadel:+setSadel);} }

    } }

    51

    sepedaku.tambahKecepatan(10);sepedaku.tambahKecepatan(10);sepedaku.ubahGir(2);sepedaku.ubahGir(2);sepedaku.setSadel(20);sepedaku.setSadel(20);

    }}}}

    TugasTugas

    zz Buat class Buat class Mobil3BMWMobil3BMW yang merupakan inherit yang merupakan inherit dari class dari class Mobil3Mobil3

    zz Tambahkan method Tambahkan method nontonTV() nontonTV() yang yang menampilkan tulisan di layar:menampilkan tulisan di layar:zz TV dihidupkanTV dihidupkanzz TV mencari channelTV mencari channelzz TV menampilkan gambarTV menampilkan gambar

    zz Buat class Buat class Mobil3BMWBeraksiMobil3BMWBeraksi yang memanggil yang memanggil method method nontonTV, hidupkanMobil, nontonTV, hidupkanMobil, matikanMobil, ubahGigimatikanMobil, ubahGigi

    52

    Konsep Lanjut Konsep Lanjut PemrogramanPemrogramanBerorientasiBerorientasi ObObjjekek

    53

    PolymorphismPolymorphism

    zz 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

    54

    zz OverloadingOverloading: Penggunaan satu nama : Penggunaan satu nama untuk beberapa method yang berbeda untuk beberapa method yang berbeda (beda parameter)(beda parameter)

    zz OverridingOverriding: Terjadi ketika deklarasi method : Terjadi ketika deklarasi method subclass dengan nama dan parameter yang subclass dengan nama dan parameter yang sama dengan method dari superclassnyasama dengan method dari superclassnya

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    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);}}

    }}

    55

    }}}}

    Contoh Lain OverloadingContoh Lain Overloading

    class Lingkaran{class Lingkaran{

    public public buatLingkaran(int diameter)buatLingkaran(int diameter){{}}

    bli bli b tLi k (i t di t i t i t )b tLi k (i t di t i t i t ){{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, buatLingkaran(int diameter, int x, int y, int warna, String namaLingkaran)int warna, String namaLingkaran){{}}

    }}56

    Polymorphism Polymorphism -- OverridingOverriding//Filename: Point2D.java//Filename: Point2D.javapublic class Point2D{public class Point2D{

    intint x, y; // member variablex, y; // member variable

    public Point2D() public Point2D() {{x=0x=0; y = 0; y = 0;;

    }}public Point2D(public Point2D(intint nxnx, , intint nyny){){

    tP i ttP i t(( ))

    // continue class Point // continue class Point dedeclclarationaration// getter method// getter methodintint getXgetX() { return x; }() { return x; }intint getYgetY() { return y; } () { return y; }

    // // overideoveride method from class Objectmethod from class Objectpublic String public String toStringtoString(){(){

    return return x: x: +x +x , y: , y: +y;+y;}}

    57

    setPointsetPoint((nxnx, , nyny););}}

    // setter method// setter methodpublic public setPointsetPoint((intint nxnx, , intint nyny){){

    x = x = nxnx;;y = y = nyny;;

    }}

    }}}}

    TugasTugas

    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) Meth d baru adalah bertipe data pembagian) Meth d baru adalah bertipe data pembagian) . Method baru adalah bertipe data pembagian) . Method baru adalah bertipe data doubledouble (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)

    58

    Tugas:Tugas:

    1.1. Kembangkan class Kembangkan class Buku Buku dan BukuBeraksidan BukuBeraksi2.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, Pengarang saja: Judul, Pengarang saja3.3. Panggil kedua konstruktor class Panggil kedua konstruktor class BukuBuku tadi tadi

    dari class dari class BukuBeraksiBukuBeraksi

    59

    PackagesPackages

    zz 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 namespacenamespace

    zz 1 package 1 package adalah adalah 1 1 subfolder subfolder di di file file systemsystem

    60

    zz 1 package 1 package adalah adalah 1 1 subfolder subfolder di di file file systemsystemzz Package sangat berguna untuk Package sangat berguna untuk

    mengorganisir file dalam suatu project atau mengorganisir file dalam suatu project atau librarylibrary

    zz Nama package menggunakan lowercaseNama package menggunakan lowercasezz KeywordKeyword: : package name;package name;

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Budi.javaBudi.java

    package kelasku;package kelasku;

    publicpublic class Budi{class Budi{p bli id inf (){p bli id inf (){public void info(){public void info(){

    System.out.println(Kelas Budi);System.out.println(Kelas Budi);}}

    }}

    61

    Joko.javaJoko.java

    package kelasku;package kelasku;

    publicpublic class Joko{class Joko{p bli id inf (){p bli id inf (){public void info(){public void info(){

    System.out.println(Kelas Joko);System.out.println(Kelas Joko);}}

    }}

    62

    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();

    }}}}

    63

    TugasTugaszz Buat class Buat class BudiBudi dan dan JokoJokozz Buat method Buat method info()info() yang menampilkan Ini yang menampilkan Ini

    Kelas Budi dan Ini Kelas JokoKelas Budi dan Ini Kelas Jokozz Buat bethod Buat bethod matakuliah()matakuliah() menampilkan menampilkan

    mata kuliah yang diajar Budi dan Jokomata kuliah yang diajar Budi dan Jokomata kuliah yang diajar Budi dan Jokomata kuliah yang diajar Budi dan Jokozz Paketkan kedua class tadi dalam satu Package Paketkan kedua class tadi dalam satu Package

    bernama bernama dosen dosen (gunakan keyword: (gunakan keyword: packagepackage))zz 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))

    64

    TugasTugas

    zz Paketkan berbagai class yang kita buat Paketkan berbagai class yang kita buat ((Mobil dan SepedaMobil dan Sepeda) dalam package ) dalam package transportasitransportasi

    zz Panggil dari class lain Panggil dari class lain zz Panggil dari class lain Panggil dari class lain ((TransportasiBeraksi.javaTransportasiBeraksi.java) dengan ) dengan importimport

    65

    InterfaceInterface

    zz 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

    66

    bagaimana cara untuk melakukannyabagaimana cara untuk melakukannyazz Interface sebenarnya sama dengan class, Interface sebenarnya sama dengan class,

    tapi hanya memiliki tapi hanya memiliki deklarasi method deklarasi method tanpa implementasitanpa implementasi

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    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

    67

    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");}");}

    68

    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");");

    69

    lampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampulampuKamar.matikanlampuKamar.matikan(); //(); //MatikanMatikan LampuLampulampuKamar.matikanlampuKamar.matikan(); //(); //MatikanMatikan LampuLampulampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampulampuKamar.hidupkanlampuKamar.hidupkan(); //(); //HidupkanHidupkan LampuLampu

    }}}}

    TugasTugas

    zz Buat program serupa dengan Buat program serupa dengan InterfaceBeraksi.java tapi untuk InterfaceBeraksi.java tapi untuk ACBeraksi.javaACBeraksi.java

    zzMasukkan methodMasukkan method--method di bawah ke method di bawah ke Masukkan meth dMasukkan meth d meth d di bawah ke meth d di bawah ke dalam dalam ACBeraksi.javaACBeraksi.javazz matikanAC() dan hidupkanAC()matikanAC() dan hidupkanAC()zz dinginkanAC() dan panaskanAC ()dinginkanAC() dan panaskanAC ()

    70

    Java API untuk Referensi Java API untuk Referensi PemrogramanPemrograman

    71

  • Object-Oriented Programming

    [email protected]://romisatriawahono.net

    Referensi Referensi --11--

    zz 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/tutorial

    zz Deitel & Deitel, Deitel & Deitel, Java How to ProgramJava How to Program Sixth Sixth EditionEdition Prentice Hall 2004 Prentice Hall 2004EditionEdition, Prentice Hall, 2004, Prentice Hall, 2004

    zz Kathy Sierra & Bert Bates, Kathy Sierra & Bert Bates, Head First Java Head First Java 2nd Edition2nd Edition, OReilly, 2005, OReilly, 2005

    zz Rogers 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

    74

    Referensi Referensi --22--

    zz Tim Pengembang JENI, Tim Pengembang JENI, JENI 1JENI 1--66, , Depdiknas, 2007Depdiknas, 2007

    zz Abdul Kadir, Abdul Kadir, Dasar Pemrograman Java 2Dasar Pemrograman Java 2, , Penerbit Andi, 2004Penerbit Andi, 2004Indrajani dan Martin Indrajani dan Martin P mr graman B rba i P mr graman B rba i zz Indrajani dan Martin, Indrajani dan Martin, Pemrograman Berbasis Pemrograman Berbasis Objek dengan JavaObjek dengan Java, Elex Media Komputindo, , Elex Media Komputindo, 20072007

    75