Upload
aditya-bayu-wardhana
View
40
Download
1
Tags:
Embed Size (px)
Citation preview
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.
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();
} }