Sabtu, 26 Desember 2009

Minggu, 20 Desember 2009

Abstract Class

Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang berisi
implementasi, dan juga beberapa method yang akan di-overridden oleh subclasses nya.
Sebagai contoh, kita akan membuat superclass bernama LivingThing. class ini mempunyai
method tertentu seperti breath, eat, sleep, dan walk. Akan tetapi, ada beberapa method di
dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method walk.
Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai
misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti anjing
berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah
biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini.

Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi
sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract.
Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di
atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang
mungkin pada object dari seluruh subclasses dalam class.
Method ini dalam class abstract yang tidak mempunyai implementasi dinamakan method
abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh
class dan digunakan menggunakan kata kunci abstract. Contohnya,

public abstract void someMethod();

Sekarang mari membuat contoh class abstract.

public abstract class LivingThing
{
public void breath(){
System.out.println("Living Thing breathing...");
}
public void eat(){
System.out.println("Living Thing eating...");
}
/**
* abstract method walk
* Kita ingin method ini di-overridden oleh subclasses
*/
public abstract void walk();
}

Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override method
abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu
tidak dapat di-instantiate. Contohnya,

public class Human extends LivingThing
{
public void walk(){
System.out.println("Human walks...");
}
}

Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error
berikut ini,


Human.java:1: Human is not abstract and does not override
abstract method walk() in LivingThing
public class Human extends LivingThing
^
1 error


Pewarisan, Polimorfisme, dan Interface

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.

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, Anda dapat menuliskan kode method hanya sekali dan mereka
dapat digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan

Mendefinisikan Superclass dan Subclass

Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk
mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai
class induk yang dinamakan Person.

public class Person
{
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println(“Inside Person:Constructor”);
name = "";
address = "";
}
/**
* Constructor dengan dua parameter
*/
public Person( String name, String address ){
this.name = name;
this.address = address;
}
/**
* Method accessor
*/
public String getName(){
return name;
}
public String getAddress(){
return address;
}
public void setName( String name ){
this.name = name;
}
public void setAddress( String add ){
this.address = add;
}
}

Overriding Method

Untuk beberapa pertimbangan, terkadang class asal perlu mempunyai implementasi
berbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method
overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam
superclass dengan menyediakan implementasi baru dari method tersebut.
Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass
Person,

public class Person
{
:
:
public String getName(){
System.out.println("Parent: getName");
return name;
}
:
}
Untuk override, method getName dalam subclass Student, kita tulis,
public class Student extends Person
{
:
:
public String getName(){
System.out.println("Student: getName");
J.E.N.I.
Pengenalan Pemrograman 1 6
return name;
}
:
}


Method final dan class final

Dalam Java, juga memungkinkan untuk mendeklarasikan class-class yang tidak lama
menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk
menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Sebagai
contoh, jika kita ingin class Person untuk dideklarasikan final, kita tulis,

public final class Person
{

//area kode
}

Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak
dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String.
Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method ini
dapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita
tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method
getName dalam class Person untuk dideklarasikan final, kita tulis,

public final String getName()
{

return name;
}

Method static juga secara otomatis final. Ini artinya Anda tidak dapat membuatnya
override.

public final String getName(){
return name;
}
Method static juga secara otomatis final. Ini artinya Anda tidak dapat membuatnya
override.

Polimorfisme

Sekarang, class induk Person dan subclass Student dari contoh sebelumnya, kita
tambahkan subclass lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya,
Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah
object dari subclass tersebut. Sebagai contohnya,

public static main( String[] args )
{
Person ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //Person menunjuk kepada
// object Student
//beberapa kode di sini
}


Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita
override method ini dalam kedua subclasses Student dan Employee,

public class Person
{
public String getName(){
System.out.println(“Person Name:” + name);
return name;
}
}
public class Student extends Person
{
public String getName(){
System.out.println(“Student Name:” + name);
return name;
}
}
Gambar 3: Hirarki dari class induk Person
J.E.N.I.
Pengenalan Pemrograman 1 8
public class Employee extends Person
{
public String getName(){
System.out.println(“Employee Name:” + name);
return name;
}

Sabtu, 21 November 2009

Ringkasan Materi java

Obyek

Pada dasarnya ada dua karakteristik yang utama pada sebuah objek , yaitu :
Setiap objek memiliki atribut sebagai status yang kemudian akan
disebut sebagai state.
Setiap objek memiliki tingkah laku yang kemudian akan disebut
sebagai behaviour.

Contoh sederhananya adalah : objek sepeda
Sepeda memiliki atribut ( state ) : pedal, roda, jeruji, dan warna.
Sepeda memiliki tingkah laku ( behaviour ) : kecepatannya menaik,
kecepatannya menurun, dan perpindahan gigi sepeda.
Dalam pengembangan perangkat lunak berorientasi objek, objek
dalam perangkat lunak akan menyimpan state-nya dalam variabel dan
menyimpan informasi tingkah laku ( behaviour ) dalam method-method atau
fungsi-fungsi/prosedur.

Class


Class merupakan prototipe yang
mendefinisikan variabel-variabel dan method-method secara umum.
Sedangkan objek pada sisi yang lain merupakan instansiasi dari suatu kelas.

Latihan 10. Class.java
class Buku {
String pengarang;
String judul;
void Isi(String isi1,String isi2) {
judul = isi1;
pengarang = isi2;
}
void CetakKeLayar() {
if(judul==null && pengarang==null) return;
System.out.println("Judul : " + judul +
", pengarang : " + pengarang);
}
}

class Karangan {
public static void main(String[] args) {
Buku a,b,c,d;
a = b = c = d = new Buku();
a.Isi("Pemrograman Java","Asep Herman Suyanto");
a.CetakKeLayar();
b.Isi(null,null);
b.CetakKeLayar();
c.Isi(null,"Johan Prasetyo Hendriyanto");
c.CetakKeLayar();
d.Isi("Pemrograman Web",null);
d.CetakKeLayar();
}
}


Enkapsulasi

Pembungkusan variabel dan method dalam sebuah objek dalam bagian
yang terlindungi inilah yang disebut dengan enkapsulasi. Lebih jelasnya dapat diartikan sebagai bungkusan ( wrapper ) pelindung program dan data
yang sedang diolah. Pembungkus ini mendefinisikan perilaku dan melindungi
program dan data yang sedang diolah agar tidak diakses sembarangan oleh
program lain.





Manfaat dari proses enkapsulasi adalah :
Modularitas
Kode sumber dari sebuah objek dapat dikelola secara independen dari
kode sumber objek yang lain.
Information Hiding
Dapat menyembunyikan informasi yang
tidak perlu diketahui objek lain.

Inheritance

merupakan pewarisan atribut dan method pada
sebuah class yang diperoleh dari class yang telah terdefinisi.
Setiap subclass akan mewarisi state ( variabel-variabel ) dan behaviour ( methodmethod) dari superclass-nya. Subclass kemudian dapat menambahkan state
dan behaviour baru yang spesifik dan dapat pula memodifikasi ( override )
state dan behaviour yang diturunkan oleh superclass-nya.

Keuntungan dari inheritance adalah :
Subclass
menyediakan state/behaviour yang spesifik yang
membedakannya dengan superclass,
programmer Java dapat menggunakan ulang source code dari
superclass yang telah ada.
Programmer Java dapat mendefinisikan superclass khusus yang
bersifat generik, yang disebut abstract class, untuk mendefinisikan
class dengan behaviour dan state secara umum.

Istilah dalam inheritance yang perlu diperhatikan :
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi
subclass.
Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti
class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.

Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass
atau menjadi variabel yang mengacu pada superclass.
Methode Overriding
Pendefinisian ulang method yang sama pada subclass.

Dalam inheritance, method overriding berbeda dengan method
overloading. Kalau method overriding adalah mendefinisikan kembali
method yang sama, baik nama method maupun signature atau parameter yang
diperlukan dalam subclass, kalau method overloading adalah mendefinisikan
method yang memiliki nama yang sama, tetapi dengan signature yang berbeda
dalam definisi class yang sama.

Latihan 11. Inheritance.java
class 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 superclass
System.out.println("Jumlah : " + (x+y+z));
}
}
class Inheritance {
public static void main(String[] args) {
A VarsuperOb = new A();
B VarsubOb = new B();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass");
//member superclass dapat diakses dari subclass nya
VarsubOb.x = 5;
VarsubOb.y = 4;
VarsubOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
//member tambahan yang hanya ada dalam subclass
VarsubOb.z = 30;
VarsubOb.TampilkanJumlah();
System.out.println("SubClass");
VarsubOb.x = 15;
VarsubOb.y = 14;
VarsubOb.TampilkanNilaixy();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
//super.x = 100; error
//super.y = 200; error
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
VarsubOb.z = 60;
VarsubOb.TampilkanJumlah();
}
}






Interface

Merupakan device yang digunakan untuk komunikasi antar objek berbeda yang tidak memiliki hubungan apapun. Bisa dikatakan sebagai protokol komunikasi antar objek tersebut.

Latihan 13. Interface.java
interface Control {
public void pindahChannel(int channel);
public void PerbesarVolume(int intensitas);
public void PerkecilVolume(int intensitas);
}
class TelevisiA implements Control {
String[] channelTv = {"RCTI","SCTV","INDOSIAR","TRANS TV","TPI"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada tv A ke : " + channelTv[channel]);
}
public void PerbesarVolume(int intensitas) {
System.out.println("Perbesar intensitas volume pada tv A sebanyak : " +
intensitas);
}
public void PerkecilVolume(int intensitas) {
System.out.println("Perkecil intensitas volume pada tv A sebanyak : " +
intensitas);
}
}
class TelevisiB implements Control {
String[] chanTv = {"TVRI","LA TV","TV 7","RCTI","SCTV"};
public void pindahChannel(int channel) {
System.out.println("Perintah pindah channel pada tv B ke : " +
chanTv[channel]);
}
public void PerbesarVolume(int intensitas) {
System.out.println("Perbesar intensitas volume pada tv B sebanyak : " +
intensitas);
}
public void PerkecilVolume(int intensitas) {
System.out.println("Perkecil intensitas volume pada tv B sebanyak : " +
intensitas);
}
}
class RemoteControl {
public static final int PINDAH_CHANNEL = 1;
public static final int PERBESAR_VOLUME = 2;
public static final int PERKECIL_VOLUME = 3;
public void kirimPerintahKeTv(int aksi,Control tv,int tombol) {
switch(aksi) {
case PINDAH_CHANNEL:
tv.pindahChannel(tombol);
break;
case PERBESAR_VOLUME:
tv.PerbesarVolume(tombol);
break;
case PERKECIL_VOLUME:
tv.PerkecilVolume(tombol);
}
}
}
class Interface {
public static void main(String[] args) {
TelevisiA tvA = new TelevisiA();
TelevisiB tvB = new TelevisiB();
RemoteControl rc = new RemoteControl();
//Kirim perintah ke tvA
rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvA,2);
rc.kirimPerintahKeTv(RemoteControl.PERBESAR_VOLUME,tvA,5);
//Kirim perintah ke tvB
rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvB,1);
rc.kirimPerintahKeTv(RemoteControl.PERKECIL_VOLUME,tvB,3);
}
}


Polimorfisme

Kata polimorfisme yang berarti satu objek dengan banyak bentuk yang
berbeda, adalah kemampuan dari suatu variabel referensi objek untuk
memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method
tergantung dari tipe objeknya. Kondisi yang harus dipenuhi supaya

polimorfisme dapat diimplementasikan adalah :
Method yang dipanggil harus melalui variabel dari basis class atau
superclass.
Method yang dipanggil harus juga menjadi method dari basis class.
Signature method harus sama baik pada superclass maupun subclass.
Method access attribute pada subclass tidak boleh lebih terbatas dari
basis class.

Latihan 12. Polimorfisme.java
abstract class Bentuk {
protected int panjang;
protected int lebar;
public String getBentuk() {
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
31
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
//public String getBentuk() {
//return "Bentuk Segi Tiga";
//return "";
//}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
class Polimorfisme {
public static void cetakLuasBentuk(Bentuk btk) {
System.out.println(btk.getBentuk() + " dengan luas " +
btk.hitungLuas());
}
public static void main(String[] args) {
BujurSangkar bs = new BujurSangkar(10,20);
BujurSangkar bs1 = new BujurSangkar(10,20);
SegiTiga st = new SegiTiga(5,10);
SegiTiga st1 = new SegiTiga(50,100);
cetakLuasBentuk(bs);
cetakLuasBentuk(bs1);
cetakLuasBentuk(st);
cetakLuasBentuk(st1);
}
}

Ringkasan Materi java

Obyek

Pada dasarnya ada dua karakteristik yang utama pada sebuah objek , yaitu :
Setiap objek memiliki atribut sebagai status yang kemudian akan
disebut sebagai state.
Setiap objek memiliki tingkah laku yang kemudian akan disebut
sebagai behaviour.

Contoh sederhananya adalah : objek sepeda
Sepeda memiliki atribut ( state ) : pedal, roda, jeruji, dan warna.
Sepeda memiliki tingkah laku ( behaviour ) : kecepatannya menaik,
kecepatannya menurun, dan perpindahan gigi sepeda.
Dalam pengembangan perangkat lunak berorientasi objek, objek
dalam perangkat lunak akan menyimpan state-nya dalam variabel dan
menyimpan informasi tingkah laku ( behaviour ) dalam method-method atau
fungsi-fungsi/prosedur.

Class


Class merupakan prototipe yang
mendefinisikan variabel-variabel dan method-method secara umum.
Sedangkan objek pada sisi yang lain merupakan instansiasi dari suatu kelas.

Latihan 10. Class.java
class Buku {
String pengarang;
String judul;
void Isi(String isi1,String isi2) {
judul = isi1;
pengarang = isi2;
}
void CetakKeLayar() {
if(judul==null && pengarang==null) return;
System.out.println("Judul : " + judul +
", pengarang : " + pengarang);
}
}

class Karangan {
public static void main(String[] args) {
Buku a,b,c,d;
a = b = c = d = new Buku();
a.Isi("Pemrograman Java","Asep Herman Suyanto");
a.CetakKeLayar();
b.Isi(null,null);
b.CetakKeLayar();
c.Isi(null,"Johan Prasetyo Hendriyanto");
c.CetakKeLayar();
d.Isi("Pemrograman Web",null);
d.CetakKeLayar();
}
}


Enkapsulasi

Pembungkusan variabel dan method dalam sebuah objek dalam bagian
yang terlindungi inilah yang disebut dengan enkapsulasi. Lebih jelasnya dapat diartikan sebagai bungkusan ( wrapper ) pelindung program dan data
yang sedang diolah. Pembungkus ini mendefinisikan perilaku dan melindungi
program dan data yang sedang diolah agar tidak diakses sembarangan oleh
program lain.





Manfaat dari proses enkapsulasi adalah :
Modularitas
Kode sumber dari sebuah objek dapat dikelola secara independen dari
kode sumber objek yang lain.
Information Hiding
Dapat menyembunyikan informasi yang
tidak perlu diketahui objek lain.

Inheritance

merupakan pewarisan atribut dan method pada
sebuah class yang diperoleh dari class yang telah terdefinisi.
Setiap subclass akan mewarisi state ( variabel-variabel ) dan behaviour ( methodmethod) dari superclass-nya. Subclass kemudian dapat menambahkan state
dan behaviour baru yang spesifik dan dapat pula memodifikasi ( override )
state dan behaviour yang diturunkan oleh superclass-nya.

Keuntungan dari inheritance adalah :
Subclass
menyediakan state/behaviour yang spesifik yang
membedakannya dengan superclass,
programmer Java dapat menggunakan ulang source code dari
superclass yang telah ada.
Programmer Java dapat mendefinisikan superclass khusus yang
bersifat generik, yang disebut abstract class, untuk mendefinisikan
class dengan behaviour dan state secara umum.

Istilah dalam inheritance yang perlu diperhatikan :
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi
subclass.
Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti
class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.

Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass
atau menjadi variabel yang mengacu pada superclass.
Methode Overriding
Pendefinisian ulang method yang sama pada subclass.

Dalam inheritance, method overriding berbeda dengan method
overloading. Kalau method overriding adalah mendefinisikan kembali
method yang sama, baik nama method maupun signature atau parameter yang
diperlukan dalam subclass, kalau method overloading adalah mendefinisikan
method yang memiliki nama yang sama, tetapi dengan signature yang berbeda
dalam definisi class yang sama.

Latihan 11. Inheritance.java
class 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 superclass
System.out.println("Jumlah : " + (x+y+z));
}
}
class Inheritance {
public static void main(String[] args) {
A VarsuperOb = new A();
B VarsubOb = new B();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass");
//member superclass dapat diakses dari subclass nya
VarsubOb.x = 5;
VarsubOb.y = 4;
VarsubOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
//member tambahan yang hanya ada dalam subclass
VarsubOb.z = 30;
VarsubOb.TampilkanJumlah();
System.out.println("SubClass");
VarsubOb.x = 15;
VarsubOb.y = 14;
VarsubOb.TampilkanNilaixy();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
//super.x = 100; error
//super.y = 200; error
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
VarsubOb.z = 60;
VarsubOb.TampilkanJumlah();
}
}






Interface

Merupakan device yang digunakan untuk komunikasi antar objek berbeda yang tidak memiliki hubungan apapun. Bisa dikatakan sebagai protokol komunikasi antar objek tersebut.

Latihan 13. Interface.java
interface Control {
public void pindahChannel(int channel);
public void PerbesarVolume(int intensitas);
public void PerkecilVolume(int intensitas);
}
class TelevisiA implements Control {
String[] channelTv = {"RCTI","SCTV","INDOSIAR","TRANS TV","TPI"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada tv A ke : " + channelTv[channel]);
}
public void PerbesarVolume(int intensitas) {
System.out.println("Perbesar intensitas volume pada tv A sebanyak : " +
intensitas);
}
public void PerkecilVolume(int intensitas) {
System.out.println("Perkecil intensitas volume pada tv A sebanyak : " +
intensitas);
}
}
class TelevisiB implements Control {
String[] chanTv = {"TVRI","LA TV","TV 7","RCTI","SCTV"};
public void pindahChannel(int channel) {
System.out.println("Perintah pindah channel pada tv B ke : " +
chanTv[channel]);
}
public void PerbesarVolume(int intensitas) {
System.out.println("Perbesar intensitas volume pada tv B sebanyak : " +
intensitas);
}
public void PerkecilVolume(int intensitas) {
System.out.println("Perkecil intensitas volume pada tv B sebanyak : " +
intensitas);
}
}
class RemoteControl {
public static final int PINDAH_CHANNEL = 1;
public static final int PERBESAR_VOLUME = 2;
public static final int PERKECIL_VOLUME = 3;
public void kirimPerintahKeTv(int aksi,Control tv,int tombol) {
switch(aksi) {
case PINDAH_CHANNEL:
tv.pindahChannel(tombol);
break;
case PERBESAR_VOLUME:
tv.PerbesarVolume(tombol);
break;
case PERKECIL_VOLUME:
tv.PerkecilVolume(tombol);
}
}
}
class Interface {
public static void main(String[] args) {
TelevisiA tvA = new TelevisiA();
TelevisiB tvB = new TelevisiB();
RemoteControl rc = new RemoteControl();
//Kirim perintah ke tvA
rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvA,2);
rc.kirimPerintahKeTv(RemoteControl.PERBESAR_VOLUME,tvA,5);
//Kirim perintah ke tvB
rc.kirimPerintahKeTv(RemoteControl.PINDAH_CHANNEL,tvB,1);
rc.kirimPerintahKeTv(RemoteControl.PERKECIL_VOLUME,tvB,3);
}
}


Polimorfisme

Kata polimorfisme yang berarti satu objek dengan banyak bentuk yang
berbeda, adalah kemampuan dari suatu variabel referensi objek untuk
memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method
tergantung dari tipe objeknya. Kondisi yang harus dipenuhi supaya

polimorfisme dapat diimplementasikan adalah :
Method yang dipanggil harus melalui variabel dari basis class atau
superclass.
Method yang dipanggil harus juga menjadi method dari basis class.
Signature method harus sama baik pada superclass maupun subclass.
Method access attribute pada subclass tidak boleh lebih terbatas dari
basis class.

Latihan 12. Polimorfisme.java
abstract class Bentuk {
protected int panjang;
protected int lebar;
public String getBentuk() {
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
31
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
//public String getBentuk() {
//return "Bentuk Segi Tiga";
//return "";
//}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
class Polimorfisme {
public static void cetakLuasBentuk(Bentuk btk) {
System.out.println(btk.getBentuk() + " dengan luas " +
btk.hitungLuas());
}
public static void main(String[] args) {
BujurSangkar bs = new BujurSangkar(10,20);
BujurSangkar bs1 = new BujurSangkar(10,20);
SegiTiga st = new SegiTiga(5,10);
SegiTiga st1 = new SegiTiga(50,100);
cetakLuasBentuk(bs);
cetakLuasBentuk(bs1);
cetakLuasBentuk(st);
cetakLuasBentuk(st1);
}
}
Rabu, 14 Oktober 2009

Menghitung Bilangan Genap Dan Bilangan Ganjil

import java.util.Random;

public class ProgRandom
{

public static void main(String [] args)
{ int j1,j2,x;

j1=j2=0; // memberikan nilai awal j1 dan j2 dengan nilai 0(nol)
Random bilAcak = new Random();
System.out.println("-----------------------------------------");
System.out.println("| No\t|\tGenap\t|\tGanjil\t|");
System.out.println("-----------------------------------------");
for(int i = 1; i <= 20;i++) //looping

{ x = bilAcak.nextInt(50); // untuk menghasilkan nilai acak dari 0 s.d. 49 (ada 50)
if (x % 2 ==1)
{ j1 += x;
System.out.println("| "+i+".\t|\t\t|\t"+x+"\t|");}
else
{j2 += x;
System.out.println("| "+i+".\t|\t"+x+"\t|\t\t|");}
}

System.out.println("-----------------------------------------");
System.out.println("| Hasil\t|\t"+j2+"\t|\t"+j1+"\t|");
System.out.println("-----------------------------------------");
System.out.println("Jumlah(Genap= "+j2+")+(Ganjil= "+j1+")= "+j3);
System.out.println("-----------------------------------------");

}
}
Senin, 12 Oktober 2009

Pernyataan Penentu Keputusan

1. if, if-else, if-else if – else
2. switch

if
  • Pernyataan kondisi yang digunakan
  • untuk pengambilan keputusan terhadap
  • dua buah kemungkinan
  • if bisa berdiri sendiri atau dengan
  • menggunakan else
  • Bentuk:
if(kondisi){
// blok pernyataan yang dijalankan, bila kondisi benar

}

PernyataanIF.java

public class PernyataanIF{
public static void main(String[] args){
int diskon =0, totalBelanja = 500000;
if(totalBelanja >= 100000){
diskon = totalBelanja/10;
}
System.out.println("Diskon = " + diskon);
}


if-else
  • if-else mengatur pernyataan yang
  • dijalankan sewaktu kondisi bernilai
  • benar atau salah
  • Bentuk:
if(kondisi){
// blok pernyataan yang dijalankan, bila kondisi benar
} else{
// blok pernyataan yang dijalankan, bila kondisi salah
}
}

PernyataanIFELSE.java

public class PernyataanIFELSE{
public static void main(String[] args){
System.out.println("Silahkan Masukan Jumlah Belanja Anda:);
int diskon =0, totalBelanja = 500000;
if(totalBelanja >= 100000){
diskon = totalBelanja/10;

} else{
diskon = 0;
}

System.out.println("Diskon = " + diskon);

}

}


if Bersarang

  • if bersarang mengatur pernyataan yang
  • dijalankan sewaktu kondisi berupa pilihan
  • Bentuk:
if(kondisiA){
// pernyataan yang dijalankan, bila kondisiA benar

}else if(kondisiB){
// pernyataan yang dijalankan, bila kondisiB benar

}else if(kondisiC){
// pernyataan yang dijalankan, bila kondisiC benar

}else{
// pernyataan yang dijalankan untuk kondisi selain itu
}


PernyataanIFBersarang.java

public class PernyataanIFBersarang {
public static void main(String[] args) {
int skorUjian= 86; char nilai;
if (skorUjian >= 90) {

nilai = 'A';
} else if (skorUjian >= 80) {

nilai = 'B';
} else if (skorUjian >= 70) {

nilai = 'C';
} else {

nilai = 'D';
}

System.out.println("Nilai = " + nilai);
}
Minggu, 11 Oktober 2009

Oprasi I/O Stream Sederhana

Stream Standard

1. System.in: menangani pembacaan dari keyboard (standard input)
2. System.out: mengirimkan keluaran ke layar (standard output)
3. System.err: mengirimkan kesalahan (standard error)


Membaca Input dari Keyboard
  • Perintah sederhana untuk memasukkan data dari keyboard adalah membaca sebagai karakter
  • Penggunaannya memerlukan blok try-catch (akan dibahas pada bagian eksepsi)
  • Contoh:
char karakter;
karakter = System.in.read();
  • Untuk mudahnya, gunakan class
InputKeyboard.java untuk menerima masukkan data dari keyboard


InputKeyboard.java

import java.io.*;

public class InputKeyboard{

public static String inputString(){

int karakter; String str ="“; boolean selesai = false;
while(!selesai){
try{

karakter = System.in.read();
if(karakter < 0 || (char) karakter == '\n') selesai = true;
else if ((char) karakter != '\r') str = str + (char) karakter;


}catch (java.io.IOException e){

System.err.println("Ada kesalahan");
selesai = true;

}

}

return str;

}

}



Konversi String ke Tipe Lain

  • Method inputString() pada class InputKeyboard memiliki nilai balik bertipe String
  • Tipe String bisa kita konversi ke tipe lain (int, float, atau double) dengan menggunakan method valueOf() yang ada di class Integer, Float dan Double:
  • Integer.valueOf(nilaiString).intValue()
  • Float.valueOf(nilaiString).floatValue()
  • Double.valueOf(nilaiString).doubleValue()

KonversiData.java


public class KonversiData{

public static void main(String[] args){
String dataString;

System.out.println("Masukkan sebuah bilangan bulat:" );
dataString = InputKeyboard.inputString();
int dataBulat = Integer.valueOf(dataString).intValue();

System.out.println("Masukkan sebuah bilangan pecahan:" );
dataString = InputKeyboard.inputString();
double dataPecahan = Double.valueOf(dataString).doubleValue();

System.out.println("Bilangan Bulat:" + dataBulat);
System.out.println("Bilangan Pecahan:" + dataPecahan);


}

Argument untuk Menerima Input


public class LuasSegitigaArgs {
public static void main(String[] args) {
double alas= Double.parseDouble(args[0]);
double tinggi = Double.parseDouble(args[1]);


luas = (alas*tinggi)/2;

System.out.println("Luas Segitiga : " + luas);

}

}

Argument untuk Menerima Input

public class LuasSegitigaArgs {

public static void main(String[] args) {

if (args.length == 2){
double alas = Double.parseDouble(args[0]);
double tinggi = Double.parseDouble(args[1]);
double luas = (alas*tinggi)/2;
System.out.println("Luas Segitiga : " + luas);

}else{

System.out.println("Penggunaan Argument Salah!");
System.out.println("Contoh: java LuasSegitigaArgs 30 20");

}

}

}

OPERATOR

Operator adalah simbol dan karakter khusus (matematika) yang digunakan dalam suatu ekspresi

Contoh:
  • int x = 3;
  • int y = x;
  • int z = x * y;
  • boolean status = true;

Jenis Operator Berdasar Operand

1. Operator Unary: operator yang melibatkan satu operand
2. Operator Binary: operator yang melibatkan dua operand
3. Operator Ternary: operator yang melibatkan tiga operand

Jenis Operator

1. Operator Aritmatika
2. Operator Penugasan
3. Operator Penggabungan
4. Operator Penambahan dan Pengurangan
5. Operator Bit
6. Operator Pembanding
7. Operator Logika




Operator Penugasan

  • Operator penugasan berguna untuk memberi nilai ke suatu variabel
  • Operator penugasan menggunakan tanda sama dengan ( = )
  • Operator penugasan digabungkan dengan operator aritmatika membentuk operator penugasan gabungan (compound assignment)

Operator Penggabungan

  • Operator + dapat digunakan untuk penggabungan String dan String maupun String dan Bilangan
  • Contoh:
System.out.println(“Saya adalah” + “Mahasiswa”);
System.out.println(“Jumlah Mahasiswa” + 30);


Penambahan dan Pengurangan

- Penambahan: menambahkan 1 ke nilai variabel (operator = ++, prefix atau postfix)

int x=5; int x=5;
y = x++; y = ++x;
(nilai saat ini : y = 5, x=6) (nilai saat ini: y = 6, x=6)

- Pengurangan: mengurangkan 1 ke nilai variabel (operator = --)

int x=5; int x=5;
y = x--; y = --x;
(nilai saat ini: y = 5, x=4) (nilai saat ini: y = 4, x=4)



Operator Bit

& operasi AND untuk bit

| operasi OR untuk bit

^ operasi Ex OR untuk bit

~ operasi NOT untuk bit

<< geser kiri (geser 1 bit = *2)

>> geser kanan (geser 1 bit = /2)

>>> geser kanan tak bertanda

Operator Logika

&& operasi logika AND
| | operasi logika OR
! operasi logika NOT

Operator logika menggunakan ekspresi
dengan nilai balik Boolean (true or false)


Urutan Eksekusi Operator

Secara umum urutan eksekusi operator:

1. Operasi Penambahan dan Pengurangan
2. Operasi Aritmatika
3. Operasi Pembandingan
4. Operasi Logika
5. Operasi Penugasan

Apabila urutan sama, sebelah kiri dieksekusi terlebih dahulu daripada sebelah kanan
Khusus untuk operator = dan += sebelah kanan dieksekusi terlebih dahulu



ARRAY

Array adalah objek yang dapat digunakan untuk menyimpan sejumlah data

Elemen yang disimpan pada array dapat berupa tipe primitif (int, float, etc) atau objek (instan dari class)

Deklarasi Variabel Array

Bentuk Deklarasi:
tipePrimitif[] namaVariabel;
namaKelas[] namaVariabel;
Contoh:
String[] kota;
int[] nomor;

Menciptakan Objek Array

- Bentuk Deklarasi:
namaVariabel = new tipePrimitif[jumlahElemen];
namaVariabel = new namaKelas[jumlahElemen];
- Contoh:
nomor = new int[7];
kota = new String[8];
- Bentuk singkat deklarasi variable dan objek array:
String[] kota = new String[8];
int[] nomor = new int[7];

Mengakses Elemen Array

- Bentuk Deklarasi
namaVariabelArray[nomorElemen];
- Contoh:
kota[0] = “Surabaya”;


ArrayKota.java

public class ArrayKota{

public static void main(String[] args){
String[] kota; //deklarasi variabel array
kota = new String[3]; // membuat objek array

kota[0] = "Jakarta";
kota[1] = "Surabaya";
kota[2] = "Semarang";

System.out.println(kota[0]);
System.out.println(kota[1]);
System.out.println(kota[2]);

}

}



Pemberian Nilai Array

public class ArrayKota2{

public static void main(String[] args){
String[] kota = {“Jakarta”, “Surabaya”, “Semarang”};

System out println(kota[0]);
System.out.println(kota[1]);
System.out.println(kota[2]);

}

}

Mengetahui Jumlah Elemen Array


public class ArrayKota3{
public static void main(String[] args){
String[] kota = {“Jakarta”, “Surabaya”, “Semarang”};

for(int i=0; i(kota.length; i++)
System.out.println(kota[i]);

}

}


Array Multidimensi

class ArrayMultidimensi {

public static void main(String[] args) {

String[][] nama = {
{"Pak ", "Bu “, “Mbak”},
{"Joko", "Susi"}

};

System.out.println(nama[0][0] + nama[1][0]);
System.out.println(nama[0][1] + nama[1][1]);
System.out.println(nama[0][2] + nama[1][0]);
}

}
Rabu, 07 Oktober 2009

OPERATOR

Operator adalah simbol dan karakter khusus (matematika) yang digunakan dalam suatu ekspresi

Contoh:
int x = 3;
int y = x;
int z = x * y;
boolean status = true;

Jenis Operator Berdasar Operand

1. Operator Unary: operator yang melibatkan satu operand
2. Operator Binary: operator yang melibatkan dua operand
3. Operator Ternary: operator yang melibatkan tiga operand

Jenis Operator

1. Operator Aritmatika
2. Operator Penugasan
3. Operator Penggabungan
4. Operator Penambahan dan Pengurangan
5. Operator Bit
6. Operator Pembanding
7. Operator Logika

Operator Penugasan

- Operator penugasan berguna untuk memberi nilai ke suatu variabel
- Operator penugasan menggunakan tanda sama dengan ( = )
- Operator penugasan digabungkan dengan operator aritmatika membentuk operator penugasan gabungan (compound assignment)

Operator Penggabungan

- Operator + dapat digunakan untuk penggabungan String dan String maupun String dan Bilangan
- Contoh:

System.out.println(“Saya adalah” + “Mahasiswa”);
System.out.println(“Jumlah Mahasiswa” + 30);

Operator Logika

&& operasi logika AND
| | operasi logika OR
! operasi logika NOT

Operator logika menggunakan ekspresi
dengan nilai balik Boolean (true or false)
Public class LingakranBeraksi{

Public static void main (String[] args){

Lingakran luas*new lingkaran();

luas.hitungluas(10);

}

}
Senin, 28 September 2009

luasLingkaran.Java

class Lingkaran{

Final double PI = 3,141592
double r;
double luas lingkaran;
int luas bulat

Public void hitungLuas (double r);{
Luas lingkaran = ((double) (PI*r*r));

System.out.println("Luas Lingkaran pencacah:"+luas lingkaran);

Luas bulat = ((int) (luas lingkaran));

System.oout.printl ("luas lingkaran bulat :"+luas bulat);


}

}
Jumat, 18 September 2009
Karakter.java

public class Karakter{
public static void main(String[] args){
char karakter1=88, karakter2='X', karakter3='Y';
System.out.println("Karakter 1: " + karakter1);
System.out.println("Karakter 2: " + karakter2);
System.out.println("Karakter 3: " + karakter3);
}
}



Constant Variable (Konstanta)


~ Constant Variable digunakan apabila kita ingin
membuat nilai sebuah variable tidak berubah
(tetap)
~ Constant variable menggunakan keyword final
di depan tipe data, kadang sering juga
digabungkan dengan keyword static. Nama
constant variable biasanya menggunakan kapital
~ Contoh:
final float PI = 3.141592;
static final boolean DEBUG = false;


Literal

Semua informasi (bilangan, karakter, string, boolean ) yang merepresentasikan suatu nilai

* Literal Bilangan (bulat dan pecahan):
* int tahun = 2008; long nilai = 4L
* double myScore = 2.25; float piValue = 3.1415927F;
* double x = 12e22; double y = 19E-95;
* Literal Boolean (true dan false):
* boolean pilihan = true;
* Literal String:
* String quitMsg = “Yakin Ingin Keluar?”;
* Literal Karakter (unicode)

LuasSegitiga.java


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

int alas= 17;
int tinggi = 11;
double luas;


luas = (double) ((alas*tinggi)/2);


System.out.println("Luas Segitiga : " + luas);

}

}
Memberi Nilai Variabel

~ Menggunakan tanda sama dengan (=)
~ Kebiasaan yang baik untuk memberi
nilai awal (initial value) pada local
variabel (mencegah bug pada program)
~ Contoh:
int hasilTambah = 0;
boolean status = false;

Memberi Nama Variabel

~ Gunakan lowercase untuk variabel yang
terdiri dari satu kata atau kata pertama
~ Gunakan kapital untuk karakter pertama dari
kata kedua, ketiga, dst
~ Contoh:
int hasil;
boolean statusMesinMobil;
Button openFile;

Penentu Akses

~ Private: pengaksesan suatu instance variabel
dan method hanya dapat dilakukan di dalam
class ( tidak bisa dari dari luar class)
~ Tanpa Tanda: pengaksesan suatu instance
variabel dan method dapat dilakukan di
dalam kelas dan kelas lain dalam satu paket
~ Public: pengaksesan suatu instance variable
dan method dapat dilakukan dari luar
(sembarang) kelas
Bilangan.java

class Bilangan {
static int pencacah = 0;
private int nilai;
public Bilangan(int nilai){
this.nilai = nilai;
this.pencacah++;
}
public void info(){
System.out.println("Nilai:“ + this.nilai);
System.out.println("Pencacah:“ + this.pencacah);
System.out.println("");
}
}


BilanganBeraksi.java

public class BilanganBeraksi{
public static void main(String[] args){
Bilangan b1 = new Bilangan(50);
b1.info();

Bilangan b2 = new Bilangan(15);
b2.info();

Bilangan b3 = new Bilangan(30);
b3.info();
}
}

Variabel

~ Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)
~ Nilai variabel dapat diubah di pernyataan manapun di dalam program
~ Mendeklarasikan variabel:
tipe namaVariabel1 [, namaVariabel2]
Contoh:
int hasilKali;
~String namaSiswa, namaGuru, namaAdmin;

Lingkup Variabel

Variabel dipanggil berdasarkan lingkupnya, dimulai dari blok yang paling kecil, kemudian blok di luar itu

1. Instance Variable: variabel yang memiliki nilai yang
berbeda di setiap objek
2. Class Variable: variabel yang berlaku di suatu class dan
seluruh instan dari class tersebut (objek). Ciri class
variable adalah menggunakan keyword static
3. Local Variable: digunakan di dalam method atau blok
pernyataan yang lebih kecil dari itu
4. Parameter: variabel yg ada di dalam pernyataan
(argument) method


Ekspresi

Ekspresi

~ Pernyataan yang dapat menghasilkan suatu nilai. Nilai yang dihasilkan oleh pernyataan ini yang disebut dengan nilai balik (return value)

~Nilai balik bisa berupa bilangan, boolean, atau objek

~Method tanpa nilai balik biasanya menggunakan keyword void

~Contoh:hasilBagi = a / b;
Kamis, 17 September 2009

Materi KuliahKU

Bahasa Pemrograman?

* Komputer bekerja seperti switching dan hanya
mengenali 0 dan 1
* Manusia tidak (paham) berbicara dengan bahasa
0 dan 1
* Perlu bahasa pemrograman yang dapat menjadi
perantara percakapan antara komputer dan
manusia
* Bahasa pemrograman diubah ke dalam bahasa
yang dipahami oleh komputer dengan
menggunakan interpreter atau kompiler

Compiler or Interpreter?

* Compiler:
Mengkompilasi source code menjadi bentuk file yang bisadieksekusi

* Interpreter:
Mengkompilasi dan menjalankan source code secara langsung


Tingkat Bahasa Pemrograman

- Bahasa Pemrograman Tingkat Rendah
(Assembler)
- Bahasa Pemrograman Tingkat Sedang
(C, Pascal, Fortran)
- Bahasa Pemrograman Tingkat Tinggi
(Java, C++, C#)

Paradigma Pemrograman

Sudut pandang dan style pemrograman berhubungan dengan bagaimana sebuah masalah diformulasikan dalam bahasa pemrograman

- Functional Programming: Urutan fungsi secara sekuensial (Scheme, Lisp)
- Procedural Programming: Pemecahan masalah berdasarkan prosedural kerja yg terkumpul dalam unit pemrograman bernama fungsi (C, Pascal)
- Object-Oriented Programming: Koleksi object yang
saling berinteraksi . Class adalah unit pemrograman (Java, C#, C++)

Tool Pemrograman Java

1. Compiler (Interpreter):
Java Standard Edition (JSE)
2. Text/Code Editor:
TextPad, Notepad++
3. Integrated Development Environment (IDE):
Netbeans, Eclipse, JCreator


Instalasi JSE dan Netbeans

1. Download Java Standard Edition (JSE) dari:
http://java.sun.com/javase/downloads/
2. Instal JSE dengan mengklik:
jdk-6u11-windows-i586-p.exe
3. Download Netbeans versi terbaru dari
http://netbeans.org
4. Instalasi Netbeans dengan mengklik:
netbeans-6.5-ml-windows.exe
5. Ikuti seluruh proses instalasinya sampai
selesai

Instalasi Text Editor dan Set Path

Set path dan instalasi text editor diperlukan
untuk yang mengembangkan aplikasi textbased
dengan console

1. Klik Start -> Control Panel -> System ->
Advanced -> Environment Variables dan set
system PATH:
;C:\Program Files\Java\jdk1.6.0_11\bin

2. Instal text editor untuk editing code:
extpad, notepad++, JCreator
Minggu, 13 September 2009

CLASS MOBIL2

class MobilLengkap{

String warna;
int tahunProduksi;
void prinMobil(){
system.out.println ("warna:"+warna);
system.out.println ("Tahun":"+tahunProduksi);

void hidupkan mobil(){
system.out.println ("mobilku sudah hidup yeee");
}

void matikan mobil(){
system.out.println ("mobilku sudah mati yeee");
}

void ubahgigi(){
system.out.println ("mobilku mengubah gigi");
}

}
}

MOBILBERAKSI

Public class MobilLengkapBeraksi{
Public static void main (string [] ){
MobilLengakap mobilMega = new MobilLengkap();
mobilMega.warna = "Hitam";
mobilMega.tahunProduksi = 2005;
mobilMega.hidupkanMobil();
mobilMega.makanMobil();
mobilMega.ubahgigi();
}
}

CLASS MATEMATIKA

Class Matematika{
int hasil;

void pertambahan (int a,int b){
hasil = a + b
system.out.println ("hasil penjumlahan =' +hasil);
}

void pengurangan (int a,int b){
hasil = a - b
system.out.println ("hasil pengurangan =' +hasil);
}

void perkalian (int a,int b){
hasil = a * b
system.out.println ("hasil prerkalian =' +hasil);
}

void pembagian (int a,int b){
hasil = a / b
system.out.println ("hasil pembagian =' +hasil);
}

MATEMATIKA AKSI

Public class MatematikaAksi{
Public static void main (string [] ){
Matematika matematikaku = new Matematika();
Matematikaku bertambah (20,30)
Matematikake berkurang (50,30)
Matematikaku mengalikan (20,3)
Matematikaku membagi (21,3)
}
}