object oriented programming with java

Post on 09-Feb-2016

121 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

By : Winzaldi Java Programmer EDI I ndonesia. Object Oriented Programming With Java. Konsep O O P. Intro O O P. OOP adalah sebuah paradigma / cara pandang pemograman Salah satu cara untuk menggam barkan struktur dari aplikasi - PowerPoint PPT Presentation

TRANSCRIPT

OBJECT ORIENTED PROGRAMMING WITH JAVA

By : Winzaldi

Java Programmer

EDI Indonesia

Konsep OOP

Intro OOP OOP adalah sebuah paradigma/cara pandang

pemograman Salah satu cara untuk menggambarkan struktur

dari aplikasi Paradigma selain OOP

- Procedural,Functional dan lain-lain Sekarang OOP menjadi paradigma pemograman

yang popular - Java - PHP 5 - C# - C++

Keuntungan OOP Reuseability

- Once you written code, you can reuse it! Management

- Aplikasi yang diprogram menggunakan kelas-kelas dan objek.objek-objek yang saling berkomuniskasi.

Maintenance- ketika kita melakukan perubahan code, maka tidak akan mempengaruhi seluruh bagian dari aplikasi

Konsep Dasar : Objek• Di dunia nyata, dunia terdiri atas objek-objek.

- mobil-mobil,bangunan-bangunan,pepohonan,manusia, bunga dan lain-lain.

• Biasanya setiap objek mempunyai perilaku/aksi• (fungsi-fungsi) yang mempengaruhi objek lain.

- agus mengendarai bmw - objek agus mempengaruhi objek bmw. - agus.mengendarai(bmw);

• Dan Objek mempunyai atribut-atribut. - bmw mempunyai gears,warna,kaca spion dan lain-lain.

Contoh Objek

Mobil BMW Mobil BMW memiliki bebarapa perilaku/aksi :

- melaju- berhenti- tambah kecepatan”- dan lain-lain

Mobil BMW memiliki informasi atau atribut-atribut.- warna,jumlah gears,jumlah pintu dan lain-lain.

Konsep Dasar : Kelas Kelas adalah sebuah blue print atau cetakan dari

sebuah objek. Kelas menggambarkan state/atribut dan

perilaku/aksi objek. Objek dibentuk dari Kelas

Contoh Kelas Jika BMW adalah Objek Maka Kelasnya

adalah Mobil Jika kita ingin membuat objek BMW

maka kita harus mempunyai blue print/ cetakan dari BMW

Blue print/ Cetakan dari Objek : Mobil Kelas Mobil -> Objek BMW

Contoh : Kelas > Objek

Kelas ObjekMobil BMWManusia AldiWarna KuningLaptop AcerString “pergi ke mall”Array {1,2,3,4}…….

Mobil Blueprint (Kelas) di UML

Mobil

merkmesinjumlahPintuwarnajumlahRoda……

Kelas ke Objekdatsun

Datsun 100A1.03red4

lambo

Lamborghini Diablo8.03red4

Mobil

merktipeMesinjumlahPintuwarnajumlahRoda……

Kelas dan Objek di Java

Kelas Orang > ObjekIwan

IwanMahmud25guru021-12345

Zaki

zakiHasan30Programmer Java021-654321

Orang

namaAwalnamaAkhirumurpekerjaannoTelpon

Makan()Tidur()minumTeh()

makantidurminumTeh

Orang

namaAwalnamaAkhirumurpekerjaannoTelpon

makantidurminumTeh

Orang – Kelas > Javaclass Orang { public String namaAwal;

public String namaAkhir; public int age; public String pekerjaan; public String noTelpon;

public void makan() { System.out.println(“Makan ..yummy!"); }

public void tidur() { System.out.println(“Lagi Tidur!"); }

public void minumTeh() { System.out.println(“Minum Teh!"); }}

Tes kelas orang.bisanya applikasi di mulai dari main-method

class Orang { ....}

class JustTesting { public static void main(String [] args) { // Declare the object Orang jack; // Initialize the object jack = new Orang(); jack.namaAwal = "Jack"; jack.namaAkhir = "Smith"; jack.minumTeh();

System.out.println(“nama : ” + jack.namaAwal); }}

Contoh: Kelas -Mobilclass Mobil{ public String merk; public int jumlahMinyak; public void jalan() { jumlahMinyak--; }}

class Mobil { ....}

class JustTesting { public static void main(String [] args) { Mobil datsun = new Mobil(); datsun.jumlahMinyak = 100; datsun.jalan(); System.out.println(datsun.jumlahMinyak);

Mobil ferrari = new Mobil(); ferrari.jumlahMinyak = 300; ferrari.jalan(); System.out.println(ferrari.jumlahMinyak); }}

Konsep Dasar - Enkapsulasiprivate

public method

Tentang Atribut Atribut-atribut biasa dibuat private Agar objek lain tidak bisa merubah sewenang-

wenang Misalnya, Anda tidak ingin bahwa setiap benda di

dunia bisa mengubah berat badan seseorang untuk 500kg

Contoh: Kelas Orangclass Orang { private String nama; private int berat;}

class Orang { private String nama; private int berat;}

class JustTesting { public static void main(String [] args) { Orang jack = new Orang(); jack.nama = "Jack Smith"; jack.berat = 500; }}

RESULT:TB308POHJUS-L-2:temp pohjus$ javac Orang.java Orang.java:9: nama has private access in Orang jack.nama = "Jack Smith"; ^Orang.java:10: berat has private access in Orang jack.berat = 500; ^2 errors

class Person { private String nama; private int weight;

public void setnama(String n) { nama = n; } public String getnama() { return nama; } public void setWeight(int w) { if(w > 0 && w <= 150) weight = w; } public int getWeight() { return weight; }}

class JustTesting { public static void main(String [] args) { Person jack = new Person(); jack.setnama("Jack Smith"); jack.setWeight(200); System.out.println(jack.getnama()); }}

Accessor and Mutator - methodsclass Orang { private String nama; private int berat;

// Mutator public void setNama(String n) { nama = n; } // Accessor public String getNama() { return nama; }

// Mutator public void setBerat(int w) { if(w > 0 && w <= 150) berat = w; } // Accessor public int getBerat() { return berat; }}

Tipe-tipe di Java

Tipe-tipe di Java Tipe-tipe di java 1) Primitive types

byte, short, int, long, double, float, char, boolean

2) Class(Kelas) types String, Scanner, Array, JButton, JFrame ...

Perbedaanya• Tipe2 primitif di tulis dg huruf kecil di awal:

– int, double, float...• Tipe2 kelas di tulis dg huruf besar di awal

– String, Scanner, Person, Cat, Mobil ...• Deklarasi dan inisialisasi

– int a = 5;• Tipe Kelas deklarasi dan inisialisasi dengan

new– Orang iwan = new Orang();

Perbedaan Tipe Primitif

int a = 5; Tipe Kelas

int [] b= new int[5]; b menampung alamat di memory a menampung nilai 5.

Alamat di memory ?int [] b = new int[2];b[0] = 1;b[1] = 2;// prints 0x01System.out.println(b);

RAM

address value0x01 10x02 2

address value0x09 0x01

variabel b

Alamat di memory?int [] b = new int[2];b[0] = 1;b[1] = 2;int [] a = b;// prints 0x01System.out.println(b);// prints 0x01System.out.println(a);

RAM

address value0x01 10x02 2

address

value

0x09 0x01

variabel b

address

value

0x19 0x01

variabel a

Output?int [] b = new int[2];b[0] = 1;b[1] = 2;int [] a = b;b[0] = 99;// Output?System.out.println(a[0]);

Perbedaan Lagi Tipe Primitif

int a = 5; Tipe Kelas

int [] b= new int[5]; b menampung alamat di memory a menampung nilai 5.

Output? Orang jack = new Orang(); jack.setNama("Jack Smith"); Orang james = jack; james.setNama("James Bond"); // output? System.out.println(jack.getNama());

Methods and Variablespublic void method(int x) { x++;}public void main(String [] args) { int y = 3; method(y); // Output nya 3! System.out.println(y);}

Methods and Variablespublic void method(int [] x) { x[0] = 12;}public void main(String [] args) { int [] y = {1,2,3}; method(y); // Output nya 12 karna array termasuk tipe

kelas! System.out.println(y[0]);}

* String String adalah sebuah pengecualian dari tipe

kelas. String adalah tipe kelas yang perlakuannya

seperti tipe primitif. String adalah tipe kelas yang hanya bisa di

inisialisasi tanpa kata new. String a = "hello";

String di perlakukan sebagai passed by value di dalam method,sehingga String adalah copian ketika String dilewatkan di dalam method.

String dan Memori Variable string adalah objek=>

manampung alamat di memori. Membandingkan isi dari variabel String

a.equals(b); Membandingkan alamat di memori

a == b

Constructor (Konstruktor)

Konstruktor Konstruktor adalah sebuah “init method”

yang dipanggil ketika objek diciptakan. Java menyediakan default konstruktor tanpa

parameter. Konstruktor mempunya nama yang sama

dengan nama kelas. Konstruktor tidak mengembalikan apapun. hanya mempunyai access modifer, tidak ada

keyword lain yang diletakkan sebelum nama method pada deklarasi constructor

Exampleclass Mobil { public Mobil() { System.out.println(“Konstruktor!"); }}class Test { public static void main(String [] args) { Mobil ferrary = new Mobil(); }}

> java TestKonstruktor!

class Mobil {

private String merk;

public Mobil(String b) { merk = b; } public String getMerk() {

return merk;

}

}

class Test {

public static void main(String [] args) {

Mobil datsun = new Mobil("Datsun 100A"); System.out.println( datsun.getMerk() ); }

}

> java TestDatsun 100A

Multiple Konstruktorclass Mobil { public Mobil() { // Do something } public Mobil(String merk) { // Do something else }}class Test { public static void main(String [] args) { Mobil datsun = new Mobil(); Mobil ferrari = new Mobil("Ferrari"); }}

Masalah ?class Mobil { String merk; public Mobil(String merk) { merk = merk; }}class Test { public static void main(String [] args) { Mobil datsun = new Mobil("Datsun 100a"); }}> java Testnull

Solusiclass Mobil { String merk; public Mobil(String merk) { this.merk = merk; }}class Test { public static void main(String [] args) { Mobil datsun = new Mobil("Datsun 100a"); }}> java TestDatsun 100a

KOMPOSISI

Komposisi Hubungan antara objek-objek,dimana

suatu objek memiliki objek lain. Dimana objek kedua tidak bisa berdiri

sendiri tanpa objek pertama. Mobil memiliki Mesin Ketika kita mencipatkan Mobil,berarti kita

juga mencipatkan mesin. Ketika Mobil di hancurkan berarti mesin

juga di hancurkan.

Notasi UML

Mobil Mesin

Java: Komposisi// Komposisiclass Mobil{ private Mesin mesin; public Mobil() { mesin = new Mesin(); }}

One to Many (Satu ke Banyak)?

Departemen Professor1..20

Java: One to Manyclass Departemen{ private Professor [] anggota; private int jumlahAnggota;

public Departemen(Professor prof) { anggota = new Professor[20]; anggota[0] = prof; jumlahAnggota = 1; }

public void addProfessor(Professor prof) { anggota[jumlahAnggota] = prof; jumlahAnggota++; }}

Inheritance (Pewarisan)

Pengenalan Pewarisan Pewarisan adalah sebuah hubungan antara

dua kelas atau lebih dimana devrived class (kelas turunan ) mewarisi perilaku-perilaku dan atribut-atribut dari base class (kelas dasar).

Membantu untuk menggunakan kembali code yang telah ada dengan sedikit modifikasi atau tanpa modifikasi.

Inheritance Pewarisan dapat terus bersambung

Kelas Turunan dapat mewarisi kelas lain,dimana klas lain tsb mewarisi kelas lain dan seterusnya.

Ketika terjadi perubahan pada kelas dasar maka semua kelas turunannya juga ikut berubah

Example: Mamalia <– Manusia <– Pekerja <-

Programmer

Gambaran tentang Pewarisanab

Class A

Fitur : a,b

c

Class B

Fitur: a,b,c de

Class C

Fitur : a,b,d,e

f

Class D

Fitur: a,b,d,e,f

Banyak Pewarisan (Multiple Inherit) Di banyak pewarisan,kelas turunan dapat

mewarisi banyak kelas dasar C++ mendukung banyak pewarisan, di

java tidak ada banyak pewarisanPengendara- SIM

Kondektur- Nama Anggota

Sopir Taxi- area

Rumah Perahu

Rumah terapung

Pewarisan dan Enkapsulasi private

Hanya dapat di akses hanya didalam base kelas

public Dapat diakses dari mana saja (base kelas,

kelas turunan, kelas-kelas lain) protected

Dapat di akses oleh base kelas dan kelas turunan.

Contoh Dasar Apa saja atribut dan method dari kelas

Programmer?

Manusia

string nama

void tidur()void minum()void makan()

Programmer

int gaji

void buatApp()

Overriding? Sekarang ?

Manusia

string nama

void tidur()void minum()void makan()

Programmer

int gaji

void buatApp()void minum()void makan()

Overriding Ketika proggrammer makan dan minum

yang berbeda dengan manusia(missal:coffee dan pizza),method makan dan minum telah di ditimpa oleh programmer !

Kelas Abstrak Kelas abstrak adalah kelas yang tidak bisa

di instansiasi (buat objek). Kelas abstrak dapat di warisi dan membuat

objek dari kelas yang mewarisinya. Kelas abtsrak Abstract di C++ mempunyai

methode abstrak, dan tidak mempunyai implementasi.

Method abstrak memaksa kelas turunannya untuk membuat implementasi method tsb.

<<abstract>>Mamalia

string nama

void bersuara() {abstract}

Elephant

int panjangHidung

bersuara()

Contoh

Contoh<<abstract>>Bentuk

int x, y

double hitungArea() {abstract}

Bulat

double diameter

double hitungArea()

Kotak

double panjang, lebar

double hitungArea()

Inheritance in java

Contoh : Dasar Pewarisanclass Manusia { public void tidur() { System.out.println(“Sedang Tidur"); }}class Programmer extends Manusia {

}class Test { public static void main(String [] args) { Programmer oji = new Programmer(); oji.tidur(); // “Sedang Tidur" }}

Contoh: Overridingclass Manusia { public void tidur() { System.out.println("Manusia tidur"); }}class Programmer extends Manusia { public void tidur() { System.out.println("Programmer tidur"); }}class Test { public static void main(String [] args) { Programmer jussi = new Programmer(); jussi.tidur(); // "Programmer tidur" }}

Contoh: superclass Manusia { public void tidur() { System.out.println("Manusia tidur"); }}class Programmer extends Manusia { public void tidur() { super.tidur(); System.out.println("Programmer tidur"); }}class Test { public static void main(String [] args) { Programmer jussi = new Programmer(); jussi.tidur(); }}> java TestManusia tidurProgrammer tidur

Konstruktor dan Pewarisanclass Manusia {

public Manusia() {

System.out.println("Manusia");

}

}

class Programmer extends Manusia {

public Programmer() {

System.out.println("Programmer");

}

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer();

}

}> java TestManusiaProgrammer

Konstruktor dan Pewarisan Konstruktor selalu memanggil konstruktor

dari kelas dasar! Ketika membuat konstruktorvoid Manusia() {}

Java menambahkan super() – untuk memanggilnya:void Manusia() { super(); // panggil konstruktor kelas dasar}

class Manusia { public Manusia() { System.out.println("Manusia"); }}class Programmer extends Manusia { public Programmer() { System.out.println("Programmer"); }}class Test { public static void main(String [] args) { Programmer jussi = new Programmer(); }}> java TestManusiaProgrammer

class Manusia {

public Manusia() {

super(); //Java menambahkan ini untuk memanggil konstruktor dari kelas dasar System.out.println("Manusia");

}

}

class Programmer extends Manusia {

public Programmer() {

super(); // Java menambahkan ini untuk memanggil konstruktor dari kelas dasar System.out.println("Programmer");

}

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer();

}

}> java TestManusiaProgrammer

Kelas Dasar ?class Manusia { public Manusia() { // Java menambahkan ini untuk memanggil konstruktor dari kelas dasar super(); System.out.println("Manusia"); }}

Object Every class derives from a class called

Object.

// Java juga menambahkan dengan meng-extends(memperluas) kelas Objek juga!

class Manusia extends Object { public Manusia() { super(); System.out.println("Manusia"); }}

Object

clone()equals()finalize()toString()...

Manusia

String nama

...

http://java.sun.com/javase/6/docs/api/java/lang/Object.html

class Manusia {

public Manusia(int a) { System.out.println("Manusia");

}

}

class Programmer extends Manusia {

public Programmer() {

System.out.println("Programmer");

}

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer();

}

}

> javac Test.java> Tidak Bisa di Compile!!! Kenapa ?

class Manusia {

public Manusia(int a) { System.out.println("Manusia");

}

}

class Programmer extends Manusia {

public Programmer() {

super(); // java memanggil konstruktor // Manusia() tidak ada.. System.out.println("Programmer");

}

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer();

}

}

class Manusia {

public Manusia(int a) { System.out.println("Manusia");

}

}

class Programmer extends Manusia {

public Programmer() {

super(5); // sekarang bisa: Manusia(int a) ada. System.out.println("Programmer");

}

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer();

}

}

class Manusia {

private String nama

public Manusia(String nama) { this.nama = nama;

}

}

class Programmer extends Manusia {

private int gaji;

public Programmer(String nama, int gaji) {

super(nama); this.gaji = gaji; }

}

class Test {

public static void main(String [] args) {

Programmer jussi = new Programmer("Jussi", 5000);

}

}

Kelas Abstrak Dari kelas abstrak tidak bisa dibuat

objek ! Kelas Abstrak biasanya digunakan

dengan pewarisan. Kelas Abstrak mungkin memiliki

metode-metode abstrak. Metode Abstrak memaksa kelas turunan

untuk mengimplementasikan metode abstrak tersebut.

Kelas Abstrak: contohabstract class Mamalia { abstract void bersuara();}class Kucing extends Mamalia { //Kamu harus mengimplementasikan ini! public void bersuara() { System.out.println(“Meong!"); }}

Abstract Class: example// Tidak bisa, karena mamalia // kelas abstrakMamalia object = new Mamalia();

// Does workKucing jerry = new Kucing();

Java: Kelas Abstrak dan Interface Kelas Abstrak bisa menampung metode

“normal” dan metode abstrak. Interface hanya menampung metode

abstrak Kelas Abstrak:

class A extends beberapaKelasAbstrak Interface

class A implements beberapaInterface

Kelas Abstrak >> Interfaceabstract class Movable { abstract public void start(); abstract public void stop();}interface Movable { public void start(); public void stop();}

Implementasi Interfaceinterface Movable { public void start(); public void stop();}class Mobil implements Movable { // Kamu harus mengimplementasikan ini public void start() { // Do something } public void stop() { // Do something } }

Kelas Abstrak vs Interface Kelas abstrak dapat menampung metode

normal dan metode abstrak Interface hanya bisa menampung

metode abstrak Kelas dapat mewarisi satu kelas abstrak Kelas dapat mengimplementasikan

beberapa Interface !

class Mobil extends Vehicle implements Movable, RunsOnGasoline {

// You have to implement these public void start() { // Do something } public void stop() { // Do something } public void kurangiBensin() { // Do something } public void tambahBensin() { // Do something   }}

Polymorphism

int sebagai parameterclass Latihan { public static void main(String [] args) { int x = 4; myMethod(x); } public static void myMethod(int a) { a++; }}

Manusia sebagai parameterclass Manusia {}

class Latihan { public static void main(String [] args) { Manusia jack = new Manusia(); myMethod(jack); } public static void myMethod(Manusia a) { System.out.line(a.getNama()); }}

Mamalia sebagai parameterclass Mamalia {}class Manusiaextends Mamalia {}class Kucing extends Mamalia {}

class Latihan{ public static void main(String [] args) { Manusia jack = new Manusia(); Kucing spot = new Kucing(); Mamalia Mamalia = new Mamalia(); //kucing dapat di lewati sebagai parameter di metode myMethode(Mamalia a) myMethod(jack); myMethod(Kucing); myMethod(Mamalia); } public static void myMethod(Mamalia a) { System.out.println(a.getNama()); }}

Object sebagai parameter...

class Latihan{ public static void main(String [] args) { Manusia jack = new Manusia(); Kucing spot = new Kucing(); Mamalia Mamalia = new Mamalia(); // semua tipe objek dapat di lewati di method ini myMethod(jack); myMethod(Kucing); myMethod(Mamalia); myMethod("hello"); // String } public static void myMethod(Object a) { System.out.println(a.toString()); }}

Memanggil metode dari kelas Mamaliaclass Mamalia {}class Manusia extends Mamalia { public void meong() { System.out.println(“Meong!"); };}class Kucing extends Mamalia {}

class Exercise13 { public static void main(String [] args) { Manusia jack = new Manusia(); Kucing spot = new Kucing(); Mamalia Mamalia = new Mamalia(); myMethod(jack); myMethod(Kucing); myMethod(Mamalia); } public static void myMethod(Mamalia a) { a.meong(); // Why this does not work? }}

Solusiclass Exercise13 { public static void main(String [] args) { Manusia jack = new Manusia(); Kucing spot = new Kucing(); Mamalia Mamalia = new Mamalia(); myMethod(jack); myMethod(spot); myMethod(Mamalia); } public static void myMethod(Mamalia a) { // Now it works if(a instanceof Kucing) { Kucing spot = (Kucing) a; spot.meong(); } }}

This works, why?class Mamalia { public void giveBirth() { System.out.println("Giving birth"); };}class Manusia extends Mamalia {}class Kucing extends Mamalia {}

class Exercise13 { public static void main(String [] args) { Manusia jack = new Manusia(); Kucing spot = new Kucing(); Mamalia Mamalia = new Mamalia(); myMethod(jack); myMethod(Kucing); myMethod(Mamalia); } public static void myMethod(Mamalia a) { a.giveBirth(); // Why this works? }}

class Movable { public void start(); public void stop();}class Kendaraan {

}class Mobil extends Kendaraan implements Movable { public void start() { // Do something  } public void stop() { // Do something  }}

class Exercise13 { public static void main(String [] args) { Mobil c = new Mobil(); myMethod(c); } //bisa dilewati sama objek yang implemen Moveable public static void myMethod(Movable a) { a.start(); }}

top related