50
TRAINING JAVA TRAINING JAVA LAB TI-2005 LAB TI-2005

Training Java

Embed Size (px)

Citation preview

TRAINING JAVATRAINING JAVALAB TI-2005LAB TI-2005

Struktur Program Java[ class kelas1{

[ tipe_data variabel; ][ public/private void method {

…}

][ public/private tipe_data method {

…return [nilai-kembalian];

] }

]class utama {public static void main(String args[ ]){

…}

}

Pendefinisian Procedure

Pendefinisian Fungsi

Method Utama

Struktur Class Javapublic class Mahasiswa {

}

private String nama;private int umur;

private Mahasiswa(){this.nama = 20;this.umur = “Andi;

}private Mahasiswa(int u, String n){

this.nama = u;this.umur = n;

}public String namanya(){return this.nama;

}public void simpan_nama(String n){

this.nama = n;}

Class Declaration

Variabel

Konstruktor

Class Body

Method

Penggunaan Object Java

Ada 2 tahap untuk dapat menggunakanobject :1. Deklarasi variabel yang akan digunakan

untuk memegang referensi ke objectcontoh : Mahasiswa A;

2. Membuat objectcontoh : A = new Mahasiswa();

Perbedaan Tipe Data Primitif danTipe Data Class

Pernyataan :

Tipe data Class

Tipe data Primitif Int a = 10;

Efek di memori :a10

Mahasiswa a = new Mahasiswa();

aAlamat dari

ObjekMahasiswa umur

Nama

Objek Mahasiswa

Method

Digunakan untuk mengelompokkanbeberapa instruksi yang sama, yang akandiinstruksi pada beberapa bagian yangberbeda dalam satu program.

Pendeklarasian MethodTipe-data NamaMethod(daftar-parameter){//implementasi

}Tipe-data :Tipe data dari nilai yang dapat dikembalikan oleh method. Dapat berupa tipedata primitif, tipe data class, atau void. void tidak mengembalikan nilaiapapun. Jika method berupa fungsi (pengembalian nilai) atau bukan void,maka perlu ditambahkan perintah : return [nilai-pengembalian].NamaMethodSebagai pengenal method.Daftar-parameterBerupa sekumpulan variabel yang dipisahkan dengan tanda koma ( , ).

Contoh Penggunaan Method Dalam Program

class Mahasiswa {String nama;int umur; void setMahasiswa(String param1, int param2) {

nama = param1;umur = param2;

}void cetakKeLayar() {

System.out.println("Nama : " + nama + ", umurnya : " + umur);}

} class demoMahasiswa2 {

public static void main(String[] args) {Mahasiswa a;a = new Mahasiswa();a.setMahasiswa("Andi", 20);a.cetakKeLayar();

} }

Deklarasi MethodDeklarasi Method

Pemanggilan MethodPemanggilan Method

Pass By Value & Pass By Reference

• Pass By Value : Parameter berupa tipedata primitif.

• Pass By Reference : Parameter berupatipe data class

Contoh Pass By Value & Pass By Reference

class Testaja {

int i,j;Testaja(int a, int b) {

i = a;j = b;

}

/*pass by value dengan parameter berupa tipe data primitif*/void calculate(int m, int n) {

m = m*10;n = n/2;

}

/*pass by reference dengan parameter berupa tipe data class*/void calculate(Testaja a) {

a.i = a.i*10;a.j = a.j/2;

}}

Contoh Pass By Value & Pass By Reference (Sambungan)class ByValueByReference {

public static void main(String[] args) {int x,y;Testaja z = new Testaja(50, 100);x = 10;y = 20;System.out.println("Nilai sebelum pass by value : ");System.out.println("x = " + x);System.out.println("y = " + y);z.calculate(x, y);System.out.println("Nilai sesudah pass by value : ");System.out.println("x = " + x);System.out.println("y = " + y); System.out.println("Nilai sebelum pass by reference : ");System.out.println("z.i = " + z.i);System.out.println("z.j = " + z.j); z.calculate(z); System.out.println("Nilai sesudah pass by reference : ");System.out.println("z.i = " + z.i);System.out.println("z.j = " + z.j);

} }

Pass By ValuePass By Value

Pass By ReferencePass By Reference

Method Overloading

• Merupakan 2 buah method atau lebihdengan nama yang sama dalam satuclass yang sama.

• Daftar parameter yang digunakan padamethod-method tersebut tidak bolehsama.

Contoh Method Overloadingclass Mahasiswa {

String nama;int umur;

void setMahasiswa(String param1) {nama = param1;umur = 20;

} void setMahasiswa(String param1, int param2) {

nama = param1;umur = param2;

} void cetakKeLayar() {

if (nama == null && umur == 0) return;System.out.println("Nama : " + nama + ", umurnya : " + umur);

}}

Bentuk Method setMahasiswa()Yang Pertama

Bentuk Method setMahasiswa()Yang Pertama

Bentuk Method setMahasiswa()

Yang Kedua

Bentuk Method setMahasiswa()

Yang Kedua

Contoh Method Overloading (Sambungan)

class demoMahasiswa3 {public static void main(String[] args) {

Mahasiswa a,b;a = new Mahasiswa();b = new Mahasiswa();

a.setMahasiswa("Andri");

b.setMahasiswa("Andi", 20);

a.cetakKeLayar();b.cetakKeLayar();

} }

Method setMahasiswayang pertama dipanggil

Method setMahasiswayang kedua dipanggil

Konstruktor• Konstruktor digunakan untuk inisialisasi terhadap kondisi internal

objek tersebut.• Jika tidak ada satu pun konstruktor yang yang dideklarasikan maka

java akan secara otomatis menambahkan konstruktor default.• Jika sudah dideklarasikan minimal satu buah konstruktor maka java

tidak akan menambahkan konstruktor default.• Konstruktor bisa didefinisikan lebih dari satu (overloading) untuk

setiap kelas yang dibuat dengan syarat daftar parameternyaberlainan.

• Salah satu konstruktor yang ada pasti akan dieksekusi pada saatpertama kali instance dari suatu class dibuat di memori (denganmenggunakan keyword new).

• Kostruktor mana yang akan dieksekusi bergantung padabangaimana class tersebut diinstantiate (parameter apa yang dilewatkan).

Contoh Penggunaan Konstruktorclass Mahasiswa {

String nama;int umur; Mahasiswa() {

nama = "Tidak dikenal";umur = 0;

} Mahasiswa(String param1, int param2) {

nama = param1;umur = param2;

} void cetakKeLayar() {

if (nama == null && umur == 0) return;System.out.println("Nama : " + nama + ", umurnya : " + umur);

}}class demoMahasiswa4 {

public static void main(String[] args) {Mahasiswa a,b;a = new Mahasiswa("Andi",20);b = new Mahasiswa(); a.cetakKeLayar();b.cetakKeLayar();

} }

Konstruktor

Penggunaan Keyword this

• Digunakan untuk menunjuk ke objekdimana method berada.

• Dapat juga digunakan untuk memanggilkonstruktor dari konstruktor lainnya.

Contoh Program Menggunakan this

class Mahasiswa {String nama;int umur;void setMahasiswa(String nama, int umur) {

this.nama = nama;this.umur = umur;

}void cetakKeLayar() {

if (nama==null && umur==0) return;System.out.println(“Nama : “+ nama +”, umurnya : “ + umur);

}}

this digunakan untuk mengaksesvariabel yang dimiliki oleh kelas

yang bersangkutan

Penggunaan ‘this’ Untuk Memanggil Konstruktor

class Mahasiswa {String nama;int umur; Mahasiswa() {

this(“Tidak dikenal”,0)} Mahasiswa(String param1, int param2) {

nama = param1;umur = param2;

} void cetakKeLayar() {

if (nama == null && umur == 0) return;System.out.println("Nama : " + nama + ", umurnya : " + umur);

}}class demoMahasiswa4 {

public static void main(String[] args) {Mahasiswa a,b;a = new Mahasiswa("Andi",20);b = new Mahasiswa(); a.cetakKeLayar();b.cetakKeLayar();

} }

Keyword this digunakan untukmemanggil konstruktor yang menerima

dua buah parameter

Keyword this digunakan untukmemanggil konstruktor yang menerima

dua buah parameter

Penggunaan Keyword static• Digunakan untuk dapat menggunakan properti tanpa harus terlebih dahulu

membuat instance-nya.• Memiliki aturan sebagai berikut :

– Hanya dapat dipanggil method lain yang juga static method.– Hanya dapat mengakses data (properti) yang juga static– Tidak dapat menggunakan keyword this dan super karena kedua

keyword ini menunjuk ke suatu instance tertentu.• Untuk mengakses properti dan method yang dideklarasikan sebagai static,

sama seperti ketika mengakses properti ataupun method lain yang bukanstatic. Atau dapat juga menggunakan nama class-nya sebagai penggantidari variabel instance.

• static blok akan dieksekusi satu kali, yaitu saat pertama kali class tersebutdi load ke memori. Dengan demikian static blok in dapat digunakan untukmelakukan inisialisasi program.

Contoh Program Penggunaan static

class ClassStatic {static {

System.out.println("Static blok kode dieksekusi");}

static int x = 10, y = 20;}class DemoStatic {

public static void main(String[] args) {ClassStatic a = new ClassStatic();

/*Mengakses variabel static dengan menggunakan variabel instance*/System.out.println("Nilai x : " + a.x);System.out.println("Nilai y : " + a.y);

/*Mengakses variabel static dengan menggunakan nama class*/System.out.println("Nilai x : " + ClassStatic.x);System.out.println("Nilai y : " + ClassStatic.y);

}

}

Blokstatic

Variabelstatic

Penggunaan keyword final

• Dapat digunakan sebagai konstanta• Dapat juga digunakan untuk method dan

class, namun penggunaannya bukansebagai konstanta.

Access Specifier• Digunakan untuk menentukan kontrol access dari suatu member class.• Ada 4 buah access spesifier :

– private– protected– public– tanpa access specifier

Contoh :class Demo {byte a;public int x;private String y;protected long z;

}

Deklaarasi variabel tanpaAccess Specifier

public

• Siapa pun dapat mengakses member ini, baik kode yang ada di dalam class itusendiri ataupun yang berada di luar class.

• Dapat diakses oleh package yang berbeda.

private

• Hanya dapat digunakan oleh internal member dari class tersebut saja.

• Tidak ada kode satu pun dari luar class tersebut yang diizinkanmengakses/mengubah nilai dari member tersebut.

Contoh penggunaan public dan private

class Mahasiswa {private String nama;private int umur;

public String getNama() {return nama;

}public void setNama(String nama) {

this.nama = nama;}public int getUmur() {

return umur;}public void setUmur(int umur) {

this.umur = umur;}public void cetakKeLayar() {

System.out.println("Nama Mahasiswa ; " + nama + ", umurnya : " + umur + "tahun");

}}

Contoh penggunaan public dan private (Sambungan)

class demoMahasiswa6 { public static void main(String[] args) {

Mahasiswa a = new Mahasiswa();/*a.Mahasiswa = "Dony";*///accessing public numbera.setNama("Budi");a.setUmur(25);a.cetakKeLayar();

} }

protected

• Dapat diakses oleh member class itusendiri

• Dapat diakses oleh member class turunannya

• Dapat diakses oleh member dari class lain yang berada dalam package yang sama.

Tanpa access specifier

Akan diperlakukan seperti public, namuntidak dapat diakses oleh member class lainyang berada dalam package yang berbeda.

PEWARISAN (INHERITANCE)

Dasar Dari Pewarisan

• Pewarisan dilakukan untuk membuat class baru (class turunan/subclass) yang masihmemiliki sifat atau spesifikasi dari class induknya (superclass).

• Untuk melakukan pewarisan Java menyediakan keyword extends

Aturan-Aturan Tentang PewarisanPada Java

1. Java tidak mengizinkan pewarisanberganda, yaitu membuat suatu sub class yang diturunkan dari beberapasuperclass sekaligus

2. Suatu subclass pada dasarnya adalahclass biasa, maka tetap dapat dilakukanpewarisan pada subclass tersebut.

Contoh Program Pewarisanclass A {

int x;int y;

void TampilkanNilaiXY() {System.out.println("Nilai x : " + x + ", y :" + y);

}}class B extends A {

int z;void TampilkanJumlah() {

//subclass dapat mengakses member dari superclassSystem.out.println("Jumlah (x+y+z) : " + (x+y+z));

}}

Contoh Program Pewarisan (Sambungan)

class DemoInheritance { public static void main(String[] args) {

A superObj = new A();B subObj = new B();

System.out.println("SuperClass");superObj.x = 10;superObj.y = 20;superObj.TampilkanNilaiXY();

System.out.println("SubClass");

//member superclass dapat diakses dari subclass-nyasubObj.x = 5;subObj.y = 4;subObj.TampilkanNilaiXY();

//member tambahan yang hanya ada pada subclasssubObj.z = 50;subObj.TampilkanJumlah();

}

}

Hubungan Kontrol Akses, Subclass, dan Package

YaYaTidakYaBukan subclass tetapi dalampackage yang sama

YaYaTidakTidakOleh subclass yang ada dalampackage yang berbeda

yaTidakTidakTidakBukan subclass dan package yang berbeda

YaYaTidakYaDalam subclass dan package yang sama

YaYaYaYaDalam class yang sama

PublicProtectedprivateTanpaAcccessSpecifier

Akses Dari

Penggunaan Keyword super

• Digunakan untuk mengakses member superclass

• Digunakan jika suatu member (propertiatau method) subclass dideklarasikandengan nama yang sama seperti yang adapada superclass.

Contoh Program Penggunaan Keyword “super”class A {

int x;int y;

}class B extends A {

int x,y; void setXYSuperClass(int x,int y) {

super.x = x;super.y = y;

} void setXY(int x, int y) {

this.x = x;this.y = y;

} void displayXYSuperClass() {

System.out.println("Nilai dari x dan y dari superclass : " +super.x + " dan " + super.y);

} void displayXY() {

System.out.println("Nilai dari x dan y : " + x + " dan " + y );}

}

Keyword super digunakanuntuk mengakses properti

dari superclass-nya

Contoh Program Penggunaan Keyword “super” (Sambungan)

class DemoInheritance2 { public static void main(String[] args) {

B subObj = new B();

subObj.setXY(10,20);subObj.setXYSuperClass(30,40);

subObj.displayXY();subObj.displayXYSuperClass();

} }

Urutan Eksekusi Konstruktor

• Konstruktor di eksekusi dari konstruktormilik superclass tertinggi, baru kemudianyang terakhir adalah konstruktor dari class itu sendiri.

• Konstruktor pada superclass juga dapatdipanggil dengan menggunakan keyword super.

Contoh Program Urutan Eksekusi Konstruktor

class A {A() {

System.out.println("Konstruktor class A di eksekusi...");}

}class B extends A {

B() {System.out.println("Konstruktor class B dieksekusi...");

}}class C extends B {

C() {System.out.println("Konstruktor class C dieksekusi...");

}} class DemoInheritance3 {public static void main(String[] args) {

C subObj = new C();}

}

Kesalahan Yang Sering Terjadi

class A { A(String param1) {

System.out.println("Konstruktor class A dengan parameter " + param1 +" dieksekusi...");

}}class B extends A {

B() {

System.out.println("Konstruktor class B dieksekusi...");}

}class DemoInheritance4 {

public DemoInheritance4() {} public static void main(String[] args) {

B subObj = new B(); }

}

Pemanggilan konstruktor superclass dengan keyword super tidakdilakukan sehingga Java akan menambah secara otomatis kodeuntuk memanggil konstruktor default milik superclass-nya disini

Konstruktor untuk kelas A sudah didefinisikan sehingga Java tidak akan membuat konstruktor default untuk class A ini.

Solusi• Tambahkan bentuk konstruktor default pada class A, seperti :

class A {A() {} //Kostruktor default, diperlukan hanya agar program dapat

dikompilasiA(String param1) {System.out.println("Konstruktor class A dengan parameter " +

param1 +" dieksekusi...");

}}

• Mengubah konstruktor dari class B supaya memanggil konstruktorclass A yang ada.class B extends A {

B() { super(“Test”);System.out.println("Konstruktor class B dieksekusi...");

}}

Method Overriding Pada Pewarisan

• Terjadi jika dalam suatu subclass didefinisikansebuah method yang sama dengan yang dimilikioleh superclass.

• Sehingga jika method tersebut dipanggil dariinstance subclass, maka method dari subclass-lah yang akan dipanggil.

• Bagaimanakah cara memanggil method yang ada pada superclass ?

Contoh Program Method Overriding Pewarisan

class A {public void tampilkanKeLayar() {

System.out.println("Method milik class A dipanggil...");}

}

class B extends A {public void tampilkanKeLayar() {

System.out.println("Method milik class B dipanggil...");}

}

class DemoInheritance5 { public static void main(String[] args) {

B subObj = new B();subObj.tampilkanKeLayar();

} }

Method ini meng-override methodyang sama yang ada pada

superclass-nya

Penggunaan Keyword ‘final’ dalam Pewarisan

• Mencegah suatu method di-overide di subclass-nya.contoh kode :public final void tampilkanKeLayar() {

//…}

• Mencegah suatu class diturunkan.contoh kode :final class A {

//…}

Class Abstrak• Yaitu suatu class yang didalamnya memiliki method yang tidak

memiliki implementasi.• Beberapa aturan dari class abstrak yang perlu diperhatikan :

1. Method yang tidak memiliki implementasi pada suatu class harusdideklarasikan sebagai abstrak dengan menggunakan keyword abstract.

2. Instance tidak dapat dilakukan pada class abstrak. Umumnyaagar dapat digunakan, class abstrak tersebut harus diturunkanterlebih dahulu, dimana class hasil turunannya tersebut harusmeng-override semua method abstrak dari superclass-nya danmembuat implementasinya (sehingga method tersebut bukan lagimethod abstrak) baru kemudian subclass ini dapat dibuatinstance-nya.

3. Jika ada satu saja method abstrak (baik yang didapat darisuperclass-nya sebagai hasil dari turunan maupun yang dideklarasikan didalam class itu sendiri) yang tidakdiimplementasikan, maka class tersebut juga harusdideklarasikan sebagai abstrak dengan menggunakan keyword abstract.

Contoh Program Penggunaan Abstrak

abstract class A {

abstract public void method2();

//method konkrit yang memiliki implementasipublic void method1() {

System.out.println("Method konkrit dari class A");}

}class B extends A {

public void method2() {System.out.println("Method abtstrak yang sudah menjadi konkrit dalam class B");

}}class DemoAbstract1 {

public static void main(String[] args) {B ob = new B();ob.method1();ob.method2();

}}

Deklarasi class abstrak

Deklarasi method abstrak

Method abstact di override dan dibuat

implementasinya

Anonynous classMerupakan class tanpa nama yang dibuat pada saatmelakukan instance pada class abstract.Contoh, dari program sebelumnya :

class DemoAbstract1 {public static void main(String[] args) {

A ob = new A() {public void method2() {

System.out.println("Method abtstrak yang sudah menjadi konkrit");}

};ob.method1();ob.method2();

}}

Anonymous Class

Variabel Superclass Dapat MemegangReferensi dari Objek Subclass

• Variabel tersebut hanya dapat mengaksesmethod dari superclass yang di override disubclass tersebut.

• Method lainnya yang ada pada subclass tidak dapat diakses oleh variabelsuperclass tersebut.

class A {public void cetakKeLayar() {

System.out.println("Method dari class A dipanggil");}

}class B extends A {

public void cetakKeLayar() {System.out.println("Method dari class B dipanggil");

} }class C extends A {

public void cetakKeLayar() {System.out.println("Method dari class C dipanggil");

} }class DemoPoly {

public static void main(String[] args) {A obA;B obB = new B();C obC = new C();obA = obB;obA.cetakKeLayar(); obA = obC;obA.cetakKeLayar();

} }