September 22, 2007

Overide / Hide a Method

Mungkin sebelum membaca bagian ini, sebaiknya Anda memahami terlebih dahulu tentang static & non-static method

Overide adalah sebuah proses pembuatan sebuah method baru oleh sebuah subclass, yang nama & identifier-nya sama persis dengan sebuah method lain di sebuah class induk. Overiding ini memungkinkan subclass untuk melakukan perubahan pada method class induk tanpa mengubah secara fisik.
Overide dapat juga diartikan membentuk ulang sebuah method yang ada di class induk.
Contoh:
public class Mother {
public void greetMom() {
System.out.println("Hello, Mommy");
}
}

//Contoh sebelum overide
public class Children extends Mother{
public static void main(String[] args){
Children myName = new Children();
myName.greetMom();
}
}


Contoh di atas akan menghasilkan output : "Hello, Mommy"

//Contoh overide
public class Children extends Mother{
public void greetMom(){
System.out.println("Good morning Mom");
}
public static void main(String[] args){
Children myName = new Children();
myName.greetMom();
}
}

Contoh ini akan menghasilkan "Good Morning Mom", karena fungsi greetMom() di class induk (Mother) telah di-overide alias dibentuk ulang di subclass Children.

Note:
Fungsi greetMom() pada Children, memiliki nama & identifier yang sama dengan greetMom() pada Mother

Sementara itu hiding method adalah proses membuat sebuah class yang sama dengan method di superclass. Hampir mirip dengan overide, hanya saja, hide ini membentuk ulang sebuah static method. Method yang baru pun, adalah static method. Dan apabila method yang baru ini dipanggil, yang tampil tetaplah method di superclass
Contoh :
//Contoh hide
public class Mother {
public static void greetMom() {
System.out.println("Hello, Mommy");
}
}


public class Children extends Mother{
public static void greetMom(){
System.out.println("Good morning Mom");
}
public static void main(String[] args){
Children myName = new Children();
myName.greetMom();
}
}


Contoh di atas ini tidak akan menghasilkan "Good Morning, Mom" seperti overide, tapi menghasilkan "Hello Mommy" yang merupakan output dari fungsi di superclass.

Note :
untuk meng-overide/hide sebuah method di superclass, method yang baru haruslah sama dalam hal static/tidaknya, bila tidak sama, maka akan terjadi error :P

Final modifier

Terdapat lagi sebuah modifier di Java, selain access modifier & static modifier, yaitu final.

Bila modifier final ini diterapkan pada variable, maka nilai pada variable tersebut tidak akan bisa berubah, alias variable tersebut berubah menjadi sebuah constant.
Contoh : public double final PI = 3.14;

Bila modifier final diterapkan pada method, maka method tersebut tidak bisa di overide

Dan bila diterapkan pada class, maka class tersebut tidak akan bisa di-inherit alias diwariskan.

September 21, 2007

Static modifier

Selain access modifier (public, private & protected) terdapat pula beberapa jenis modifier lain di Java. Modifier-modifier tersebut antara lain adalah static

Bila kita meambahkan keyword static pada variable, maka variable tersebut akan tetap menempati sebuah alamat di memory, tak peduli seberapa banyak kita menginstansi / membuat object baru.
Contoh:

public class TheClass {
private static int theVariable;

public void setTheVariable(int newVariable){ //method untuk megubah nilai theVariable
TheClass.theVariable = newVariable;
}

public int getTheVariable(){ //method untuk menampilkan nilai the Variable
return(theVariable);
}
}


Kemudian kita membuat 2 buah instance class TheClass
TheClass myVariable = new TheClass();
TheClass yourVariable = new TheClass();

Dan apablia myVariable mengubah variable theVariable, maka bila yourVariable menampilkan theVariable, nilai yang tampil adalah nilai yang di set oleh myVariable
myVariable.setTheVariable(5); //myVariable mengubah nilai theVariable

yourVariable.getTheVariable; //yourVariable menampilkan theVariable
//maka yang tampil adalah 5


Bila keyword static ditambahkan pada method, maka hak akses method tersebut akan berubah
- Non-Static method bisa mengakses static variable & static method secara langsung
- Non-Static method bisa mengakses non-static variable & non-static method secara langsung
- Static method bisa mengakses static variable & static method secara langsung
- Static method tidak bisa mengakses non-static variable & non-static variable secara langsung

Additional :
Modifier static bila diterapkan pada method/variable, maka akan membuat method/variable tersebut bisa dipanggil secara langsung tanpa perlu meng-instance class-nya

Contohnya:
public class MyClass {
private static String statVar = "I'm a class variables!";
private String thevar = "I'm a instance variables!";

public static String statMet () {
return "I'm a class mathod!!";
}

public String theMet(){
return "I'm a instance method!!"
}
}

Sehingga kita bisa mengakses statVar secara langsung dengan cara:

MyClass.statVar
Atau mengakses statMet langsung dengan cara :

MyClass.statMet()
Tapi untuk mengakses theVar / theMet, maka kita harus meng-instance MyClass terlebih dahulu

public class AnotherClass{
private MyClass anotherVar = new MyClass();
}

Jadi bila ingin mengakses theVar / theMet, caranya adalah:
anotherVar.theVar;
atau
anotherVar.theMet();

September 20, 2007

Tipe-tipe Variables

Di Java, terdapat 2 macam tipe variable

Primitive data type
Primitive data type ini adalah tipe variabel sederhana dan sudah dikenal secara umum
Contohnya : int, boolean, long dll

Reference data type
Reference data type ini menggunakan class sebagai tipe datanya. Hal ini berarti variable tersebut membentuk sebuah object baru dengan tipe class tersebut.
Contoh :
Bicycle myBike = new Bicycle();


ini artinya kita membuat sebuah variable myBike yang bertipe Bicycle. Dan hal ini juga berarti bahwa kita telah membuat sebuah object Bicycle baru. Class Bicycle yang telah ada sebelumnya dapat diartikan sebagai sebuah blueprint atau gambar rancangan.
Seperti di dunia nyata, saat kita merancang sebuah sepeda, masih belum ada sepeda yang tercipta. Begitu pula saat kita membuat class Bicycle, masih belum ada object Bicycle yang tercipta.
Referenced variable menginstansi class tipenya dengan mengalokasikan space di memory untuk object tersebut. Dan apabila sebuah variable lain dibuat, maka variable lain tersebut akan mengalokasikan alamat memory yang lain.

Contoh :
Bicycle myBike = new Bicycle();
Bicycle yourBike = new Bicycle();


Contoh di atas berarti di memory komputer kita terdapat dua object Bicycle, yaitu myBike dan yourBike.

Note :
Apabila kita hanya menulis :
Bicycle myBike;


itu berarti bahwa masih belum tercipta sebuah object baru. Sama dengan di dunia nyata, kita masih belum membuat sepeda baru, tapi kita masih memberi gambaran bahwa sepeda kita akan dibuat dengan blueprint yang sudah kita buat. Keyword new-lah yang kemudian mengalokasikan memory untuk object baru kita.

Note (again) :
int myNumber;

BERBEDA dengan
Integer myNumber;


int myNumber hanyalah variabel dengan tipe data primitif int yang hanya bisa menampung data integer, sedangakan Integer myNumber adalah sebuah object dengan class Integer baru yang memiliki fungsi2 / method2 sama seperti yang ada di class Integer.

September 19, 2007

Previllege

Di dalam Java, terdapat 3 macam hak akses (previllege) untuk tiap2 objectnya.
Ketiganya adalah:

Public
seluruh object-object yang memiliki atribut public, dapat diakses oleh class-class ataupun method-method manapun yang ada. Atribut ini umumnya dipakai oleh class, method dan interface, karena keduanya sering dipakai/diakses oleh object-object lain

Private
Object-object yang beratribut private, hanya bisa diakses oleh object-object lain yang ada dalam satu class yang sama. Biasanya hanya digunakan oleh variabel2.
Seperti contohnya variabel numberOfTire pada class Bicycle hanya bisa diakses oleh object-object lain di dalam class Bicycle.
Sehingga apabila object lain ingin mengakses variabel tersebut, class Bicycle harus memiliki sebuah public method untuk me-return variabel tersebut. Jadi object diluar class diharuskan mengakses method tersebut, barulah method tersebut yang mengakses private variable tersebut.

Protected
Atribut protected sebenarnya mirip dengan private, hanya saja bila private hanya bisa diakses oleh object-object dalam satu class, maka protected juga bisa diakses oleh class-class yang mewarisi class induk.
Seperti contoh variable numberOfTire di class Bicycle dapat juga diakses oleh class MountainBike yang merupakan subclass dari class Bicycle

September 18, 2007

Interface

Interface adalah sebuah bentuk object lain selain class. Berbeda dengan class, interface hanya berisi kumpulan method-method tanpa ada implementasinya. Method-method tersebut baru bisa diimplementasikan apabila interface tersebut diimplementasikan di sebuah class.
Interface ini bisa dibilang hanya memuat method-method apa saja yang akan digunakan pada sebuah class

Contoh :
public interface Operation {
public int tambah(int a, int b); //method2 hanya dideklarasikan
public int kurang(int a,int b);
}

Implementasi dari interface tsb. adalah:
public class Math implements Operation {
private int hasil;

/* seluruh
method di interface di implementasikan */
public int tambah(int a,int b){
hasil = a+b;
return hasil;
}

public int kurang(int a,int b){
hasil = a-b;
return hasil;
}
}


Catatan:
Semua method yang didefinisikan di Interface, harus diimplementasikan di class

Seperti halnya class, interface pun dapat diturunkan / diwariskan
Contoh :

public interface OperationComplex extends Operation {
public int kali(int a, int b);
}


Pewarisan dari interface Operation ke OperationComplex menyebabkan semua class yang akan mengimplementasikan OperationComplex, selain harus mengimplementasikan method2 di OperationComplex, juga harus mengimplementasikan method2 di Operation.

Tetapi class yang mengimplementasikan Operation, tak perlu mengimplementasikan method2 di OperationComplex

September 17, 2007

Inheritance (pewarisan)

Pewarisan / Inheritance adalah pemberian sifat-sifat dari sebuah class utama (super class) kepada class2 lain yang memiliki sifat-sifat yang sejenis (sub-class). Class utama biasanya bersifat umum/global, sementara sub-class bersifat spesifik/khusus.

Contohnya:
Class bicycle yang sebelumnya dibuat adalah sebuah contoh sepeda pada umumnya (super class). Class ini dapat diwariskan kepada sub-class yang lebih spesifik, contohnya adalah sepeda gunung, sepeda balap, atau sepeda BMX. Dimana ketiga sepeda tersebut adalah sama-sama sebuah sepeda, yang memiliki sifat-sifat yang sama dari sepeda pada umumnya, dan juga memiliki sebuah sifat khusus yang tidak dimiliki sub-class lainnya.

Untuk mendefinisikan sebuah pewarisan, scriptnya adalah:
public class MountainBike extends Bicycle { //artinya kelas MountainBike mewarisi kelas Bicycle
// enter your code here
}

Class & Method

Class adalah kumpulan dari variabel-variabel dan fungsi-fungsi (method) yang membentuk suatu entitas yang baru. Class dapat diidentikkan dengan sebuah objek nyata.
Contohnya adalah sebuah sepeda diidentikkan dengan sebuah class Bicycle. sebuah sepeda memiliki properti-properti seperti : kecepatan, jumlah ban, pedalnya atau tidak, dll.
Properti2 tersebut diidentikkan menjadi variabel-variabel di class Bicycle yaitu :
int currentSpeed, int numberOfTire dan boolean pedal, dimana int dan boolean adalah tipe dari variabel2 tersebut.

Sebuah sepeda juga memiliki tingkah laku seperti: berjalan cepat, mengerem berbelok dll. Tingkah laku tersebut diidentikkan dengan fungsi2 pada class Bicycle: runFast(), brake(), turn() dll.

Sehingga dari sebuah sepeda, kita dapat membuat sebuah class Bicycle seperti berikut

public class Bicycle() {
/* pendeklarasian variabel2 */
private int numberOfTire; //variabel jumlah Ban
numberOfTire = 2; //memberi nilai awal pada variabel (inisialisasi)
private boolean pedal; //variabel pedal (ada/tidak)
pedal = true;
private int currentSpeed; //variabel kecepatan
currentSpeed = 0; //kecepatan awalnya adalah 0 (berhenti)

/* Method(fungsi) berjalan
menambah kecepatan sesuai dengan akselerasi */
public void runFast(int accelereation){
currentSpeed += accelereation;
}

/* Method mengerem
mengurangi kecepatan sampai menjadi nol (berhenti) */
public void brake(int decrement){
while(currentSpeed != 0){
currentSpeed -= decrement;
}
}
}

Mengapa Java disebut Java?

Bahasa pemrograman Java dinamai Java adalah karena pada saat para penemunya mendapat inspirasi pada saat mereka sedang minum kopi bersama. Java sendiri bermakna bijih kopi.

Salah satu komponen Java ada yang bernama Beans. Beans sendiri bermakna bijih. :)