Method merupakan suatu operasi berupa
fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method
didefinisikan pada class akan tetapi dipanggil melalui object.
Metode menentukan perilaku objek, yakni apa
yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat
dilakukan objek sepanjang hidupnya.
Metode memiliki 4 (empat) bagian dasar :
Metode memiliki 4 (empat) bagian dasar :
- Nama metode
- Tipe Objek atau tipe primitive yang dikembalikan metode.
- Daftar parameter.
- Badan atau isi metode.
1. Method Overloading
Overloading adalah mendefinisikan
dua atau lebih method di dalam kelas yang sama, dengan nama yang sama, namun
dengan deklarasi parameter yang berbeda.
Java interpreter mampu membedakan method mana yang dieksekusi dengan mengenali tipe parameter yang dilewatkan ke method, serta mengenali return valuenya.
Tugas dari method-method yang dioverloading tersebut berbeda.
Java interpreter mampu membedakan method mana yang dieksekusi dengan mengenali tipe parameter yang dilewatkan ke method, serta mengenali return valuenya.
Tugas dari method-method yang dioverloading tersebut berbeda.
public class Perkalian {
private double pangkat(int a, int b) {
double hasil = 1.0;
//kode program
return hasil;
}
public static void main(String[] args) {
Perkalian kali = new Perkalian();
System.out.println(kali.pangkat(10,308));
}
}
private double pangkat(int a, int b) {
double hasil = 1.0;
//kode program
return hasil;
}
public static void main(String[] args) {
Perkalian kali = new Perkalian();
System.out.println(kali.pangkat(10,308));
}
}
2. Method Construktor
Konstruktor
adalah Metode yang dapat digunakan untuk memberikan nilai awal saat objek di
ciptakan. Metode ini di panggil secara otomatis oleh java ketika new dipakai
untuk menciptakan instan kelas.
Telah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting
pada pembentukan sebuah object. Constructor adalah method dimana
seluruh inisialisasi object ditempatkan.
Berikut ini adalah property dari Constructor :
·
Constructor memiliki nama yang
sama dengan class
· Sebuah Constructor mirip dengan method pada umumnya, namun hanya
informasi – informasi berikut yang dapat ditempatkan pada header sebuah
constructor, scope atau identifikasi pengaksesan (misal: public), nama
dari konstuktor dan parameter.
·
Constructor tidak memiliki return
value
· Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil
dengan menggunakan operator new pada pembentukan sebuah class.
contoh konstruktor:
public class Construktor{
double gaji;
String idkaryawan,nama,bagian,jabatan,alamat;
int umur;
public Construktor(String idkaryawan,String nama,double gaji){
this.idkaryawan=idkaryawan;
this.nama=nama;
this.gaji=gaji;
}
public Construktor(String idkaryawan,String nama,String bagian,String
jabatan){
this.idkaryawan=idkaryawan;
this.nama=nama;
this.bagian=bagian;
this.jabatan=jabatan;
}
public Construktor(String idkaryawan,String nama,String bagian,String
jabatan,String alamat,int umur){
this.idkaryawan=idkaryawan;
this.nama=nama;
this.bagian=bagian;
this.jabatan=jabatan;
this.alamat=alamat;
this.umur=umur;
}
public static void main(String[]args){
Construktor A=new Construktor("ID1234","SILVIA
TAKARINA",2000000);
System.out.println("ID ANDA ADALAH="+A.idkaryawan +
"\n NAMA ANDA ADALAH=\n" +A.nama +
"\n DAN GAJI ANDA ADALAH=" +A.gaji);
Construktor B=new Construktor("ID1234","SILVIA
TAKARINA","ADMINISTRATOR","KEPALA BIDANG");
System.out.println("ID ANDA ADALAH="+B.idkaryawan +
"\n NAMA ANDA ADALAH=" +B.nama +
"\n BAGIAN ANDA=" +B.bagian +
"\n JABATAN="+ B.jabatan );
Construktor C=new Construktor("ID1234","SILVIA
TAKARINA","ADMINISTRATOR","KEPALA
BIDANG","PADANG",20);
System.out.println("ID ANDA ADALAH="+C.idkaryawan +"\n NAMA
ANDA ADALAH=" +C.nama +"\n BAGIAN ANDA=" +C.bagian +
"\n JABATAN="+ C.jabatan +"\n ALAMAT=" +C.alamat
+"\n UMUR=" +C.umur);
}
}.
3. Assesor dan Mutator
Encapsulation adalah proses
pengelompokan property dan method dengan memberikan hak akses kepada property
dan method sehingga property hanya dapat di akses melalui method accessor dan
tidak dapat di rubah tanpa melalui prosedur yang seharusnya yang diatur pada
method mutator.
Dalam OOP Encapsulation di wujudkan
dalam bentuk “class”. Dalam sebuah class terdapat property dan method yang
memiliki hak akses tertentu terhadap environment/lingkungan-nya, hak akses ini
biasa di sebut Access Modifier, access modifier terdiri dari private,
protected, dan public.
·
private
memberikan hak akses hanya kepada anggota class tersebut untuk menggunakan dan/atau mengubah nilai dari property atau method tersebut.
memberikan hak akses hanya kepada anggota class tersebut untuk menggunakan dan/atau mengubah nilai dari property atau method tersebut.
·
protected
memberikan hak akses kepada anggota class nya dan anggota class hasil inheritance (penurunan sifat) dari class tersebut.
memberikan hak akses kepada anggota class nya dan anggota class hasil inheritance (penurunan sifat) dari class tersebut.
·
public
memberikan hak akses kepada property dan method agar dapat digunakan diluar class tersebut.
memberikan hak akses kepada property dan method agar dapat digunakan diluar class tersebut.
Contoh penggunaan dalam bahasa
pemrograman Java:
private String name;
protected String address;
public String getName(){…}
private String name;
protected String address;
public String getName(){…}
Dalam hal property dan method
terdapat dua jenis yaitu static dan dynamic.
Static property dan method hanya dimiliki oleh class yaitu semua nilai dari static property dan method adalah sama dalam semua obyek, maka dari itu penggunaannya cukup dengan menggunakan class bukan obyek
deklarasi:
public static String getStudentCount(){…}
penggunaan:
Student.getStudentCount();
Static property dan method hanya dimiliki oleh class yaitu semua nilai dari static property dan method adalah sama dalam semua obyek, maka dari itu penggunaannya cukup dengan menggunakan class bukan obyek
deklarasi:
public static String getStudentCount(){…}
penggunaan:
Student.getStudentCount();
Dynamic property adalah property dan
method yang tergantung obyek yang dibentuknya sehingga penggunaannya
membutuhkan obyek yang telah terbentuk. Secara default deklarasi property
adalah dynamic sehingga tidak dituliskan (implisit)
deklarasi:
public String getName(){…}
penggunaan:
Student s = new Student(“Anna”);
s.getName();
deklarasi:
public String getName(){…}
penggunaan:
Student s = new Student(“Anna”);
s.getName();
Sebagai contoh, kita ambil kelas
Mobil dan memodifikasinya untuk mengimplementasikan encapsulation.
public class Mobil {
// cunstructor dari kelas Mobil
public Mobil() {
System.out.println(“cunstructor kelas Mobil..”);
}
// atribut dari kelas Mobil
private String tipeMobil;
private String warna;
/************************************
* method dari kelas Mobil sebelumnya
***********************************/
// method accessor kelas Mobil
public String getTipeMobil() {
return tipeMobil;
}
public String getWarna() {
return warna;
}
// method mutator kelas mobil
public void setTipeMobil (String tipeMobil) {
this.tipeMobil = tipeMobil;
}
public void setWarna (String warna) {
this.warna = warna;
}
}
// cunstructor dari kelas Mobil
public Mobil() {
System.out.println(“cunstructor kelas Mobil..”);
}
// atribut dari kelas Mobil
private String tipeMobil;
private String warna;
/************************************
* method dari kelas Mobil sebelumnya
***********************************/
// method accessor kelas Mobil
public String getTipeMobil() {
return tipeMobil;
}
public String getWarna() {
return warna;
}
// method mutator kelas mobil
public void setTipeMobil (String tipeMobil) {
this.tipeMobil = tipeMobil;
}
public void setWarna (String warna) {
this.warna = warna;
}
}
Perhatikan bahwa atribut dari
tipeMobil dan warna memiliki access modifier private yang berarti bahwa atribut
tersebut tidak dapat diakses dari kelas manapun selain kelas Mobil. Namun
atribut masih tetap dapat dipakai dengan menggunakan accessor dan mutator
method. Inilah contoh sederhana dalam menyembunyikan informasi suatu kelas dari
kelas lain atas dasar penyederhanaan kompleksitas pemrograman. Kelas lain tidak
perlu tahu kompleksitas desain dan struktur dari suatu kelas yang menjadi
internal fungsi dari kelas tesebut, namun tetap bisa mendapatkan informasi yang
diperlukan.
4.
Construktor Overloading
Keyword yang digunakan pada method ini adalah this. Kata kunci this mengacu
ke variabel instant dari kelas tersebut. Berguna untuk mengakses variabel
instan yang didefinisikan di parameter. Biasanya digunakan dalam konstruktor
atau method. Digunakan dalam untuk menyatakan objek yang sekarang.
Contoh:
public class Consoverload{
String
judulBuku,pengarang,Penerbit,thnTerbit,idBuku;
int jumlah;
double harga;
public ConsOverload(String
idBuku,String judulBuku,String pengarang,String penerbit){
this.idBuku=idBuku;
this.judulBuku=judulBuku;
this.pengarang=pengarang;
this.Penerbit=penerbit;
}
public ConsOverload(String idBuku,String judulBuku,String pengarang,String
penerbit,String thnTerbit){
this.idBuku=idBuku;
this.judulBuku=judulBuku;
this.pengarang=pengarang;
this.Penerbit=penerbit;
this.thnTerbit=thnTerbit;
}
public ConsOverload(String idBuku,int jumlah,double harga){
this.idBuku=idBuku;
this.jumlah=jumlah;
this.harga=harga;
}
public static void main(String[]args){
ConsOverload A=new
ConsOverload("1234","Laskar
Pelangi","A.FUADI","GRAMEDIA UTAMA");
System.out.println("ID
ANDA" + A.idBuku + "nama buku" +A.judulBuku +"
pengarang" +A.pengarang +"Penerbit" +A.Penerbit);
ConsOverload B=new
ConsOverload("1234","Laskar
Pelangi","A.FUADI","2002",50000);
System.out.println("ID
ANDA" + B.idBuku + "nama buku" +B.judulBuku +"
pengarang" +B.pengarang +"tahun terbit"
+B.thnTerbit+"harga="+B.harga);
ConsOverload C=new
ConsOverload("1234","3",50000);
System.out.println("ID
ANDA" + C.idBuku + "jumlah" +C.jumlah +" pengarang"
+"harga="+B.harga);
}
}
5. Method Overriding
Method
subclass override terhadap method superclass ketika subclass mendeklarasikan
method ang signaturenya
serupa ke method dalam superclass. Signature dari method hanyalah informasiyang
ditemukan dalam definisi method bagian atas. Signature mengikutkan tipe return,
nama dandaftar parameter method tetapi itu tidak termasuk acces modifier dan tipe yang lain dari kata
kunci eperti final dan static. Inilah perbedaan dari method
overloading. Method overloadingsecara singkat didiskusikan dalam sub bagian
pada kata kunci this.
class Superclass {
void display(int n) {
System.out.println("super:
" + n);
}
}
class Subclass extends Superclass
{
void display(int k) { //method
overriding
System.out.println("sub:
" + k);
}
}
class OverrideDemo {
public static void main(String
args[]) {
Subclass SubObj = new Subclass();
Superclass SuperObj = SubObj;
SubObj.display(3);
((Superclass)SubObj).display(4);
}
}
6. Method Biasa (Tanpa Parameter)
Contoh
public class ImplementasiMethodNonVoid {
public static void main(String[] args) {
//instantiasi objek KaryawanKaryawan
karyawan001 = new Karyawan();
//mengisi data pada objek Karyawan
karyawan001.ID = "K001";
karyawan001.nama = "Agus Ramadhan";
karyawan001.divisi = "Keuangan";
karyawan001.gaji = 1850000;/
/memanggil method
cetakDAta()karyawan001.cetakData();/
/memanggil method
hiungSumbanganZakat()
System.out.println("Sumbangan Zakat : "
+karyawan001.hitungSumbanganZakat());
}}
7. Method
Berparameter
Dengan adanya parameter, sebuahmethod dapat bersifat dinamis dan
general.Artinya, method tersebut dapat mengembalikan nilai yang beragam
sesuai dengan nilai parameter yang dilewatkannya.
Contoh
class
TipeStringKeClass{
void methodClass(Class cls){
//disini saya ingin menjalankan TestRunner(JUnit) dari file java
junit.swingui.TestRunner.run(cls);
}
void methodString(){
String textField_dot_getText = "HelloWorld.class";
//ini Error Karena tidak sesuai String dan Class
//Gak bisa parsing String ke Class
methodClass(textField_dot_getText);
}
}
void methodClass(Class cls){
//disini saya ingin menjalankan TestRunner(JUnit) dari file java
junit.swingui.TestRunner.run(cls);
}
void methodString(){
String textField_dot_getText = "HelloWorld.class";
//ini Error Karena tidak sesuai String dan Class
//Gak bisa parsing String ke Class
methodClass(textField_dot_getText);
}
}