object oriented programming with java

93
OBJECT ORIENTED PROGRAMMING WITH JAVA By : Winz aldi Java Programmer EDI I ndonesia

Upload: bin

Post on 09-Feb-2016

121 views

Category:

Documents


3 download

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

Page 1: Object Oriented  Programming With Java

OBJECT ORIENTED PROGRAMMING WITH JAVA

By : Winzaldi

Java Programmer

EDI Indonesia

Page 2: Object Oriented  Programming With Java

Konsep OOP

Page 3: Object Oriented  Programming With Java

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

Page 4: Object Oriented  Programming With Java

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

Page 5: Object Oriented  Programming With Java

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.

Page 6: Object Oriented  Programming With Java

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.

Page 7: Object Oriented  Programming With Java

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

Page 8: Object Oriented  Programming With Java

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

Page 9: Object Oriented  Programming With Java

Contoh : Kelas > Objek

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

Page 10: Object Oriented  Programming With Java

Mobil Blueprint (Kelas) di UML

Mobil

merkmesinjumlahPintuwarnajumlahRoda……

Page 11: Object Oriented  Programming With Java

Kelas ke Objekdatsun

Datsun 100A1.03red4

lambo

Lamborghini Diablo8.03red4

Mobil

merktipeMesinjumlahPintuwarnajumlahRoda……

Page 12: Object Oriented  Programming With Java

Kelas dan Objek di Java

Page 13: Object Oriented  Programming With Java

Kelas Orang > ObjekIwan

IwanMahmud25guru021-12345

Zaki

zakiHasan30Programmer Java021-654321

Orang

namaAwalnamaAkhirumurpekerjaannoTelpon

Makan()Tidur()minumTeh()

makantidurminumTeh

Page 14: Object Oriented  Programming With Java

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

Page 15: Object Oriented  Programming With Java

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

Page 16: Object Oriented  Programming With Java

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

Page 17: Object Oriented  Programming With Java

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

Page 18: Object Oriented  Programming With Java

Konsep Dasar - Enkapsulasiprivate

public method

Page 19: Object Oriented  Programming With Java

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

Page 20: Object Oriented  Programming With Java

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

Page 21: Object Oriented  Programming With Java

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

Page 22: Object Oriented  Programming With Java

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

Page 23: Object Oriented  Programming With Java

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

Page 24: Object Oriented  Programming With Java

Tipe-tipe di Java

Page 25: Object Oriented  Programming With 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 ...

Page 26: Object Oriented  Programming With Java

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

Page 27: Object Oriented  Programming With Java

Perbedaan Tipe Primitif

int a = 5; Tipe Kelas

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

Page 28: Object Oriented  Programming With Java

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

Page 29: Object Oriented  Programming With Java

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

Page 30: Object Oriented  Programming With Java

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

Page 31: Object Oriented  Programming With Java

Perbedaan Lagi Tipe Primitif

int a = 5; Tipe Kelas

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

Page 32: Object Oriented  Programming With Java

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

Page 33: Object Oriented  Programming With Java

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

Page 34: Object Oriented  Programming With Java

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

Page 35: Object Oriented  Programming With Java

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

Page 36: Object Oriented  Programming With Java

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

Page 37: Object Oriented  Programming With Java

Constructor (Konstruktor)

Page 38: Object Oriented  Programming With Java

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

Page 39: Object Oriented  Programming With Java

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

> java TestKonstruktor!

Page 40: Object Oriented  Programming With Java

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

Page 41: Object Oriented  Programming With Java

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

Page 42: Object Oriented  Programming With Java

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

Page 43: Object Oriented  Programming With Java

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

Page 44: Object Oriented  Programming With Java

KOMPOSISI

Page 45: Object Oriented  Programming With Java

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.

Page 46: Object Oriented  Programming With Java

Notasi UML

Mobil Mesin

Page 47: Object Oriented  Programming With Java

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

Page 48: Object Oriented  Programming With Java

One to Many (Satu ke Banyak)?

Departemen Professor1..20

Page 49: Object Oriented  Programming With Java

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

Page 50: Object Oriented  Programming With Java

Inheritance (Pewarisan)

Page 51: Object Oriented  Programming With Java

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.

Page 52: Object Oriented  Programming With Java

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

Page 53: Object Oriented  Programming With Java

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

Page 54: Object Oriented  Programming With Java

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

Page 55: Object Oriented  Programming With Java

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.

Page 56: Object Oriented  Programming With Java

Contoh Dasar Apa saja atribut dan method dari kelas

Programmer?

Manusia

string nama

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

Programmer

int gaji

void buatApp()

Page 57: Object Oriented  Programming With Java

Overriding? Sekarang ?

Manusia

string nama

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

Programmer

int gaji

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

Page 58: Object Oriented  Programming With Java

Overriding Ketika proggrammer makan dan minum

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

Page 59: Object Oriented  Programming With Java

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.

Page 60: Object Oriented  Programming With Java

<<abstract>>Mamalia

string nama

void bersuara() {abstract}

Elephant

int panjangHidung

bersuara()

Contoh

Page 61: Object Oriented  Programming With Java

Contoh<<abstract>>Bentuk

int x, y

double hitungArea() {abstract}

Bulat

double diameter

double hitungArea()

Kotak

double panjang, lebar

double hitungArea()

Page 62: Object Oriented  Programming With Java

Inheritance in java

Page 63: Object Oriented  Programming With 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" }}

Page 64: Object Oriented  Programming With Java

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

Page 65: Object Oriented  Programming With Java

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

Page 66: Object Oriented  Programming With Java

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

Page 67: Object Oriented  Programming With Java

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}

Page 68: Object Oriented  Programming With Java

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

Page 69: Object Oriented  Programming With Java

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

Page 70: Object Oriented  Programming With Java

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

Page 71: Object Oriented  Programming With Java

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

Page 72: Object Oriented  Programming With Java

Object

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

Manusia

String nama

...

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

Page 73: Object Oriented  Programming With Java

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 ?

Page 74: Object Oriented  Programming With Java

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

}

}

Page 75: Object Oriented  Programming With Java

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

}

}

Page 76: Object Oriented  Programming With Java

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

}

}

Page 77: Object Oriented  Programming With Java

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.

Page 78: Object Oriented  Programming With Java

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

Page 79: Object Oriented  Programming With Java

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

// Does workKucing jerry = new Kucing();

Page 80: Object Oriented  Programming With Java

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

Page 81: Object Oriented  Programming With Java

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

Page 82: Object Oriented  Programming With Java

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

Page 83: Object Oriented  Programming With Java

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 !

Page 84: Object Oriented  Programming With Java

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

Page 85: Object Oriented  Programming With Java

Polymorphism

Page 86: Object Oriented  Programming With Java

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

Page 87: Object Oriented  Programming With Java

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

Page 88: Object Oriented  Programming With Java

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

Page 89: Object Oriented  Programming With Java

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

Page 90: Object Oriented  Programming With Java

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

Page 91: Object Oriented  Programming With Java

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

Page 92: Object Oriented  Programming With Java

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

Page 93: Object Oriented  Programming With Java

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