Sunday, October 18, 2009

Polimorphism

Polimorphism

Polimorphism bisa diartikan sebagai suatu object yang dapat memiliki berbagai bentuk, sebagai object dari classnya sendiri atau object dari superclassnya

Polimorphism ada 2 macam;

  1. Overloading, Penggunaan satu nama untuk beberapa method yang berbeda parameter
  2. Overriding, Terjadi ketika deklarasi method subclass sama dengan method dari superclassnya

OVERLOADING

  • Dalam sebuah kelas diperbolehkan ada lebih dari satu method dengan nama yang sama dengan catatan methods dapat dibedakan berdasarkan banyaknya parameter atau tipe data parameter formal

class Lingkaran {

double r;
Lingkaran (double r) {

this.r = r;

}
double Luas() {

return Math.PI*this.r*this.r;

}
double Luas (double r) {

//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;

}
double Luas (int r) {

//overloading method Luas() beda signature
System.out.println(”tipe data harus double. r tidak diubah!”);
return Math.PI*this.r*this.r;

}
double Luas (double r, double PI) {

//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;

}

}

  • Overloading tidak bisa dilakukan dengan membedakan nilai kembaliannya

class Lingkaran {

double r;
Lingkaran (double r) {

this.r = r;

}
double Luas() {

return Math.PI*this.r*this.r;

}

}

  • Overloading juga bisa dilakukan pada sub kelasnya

class Lingkaran {

double r;
Lingkaran(double r) {

this.r = r;

}
double Luas() {

return Math.PI*this.r*this.r;

}
double Luas(double r) {

//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;

}
double Luas(int r) {

//overloading method Luas() beda signature
System.out.println(”tipe data harus double. r tidak diubah!”);
return Math.PI*this.r*this.r;

}
double Luas(double r, double PI) {

//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;

}

}

class Tabung extends Lingkaran {

double h;
Tabung() {

super(0);
//konstruktor kelas turunan, ada keyword super()
//diisi nilai awal

}
double Luas(double r, double PI, double h) {

//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r*this.h;

}

}

Overloading method dapat digunakan ketika kita mempunyai operasi yang sama namun berbeda implementasinya. Yang terpenting dalam melakukan ini, nama method harus sama, tapi mempunyai parameter yang berbeda. Terserah berbeda dari segi tipe datanya atau jumlah parameternya. Tergantung kebutuhan untuk implementasi dan nilai kembaliannya. Jadi yang perlu diingat saat melakukan overloading method:

• Nama method sama

• Parameter berbeda (baik tipe maupun jumlahnya)

• Tipe data nilai kembalian dapat berbeda atau sama

Overloading itu mendeklarasikan lebih dari satu kali dengan syarat-syarat tertentu. baik overloading method ataupun konstruktor

OVERRIDING

Overriding konsepnya sama dengan overloading yaitu menulis kembali method. Namun, caranya overriding menulis kembali method sama persis. Sama mulai dari nama method dan isinya dan mengimplementasi kembali di sub classnya. Overriding dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai kembalian (return) method yang di override. Jika method memiliki modifier akses public, method overridenya juga harus public.

Contoh:

class Kendaraan {

public String getJenis() {

System.out.println(“Harga BBM turun”);

}

}

class Motor extends Kendaraan {

public String getJenis() {

System.out.println(“Harga BBM premium 4000 rupiah”);

}

}

NB:

  • class motor mengextends class kendaraan
  • class motor melakukan override method di kendaraan namun berbeda implementasi

Kesimpulan:

  • Override method merupakan method yang sama persis dengan method yang sudah ada di super kelasnya, biasanya perbedaannya adalah pada implementasi (program body)
  • Overidding tidak bisa dilakukan dalam kelas itu sendiri
  • Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)

Contoh lain:

class Lingkaran {

double r;

Lingkaran(double r) {

this.r = r;

}
double Luas() {

return Math.PI*this.r*this.r;

}
double Luas(double r) {

this.r = r;
return Math.PI*this.r*this.r;

}

}
class Tabung extends Lingkaran {

double h;

Tabung() {

//konstruktor kelas turunan, ada super() dan diisi nilai awal
super(0);

}
double Luas(double r) {

//overriding (method and parameter sama)
this.r = r;
return Math.PI * this.r * this.r * this.h;

}

}

NB:

  • Class lingkaran melakukan overloading method Luas (beda signature)
  • Class tabung mengextends class lingkaran
  • Class tabung meng-override method Luas hasil dari overload. Jadi kita juga biosa mengoverride method hasil overloading juga

contoh lain:

class Sepeda{ //Sepeda.java

int kecepatan = 0;
int gir = 0;
// method
void ubahGir(int pertambahanGir) {

gir= gir+ pertambahanGir;
System.out.println(”Gir:” + gir);

}
void tambahKecepatan(int pertambahanKecepatan) {

kecepatan = kecepatan+ pertambahanKecepatan;
System.out.println(”Kecepatan:” + kecepatan);

}

}

class SepedaGunung extends Sepeda { //SepedaGunung.java

int setSadel;
void ubahGir(int pertambahanGir){

gir= 2*(gir+ pertambahanGir );
System.out.println(”Gir:” + gir);

}

}

class SepedaGunungBeraksi { //SepedaGunungBeraksi.java

public static void main(String[] args) {

// Membuat object
SepedaGunung sepedaku = new sepedaGunung();
// Memanggil method di object
sepedaku.tambahKecepatan(10);
sepedaku.ubahGir(2);
sepedaku.setSadel(20);

}

}

Inheritance (Pewarisan)

Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini. Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai subclass dari class tersebut.

Dengan kata lain:

* Super (super class)

Bisa disebut juga dengan induk.
Misalnya class ORTU adalah super class yang mewarisi ke class ANAK
Nah, karena mewarisi berarti ORTU bertindak sebagai super class

* Sub (sub class)

Bisa disebut dengan anak
Misalnya class ANAK diwarisi oleh class ORTU
Artinya anak adalah sub class dari class ORTU (super class)

Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, kode method dapat dituliskan hanya sekali dan dapat digunakan oleh semua subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.

Misalnya class ORTU mempunyai mempunyai variabel dan method dan diturunkan ke sub classnya (misal: class ANAK). Berarti class ANAK mempunyai semua variabel dan method yang dimiliki oleh class ORTU.

Lalu bagaimana caranya? Caranya adalah dengan menggunakan kata kunci extends. Bentuk umum proses inheritance adalah

class extends {
;
}

Contoh:

class ANAK extends ORTU {

}
// class anak sebagai subclass yang mendapat warisan dari class ORTU

Contoh lain:

// Lingkaran.java
class Lingkaran {

double r;
double Luas() {

return Math.PI * this.r * this.r;

}

}

// Silinder.java
class Silinder extends Lingkaran {

double h;
double Volume() {
return Math.PI * this.r * this.r * this.h ;

}

}

Di dalam Java semua class yang kita buat sebenarnya adalah turunan atau subclass dari class Object. Class Object merupakan class tertinggi dari semua hirarki class dalam Java

Latihan berikut untuk mengenalkan konsep dari inheritance yaitu suatu class dapat mewariskan atibut dan method kepada claas lain (subclass)

berikut kita analisis source code berikut:

Sepeda.java (class tertinggi atau superclass)

class Sepeda{

//mendeklarasikan variabel

int kecepatan = 0;
int gir = 0;

//membuat method ubahGir dan parameter pertambahanGir yang bertipe integer
void ubahGir(int pertambahanGir) {

gir= gir+ pertambahanGir;
System.out.println(”Gir:” + gir);

}

//membuat method tambahKecepatan dan parameter pertambahanKecepatan yang bertipe integer
void tambahKecepatan(int pertambahanKecepatan) {

kecepatan = kecepatan+ pertambahanKecepatan;
System.out.println(”Kecepatan:” + kecepatan);

}

}

SepedaGunung.java adalah class yang mewarisi class Sepeda.java. dengan keyword extends kita dapat menggunakan method dan atribut yang ada pada class Sepeda.java

SepedaGunung.java

class SepedaGunung extends Sepeda {

//mendeklarasikan atribut

int setSadel;

//membuat method setSadel dan parameter nilaiSadel yang bertipe integer

public void setSadel(int nilaiSadel) {

setSadel = nilaiSadel;
System.out.println(“Tinggi Sadel:”+setSadel);

}

}

SepedaGunungBeraksi.java digunakan untuk mengeksekusi atau memanggil method yang ada pada class Sepeda.java dan class SepedaGunung.java

SepedaGunungBeraksi.java

class SepedaGunungBeraksi {

public static void main(String[] args) {

// Membuat object
SepedaGunung sepedaku = new sepedaGunung();

// Memanggil method dan memberikan nilai parameter pada masing-masing method diobject
sepedaku.tambahKecepatan(10);
sepedaku.ubahGir(2);
sepedaku.setSadel(20);

}

}

dengan cara yang sama, kita akan mengembangkan program java diatas. kita akan membuat class MobilBMW yang merupakan inherit dari class Mobillengkap dengan menambahkan beberapa method nontonTV() yang isinya menampilkan tulisan tv dihidupkan, tv mencari chanel, tv menampilkan gambar. buat class MobilBMWBeraksi yang memanggil method nontonTV(), hidupkanMobil(), matikanMobil(), dan ubahGigi().

jawab:

terlebih dahulu kita buat class Mobillengkap.java yang sebelumnya sudah kita buat di artikel sebelumnya:

class mobilLengkap{ //penulisan class harus sama dengan nama filenya

String warna ;
int tahunProduksi;

//membuat method printMobil
void printMobil(){

System.out.println(”warna:”+warna);
System.out.println(”Tahun:”+tahunProduksi);

}

//membuat method hidupkanMobil

void hidupkanMobil(){

System.out.println(”mobil sudah hidup”);

}

//membuat method matikanMobil

void matikanMobil(){

System.out.println(”mobil sudah mati”);

}

//membuat method jalankanMobil

void jalankanMobil(){

System.out.println(”mobil sudah berjalan”);

}

}

selanjutnya kita buat class MobilBMW.java yang mengextends atau mewarisi class MobilLengkap.java yang ditambahi dengan method nontonTV().

MobilBMW.java

class MobilBMW extends MobilLengkap{ /*perintah extends digunakan untuk mewarisi atribut dan method yang ada pada class mobilLengkap*/

//membuat method nontonTV()

public void nontonTV(){

System.out.println(”TV dihidupkan”);
System.out.println(”TV mencari Chanel”);
System.out.println(”TV menampilkan gambar”);

}

}

selanjutnya kita buat file MobilBMWBeraksi.java untuk memanggil method nontonTV(), hidupkanMobil(), matikanMobil(), dan ubahGir().

MobilBMWBeraksi.java

public class MobilBMWBeraksi{

public static void main(String[] args){

//membuat object
MobilBMW mobilku= new MobilBMW();

//memanggil method
mobilku.nontonTV();
mobilku.hidupkanMobil();
mobilku.matikanMobil();
mobilku.ubahGigi();

}

}


JAVA FUNDAMENTAL

OPERATOR

Operator adalah suatu simbol yang digunakan untuk operasi tertentu. JAVA mempunyai banyak jenis operator antara lain:

  • Assignment
  • Aritmatika
  • Hubungan
  • Logika
  • Bitwise

Klasifikasi lain tentang Operator (berdasarkan jumlah operand):

  • Operator Unary: Melibatkan satu operand. Contoh: -4.00
  • Operator binary: Melibatkan dua operand. Contoh: 2 + 3
  • Operator tertiary: Melibatkan tiga operand. Contoh: 23 ? SI : NOSI

operator

Operator yang mempunyai jenjang lebih kecil akan dikerjakan lebih dulu

contohnya:

Total=2+3*8;
/*Total=26

karena * mempunyai jenjang lebih dulu
yang dikerjakan 3*8 dulu baru kemudian ditambahkan dengan 2*/

Operator Assignment

operator-assignment

Operator Aritmatika

operator-aritmatika

Operator Hubungan

operator-hubungan

Operator Logika

operator-logika

Operator Bitwise

operator-bitwise

Operator Ternary

Biasa disebut dengan Operator Kondisi. Operator ini membutuhkan 3 argumen
Bentuk Umum:

? : ;
//Nilai_1 untuk nilai yang benar
//Nilai_2 untuk nilai yang salah

Contoh:

String Nilai = IPK <>

sumber: http://bernazlionk.wordpress.com/2009/01/18/java-operator/

Saturday, September 12, 2009

Tugas mata kuliah "Pemrograman Berorientasi Obyek"

PEMROGRAMAN BERORIENTASI OBJEK

Belajar PBO, berarti harus membiasakan diri berpikir secara kelas dan objek setiap menghadapi masalah.

Contoh :

Buatlah program untuk menghitung keliling lingkaran dari masukan jari-jarinya !

Masalah tersebut bila disajikan dengan pendekatan kelas dan objek, harus direvisi sebagai berikut :

Buatlah kelas lingkaran yang memiliki tanggungjawab mengetahui jari-jarinya dan kelilingnya, lingkaran tersebut dapat melakukan aksi mengembang dan berkerut sesuai dengan panjang jari-jarinya.

1

Bahasa java yang telah dirilis :

1. Product Sun Microsystem : j2se, j2me, j2ee

2. Product Borland : JBuilder

3. Product Microsoft : Visual J

Spesifikasi j2ee antara lain JDBC, JDOM (untuk XML), Remote Method Invocation, Enterprise Java Beans, Java Messaging, Java Server Pages, Java Servlet, Socket Programming, dan SQLJ. Java/Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java. Development Kit dapat didownload di :

http://java.sun.com/product/JDK/index.html

atau

http://java.sun.com/j2se/1.5/index.html

atau

http://java.sun.com/cgi-bin/java-ports.cgi

3

Komponen JDK antara lain compiler(javac), interpreter(java) disebut juga java virtual machine atau java runtime environment, applet viewer(appletviewer), debugger(jdb), java class library(jcl), header dan stub generator(javah), dan yang paling penting yaitu java documentation(javadoc). Penjelasan penggunaan komponen JDK :

1. Kompilator (javac) Bertugas untuk melaksanakan kompilasi

*.java menjadi *.class

Syntax umum : javac nama.java

2. Interpreter (java) Bertugas untuk menjalankan bytecode (*.class)

Syntax umum : java nama.class

3. Applet Viewer Digunakan untuk menjalanakan applet viewer, namun sekarang sudah digantikan browser.

Syntax umum : appletviewer nama.html

4. Java Debugger Bertugas untuk melakukan debugging aplikasi java.

Syntax umum : jdb option

4

5. Java Class File Diassembler (javap) Bertugas membuat daftar method dan attribute public dari suatu kelas.

Syntax : javap namaKelas

6. Java Header and Stub Generator Bertugas menerjemahkan bahasa yang ditulis dalam bahasa java menjadi bahasa C.

Syntax umum : javah namaKelas

7. Java Documentation Generator Menampilkan pustaka kelas, interface, constructor, dan method standard yang telah dibuat vendor.

Dari hasil instalasi, dokumentasi ini dapat dilihat di C:\java\docs\api\index.html atau C:\Program Files\NetBeans3.6\docs\junit\index.html

8. Source Code Java API Source code ini dapat diperoleh dari file src.zip.

5

Untuk pemrogram pemula lingkungan pemrograman java dapat diringkas menjadi :

1. Editing source code menggunakan editor teks.

2. Compiling menggunakan keyword javac melalui command promp (dapat juga dari editor teks).

3. Executing menggunakan :

a. Keyword java melalui command prompt (dapat juga dari editor teks)

b. Browser atau applerviewer untuk applet.

Token

Token adalah elemen terkecil di program yang masih memiliki arti. Ada 5 token dalam bahasa java yaitu identifier, keyword, literal dan tipe data, operator, serta separator.

Identifier

Identifier adalah token yang merepresentasikan nama sesuatu. Sesuatu tersebut adalah variabel, atau konstanta, atau attribute, atau method, atau kelas, atau package, atau interface, atau nama file, dan lain-lain.

6

Keyword

Kata kunci digunakan untuk suatu tujuan tertentu. Ada 51 keyword dalam java yaitu :

abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public throws catch false int return transient car final interface short true class finally long static try const float native super void while

Literal dan Tipe Data Primitif

Literal adalah nilai variabel/attribute atau nilai konstanta atau nilai objek data. Ada tiga besaran literal dalam java yaitu angka, karakter, dan string. Angka terdiri dari byte, short, int, long, float, double, dan boolean (dianggap angka true = 1 atau false = 0)

BELAJAR JAVA

PEMROGRAMAN BERORIENTASI OBJEK Belajar PBO, berarti harus membiasakan diri berpikir secara kelas dan objek setiap menghadapi masalah. Contoh : Buatlah program untuk menghitung keliling lingkaran dari masukan jari-jarinya ! Masalah tersebut bila disajikan dengan pendekatan kelas dan objek, harus direvisi sebagai berikut : Selengkapnyaa………


Tugas Kuliah

Membuat dan Memanggil Method

Class mobillengkap
{
String warna;
Int tahunproduksi;
Int mati =1;
Int ubahgigi = 3;

Void printmobil()
{
System.out.println(“Warna :”+warna);
System.out.println(“Tahun Produksi :”+tahunproduksi);
}
Void nyala()
{
System.out.println(“Mesin mobil menyala……”);
Off = 0
}
Void mati()
{
Off = 1
System.out.println(“Mesin mobil dimatikan……”);
}
Void ubahgigi()
{
If (mati = 1)
{
System.out.println(“Gigi persneling tidak bisa di ubah………”);
System.out.println(“Mesin mobil tidak menyala………..”);
}
Else
System.out.println(“Gigi persneleng ditambah 1.”);
}
}

Public class mobillengkapberaksi
{
Public static void main(String[]args)
{
/* Membuat object */

Mobil2mobilku = new mobil2();

/* Memanggil atribut dan memberi nilai */

Mobilku.warna = “Hitam”;
Mobilku.tahunproduksi = 2006;
Mobilku.printmobil();
}
}