Professional Documents
Culture Documents
>javac FirstSample.java
Hasil compilasi ini adalah file:
FirstSample.class
Perlu diingat bahwa JAVA adalah suatu progam yang termasuk CASE
SENSITIF seperti C++ sehingga apabila dalam meng-compile diketik :
>javac firstSample.java
atau
>javac Firstsample.java
maka akan terjadi error dalam nama file, karena yang benar adalah file dengan
F besar dan sample dengan S besar. Hati-hati dalam meng-compile!
File hasil compilasi berupa file berekstension *.class yang biasa dikenal
sebagai JAVA BYTE CODE, yang merupakan suatu kode byte yang bebas
platform. Perlu diingat bahwa apabila dalam file *.java ada beberapa definisi
class maka hasil compilasi akan menghasilkan beberapa file yang berekstensi
*.class pula.
Selanjutnya untuk eksekusi kode byte ini digunakan suatu interpereter yang
tergantung pada paltform tertentu. Untuk sistem yang digunakan dalam
pembahsan ini (SO WINDOWS) interpreter adalah file :java.exe. Untuk
menjalankan java byte code digunakan baris perintah :
>java FirstSample
BAB I: Loop dan Array 4
hasil adalah :
Hello INFORMATIKA !!!
Untuk urutan compilasi dan eksekusi program dari jendela MS-DOS prompt
dapat dilihat pada Gambar 1.4.
Integer :
int 4 byte kisaran nilai :-2.147.486.648 s/d 2.147.486.647
short 2 byte kisaran nilai :-32.768 s/d 32.767
long 8 byte kisaran nilai :-9.223.372.036.854.775.808L s/d
9.223.372.036.854.775.807L
byte 1 byte kisaran nilai :-128 s/d 127
Floating point
float 4 byte kisaran nilai :+3.40282347E+38F (7 digit ignifikan)
double 8 byte kisaran nilai :+1.79769313486231570E+308 (15
digit signifikan)
Satu hal yang berbeda dengan C++ adalah untuk String dalam JAVA adalah
sebuah objek, yang mengandung beberapa method untuk manipulasi objek
tersebut. Meskipun demikian suatu objek String dapat diisi suatu nilai string
sebagaimana layaknya variabel biasa.
Contoh :
String Nama=”JON SHOLEH”;
atau :
String Nama;
Nama = “JON SHOLEH”;
class OperasiDATA
{ public static void main(String args[])
{
int a;
float b;
double c;
String d;
a=(int)1/3;
b=(float)1/3 ;
c=(double)1/3 ;
d="JON SHOLEH";
tidak menyediakan satu kelas khusus. Tetapi dari package java.io telah
didefinisikan suatu class abstract InputStream yang menyediakan beberapa
method untuk membaca aliran byte data antara lain method read() untuk
membaca sejumlah byte dari keyboard. Arthur van Hoff (1995) mendefinisikan
suatu class final yang dinamakan class System yang didalamnya didefinisikan
beberapa objek, yaitu :in untuk standard masukan keyboard dan out untuk
output ke layar. Untuk selanjutnya method yang diturunkan beberapa method
untuk input beberapa type data dari keyboard adalah dari :
System.io.read()
System.io.println(String s)
Selain dengan class Console dari Cay Horstmann, Julio Sanchez dan Maria
Canton (2002) mendefinisikan klass Keyin yang memanfaatkan method dari
kelas InputSream, yaitu antara lain method :
Dengan demikian untuk membaca beberapa jenis data dari keyboard kita tinggal
memilih akan menggunakan method dari class Consoel atau method dari class
Keyin, hasilnya sama.
Program berikut ini memperagakan masukan nama, umur dan gaji yang masing-
masing mewakili tipe :string, integer dan float
import corejava.*;
public class CobaBaca
{ public static void main(String[] args)
{ int u;
String Nm;
float Gj;
BAB I: Loop dan Array 7
If (kondisi) statemen ;
atau
If (kondisi) {blok statemen} ;
atau
If (kondisi) statemen1 else statemen2;
atau
If (kondisi) {blok statemen -1} else {blok statemen-2} ;
Contoh program :
// --------------------------------------------
// Membaca dari keyboard :string dan double
// menggunakan method inString() dan inDouble()
// dari klass Keyin
// sehingga tidak diperlukan import :corejava.*
// ---------------------------------------------
if (JUAL>100000)
{BONUS=0.1*JUAL; PESAN="SELAMAT !!";}
else
{BONUS=0; PESAN="ANDA HARUS LEBIH GIAT LAGI";};
System.out.println("Saudara "+NAMA );
System.out.println("Bonus Anda sebesar : "+BONUS );
System.out.println(PESAN);
}
}
Output program :
Nama Sales : BAMBANG <enter>
Hasil Penjualan : 99000 <enter>
Saudara BAMBANG
Bonus Anda sebesar : 0
ANDA HARUS LEBIH GIAT LAGI
III. Tugas
2. Buatlah suatu program JAVA untuk menentukan nilai huruf dari suatu
ujian dari nilai bilangan dengan ketentuan :
Nilai angka <40 nilai huruf : ‘E’
40<=Nilai angka < 55 nilai huruf : ‘D’
55<=Nilai angka < 75 nilai huruf : ‘C’
75<=Nilai angka < 85 nilai huruf : ‘B’
85<=Nilai nilai huruf : ‘A’
masukan : Nilai angka dari keyboard
keluaran : nilai huruf
3. Buatlah suatu program JAVA untuk menentukan MODAL akhir dari suatu
tabungan dengan bunga berbunga dengan rumus :
MAK =(MAW + B)N
MAK=modal akhir
MAW=modal awal
N = periode penabungan
Catatan : Untuk memangkatkan bilangan dalam JAVA digunakan method
dari class Math, yaitu :
Math.pow(x,n) adalah xn
Masukan : MAW dan N
Keluaran MAK
BAB I: Loop dan Array 9
BAB II
LOOP DAN ARRAY
I. Kompetensi :
Pengenalan statemen loop dalam JAVA, seleksi multiple dan konsep
array sebagai objek.
1. Loop takhingga :
dalam hal ini blok instruksi akan dieksekusi apabila kondisi bernilai benar.
Dalam loop ini ada kemungkinan blok instruksi sama sekali tidak dieksekusi
apabila pada pengecekan kondisi pertama kali dijumpai kondisi bernilai salah.
Apabila diinginkan blok instrtuksi minimal dilakukan satu kali dapat
digunakan loop do while dengan sintaks :
Contoh program :
Program berikut membaca suatu nilai bilangan real dari keyboard dan mencari
akar kuadrat dengan rumusan : akar kuadrat dari a adalah :
xnew=(xold+a/xold)/2 selama |xold-xnew| cukup besar.
Flowchart pemecahan adalah :
START
Baca a
xnew=a/2
xold=xnew
xnew=(xold+a/xold)/2
Cetak
xnew a
|xnew-xold|>1e-
4
STOP
import corejava.*;
// untuk membaca data dari keyboard perlo class Console
// tanda // berarti komentar
//
public class Akar
{ public static void main(String[] args)
{
double a;
a=Console.readDouble("Masukkan angka real:");
double xnew=a/2;
double xold;
do {
xold=xnew;
xnew=(xold+a/xold)/2;
System.out.println("xnew : "+xnew);
}
while (Math.abs(xnew-xold)>1e-4);
System.out.println("AKAR KUADRAT DARI "+a+"adalah "+xnew);
}
}
2. Loop terhingga :
Blok instruksi akan dikerjakan selama NilaiAkhirCounter belum benar. Dalam hal
ini perubahanCOunter harus merubah counter dari nilai awal menjadi memenuhi
nilai akhir counter.
Contoh 1 :
Program mencetak HELLO INFORMATIKA! 10 kali
class Hello2
{
public static void main(String args[])
{
for (int Counter=1 ; Counter<=10; Counter++)
System.out.println("HELLO INFORMATIKA!!");
}
}
Contoh 2 :
Program menghitung n! = 1*2*3*..*n dengan n diinputkan dari keyboard.
import corejava.*;
BAB I: Loop dan Array 11
class Faktor
{ public static void main(String args[])
{ int n,fak, i;
// tentukan n faktorial
fak=1;
for (i=1 ; i<=n ; i++) fak=fak*i;
System.out.println("Hasil "+n+" ! = "+fak);
}
}
Hasil kompilasi dan eksekusi program adalah sebagai Gambar 2.2. berikut :
switch ( variabelSeleksi)
{ case nilai1:
statemen;
statemen;
....
[break]
case nilai2:
statemen;
statemen;
....
[break]
...
[default :]
statemen;
statemen;
...
[break]
}
BAB I: Loop dan Array 12
Contoh :
import corejava.*;
class Menu
{ public static void main(String args[])
{ int pil;
switch(pil)
{ case 1 :
System.out.println("Anda pilih NASI GORENG!");
break;
case 2 :
System.out.println("Anda pilih NASI RAWON!");
break;
case 3 :
System.out.println("Anda pilih SOTO");
break;
default:
System.out.println("Pilihan anda bukan 1,2,3,..!!");
break;
}
}
}
Perlu dicermati bahwa statemen break paad akhir statemen dalam suatu kasus
nilai adalah penting. Apabila steteman break ini tidak dicantumkan maka seteleh
deretan statemen dijalankan untuk suatu nilai1 maka deretan statemen setelah
nilai2, nilai3 dst samapi nila defaulty akan tetap dijalankan. Hal ini terjadi karena
kontrol program tidak diarahkan keluar seleksi.
Dalam JAVA array adalah sebuah objek. Dua langkah awal yang diperlukan
sebelum dapat mengakses array adalah :
- mendefinisikan
- mengalokasikan memeory untuk array tersebut
Array 1 Dimensi
- Array satu dimensi didefinisikan dengan bentuk umum :
tipedata[ ] namaArray; atau tipedata namaArray[ ];
Contoh :
String[] Nama; atau String Nama[];
int[] Umur; atau int Umur[];
Selanjutnya Nama dan Umur sebagai objek array dapat diakses, misalnya
diiskan data kedalam elemen array sebagai berikut :
Nama[0]=”JON”;
Umur[0]=25;
Nama[1]=”ALI”
Umur[1]=30;
.... dst
Contoh program berikut menggunakan array Nama dan umur dan mencetaknya
dengan loop.
class DemoArray1
{
public static void main(String args[])
{
String[] Nama={"JON", "ALI", "SALEH", "PUTRI", "DEDI"};
int[] Umur={25, 30, 55, 35, 40};
for (int i=0; i<Nama.length; i++)
System.out.println(Nama[i]+" " +Umur[i]);
}
}
JON 25
ALI 30
SALEH 55
PUTRI 35
DEDI 40
Array 2 Dimensi
- Array dua dimensi didefinisikan dan dialokasikan dengan cara :
Contoh:
Dibawah ini contoh program dengan array 2 dimensi dari string untuk simulasi
kamus inggris indonesia. Kata dalam program adalah suatu array dua dimensi
dari string yang digunakan untuk menyimpan data kata inggris dan indonesia
seperti gambar berikut :
Kolom 0 kolom 1
baris 0 ONE SATU
baris 1 COW SAPI
baris 0 RUN LARI
baris 1 RED MERAH
baris 0 MEN ORANG
import corejava.*;
class DemoArray2
{ //demo array 2 dimensi untuk simulasi kamus
//inggris indonesia
public static void main(String args[])
{ String[][] Kata={ {"ONE", "SATU"},
{"COW", "SAPI"},
{"RUN", "LARI"},
{"RED", "MERAH"},
{"MAN", "ORANG"}};
String KataDicari;
int i, k;
KataDicari=Console.readString("Ketik Kata Inggris :");
//cari kata
k=-1;
for (i=0; i<5; i++)
if (Kata[i][0].equals(KataDicari) ) k=i;
INGAT !!! : Untuk menguji kesamaan suatu string dalam JAVA tidak dapat
digunakan tanda operator relasi == tetapi menggunakan salah satu method dari
object string yaitu equals,dengan tatatulis :
s.equals(t)
yang akan mengembalikan nilai true apabil string s sama dengan string t.
III. TUGAS
1. Buat program JAVA untuk membaca bilangan bulat n. Dengan loop
program menentukan deret FIBBONACCI untuk nilai suku-suku yang tidak
lebih dari n. Deret FIBBONACCI adalah :
0 1 1 2 3 5 8 13 ... yang berlaku Un=Un-1 + Un-2
dengan U1=0 U2 = 1
Misal : INPUT : n = 40
OUTPUT : 0 1 1 2 3 5 8 13 21 34
2. Buat program JAVA untuk memperbaiki unjuk kerja program simulasi kamus
dengan loop while, karena simulasi Kamus dengan loop for pada contoh
program sebenarnya kurang efisien, yaitu : pada proses pencarian kata
apabila kata sudah ditemukan pada langkah ke i, dengan i< jumlah kata
maka program tetap meneruskan pencarian sampaiberputar sebanyak
jumlah kata. Dengan loop while program akan berhenti apabila proses
pencarian sudah ditemukan.
3. Buat program dengan menggunakan array satu dimensi untuk membaca dan
menyimpan data sebanyak n. Program mencari rata-rata dan standard
deviasi dari n buah data tersebut.
Rata-rata = Σ x / n
Standard deviasi = √ [ { Σ x2- (Σ x)2 }/(n-1) ]
BAB I: Loop dan Array 16
BAB III
PENGANTAR OOP : CLASS DAN METHOD
I. Tujuan :
Memahami lebih jauh mengenai konsep pemrograman berorientasi objek
(Object Orientation Programming = OOP) dalam JAVA. Stuktur data dalam
class, method, objek, instance, dan pemahaman modifier : public, private,
static, final dan lain-lain.
Global data
Pemrograman prosedural
method method
data data
method method
method method
class
Pemrograman OOP
Dari gambar 3.1. dapat dijelaskan bahwa suatu class pada prinsipnya
adalah suatu kemasan data dengan method pemroses data tersebut. Konsep
inilah yang sering disebut juga sebagai peng-kapsulan (encapsulation). Dalam
JAVA tidak ada data global, tetapi ada adlam suatu kelas. JAVA sendiri sebagai
bangunan pemrograman mendefinisikan banyak class siap pakai dengan class
java sebagai class induk yang memiliki banyak sub-class misalnya :
java.lang, java.util, java.awt, java.io, java.net,
java.applet dan lain-lain.
Deklarasi variabel :
int X,Y,Z;
double P,Q ;
Untuk kelas Anjing : misalnya ada dua atribut, No dan Nama dan memiliki dua
kemampuan (behavior), yaitu : Gonggong dan SayHello.
class Anjing
{
String Nama;
int No;
class TesAnjing
{ public static void main(String args[])
{
Anjing AnjingKU=new Anjing();
Anjing AnjingMU=new Anjing();
AnjingKU.SetData("PLEKI",10);
AnjingMU.SetData("HELI",77);
AnjingKU.Gonggong("GUG");
BAB I: Loop dan Array 18
AnjingKU.SayHello();
AnjingMU.Gonggong("KAING");
AnjingMU.SayHello();
}
}
class Mahasiswa
{ String Nama;
int Umur;
class TesMhs
{ public static void main(String orgs[])
{ Mahasiswa Mhs1=new Mahasiswa();
Mahasiswa Mhs2=new Mahasiswa();
Mhs1.SetData("JON SALEH",20);
Mhs2.SetData("SITI KAMAR MANDI",17);
Mhs1.CetakInfo();
BAB I: Loop dan Array 19
Mhs2.CetakInfo();
}
}
Selanjutnya secara teknis kedua kelas tersebut diketik dalam satu kesatuan
dokumen (dapat didefinisikan class Mahasiswa diikuti class TesMhs, atau dapat
juga dibalik : class TesMhs diikuti class Mahasiswa). Program disimpan dengan
nama file sesuai dengan nama class yang didalamnya terdapat program utama,
yaitu : TesMhs.java.
Public method :
Suatu method dari suatu kelas A dedefiniskan sebagai public berarti sembarang
method dari sembarang kelas yang memiliki asses ke objek dari kelas A tersebut
dapat memanggil (call) method tersebut.
Suatu method sendiri didefiniskan dengan tata tulis :
ReturnValue dapat berupa tipe-tipe data :int, double, Stirng, atau tipe-tipe lain.
Apabila method tersebut tidak mengembalikan nilai ReturnValue adalah void.
private method:
Dalam implementasi class umumnya data selalu dideklarasikan sebagai
private, yaitu hanya dikenal oleh objek dari kelas tersebut. Untuk implementasi
method apabila didefinisikan sebagai public berarti dapat diases oleh kelas lain,
maka apabila didefinisikan sebagai private berarti method tersebut hanya dapat
diases dari dalam kelas tersebut.
Contoh :
Untuk kelas Mahasiswa didifnisikan method
public void SetData(String n, int u)
{ Nama=n; Umur=u;};
method ini dapat diases dari kelas lain, yaitu kelas : TesMhs melalui
Mhs1.SetData("JON SALEH",20);
Nampak bahwa method SetData() menjadi tidak “terlihat” dari kelas TesMhs
yang memangghil method tersebut. Method SetData() yang bersifat private
dapat diases oleh method lain dari kelas tersebut, misalkan dalam kelas
Mahasiswa ditambahkan method baru ISIDATA() yang bersifat public. Method
ISIDATA memanggil method SetData() yang secara lengkap definisi kelas
Mahasiswa menjadi sebagai berikut :
class Mahasiswa
{ String Nama;
int Umur;
Maka dalam class TesMhs method ISIDATA yang memanggil digunakan dengan
:
Mhs1.ISIDATA("JON SALEH",20);
Mhs2.ISIDATA("SITI KAMAR MANDI",17);
Contoh:
Lihat kembali definisi kelas Mahasiswa:
class Mahasiswa
{ String Nama;
int Umur;
...
Jika sekarang atribut Nma diberi pengeal static menjadi:
class Mahasiswa
{ static String Nama;
int Umur;
...
meskipun dari class TesMhs objek Mhs1 dan objek Mhs2 mengeset atribut
Nama dengan :
BAB I: Loop dan Array 21
Mhs1.ISIDATA("JON SALEH",20);
Mhs2.ISIDATA("SITI KAMAR MANDI",17);
Terbukti bahwa ernyata untuk objek yang berbeda, atribut Nama yang static
nilainya sama.
Sama halnya dengan data static, method static memiliki pengertian bahwa
method tersebut adalah milik suatu kelas, bukan milik suatu objek dari kelas
tersebut. Hal ini mengangapa method main() dalam program selalu didefinisikan
sebagai public static. Contoh method static adalah method yang dimiliki oleh
kelas Console
Console.readInt(paramter)
Console.readDouble(parameter)
Adapun bentuk umum menggunakan method static dari suatu kelas adalah :
NamaKelas.NamaMethodStatic(parameter)
Contoh Apllikasi :
Seandainya data Mahsiswa dikembangkan sehingga disamping nama dan umur
ditambah data : Nilai, suatu array (misalnya berukuran 3) dan RATA untuk
mengetahui rata-rata nilai.
Selanjutnya dapat didefinisikan suatu method statis CariRata yang berguna
untuk mencari rata-rata nilai dari seorang mahasiswa. Method ini merupakan
method miliknya klas Mahasiswa. Modifikasi program menjadi sebagai berikut :
class Mhs
{ public static void main(String orgs[])
{ DataMhs O1=new DataMhs();
DataMhs O2=new DataMhs();
O1.RATA=DataMhs.CariRata(O1.Nilai) ;
O2.RATA=DataMhs.CariRata(O2.Nilai);
O1.Cetak();
O2.Cetak();
}
} Nama kelas Nama method argumen
static
class DataMhs
{ String Nama;
int Umur;
double RATA;
double Nilai[]=new double[3];
III. TUGAS
...
Data Barang dicadangkan sebanyak N
BAB IV
CONSTRUCTOR, INHERITANCE & POLYMORPHISM
I. Tujuan :
Memahami beberapa pilihan inisialisasi objek dengan mengenal konsep
constructors dan method overloading. Memahami pula salah satu kunci
kekuatan OOP yakni konsep inheritance (pewarisan sifat), pengembangan
kelas. Di dalam pengembangan suatu kelas dimungkinkan merancang suatu
method dengan nama yang sama dengan method class induk. Hal ini dikenal
dengan konsep polymorphism.
AnjingKU.SetData("PLEKI",10);
Contoh:
Untuk kelas Anjing seperti pada BAB III dapat diubah definisinya dengan
menambah beberapa definisi konstructor :
class Anjing
{
private String Nama="NoName"; // data default
private int NoAnjing;
private static int Urut=0;
AnjingKU.Gonggong("GUG");
AnjingKU.SayHello();
AnjingMU.Gonggong("KAING");
AnjingMU.SayHello();
Penjelasan:
Untuk definisi objek AnjingKU dan AnjingMU alokasi objek tanpa inisialisasi
sehingga digunakan data default, yang nampak paa nama :NoName. Untuk
definisi objek AnjingNYA digunakan pemanggilan constructor dengan satu
parameter yaitu nama anjing :”BULDOCK” sehingga nomor urut adalah 3. Setiap
objek diciptakan dengan construktor default atau 1 parameter maka atribut
NoANjingh akan naik 1. Perlu dicermati NoAnjing akan berurut sesuai dengan
berapa jumlah objek yang telah diciptakan, dengan memanfaatkan bantuan
atribut Urut yang bertipe static. Akhirnya untuk objek AnjingKITA digunakan 2
parameter yaitu nama dan nomor urut anjing. Dalam hal ini NoANjing tidak lagi
sesuai dengan o bjek yang diciptakan tetapi diset oleh parameter.
Objek this
Dalam difinisi constructor dijumpai kata kunci this.Nama dan
this.NoAnjing yang merupakan suatu cara untuk mengacu kepada atribut
dari objek yang sedang dikerjakan.
Inheritance
Salah satu kemampuan besar yang merupakan inovasi monumental
dalam teknik pemrograman berorientasi objek (OOP) adalah kemampuan suatu
kelas untuk mewariskan sifat (atribut) dan kemampuan (method) yang dimiliki
pada kelas turunannya. Hal ini memungkinkan pemrogram tidak perlu menulis
ulang program yang telah dibuat sebelumnya jika akan mengembangkan
programnya cukup dengan menambah kemampuan melalui proses pewarisan.
Konsep ini mengambil analogi pada biologi yang mengelompokkan binatang
atau tumbuhan berdasarkan kesamaan sifat dan perilakunya dalam :ORDO,
GENUS, SPECIES dan beberapa pembagian lain. Untuk lebih jelasnya simak
Gambar 4.1.
Pada kelas ANIMAL memiliki kemampuan : breathes (bernafas), moves
(dapat bergerak) dan reproduces (dapat memiliki keturunan) dan satu atribut
:mouth (punya mulut). Kelas ANIMAL memilki tiga kelas turunan, yaitu : BIRD,
FISH dan REPTILE. Kelas turunan ini kan mewarisi kemampuan kelas induknya
dan (umumnya) memilki kemampuan tambahan atau atribut tambahan, misalnya
untuk BIRD disamping memiliki kemampuan breathes, moves dan reproduces
juga memiliki kemampuan tambahan flies dan atribut tambahan has feathers.
Kelas BIRD masih memiliki sub-kelas CANARY yang memiliki tambahan
atribut isyellow dan tambahan kemampuan sing.
BAB IV : Constructor, Inheritance & Polymorphism 26
ANIMAL breathes
moves
reproduces
mouth
CANARY sing
isyellow
Dalam OOP dua hal yang dapat diwariskan adalah :atribut dan method. Jika
diagram kelas dapat digambarkan sebagai Gambar 4.2.
ClasName Dog
Attributes Name
Weight
Color
Methods()
Bark()
( a) Jump()
(b)
Contoh :
Untuk memperjelas konsep pewarisan daimbil contoh dari buku CoreJava
definisi class Employee yang memiliki atribut :
name, salary dan hireDay
dan memiliki method :
constructor
print()
raiseSalary()
hireYear()
import corejava.*;
class Employee
{ public Employee(String n, double s, Day d)
{ name = n;
salary = s;
hireDay = d;
}
Polymorphism:
Satu lagi konsep penting dalam OOP adalah konsep polymorphism.
Dalam OOP polymorphism dimaksudkan bahwa perancang dapat mendifinisikan
suatu method dalam suatu kelas dengan nama yang sama dengan method
yang telah didefinisikan pada kelas induknya. Pendefinisian method pada kelas-
kelas turunan ini dapat dilakukan sepanjang garis “silsilah” pewarisan kelas,
sehingga suatu nama method dapat muncul berkali-kali pada suatu kelas, sub-
kelas, sub-sub-kelas dan seterusnya. Pendefinisian method seperti ini juga
dikenal dengan istilah method overriding. Apabila method tersebut dipanggil
maka objectlah yang akan menentukan method mana yang harus dikerjakan.
Sebagai contoh dalam class Employee didefinisikan method print() :
class Employee
{ ...
Perhatikan isi method print() pada kelas Manager baris pertama memanggil
method print() dari object super (dalam hal ini objek super adalah objek
Employee, yang merupakan super kelas atau induk dari kelas Manager).
BAB IV : Constructor, Inheritance & Polymorphism 29
staff[0]=boss ;
III. TUGAS
BAB IV : Constructor, Inheritance & Polymorphism 30
BAB V
ABSTRACT CLASS DAN PACKAGE
I. Tujuan :
Memahami dan mampu membedakan konsep class dan abstract class,
serta abstract method dan kapan konsep ini harus dipergunakan. Beberapa
pustaka dari class-class java didefinisikan sebagai class abstract yang
memberikan peluang kepada programmer untuk menurunkan sendiri class-class
dari class abstract yang tersedia.
Message
sender
getSender()
play( )
text filename
/**
* @version 1.00 07 Feb 1996
* @author Cay Horstmann
*/
import java.io.*;
import sun.audio.*;
import corejava.*;
while (more)
{ String line = Console.readString();
if (line.equals("exit"))
more = false;
else msg = msg + line + "\n";
}
mbox.insert(new TextMessage(from, msg));
}
else if (cmd.equals("voice"))
{ String from = Console.readString("Your name: ");
String msg
BAB V : Abstract Class dan Package 40
class Mailbox
{ public Message remove()
{ if (nmsg == 0) return null;
Message r = messages[out];
nmsg--;
out = (out + 1) % MAXMSG;
return r;
}
Package :
Suatu package adalah “bendel” atau pengelompokan kelas-kelas
berdasarkan kesamaan atau kemiripan fungsi. Program java memiliki enam
paket dalam java class libraray. Pada puncak hierarchi :java adalah suatu kelas
teratas yang darinya semua kelas diturunkan. Kelas-kelas yang diturunkan
dikelompokkan menjadi 6 package besar , yaitu :
BAB V : Abstract Class dan Package 42
java.io
java.lang
java.applet
java.awt
java.net
java.util
package MyFirstpackage
public class MyFirstClass {
....}
setiap class yang menjadi anggota paket didefinisikan dengan diawali dengan
kata package dilanjutkan dengan definisi kelas seperti biasa. Kelas-kelas yang
menjadi anggota paket dapat disimpan dalam file-file yang terpisah. File-file java
yang merupakan definisi class dari anggota package disimpan dalam satu
directori yang sama dengan nama directori adalah nama package tersebut.
Contoh:
Akan didefinisikan suatu package bernama : geometri
Berisi dua kelas : lingkaran dan kelas :epp (empat persegi panjang)
package geometri;
public class lingkaran
{
public lingkaran(double r)
{jari=r;
luas=3.14*jari*jari;
keliling=2*3.14*jari;
}
package geometri;
public class epp
{ double panjang;
double lebar;
double luas;
double keliling;
import geometri.*;
class tesGeo
{ public static void main(String args[])
{
lingkaran R1 = new lingkaran(1);
epp E1=new epp(5,10);
R1.CetakLuas();
R1.CetakKeliling();
E1.CetakLuas();
E1.CetakKeliling();
}
}
III. TUGAS
PERCOBAAN VI
PEMROGRAMAN DENGAN awt
BAB V : Abstract Class dan Package 45
I. Tujuan :
Pengenalan dasar mengenai suatu paket yang sangat luas penerapannya
yang dimiliki oleh program JAVA, yaitu package java.awt. Paket ini,
AWT=Abstract Window Toolkit, memungkinkan pemrogram merancang aplikasi
atau aplet dengan basis grafik, termasuk didalamnya Image, dan intensif
menggunakan prosedur-prosedur standard window dan antar muka grafis
seperti komponen-komponen button, textedit, checkbox, slider dan lain-lain.
Dengan AWT dimungkinkan pula kita untuk merancang animasi. Dalam
percobaan ini hanya akan dikenalkan beberapa komponen dasar grafis.
Class Frame
Kelas Frame merupakan class yang darinya dapat diturunkan sebuah
frame (jendela). Di atas jendela ini dapat dilakukan berbagai pekerjaan grafis
seperti membuat garis, kotak, lingkaran, elips, poligon, menulis teks atau
menempatkan komponen antar muka grafis seperti button, check box, radio
button dan lain-lain. Contoh berikut program untuk menciptakan frame tersebut.
import java.awt.*;
public class g1 extends Frame
{ public static void main(String args[])
{ Frame f = new Frame();
f.resize(300,200);
f.show();
}
}
Windows tersebut belum dapat ditutup dengan mengklik mouse pada tanda x
dipojok layar. Agar windows tersebut dapat ditutup dengan Ctrl-Alt-Del diakhiri
dengan EndTask.
Agar suatu window dapat ditutup dengan normal (dengan mengklik x dipojok
kanan atas), perlu didefinisikan suatu method handleEvent() dari windows
sebagai berikut :
return false;
}
Untuk menuliskan suatu string di windows pada posisi kolom x dan baris y.
Koordinat layar windows adalah :0,0 berada pada pojok kiri atas; x=jumlah point
kearah kanan dan y=jumlah point kearah bawah (vertikal), seperti ti pada
gambar 6.2.
width (x)
(0,0)
height (y)
Untuk drawOval apabila widht dan height sama akan menghasilkan lingkaran
dan apabila tidak sama akan menghasilkan bentuk oval.
import java.awt.*;
public class g2 extends Frame
{ public g2()
{setTitle("Kotak bertulisan");} //untuk judul windows
g.drawString("JAVA ",30,50);
}
Class Image
Salah satu class yang menarik dalam awt adalah class abstract Image
yang memungkinkan kita untuk menampilkan dan memanipulasi data Image
dalam berbagai format, seperti GIF, SPEG,BMP dan lain-lain
Beberapa method yang penting yang berhubungan dengan class Image antara
lain :
Toolkit.getDefaultToolkit().getImage(nmFILE)
yaitu untuk mengambil gambar yang tersimpan dalam file nmFILE.
Dalam nmFILE termuat lengkap dengan nama directori dan subdirectory, kecuali
file gambar kita ada pada directory yang sama dengan file program.
drawImage(objekgambar,x,y,skalaX,skalaY,pengamatGambar);
Parameter pertama objekgambar adalah nama objek gambar yang telah
diambil dari file ke memory dengan method getImage(). Parameter kedua dan
ketiga :x,y adalah koordinat pojok kiri atas dari peletakan gambar pada windows.
Paramater kempat dan kelima adalah sekala horisontal dan vertikal dalam
satuan point dari gambar.
import java.awt.*;
import java.awt.Image.*;
Image gb=Toolkit.getDefaultToolkit().getImage(nmFILE);
g.drawImage(gb,20,20,this);
setFont(new Font("Times", Font.BOLD, 18));
g.setColor(Color.red);
g.drawString("RAMBO !!" ,50,280);
}
import java.awt.*;
import java.awt.Image.*;
Hal yang perlu diperhatikan dalam pensklaan adalah keseimbangan antara lebar
(width) dan tinggi (height) darai gambar, apabila ini tidak seimbang akan dapat
“merusak” gambar seperti tampak pada Gambar 6.5. untuk skala yang terakhir,
lebar lebih besar dari tinggi, yang tidak sesuai dengan gambar aslinya.
BAB V : Abstract Class dan Package 50
Button :
Program untuk peragaan button adalah :
import java.awt.*;
Setiap tombol apabila di klik akan menyebabkan warna Frame berubah, tombol
“Yes” adalah kuning, tombol “No” adalah biru, tombol “Ok” orange dan
seterusnya.
III. Tugas
PANJANG: :
LEBAR:
LUAS :
KELILING: :