P. 1
1892_DiktatJava_Awal_0

1892_DiktatJava_Awal_0

|Views: 994|Likes:
Published by Aris Setiawan

More info:

Published by: Aris Setiawan on Mar 30, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

12/12/2012

pdf

text

original

Sections

  • BAB I STRUKTUR PROGRAM JAVA
  • I. Kompetensi :
  • 2.1. Mengedit Source code program JAVA :
  • 2.2. Meng-compile dan mengeksekusi program JAVA :
  • 2.3. Tipe Data dan Operator dalam JAVA
  • Integer :
  • Floating point
  • Karakter dan string
  • Operator aritmatik :
  • Operator relational dan logika
  • 2.5. Masukan program dari Keyboard
  • 2.6. Statemen Kondisional
  • BAB II LOOP DAN ARRAY
  • II. Teori Singkat :
  • 1. Loop takhingga :
  • 2. Loop terhingga :
  • 3. Seleksi multiple dengan swicth dan case :
  • Array 1 Dimensi
  • Array 2 Dimensi
  • III. TUGAS
  • BAB III PENGANTAR OOP : CLASS DAN METHOD
  • I. Tujuan :
  • Kelas, sub-kelas dan objek :
  • Properti dan method dari suatu kelas
  • Acces modifier : public, static dan private dalam definisi method
  • Static method:
  • II. Teori Singkat : Constructor dan Overloading pada constructor
  • Objek this
  • Inheritance
  • Polymorphism:
  • BAB V ABSTRACT CLASS DAN PACKAGE
  • II. Teori Singkat : Pengertian abstract class :
  • Pengertian abstract method :
  • Package :
  • Class Frame
  • Class Font dan class Graphics
  • Class Image
  • Antar Muka Grafis
  • III. Tugas

BAB I STRUKTUR PROGRAM JAVA I.

Kompetensi : Pengenalan struktur program JAVA sebagai suatu model pemrograman yang berorientasi objek secara penuh. Pada percobaan ini diharapkan mahasiswa telah dapat melakukan editing code program JAVA sederhana yang hanya memuat satu class, melakukan kompilasi program dan mengeksekusi program JAVA. Diharapkan pula dalam percobaan ini dikuasai pemahaman Tipe data sederhana, operator, statemen kondisi dan komunikasi dengan layar serta masukan dari keyboard dengan class Console. II. Teori Singkat : Program JAVA dirancang sebagai suatu pemrograman berorientasi objek (OOP=Object Orientation Programming) secara penuh. Dalam pemrograman PASCAL yang untuk TURBO PASCAL versi 5 ke atas telah mendukung OOP atau C++ yang telah penuh mendukung OOP namun dalam kedua bahasa yang terakhir tersebut masih dimungkinkan untuk membuat program dengan pendekatan program terstruktur, yang dalam lingkup pemrograman JAVA hal ini tidak dapat lagi dilakukan. Struktur program JAVA dibuat dengan mendefinisikan suatu class dengan syntax : [public] class <NamaKelas> { // definisi atribut dari kelas tersebut
// definisi method yang memanipulasi atribut

} Keterangan : [public] = menunjukkan bahwa class tersebut dapat diases oleh class yang lain. Apabila kata public tidak dicantumkan menunjukkan bahwa class tersebut hanya dapat diases oleh class tertentu. NamaKelas = adalah nama dari programer sesuai dengan persoalan. Selanjutnya didalam suatu class dapat didefinisikan atribut-atribut class tersebut dan juga method-method yang memanipulasi atribut class tersebut. Suatu class dapat dieksekusi apabila didalam class tersebut didefinisikan suatu method yang disebut main(), yaitu : public static void main(String[] args) 2.1. Mengedit Source code program JAVA : Suatu kode program dalam JAVA yang berupa definisi suatu class dapat diketik dan diedit menggunakan editor teks, baik yang berbasis DOS ataupun WINDOWS. Sebagai contoh pada gambar 1.1. ditunjukkan mengedit code dengan NOTEPAD dari WINDOWS untuk suatu kode program JAVA yaitu class FirstSample yang hanya mengandung satu method dan sama sekali tidak mendefinisikan atribut sebagai berikut :

BAB I: Loop dan Array

2

public class FirstSample { public static void main(String[] args) {System.out.println(“Hello INFORMATIKA !!!”); } }

Gambar 1.1. Mengetik code JAVA dengan NOTEPAD Keterbatasan pengetikan dengan NOTEPAD adalah hanya dapat diketikan satu dokumen dalam suatu waktu. Untuk pengetikan beberapa kode sekaligus dapat dipilih editor teks seperti MS-WORD atau editor teks berbasis DOS yaitu program EDIT. Gambar 1.2 berikut menunjukkan proses pengeditan dengan program EDIT dari DOS. Salah satu kelebihan program EDIT dapat dibuka beberapa file sekaligus.

Gambar 1.2. Mengedit code dengan program EDIT dari DOS 2.2. Meng-compile dan mengeksekusi program JAVA : Setelah suatu code program diketikkan, maka kode program tersebut disimpan dengan nama file HARUS SAMA DENGAN NAMA class utama dengan ekstension .java . Untuk nama class FirstSample maka nama filenya adalah FirstSample.java. Untuk meng-compile code tersebut digunakan compiler JAVA yang tersimpan dalam JDK (Java Development Kit) dalam subdirectory bin. Compiler tersebut merupakan file berukuran cukup kecil 4.608 byte yaitu javac.exe. Untuk isi subdirectory bin dapat dilihat dalam Gambar 1.3.

BAB I: Loop dan Array

3

Gambar 1.3. Isi directory bin Meng-compile code program JAVA adalah meng-compile class yang telah disimpan dalam Namafile.java. Contoh untuk class FirstSample.java dicompile dengan baris perintah : >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.

Gambar 1.4. Compilasi dan eksekusi code JAVA 2.3. Tipe Data dan Operator dalam JAVA JAVA mengenal tipe data yang mirip dengan C++. Untuk data numerik dimiliki beberapa tipe, yaitu : Integer : int short long byte 4 byte 2 byte 8 byte 1 byte kisaran nilai :-2.147.486.648 s/d 2.147.486.647 kisaran nilai :-32.768 s/d 32.767 kisaran nilai :-9.223.372.036.854.775.808L s/d 9.223.372.036.854.775.807L kisaran nilai :-128 s/d 127 kisaran nilai :+3.40282347E+38F (7 digit ignifikan) kisaran nilai :+1.79769313486231570E+308 (15 digit signifikan)

Floating point float 4 byte double 8 byte

Karakter dan string char 1 byte 1 karakter String sebuah objek string dan manipulasinya 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”; Beberapa method dari objek string Nama antara lain : Nama.length() akan menghasilkan : 10 Nama.substring(0,3) akan menghasilkan : “JON”

d="JON SHOLEH".println("d = " +d). Masukan program dari Keyboard Untuk aplikasi berbasis DOS dengan command line interaktif.length()). System.length() = " +d. a=(int)1/3.out.3) = " +d.BAB I: Loop dan Array 5 Contoh program yang melibatkan data adalah sebagai berikut : class OperasiDATA { public static void main(String args[]) { int a.out. salah satu yang selalu menarik untuk dibahas dalam kebanyakan pemrograman adalah masukan dari Keyboard. System.println("d. > . perkalian dan pembagian += . yaitu : 5 % 3 sama dengan 2 Operator relational dan logika < .333333 c = 0.println("b = " +b). pengurangan.yaitu : n-. System.3)).println("a = " +a). String d.substring(0.println("c = " +c).ekivalen dengan n=n-1 (decrement by one) % untuk MODULO.out. * dan / untuk : penambahan. System.out. <= dan >= adalah : lebih kecil.println("d.5. System. b=(float)1/3 . . lebih besar. c=(double)1/3 .out.substring(0. } } Output dari program tersebut adalah : a = 0 b = 0. float b.3) =JON JAVA mengenal operator sama dengan C++ antara lain : Operator aritmatik : +.out. yakni : x+=4 ekivalen dengan operasi : x=x+4 -= . lebih kecil atau sama dan lebih besa atau sama == untuk SAMA DENGAN != untuk TIDAK SAMA DENGAN && untuk operator AND || untuk operator OR 2.substring(0.length() = 10 d. *= dan /= memiliki ekivalensi yang sama dengan -= ++ yaitu : n++ ekivalen dengan n=n+1 (increment by one) -. double c. System.333333 d = JON SHOLEH d.. Untuk masukan berbagai tipe data dari keyboard JAVA .

BAB I: Loop dan Array 6 tidak menyediakan satu kelas khusus.readInt(string prompt ) : untuk masukan integer dari keyboard Console. String Nm. yaitu :in untuk standard masukan keyboard dan out untuk output ke layar. Julio Sanchez dan Maria Canton (2002) mendefinisikan klass Keyin yang memanfaatkan method dari kelas InputSream.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.*.inInt(String prompt) : untuk input integer Keyin.println(String s) Cay Horstmann (1996) mendefinisikan suatu package corejava yang antara lain mendefinisikan class Console yang didalamnya terdifinisi beberapa method untuk masukan keyboard yang memanfaatkan method System. Arthur van Hoff (1995) mendefinisikan suatu class final yang dinamakan class System yang didalamnya didefinisikan beberapa objek.readDouble(string prompt) : untuk masukan double dari keyboard Untuk menggunakan class Console perlu dilakukan import package corejava.read(). integer dan float import corejava.io.inString(String prompt) : untuk input string Keyin.read() Sedangkan untuk output ke layar digunakan : System. umur dan gaji yang masingmasing mewakili tipe :string. hasilnya sama.io.in. float Gj.inDouble(String prompt) : untuk input double Dengan demikian untuk membaca beberapa jenis data dari keyboard kita tinggal memilih akan menggunakan method dari class Consoel atau method dari class Keyin.* Apabila tidak didahului dengan import maka penggunaan methodmethod diatas akan memunculkan message berikut : Error : undefined variabel Console ! Selain dengan class Console dari Cay Horstmann. . Program berikut ini memperagakan masukan nama. Untuk selanjutnya method yang diturunkan beberapa method untuk input beberapa type data dari keyboard adalah dari : System.readString(string prompt) : untuk masukan string dari keyboard Console. antara lain : Console. yaitu antara lain method : Keyin. public class CobaBaca { public static void main(String[] args) { int u. Tetapi dari package java.inChar(String prompt) : untuk input karakter Keyin.

readDouble("Sekarang Gajimu berapa Rp ?"). Contoh program : // // // // // // -------------------------------------------Membaca dari keyboard :string dan double menggunakan method inString() dan inDouble() dari klass Keyin sehingga tidak diperlukan import :corejava. atau If (kondisi) {blok statemen -1} else {blok statemen-2} . System.println("Hallo "+ Nm). . System.inDouble("Hasil Penjualan :"). System.6.inString("Nama Sales :"). double JUAL. Atau membaca dengan Keyin.IntString dengan menyiapkan dulu definisi class Keyin dalam directori program kita.println("Kau lahir tahun "+(2002-u)). atau If (kondisi) {blok statemen} .* --------------------------------------------- public class Sales { public static void main(String[] args) { String NAMA.* dapat tidak disertakan dengan catatan kita memiliki definisi class Console (file Console.java) dalam diretori program yang dikompile.println("Sekarang kau kaya ya!!! Gajimu :"+Gj). JUAL=Keyin. Output dari program tersebut adalah : Siapa namamu ? JON SALEH <enter> Berapa umurmu ? 25 <enter> Sekarang Gajimu berapa Rp ? 100000 <enter> Hallo JON SALEH Kau lahir tahun 1977 Sekarang kau kaya ya!!! Gajimu : 100000 2. atau If (kondisi) statemen1 else statemen2. Gj=(float)Console. u =Console.out.BAB I: Loop dan Array 7 Nm=Console.BONUS.readInt("Berapa umurmu ?").readString("Siapa namamu ?").PESAN. } } Pernyataan import corejava.out. NAMA=Keyin. Statemen Kondisional Statemen kondisional dalam JAVA memiliki 4 macam syntax : If (kondisi) statemen .out.

PESAN="SELAMAT !!". 2. Buatlah suatu program JAVA untuk menghitung LUAS dan KELILING suatu empat persegi panjang.println(PESAN). System.}. System. keluaran ke layar adalah luas dan keliling.} else {BONUS=0.out.out. System. } } Output program : Nama Sales : BAMBANG <enter> Hasil Penjualan : 99000 <enter> Saudara BAMBANG Bonus Anda sebesar : 0 ANDA HARUS LEBIH GIAT LAGI III.pow(x.out. 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.println("Bonus Anda sebesar : "+BONUS ).BAB I: Loop dan Array 8 if (JUAL>100000) {BONUS=0.1*JUAL.n) adalah xn Masukan : MAW dan N Keluaran MAK .println("Saudara "+NAMA ). Masukan dari keyboard berupa PANJANG dan LEBAR. 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. PESAN="ANDA HARUS LEBIH GIAT LAGI". yaitu : Math. Tugas 1.

Bagan Alir mencari akar kuadrat bilangan Program JAVA adalah sebagai berikut : . Teori Singkat : Statemen loop dalam Program JAVA seperti program umumnya dibedakan menjadi loop takhingga dan loop terhingga: 1.BAB I: Loop dan Array 9 BAB II LOOP DAN ARRAY I. Loop takhingga : while (kondisi) { blok instruksi } . II. Flowchart pemecahan adalah : START Baca a xnew=a/2 xold=xnew xnew=(xold+a/xold)/2 Cetak xnew a |xnew-xold|>1e4 STOP Gambar 2. dalam hal ini blok instruksi akan dieksekusi apabila kondisi bernilai benar.1. 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. Dalam loop ini ada kemungkinan blok instruksi sama sekali tidak dieksekusi apabila pada pengecekan kondisi pertama kali dijumpai kondisi bernilai salah. seleksi multiple dan konsep array sebagai objek. Kompetensi : Pengenalan statemen loop dalam JAVA. Apabila diinginkan blok instrtuksi minimal dilakukan satu kali dapat digunakan loop do while dengan sintaks : do {blok isntruksi} while (kondisi) .

abs(xnew-xold)>1e-4).00962 xnew=3.25 xnew=3.println("HELLO INFORMATIKA!!"). Dalam hal ini perubahanCOunter harus merubah counter dari nilai awal menjadi memenuhi nilai akhir counter. a=Console. . do { xold=xnew. Counter++) System.00002 xnew=3 AKAR KUADRAT DARI 9 adalah 3 2.*n dengan n diinputkan dari keyboard. double xold. Contoh 1 : Program mencetak HELLO INFORMATIKA! 10 kali class Hello2 { public static void main(String args[]) { for (int Counter=1 . System. } } hasil output program adalah : Masukkan angka real : 9 <enter> xnew = 3. perubahanCounter) { blok instruksi } .out.*. // untuk membaca data dari keyboard perlo class Console // tanda // berarti komentar // public class Akar { public static void main(String[] args) { double a.. System.println("AKAR KUADRAT DARI "+a+"adalah "+xnew). import corejava.out. Blok instruksi akan dikerjakan selama NilaiAkhirCounter belum benar. xnew=(xold+a/xold)/2. Counter<=10. double xnew=a/2. } } Contoh 2 : Program menghitung n! = 1*2*3*. } while (Math.println("xnew : "+xnew).*.readDouble("Masukkan angka real:").BAB I: Loop dan Array 10 import corejava. Loop terhingga : for(nilaiawalCounter . NilaiAkhirCounter .out.

2. ..println("Hasil "+n+" ! = "+fak).. berikut : Gambar 2. yang dapat diikuti dengan pernyataan break untuk keluar dari seleksi.readInt("Masukkan n :"). for (i=1 . i. [break] case nilai2: statemen. [break] } . System. [break] . Seleksi multiple dengan swicth dan case : Untuk melakukan pilihan ganda dengan beberapa kondisi dapat digunakan pernyataan switch dan case.. // baca n dari keyboard n=Console. statemen. } } Hasil kompilasi dan eksekusi program adalah sebagai Gambar 2. statemen.. Kompilasi dan eksekusi Faktor. i<=n ... [default :] statemen. Tata tulis pernyataan ini adalah : switch ( variabelSeleksi) { case nilai1: statemen.. // tentukan n faktorial fak=1. ..java 3.2. i++) fak=fak*i.out.fak.. statemen.. .BAB I: Loop dan Array 11 class Faktor { public static void main(String args[]) { int n.

Setelah statemen dijalankan apabila dijumpai statemen break.out.out.readInt("Masukkan Pilihan anda :").println("Pilihan anda bukan 1. break.println("[3].*.println("Anda pilih SOTO"). System. Perlu dicermati bahwa statemen break paad akhir statemen dalam suatu kasus nilai adalah penting.2. Hal ini terjadi karena kontrol program tidak diarahkan keluar seleksi.println("[1].2.case..println("Anda pilih NASI GORENG!"). Apabila steteman break ini tidak dicantumkan maka seteleh deretan statemen dijalankan untuk suatu nilai1 maka deretan statemen setelah nilai2. break. pil=Console.println("Anda pilih NASI RAWON!"). break.out. NASI RAWON "). System.out. } } } Hasil program adalah seperti Gambar 2.out. nilai3 dst samapi nila defaulty akan tetap dijalankan. class Menu { public static void main(String args[]) { int pil.out. Gambar 2. switch(pil) { case 1 : System. break.2.!!").println("[2].out.. nilai2 dan seterusnya atau nilai default. case 2 : System.out. System.. SOTO"). maka kontrol program akan keluar dari blok seleksi switch . case 3 : System.BAB I: Loop dan Array 12 Statemen-statemen akan dijalankan apabila variabel seleksi bernilai dari salah satu nila1. hasil seleksi dengan statemen : switch case 4. Array .3.println("MENU TERSEDIA :"). Contoh : import corejava. NASI GORENG"). System. default: System.

Array satu dimensi didefinisikan dengan bentuk umum : tipedata[ ] namaArray. Dua langkah awal yang diperlukan sebelum dapat mengakses array adalah : . Contoh program berikut menggunakan array Nama dan umur dan mencetaknya dengan loop. yang selanjutnya berindek mulai dari 0 sampai N-1. "DEDI"}. 35. "ALI". for (int i=0. 30. dst Apabila diinginkan inisialisasi data langsung bersamaan dengan deklarasi array. Nama[1]=”ALI” Umur[1]=30.mendefinisikan .mengalokasikan memeory untuk array tersebut Array 1 Dimensi . 40}.println(Nama[i]+" " +Umur[i]). misalnya diiskan data kedalam elemen array sebagai berikut : Nama[0]=”JON”. “DEDI”}. Umur. “SALEH”.BAB I: Loop dan Array 13 Dalam JAVA array adalah sebuah objek. atau String Nama[]. Umur[0]=25. int[] Umur=new int[N]. i<Nama. Selanjutnya Nama dan Umur sebagai objek array dapat diakses. 30. 55.out. 35. Int[] Umur={25. misalnya sebagai berikut : String[] Nama={“JON”. atau int Umur[]. “ALI”. i++) System. } } Output program adalah : . 40}.Untuk mengalokasikan memory tersebut digunakan kata kunci new: Nama =new String[N]. . "SALEH". Kedua langkah tersebut dapat digabungkan menjadi : String[] Nama=new String[N]. "PUTRI"... class DemoArray1 { public static void main(String args[]) { String[] Nama={"JON". 55. Contoh : String[] int[] Nama. Umur =new int[N].. int[] Umur={25. Dalam hal ini N adalah kapasitas array tersebut. maka langkah alokasi memory dapat tidak dilakukan. “PUTRI”. .length. atau tipedata namaArray[ ].

} } Apabila program dijalankan hasilnya sebagai berikut : . Array 2 Dimensi . "SATU"}.Array dua dimensi didefinisikan dan dialokasikan dengan cara : tipedata[n][m] namaArray atau tipedata NamaArray[n][m].out. for (i=0. int i.out. {"COW". String KataDicari. i<5. else System. Contoh: Dibawah ini contoh program dengan array 2 dimensi dari string untuk simulasi kamus inggris indonesia. "LARI"}.equals(KataDicari) ) k=i. "ORANG"}}. //cari kata k=-1. k. i++) if (Kata[i][0].BAB I: Loop dan Array 14 JON 25 ALI 30 SALEH 55 PUTRI 35 DEDI 40 Panjang (jumlah elemen) suatu array dapat diketahui dengan menggunakan properti length.println("KATA TERSEBUT TIDAK ADA"). //cek ketemu atau tidak . Kata dalam program adalah suatu array dua dimensi dari string yang digunakan untuk menyimpan data kata inggris dan indonesia seperti gambar berikut : baris 0 baris 1 baris 0 baris 1 baris 0 Kolom 0 ONE COW RUN RED MEN kolom 1 SATU SAPI LARI MERAH ORANG import corejava. class DemoArray2 { //demo array 2 dimensi untuk simulasi kamus //inggris indonesia public static void main(String args[]) { String[][] Kata={ {"ONE".println("KATA INDONESIA = "+Kata[k][1]).*. jika k=-1 tidak ketemu if (k==(-1)) System. "SAPI"}. {"RED".readString("Ketik Kata Inggris :"). {"MAN".length artinya jumlah elemen dari array Nama. seperti terlihat pada program : Nama. "MERAH"}. {"RUN". KataDicari=Console.

Dengan loop program menentukan deret FIBBONACCI untuk nilai suku-suku yang tidak lebih dari n. TUGAS 1. xn Rata-rata = Σ x / n Standard deviasi = √ [ { Σ x2.(Σ x)2 }/(n-1) ] . Buat program JAVA untuk memperbaiki unjuk kerja program simulasi kamus dengan loop while. III.. Dengan loop while program akan berhenti apabila proses pencarian sudah ditemukan.. Rumus : untu n data .BAB I: Loop dan Array 15 Gambar 2.. Program mencari rata-rata dan standard deviasi dari n buah data tersebut. x2. karena simulasi Kamus dengan loop for pada contoh program sebenarnya kurang efisien. 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 dengan menggunakan array satu dimensi untuk membaca dan menyimpan data sebanyak n. Eksekusi program kamus 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.. Buat program JAVA untuk membaca bilangan bulat n. Deret FIBBONACCI adalah : 0 1 1 2 3 5 8 13 .3. dengan i< jumlah kata maka program tetap meneruskan pencarian sampaiberputar sebanyak jumlah kata.equals(t) yang akan mengembalikan nilai true apabil string s sama dengan string t. 3.. yaitu : x1. yaitu : pada proses pencarian kata apabila kata sudah ditemukan pada langkah ke i. .

method.1. Suatu kelas adalah abstraksi untuk frame yang berisi properti dan method. Tujuan : Memahami lebih jauh mengenai konsep pemrograman berorientasi objek (Object Orientation Programming = OOP) dalam JAVA.1.awt. final dan lain-lain. java. instance. objek. Sedangkan dalam OOP data dan fungsi/prosedur pengolah data dikemas dalam suatu class. static. java.util. sub-kelas dan objek : Pada prinsipnya membuat program JAVA adalah mendefinisikan class bersama dengan data dan method. sedangkan data dalam hal ini diistilahkan sebagai properti. Teori Singkat : Konsep pemrograman terstruktur memandang data dan prosedur untuk mengolah data tersebut sebagai sesuatu yang terpisah.io.1. Dalam JAVA tidak ada data global. JAVA sendiri sebagai bangunan pemrograman mendefinisikan banyak class siap pakai dengan class java sebagai class induk yang memiliki banyak sub-class misalnya : java. Suatu kelas Buah misalnya dapat memiliki sub kelas BuahJeruk. menunjukkan perbedaan konsep pemrograman prosedural dan OOP. java. java. private. dan pemahaman modifier : public. Suatu kelas dapat memiliki banyak sub-kelas. Pendekatan prosedural dan OOP Dari gambar 3. tetapi ada adlam suatu kelas. java. BuahMangga .lang.BAB I: Loop dan Array 16 BAB III PENGANTAR OOP : CLASS DAN METHOD I. II. Kelas. Gambar 3. Stuktur data dalam class. Fungsi dan prosedur pengolah data dalam JAVA disebut sebagai method.applet dan lain-lain. 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).net. functio n functio n Global data functio n functio n Pemrograman prosedural method data method method data method method class method Pemrograman OOP Gambar 3.

BuahJerukPurut dst.77). Apabila kelas adalah suatu abstraksi maka objek atau instance adalah bentuk real dari suatu kelas.println(S+"! " + S + "!! " + S + " !!!"). Anjing AnjingMU=new Anjing().println("Hello Saya Anjing No:" +No+ " Nama saya : "+Nama). int No. M2 . } public void SayHello() { System. No=o.Kemampuan (behavior) dari suatu objek Untuk kelas Anjing : misalnya ada dua atribut. AnjingKU.Status dari objek tersebut : dimaksudkan adalah setting data/properti dari objek tersebut .Y. Deklarasi suatu objek juga mengikuti analogi tersebut. Mahasiswa M[12]. . Mahasiswa M1. Deklarasi objek dari suatu kelas: NamaKelas Namaobjek. No dan Nama dan memiliki dua kemampuan (behavior). AnjingKU.out.Q .BAB I: Loop dan Array 17 dan lain-lain. yaitu : Gonggong dan SayHello.Gonggong("GUG").SetData("HELI". M1 dan M2 adalah objek-objek dari kelas Mahasiswa M adalah array dari objek Objek yang merupakan bentuk konkret dari kelas memiliki identifikasi : . misalnya : Deklarasi variabel : int X. Analogi dalam bahasa program adalah sebagai berikut : Objek adalah variabel dan class adalah tipe data. double P. AnjingMU. int o) {Nama=m. Sementara sub-kelas BuahJeruk dapat memiliki sub-sub-kelas lagi :BuahJerukBali.10). } public void Gonggong(String S) { System.out.SetData("PLEKI". } } class TesAnjing { public static void main(String args[]) { Anjing AnjingKU=new Anjing().Z. public void SetData(String m. class Anjing { String Nama.

Mhs2.SayHello().Gonggong("KAING"). int Umur. int u) { Nama=n.BAB I: Loop dan Array 18 AnjingKU. Definisi dari kelas seperti itu dapat dituliskan sebagai : class Mahasiswa { String Nama. misalnya dinamakan SetData.println("Namaku : "+Nama). Umur . Kelas juga memiliki fungsi atau prosedur untuk memanipulasi data tersebut yang disebut sebagi method atau yang telah disebutkan sebagai perilaku. } } Hasil program adalah : GUG! GUG!! GUG!!! Hello Saya Anjing No:10 Nama saya : PLEKI KAING! KAING!! KAING!!! Hello Saya Anjing No:77 Nama saya : HELI Properti dan method dari suatu kelas Suatu kelas didalamnya memiliki data yang sering disebut sebagai properti.Namamethod Misalnya apabila objeknya adalah M. Mhs1.out.20). AnjingMU. } } Selanjutnya suatu method akan dipanggil dengan tata tulis : Namaobjek. System. dan memiliki method untuk mengisi Nama dan Umur . Sebagai contoh kelas Mahasiswa memiliki atribut Nama.out.SayHello(). misalnya objek tersebut Mhs1 dan Mhs2.}. AnjingMU. Mahasiswa Mhs2=new Mahasiswa(). Mhs1.println("Umur : "+Umur). Program sebagai berikut : class TesMhs { public static void main(String orgs[]) { Mahasiswa Mhs1=new Mahasiswa().CetakInfo(). public void SetData(String n.17). maka dapat dipanggil method dengan : M.SetData("SITI KAMAR MANDI". public void CetakInfo() { System. method untuk mencetak misalnya dinamakan CetakInfo. . Umur=u.CetakInfo() Untuk memanfaatkan kelas Mahasiswa tersebut dalam program dapat didefinisikan suatu class yang mengandung program utama yang mendefinisikan objek bertipe kelas Mahasiswa.SetData("JON SALEH".

Selanjutnya secara teknis kedua kelas tersebut diketik dalam satu kesatuan dokumen (dapat didefinisikan class Mahasiswa diikuti class TesMhs. Suatu method sendiri didefiniskan dengan tata tulis : [public] [static] [return value] NamaMethod(daftar argumen) { . double. private method: Dalam implementasi class umumnya data selalu dideklarasikan sebagai private. method ini dapat diases dari kelas lain.CetakInfo().SetData("JON SALEH". Apabila kata public dari method tersebut diganti menjadi private : private void SetData(String n. 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... . static dan private dalam definisi method Dalam JAVA definisi method harus dilakukan didalam class. Dalam definisi class method dapat dipilih beberapa pengenal scope sperti : public. Apabila method tersebut tidak mengembalikan nilai ReturnValue adalah void.java. Umur=u. int u) . Program disimpan dengan nama file sesuai dengan nama class yang didalamnya terdapat program utama. atau dapat juga dibalik : class TesMhs diikuti class Mahasiswa). Stirng. int u) { Nama=n.20). } ReturnValue dapat berupa tipe-tipe data :int. Contoh : Untuk kelas Mahasiswa didifnisikan method public void SetData(String n. Hasil program adalah : Namaku Umur Namaku Umur : : : : JON SALEH 20 SITI KAMAR MANDI 17 Acces modifier : public. yaitu kelas : TesMhs melalui Mhs1. atau tipe-tipe lain. yaitu hanya dikenal oleh objek dari kelas tersebut.BAB I: Loop dan Array 19 } } Mhs2.}. yaitu : TesMhs. static atau private.. 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..

int u) { Nama=n..SetData(“JON SALEH”.. } public void ISIDATA(String NN. } Maka dalam class TesMhs method ISIDATA yang memanggil digunakan dengan : Mhs1. Contoh: Lihat kembali definisi kelas Mahasiswa: class Mahasiswa { String Nama. Method ISIDATA memanggil method SetData() yang secara lengkap definisi kelas Mahasiswa menjadi sebagai berikut : class Mahasiswa { String Nama.. Umur=u.}.out.17). Method SetData() yang bersifat private dapat diases oleh method lain dari kelas tersebut.lang.ISIDATA("SITI KAMAR MANDI". Nampak bahwa method SetData() menjadi tidak “terlihat” dari kelas TesMhs yang memangghil method tersebut. int Umur. Static method: Suatu data atau method dari suatu kelas yang menggunakan modifier static memiliki makna bahwa nilainya tetap tidak berubah untuk objek yang berbeda-beda dalam kelas tersebut.BAB I: Loop dan Array 20 pada saat program dikompile akan terjadi kesalahan dengan pesan : TesMhs. Mhs2.. int) found in class Mahasiswa Mhs1.ISIDATA("JON SALEH". maka untuk semua objek dari kelas tersebut akan memiliki data yang sama. . System.println("Namaku : "+Nama).II).20). misalkan dalam kelas Mahasiswa ditambahkan method baru ISIDATA() yang bersifat public. private void SetData(String n.String. Hasil program adalah seperti program semula. Apabila data bersifat static dalam suatu kelas. int II) { SetData(NN. meskipun dari class TesMhs objek Mhs1 dan objek Mhs2 mengeset atribut Nama dengan : .20). Jika sekarang atribut Nma diberi pengeal static menjadi: class Mahasiswa { static String Nama.java:6:No method matching SetData(java.}. public void CetakInfo() { System.println("Umur : "+Umur). int Umur.out. int Umur. .

double Nilai[]=new double[3]. Nilai[0]=a1 .ISIDATA("JON SALEH". int Umur.RATA=DataMhs. 80.Nilai) .SetData("JON SALEH". O2. Selanjutnya dapat didefinisikan suatu method statis CariRata yang berguna untuk mencari rata-rata nilai dari seorang mahasiswa.readDouble(parameter) Adapun bentuk umum menggunakan method static dari suatu kelas adalah : NamaKelas. bukan milik suatu objek dari kelas tersebut. O1.20). Sama halnya dengan data static. Mhs2. Nilai[2]=a3.BAB I: Loop dan Array 21 Mhs1.ISIDATA("SITI KAMAR MANDI".90. O1. Umur=u. method static memiliki pengertian bahwa method tersebut adalah milik suatu kelas. Method ini merupakan method miliknya klas Mahasiswa. public void SetData(String n. }. hasil output program adalah : Namaku Umur Namaku Umur : : : : SITI KAMAR MANDI 20 SITI KAMAR MANDI 17 Terbukti bahwa ernyata untuk objek yang berbeda.20. . Modifikasi program menjadi sebagai berikut : class Mhs { public static void main(String orgs[]) { DataMhs O1=new DataMhs().int u.SetData("SITI KAMAR MANDI".double a3) { Nama=n.Cetak().17.RATA=DataMhs. Nilai[1]=a2.double a1. O1.17).Cetak(). } } Nama kelas Nama method static argumen class DataMhs { String Nama.70).double a2. suatu array (misalnya berukuran 3) dan RATA untuk mengetahui rata-rata nilai.Nilai). 50. O2. Hal ini mengangapa method main() dalam program selalu didefinisikan sebagai public static. Contoh method static adalah method yang dimiliki oleh kelas Console Console.CariRata(O1. Ternyata menarik !!!.60. double RATA. atribut Nama yang static nilainya sama.CariRata(O2. O2. DataMhs O2=new DataMhs().NamaMethodStatic(parameter) Contoh Apllikasi : Seandainya data Mahsiswa dikembangkan sehingga disamping nama dan umur ditambah data : Nilai.80 ).readInt(paramter) Console.

out.println("Umur : "+Umur). Data-data dientrikan dari papan ketik HargaBarang . System. TUGAS 1.3333 III.BAB I: Loop dan Array 22 public void Cetak() { System. } } Hasil program adalah sebagai berikut : Namaku : JON SALEH Umur : 20 Nilai = 50 60 70 Rata-ratanya = 60 Namaku : SITI KAMAR MANDI Umur : 17 Nilai = 80 90 80 Rata-ratanya = 83. Definisikan suatu kelas Belanja yang mendeklarasikan Array dari objek barang dan men-set nilai-nilai properti serta mencetaknya dalam bentuk tabel. for (i=0.println("Namaku : "+Nama).out.out. } public static double CariRata(double x[]) { double jum=0.out. System. DAFTAR HARGA BARANG No KodeBarang NamaBarang . return (jum/3). System.println("Rata-ratanya ="+RATA). NamaBarang dan HargaBarang dalam posisi satu baris.print("Nilai : "). System. Definisikan suatu kelas Barang yang memiliki properti : KodeBarang. i++) jum=jum+x[i]. Data Barang dicadangkan sebanyak N Buat dua tipe program 1. int i.. i<Nilai. Data-data ada dalam program 2.print(Nilai[i]+" "). Kelas Barang memiliki method SetData (untuk men-set properti) dan method Cetak untuk mencetak KodeBarang.out. for (int i=0. NamaBarang (String) dan HargaBarang (double). i<3.out..length.println(" "). i++) System.

SetData("PLEKI". Contoh: Untuk kelas Anjing seperti pada BAB III dapat diubah definisinya dengan menambah beberapa definisi konstructor : class Anjing { private String Nama="NoName". private int NoAnjing. II. Hal ini dikenal dengan konsep polymorphism. Inheritance & Polymorphism 23 BAB IV CONSTRUCTOR. Pendefinisian constructor seperti ini dikenal dengan istilah constructor overloading. private static int Urut=0. // data default .10). Memahami pula salah satu kunci kekuatan OOP yakni konsep inheritance (pewarisan sifat). Apabila dalam mendifinisikan suatu kelas sekaligus didefinisikan beberapa jenis constructor. Tujuan : Memahami beberapa pilihan inisialisasi objek dengan mengenal konsep constructors dan method overloading. Teori Singkat : Constructor dan Overloading pada constructor Pada saat suatu kelas didefinisikan. Atribut atau data ini pada contoh-contoh terdahulu diisi dengan mendefinisikan method SetData(). INHERITANCE & POLYMORPHISM I.}. Cara praktis yang sering digunakan untuk menginisialisasi atribut pada objek saat objek tersebut diciptakan adalah dengan mendefinisikan method yang disebut constructor.BAB IV : Constructor. Di dalam pengembangan suatu kelas dimungkinkan merancang suatu method dengan nama yang sama dengan method class induk. Method ini memiliki nama sama dengan nama kelas dan dapat dipilih semua. pengembangan kelas. yang sebagai akibatnya constructor tersebut merupakan method-method dengan nama yang sama. tentunya pasti memiliki atribut (data). Perhatikan kembali contoh definisi objek pada kelas TesAnjing pada BAB III : Anjing AnjingKU=new Anjing() Nama kelas nama objek alokasi memory tanpa inisialisasi data Selanjutnya atribut dalam objek AnjingKU di set dengan memanggil method SetData() sebagai berikut : AnjingKU. yang akan dipanggil sesaat setelah suatu objek dari kelas tersebut diciptakan. // constructor tanpa paramater public Anjing() {NoAnjing=++Urut. sebagian atau tanpa parameter.

} public void SayHello() { System.println("Hello Saya Anjing No:" +NoAnjing+ " Nama saya : "+Nama). AnjingNYA. AnjingKU.println(S+"! " + S + "!! " + S + " !!!").out. Anjing AnjingMU=new Anjing().Gonggong("GUG"). this. Inheritance & Polymorphism 24 // constructor dengan 1 parameter public Anjing(String n) {this.BAB IV : Constructor.out. Apabila program dicompile dan dijalankan hasilnya adalah : GUG! GUG!! GUG!!! Hello Saya Anjing No:1 Nama saya : NoName KAING! KAING!! KAING!!! Hello Saya Anjing No:2 Nama saya : NoName .Nama=n.700).SayHello(). int u) {this. } } //untuk menguji unjuk kerja kelas Anjing class Tes2Anjing { public static void main(String args[]) { // memanggil constructor default Anjing AnjingKU=new Anjing(). this. // constructor dengan 2 parameter public Anjing(String n. AnjingMU. AnjingMU. // memanggil constructor dengan 2 parameter Anjing AnjingKITA=new Anjing("HERDER". System. } } Selanjutnya program disimpan dengan nama file : Tes2Anjing.Gonggong("KAING").java. public void Gonggong(String S) { System.}. AnjingNYA.SayHello(). AnjingKU.println(" "). AnjingKITA. AnjingKITA.NoAnjing=u.NoAnjing=++Urut.SayHello().out.Nama=n.SayHello(). // memanggil constructor dengan 1 parameter Anjing AnjingNYA=new Anjing("BULDOCK").Gonggong("KOANG").}.Gonggong("GHERR").

yang nampak paa nama :NoName. Kelas turunan ini kan mewarisi kemampuan kelas induknya dan (umumnya) memilki kemampuan tambahan atau atribut tambahan. Perlu dicermati NoAnjing akan berurut sesuai dengan berapa jumlah objek yang telah diciptakan. Untuk lebih jelasnya simak Gambar 4. Setiap objek diciptakan dengan construktor default atau 1 parameter maka atribut NoANjingh akan naik 1. Konsep ini mengambil analogi pada biologi yang mengelompokkan binatang atau tumbuhan berdasarkan kesamaan sifat dan perilakunya dalam :ORDO. moves dan reproduces juga memiliki kemampuan tambahan flies dan atribut tambahan has feathers. Objek this Dalam difinisi constructor dijumpai kata kunci this. SPECIES dan beberapa pembagian lain. misalnya untuk BIRD disamping memiliki kemampuan breathes. Inheritance & Polymorphism 25 GHERR! GHERR!! GHERR!!! Hello Saya Anjing No:3 Nama saya : BULDOCK KOANG! KOANG!! KOANG!!! Hello Saya Anjing No:700 Nama saya : HERDER Penjelasan: Untuk definisi objek AnjingKU dan AnjingMU alokasi objek tanpa inisialisasi sehingga digunakan data default. yaitu : BIRD.NoAnjing yang merupakan suatu cara untuk mengacu kepada atribut dari objek yang sedang dikerjakan. Pada kelas ANIMAL memiliki kemampuan : breathes (bernafas). dengan memanfaatkan bantuan atribut Urut yang bertipe static.Nama dan this. 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.1. Akhirnya untuk objek AnjingKITA digunakan 2 parameter yaitu nama dan nomor urut anjing. moves (dapat bergerak) dan reproduces (dapat memiliki keturunan) dan satu atribut :mouth (punya mulut). Hal ini memungkinkan pemrogram tidak perlu menulis ulang program yang telah dibuat sebelumnya jika akan mengembangkan programnya cukup dengan menambah kemampuan melalui proses pewarisan. FISH dan REPTILE. Untuk definisi objek AnjingNYA digunakan pemanggilan constructor dengan satu parameter yaitu nama anjing :”BULDOCK” sehingga nomor urut adalah 3.BAB IV : Constructor. GENUS. Kelas BIRD masih memiliki sub-kelas CANARY yang memiliki tambahan atribut isyellow dan tambahan kemampuan sing. Kelas ANIMAL memilki tiga kelas turunan. Dalam hal ini NoANjing tidak lagi sesuai dengan o bjek yang diciptakan tetapi diset oleh parameter. .

*.. ..1. ClasName Attributes Methods() Dog Name Weight Color Bark() Jump() ( a) (b) Gambar 4. Inheritance & Polymorphism 26 ANIMAL breathes moves reproduces mouth BIRD flies has feathers FISH swims has scales REPTILE . (b) model kelas Dog Contoh : Untuk memperjelas konsep pewarisan daimbil contoh dari buku CoreJava definisi class Employee yang memiliki atribut : name. public class ManagerTest { public static void main(String[] args) { Employee[] staff = new Employee[3]. juga mengoverloading method print() dan method raiseSalary(). Jika diagram kelas dapat digambarkan sebagai Gambar 4. salary dan hireDay dan memiliki method : constructor print() raiseSalary() hireYear() Selanjutnya dari class Employee akan didefinisikan suatu kelas turunannya. Definisi kelas (kelas Employee sebagai super class) dan sub kelas (kelas Manager sebagai sub class) adalah sebagai berikut : import corejava. Analogi inheritance OOP dalam biologi Dalam OOP dua hal yang dapat diwariskan adalah :atribut dan method. CANARY sing isyellow Gambar 4.2. yaitu kelas Manager yang memiliki tambahan atribut secretaryName.BAB IV : Constructor.. (a) Diagram kelas.2.

i < 3.3.10. new Day(1987. double bonus = 0. salary = s. int i.BAB IV : Constructor. i++) staff[i].print(). . } class Manager extends Employee { public Manager(String n. } private String name.getYear() .1)).print().print(). s. System. i++) staff[i].println(" "). } public void print() { super. 38000. class Employee { public Employee(String n. staff[0] = boss. for (i = 0.out. } public void print() { System.hireYear()). staff[2] = new Employee("Tony Tester". boss.15)). } public int hireYear() { return hireDay. i < 3.raiseSalary(byPercent + bonus).new Day(1982. } public void setSecretaryName(String n) { secretaryName = n.getYear().println("his secretary is : "+secretaryName). double s.5 * (today.12. private Day hireDay.100000. } public void raiseSalary(double byPercent) { // add 1/2% bonus for every year of service Day today = new Day(). secretaryName = "". double s. } public void raiseSalary(double byPercent) { salary *= 1 + byPercent / 100. Day d) { super(n. System. hireDay = d. for (i = 0. private double salary.15)). i++) staff[i]. staff[1] = new Employee("Carl Cracker".println(name + " " + salary + " " + hireYear()).out. Day d) { name = n. i < 3.raiseSalary(10). Inheritance & Polymorphism 27 } } Manager boss =new Manager("Harry Hacker". 75000. new Day(1990.out.setSecretaryName("JEANET JACKSON"). for (i = 0. d). super.

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.println("his secretary is : "+secretaryName)..print(). sehingga suatu nama method dapat muncul berkali-kali pada suatu kelas. Pendefinisian method pada kelaskelas turunan ini dapat dilakukan sepanjang garis “silsilah” pewarisan kelas. subkelas.. Sebagai contoh dalam class Employee didefinisikan method print() : class Employee { . Apabila method tersebut dipanggil maka objectlah yang akan menentukan method mana yang harus dikerjakan. public void print() { super. yang merupakan super kelas atau induk dari kelas Manager).out. sub-sub-kelas dan seterusnya. System. Pendefinisian method seperti ini juga dikenal dengan istilah method overriding. } Perhatikan isi method print() pada kelas Manager baris pertama memanggil method print() dari object super (dalam hal ini objek super adalah objek Employee.out. Hasil program adalah sebagai berikut : Harry Hacker 100000 1982 his secretary is : JEANET JACKSON Carl Cracker 75000 1987 Tony Tester 38000 1990 Harry Hacker 120000 1982 his secretary is : JEANET JACKSON Carl Cracker 825000 1987 Tony Tester 41800 1990 Print() dari class Manager Print() dari class Employee Polymorphism: Satu lagi konsep penting dalam OOP adalah konsep polymorphism.BAB IV : Constructor. } } private String secretaryName. public void print() { System. Inheritance & Polymorphism 28 } public String getSecretaryName() { return secretaryName. .. } Selanjutnya dalam class Manager yang merupakan turunan (lebih dikenal dengan istilah sub-klas) juga didefinisikan method print() yang isinya berbeda dengan method print() pada kelas Employee sbb : class Manager extends Employee { ..println(name + " " + salary + " " + hireYear()).

Satu konsep yang menaraik adalah bahwa suatu objek dari super-kelas Dapat diassign (diberikan )pada objek dari sub-kelas. Pernyataan boss=staff[0] akan menimbulkan error.100000. Dalam contoh program class Manager dan class Employee juga ada polymorphism untuk method raiseSalary(double byPercent).new Day(1982. 75000. seperti pernyataan : staff[0]=boss .setSecretaryName("JEANET JACKSON"). Inheritance & Polymorphism 29 Setelah melaksanakan print() dari objek super dilanjtkan dengan mencetak nama sekretaris.BAB IV : Constructor. class Employee class Manager Hal ini tidak dapat berlaku sebaliknya. Sedangkan untk bonus dihitung sebesar setengah masa kerja (bonus = 0. staff[1] = new Employee("Carl Cracker". sedangkan rumus untuk kelas Manager (byPercent+bonus)/100 * salary awal. Hal ini ditunjukkan oleh output program. new Day(1987.print() dalam main() Untuk i=0 maka staff[i] adalah objek dari kelas Manager sehingga method print() yang dikerjakan adalah dari kelas Manager (dengan mencetak nama sekretaris) Untuk i=1 dan i=2 maka staff[i] adalah objek dari kelas Employee sehingga method print() yang dikerjakan adalah method print() dari kelas Employee.5 * (today. dimana untuk kelas Employee perhitungan adalah kenaikan salary adalah sebesar (byPercent/100)*salary awal.10. III. Dengan demikian pada saat pemanggilan method print() maka kompiler akan melihat objek mana yang dimaksud.1)). TUGAS .12. Perhatikan bagian program: staff[i]. misalnya : Manager boss =new Manager("Harry Hacker".getYear() – hireYear()).15)). boss.

..Cetak() .Cetak() T1. VOLUMENYA ADALAH .java Deklarasi objek lingkaran dan objek tabung adalah : Lingkaran L1=new Lingkaran(2)...4). Inheritance & Polymorphism 30 1.....BAB IV : Constructor.. R LUASNYA ADALAH .. Definisikan suatu kelas Lingkaran dengan atribut R dan Luas serta method Cetak() yang menghasilkan output : LINGKARAN DENGAN JEJARI . // tabung Jejari alas 2 tinggi 4 Untuk memanggil method Cetak() L1.. DAN TINGGI . /// lingkaran jejari 2 Tabung T1 = new tabung(2. Definisikan kelas turunan dari kelas Lingkaran yaitu kelas Tabung dengan atribut tambahan TinggiTabung dan VolumeTabung serta overriding method Cetak() dengan menghasilkan output : “TABUNG DENGAN LUAS ALAS . Testlah kemampuan kelas tesebut dengan class TesTab simpan dalam file TesTab.

Pada setiap jenis sub-klas ada common atribut. III dan IV apabila kita mendefinisikan suatu kelas maka kelas tersebut akan digunakan sebagai basis untuk pendefinisian objek-objek dari class tersebut. Sebagai gambaran diambilkan contoh suatu class Message. 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. Pada BAB III definisikan class Anjing dan class Mahasiswa yang digunakan untuk menciptakan objek-objek dari kelas Anjing dan kelas Mahasiswa. Dari klas-klas turunan ini lah objek yang sebenarnya akan diciptakan. II. akan tetapi kita tidak bermaksud mendefinisikan objek dari super class tersebut. Atribut dan method yang didefinisikan dalam klass abstract dimaksudkan merupakan sesuatu yang umum dan terdapat pada sub-kelas subkelas turunannya. Suatu abstract method didefinisikan dengan cukup mendeklarasikan namanya pada class abstract dan meng-override pada masing-masing kelas turunannya dengan menyesuaikan dengan kebutuhan kelas turunannya tersebut. Suatu kelas sangat mungkin didefinisikan sebagai super class yang darinya diturunkan sub-klas sub-klas turunannya. Suatu class harus didefinisikan sebagai class abstract apabila minimal ada satu method yang didefinisikan sebagai abstract method. Teori Singkat : Pengertian abstract class : Pada BAB II. Suatu super klass yang didefinisikan seperti ini dinamakan sebagai class abstract. Untuk method play(). Pengertian abstract method : Di dalam class abstract dapat didefinisikan atribut-atribut dan methodmethod.BAB V : Abstract Class dan Package 38 BAB V ABSTRACT CLASS DAN PACKAGE I. voiceMessage dan faxMessage. Tujuan : Memahami dan mampu membedakan konsep class dan abstract class. Pada setiap sub-class juga ada common method yang berlaku sama yaitu :getSender(). serta abstract method dan kapan konsep ini harus dipergunakan. Pada BAB IV kita mendefinisikan class Employee dan sub-klass turunannya yaitu class Manager yang masing-masing digunakan untuk menciptakan objek. yang sama dan berlaku pada setiap subclass yaitu atribut :sender (pengirim). yang ada pada setiap sub-class tetapi memiliki implementasi yang berbeda . Dengan demikian super class tersebut didefinisikan semata-mata hanya sebagai “payung” atau “induk” dari klas-klas turunannya. yang memiliki sub-class :textMessage.

else msg = msg + line + "\n".println(mbox. } mbox.*. import sun.out. if (m != null) { System. while (true) { System. Hierarchi class abstract Message dan turunannya Kode program untuk implementasi adalah sebagai berikut (Horstmann. msg)). String msg = "". voice. public class MailboxTest { public static void main(String[] args) { Mailbox mbox = new Mailbox(). if (cmd.equals("voice")) { String from = Console. } } else if (cmd. while (more) { String line = Console.println ("Enter message.io. import corejava.00 07 Feb 1996 * @author Cay Horstmann */ import java.status()).getSender()).*. System. m.equals("play")) { Message m = mbox.out.out.readString("Your name: ").readString("Your name: ").audio. if (line. String msg .1.equals("text")) { String from = Console. 'exit' when done"). 1996) /** * @version 1.readString ("play. boolean more = true. quit> ").remove(). } else if (cmd.readString().insert(new TextMessage(from.*. text.play().equals("exit")) more = false. String cmd = Console.BAB V : Abstract Class dan Package 39 Message sender getSender() play( ) TextMessage text VoiceMessage filename FaxMessage Gambar 5.println("From: " + m.

} class Mailbox { public Message remove() { if (nmsg == 0) return null.insert(new VoiceMessage(from. filename = f. mbox. } public String status() { if (nmsg == 0) return "Mailbox empty". } } } abstract class Message { public Message(String from) { sender = from.player. } catch(IOException e) {} } private String filename. public String getSender() { return sender. try { AudioStream as = new AudioStream(new FileInputStream(filename)). String t) { super(from).BAB V : Abstract Class dan Package 40 = Console. } public void play() { AudioPlayer ap = AudioPlayer. text = t. } public void insert(Message m) { if (nmsg == MAXMSG) return.equals("quit")) System. . Message r = messages[out]. } public void play() { System.println(text). } public abstract void play(). out = (out + 1) % MAXMSG. msg)). } else if (cmd.readString("Audio file name: "). return r. ap. nmsg++.start(as). messages[in] = m.out. } class VoiceMessage extends Message { public VoiceMessage(String from.exit(0). } private String text. nmsg--. in = (in + 1) % MAXMSG. } private String sender. } class TextMessage extends Message { public TextMessage(String from. String f) { super(from).

int out = 0. else if (nmsg < MAXMSG) return nmsg + " messages". Message[] messages = new Message[MAXMSG]. mengingat play bagi message text cukup dengan mencetak text tersebut sedang play bagi message bagi voice perlu mendefinisikan objek Audioplayer dan memainkan file audio tersebut. Jika definisi klas-klas dianalisis terlihat bahwa untuk kelas abstract Message memiliki method abstract play() yang belum diimplementasikan dan dicadangkan untuk diimplementasikan (di-override) dari sub-klas turunannya. Pada puncak hierarchi :java adalah suatu kelas teratas yang darinya semua kelas diturunkan. else return "Mailbox full".BAB V : Abstract Class dan Package 41 } else if (nmsg == 1) return "1 message". Hasil output program MailboxTest Program diatas belum mengimplementasikan class faxMessage dan hanay mengimplementasikan class textMessage dan voiceMessage serta class program utamanya. final int MAXMSG = 10. Kelas-kelas yang diturunkan dikelompokkan menjadi 6 package besar . int in = 0. int nmsg = 0. yaitu : .2. Program java memiliki enam paket dalam java class libraray. private private private private private } Bila program dijalankan hasilnya adalah : Gambar 5. Package : Suatu package adalah “bendel” atau pengelompokan kelas-kelas berdasarkan kesamaan atau kemiripan fungsi.

io dapat diugunakan) import java.io java.io.ColorModel .net java.} . dimana kita mendefinisikan banyak kelas dengan pengelompokan sesuai tujuan. } public double getLuas() {return luas.Properties.14*jari*jari.awt java.image. (semua kelas dari package java. seperti contohnya : import java. Kelas-kelas yang menjadi anggota paket dapat disimpan dalam file-file yang terpisah. Hal ini telah kita lakukan misalnya :import corejava. (hanya class Properties dari package java. Pada saat pembuatan suatu package maka kata package harus menjadi statemen pertama.14*jari.} public double getKeliling(){return keliling . (sub klas ColorModel dari class image dari package awt).util) import java. keliling=2*3.* Pelibatan kelas dari package dapat hanya sebagian kelas (atau sub klas) atau semuanya.applet java. File-file java yang merupakan definisi class dari anggota package disimpan dalam satu directori yang sama dengan nama directori adalah nama package tersebut. Pembuatan suatu package dianjurkan untuk pemrograman skala besar. luas=3..util Pada beberapa percobaan terdahulu telah dijumpai beberapa definisi class yang diawali dengan kata kunci :import..lang java.*. Contoh: Akan didefinisikan suatu package bernama : geometri Berisi dua kelas : lingkaran dan kelas :epp (empat persegi panjang) Definisi kelas lingkaran : package geometri.} setiap class yang menjadi anggota paket didefinisikan dengan diawali dengan kata package dilanjutkan dengan definisi kelas seperti biasa.util. public class lingkaran { public lingkaran(double r) {jari=r. misalnya : package MyFirstpackage public class MyFirstClass { .awt. Kata kunci ini memberitahukan bahwa definisi class yang kita buat akan melibatkan kelas-kelas lain yang terhimpun didalam package yang kita import.BAB V : Abstract Class dan Package 42 java..

R1. } } Selanjutnya kedua file disimpan dalam satu directori bernama :geometri Untuk menggunakan paket tersebut didefinisikan kelas utama dengan nama tesGeo.CetakKeliling().println("Luas EPP = "+luas).CetakKeliling().println("Keliling LINGKARAN = "+keliling).} public double getKeliling(){return keliling. double luas. public epp(double p.} public void CetakLuas() {System. private double keliling.10). } } Hasil program adalah seperti gambar 5. . public class epp { double panjang. double lebar. E1.out. E1.println("Luas LINGKARAN = "+luas). } Sedangkan definisi kelas : epp package geometri.println("Keliling EPP = "+keliling).java sebagai berikut : import geometri.out.out. double l) {panjang=p. luas=p*l. keliling=(p+l)*2.out.*.CetakLuas(). R1. class tesGeo { public static void main(String args[]) { lingkaran R1 = new lingkaran(1). lebar=l. private double jari. double keliling. epp E1=new epp(5. } } public void CetakKeliling() {System.CetakLuas(). private double luas.BAB V : Abstract Class dan Package 43 public void CetakLuas() {System.3.} public double getLuas() {return luas. } public void CetakKeliling() {System.

3. Didefinisikans method abstract Cetak(). Masa studi (int) dan IP (double) Mendefinisikan method Cetak() untuk mencetak :NoMhs. Untuk class Pegawai dengan ketentuan : Dalam kelas Pegawai ada atribut tambahan yaitu NIP dan Gaji Mendefinisikan method NaikGaji().java untuk program utamanya. Nama. Nama. Hasil penggunaan package geometri III. Definisikan dua buah kelas turunan dari class Orang yaitu class :Pegawai dan class Mahasiswa. PERCOBAAN VI PEMROGRAMAN DENGAN awt . Umur (int) dan Gaji (double) Untuk class Mahasiswa dengan ketentuan : Dalam kelas Mahasiswa ada atribut tambahan yaitu NoMhs (String). Definisikan suatu class abstract bernama :class Orang dengan ketentuan : Dalam kelas tersebut ada atribut :Nama (String: yaitu nama orang tersebut) dan Umur (int :yaitu umur orang tersebut). Constructor dari class Orang didefinisikan dalam class Orang menginisialisasi Nama dan Umur. yang akan di-override dalam kelas turunannya. yaitu untuk menaikkan gaji sebesar :10% Mendefinisikan method Cetak() untuk mencetak :NIP. TUGAS 1. Umur. Masa studi dan IP Ujilah kemampuan klas tersebut dengan mendefinisikan klass TestOrang.BAB V : Abstract Class dan Package 44 Gambar 5.

show(). Agar suatu window dapat ditutup dengan normal (dengan mengklik x dipojok kanan atas). Dengan AWT dimungkinkan pula kita untuk merancang animasi.*.200). Class Frame Kelas Frame merupakan class yang darinya dapat diturunkan sebuah frame (jendela). Agar windows tersebut dapat ditutup dengan Ctrl-Alt-Del diakhiri dengan EndTask. textedit.1 Gambar 6. f. perlu didefinisikan suatu method handleEvent() dari windows sebagai berikut : public boolean handleEvent(Event evt) { if (evt. memungkinkan pemrogram merancang aplikasi atau aplet dengan basis grafik.exit(0).BAB V : Abstract Class dan Package 45 I. import java. Contoh berikut program untuk menciptakan frame tersebut. Teori Singkat : AWT=Abstract Window Toolkit adalah paket JAVA yang didalamnya terdefinisi banyak kelas antara lain : Frame. Font. Image dan lainlain. Graphics. . } } Hasil dari program adalah seperti gambar 6. termasuk didalamnya Image. kotak.awt. lingkaran.1.WINDOW_DESTROY) System. check box. II. Di atas jendela ini dapat dilakukan berbagai pekerjaan grafis seperti membuat garis. yaitu package java. f. menulis teks atau menempatkan komponen antar muka grafis seperti button. elips. checkbox.id == Event.awt. AWT=Abstract Window Toolkit. Frame atau windows ( 300 point x 200 point) Windows tersebut belum dapat ditutup dengan mengklik mouse pada tanda x dipojok layar.resize(300. Dalam percobaan ini hanya akan dikenalkan beberapa komponen dasar grafis. poligon. radio button dan lain-lain. Paket ini. dan intensif menggunakan prosedur-prosedur standard window dan antar muka grafis seperti komponen-komponen button. Tujuan : Pengenalan dasar mengenai suatu paket yang sangat luas penerapannya yang dimiliki oleh program JAVA. public class g1 extends Frame { public static void main(String args[]) { Frame f = new Frame(). slider dan lain-lain.

height) : cetak lingkaran atau oval drawRoundRect(x1.y drawLine(x1.drawRect(8.104.60). width (x) (0. g.y1.width.y1.y2): mencetak poligon drawArc(x.y2) : cetak garis drawRect(x1.y.BOLD. . Koordinat layar grafik Untuk drawOval apabila widht dan height sama akan menghasilkan lingkaran dan apabila tidak sama akan menghasilkan bentuk oval.0 berada pada pojok kiri atas.x2.x2.10.y1.30.x2.y) : cetak string dikoordinat x. seperti ti pada gambar 6.*.awt.drawRect(10. Font.y2): cetak kotak pojoknya bulat fillRoundRect(x1.startangle.y2) : mengisikotak drawOval(x1.y2) : cetak kotak fillRect(x1.BOLD. x.x2. menggambar garis.stopangle) Untuk menuliskan suatu string di windows pada posisi kolom x dan baris y. public class g2 extends Frame { public g2() {setTitle("Kotak bertulisan"). ukuran huruf.widht.2. Koordinat layar windows adalah :0.2. 18) model huruf Times New Romans.y1.y1.x2. Contoh porgram yang melibatkan method tersebut adalah seperti class g2 berikut : import java.64).setFont(new Font("Times". g.0) height (y) Gambar 6. x=jumlah point kearah kanan dan y=jumlah point kearah bawah (vertikal).y1.drawString("HELLO MAS ".} //untuk judul windows public void paint(Graphics g) { g. g.italic dan lain-lain). 18)). model huruf (tebal.8. Font. Class Font dan class Graphics Kelas Font memungkinkan kita mengatur jenis huruf.BAB V : Abstract Class dan Package 46 } return false. huruf tebal 18 point (huruf normal 12 point) Kelas Graphics merupakan class yang memungkinkan kita untuk menulis teks. Contoh pengaturan huruf adalah : setFont(new Font("Times".y1.100.30). Beberapa method dalam class Graphics antara lain : drawString(String s.x2.height. kotak lingkaran dan lain-lain.y2):mengisi kotak drawPolygon(x1.

Hasil program g2.awt.BAB V : Abstract Class dan Package 47 } g.GIF". return false.exit(0).*. Parameter kedua dan ketiga :x.y adalah koordinat pojok kiri atas dari peletakan gambar pada windows.*.200).drawString("JAVA ". SPEG.resize(300.3.50). public class Poto extends Frame { String nmFILE="Sylvestr.getDefaultToolkit().WINDOW_DESTROY) System.BMP dan lain-lain Beberapa method yang penting yang berhubungan dengan class Image antara lain : Toolkit.pengamatGambar). import java.y.getImage(nmFILE) yaitu untuk mengambil gambar yang tersimpan dalam file nmFILE.java adalah sebagai gambar 6.id == Event. Parameter pertama objekgambar adalah nama objek gambar yang telah diambil dari file ke memory dengan method getImage(). seperti GIF.skalaX. drawImage(objekgambar. berikut : Gambar 6.x. Contoh berikut adalah penggunaan method tersebut : import java.Image.30.show().java 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. Dalam nmFILE termuat lengkap dengan nama directori dan subdirectory. public boolean handleEvent(Event evt) { if (evt. . } } Hasil program g2. f. } public static void main(String args[]) { Frame f = new g2().skalaY.awt. Paramater kempat dan kelima adalah sekala horisontal dan vertikal dalam satuan point dari gambar.3. kecuali file gambar kita ada pada directory yang sama dengan file program. f.

4. sehingga gambar yang ditampilkan adalah sesuai dengan ukuran asli filenya. } } Dalam progfram di atas drawImage() tidak menentukan skala gambar. g.drawString("RAMBO !!" .BOLD.4.magenta).resize(250.this). setFont(new Font("Times".show(). f.drawImage(gb. g.setColor(Color. } public boolean handleEvent(Event evt) { if (evt. return false. g.exit(0). Adapun output program adalah sebagai dalam Gambar 6.20.drawString("HELLO MAS ". f. } { public static void main(String args[]) Frame f = new Poto().280). g.50.350). . public void paint(Graphics g) { setTitle("Gambar Bintang Pilm RAmbo").id == Event. g. 18)).getDefaultToolkit().WINDOW_DESTROY) System.red).20.BAB V : Abstract Class dan Package 48 Image gb=Toolkit.50. Font. Gambar 6.260).getImage(nmFILE). Hasil image Untuk melihat efek penskalaan program diatas dapat dimodifikasi dengan mengganti gambar dan mencetak dengan beberapa penskalaan.setColor(Color.

lebar lebih besar dari tinggi. } } Hasil program terlihat seperti pada gambar 6.drawImage(gb.BAB V : Abstract Class dan Package 49 import java. import java.WINDOW_DESTROY) System.60. g. // skala tak imbang } public boolean handleEvent(Event evt) { if (evt. return false.resize(250.90.id == Event.50.70. public void paint(Graphics g) { setTitle("Gambar 5 buah Dessy").this).drawImage(gb.140.this).60.5.getDefaultToolkit().20.50.120.*.exit(0).20.GIF". Hasil penskalaan image Hal yang perlu diperhatikan dalam pensklaan adalah keseimbangan antara lebar (width) dan tinggi (height) darai gambar.drawImage(gb.drawImage(gb. g.5. apabila ini tidak seimbang akan dapat “merusak” gambar seperti tampak pada Gambar 6.this).80.20. public class Poto extends Frame { String nmFILE="Dessyrat. Gambar 6.5. yang tidak sesuai dengan gambar aslinya.awt. g.Image.130.drawImage(gb. g. Image gb=Toolkit.120. f.this).getImage(nmFILE). .90. } public static void main(String args[]) { Frame f = new Poto().this).awt.90.20. f.*. untuk skala yang terakhir.20.110.show(). g.300).50.

return true. repaint().equals("Cancel")) setBackground(Color.equals("No")) setBackground(Color. Object arg) { if (arg.equals("Retry")) setBackground(Color. } public static void main(String[] args) { Frame f = new ButtonTest(). } public boolean action(Event evt. } public boolean handleEvent(Event evt) { if (evt.equals("Abort")) setBackground(Color. setLayout(new FlowLayout()).id == Event. } } Hasil adalah sebagai berikut : .orange). add(new Button("Ok")). Karena keterbatasan ruang pada kesempatan ini dicoba beberapa komponen yang akan dicoba adalah komponen :Botton.handleEvent(evt).white).equals("Ignore")) setBackground(Color. add(new Button("No")). Menu dan EditText. else if (arg.resize(320. else if (arg.yellow). return super.equals("Ok")) setBackground(Color.equals("Yes")) setBackground(Color. else if (arg. add(new Button("Yes")). public class ButtonTest extends Frame { public ButtonTest() { setTitle("ButtonTest").blue). 200).red).pink). else return false. Button : Program untuk peragaan button adalah : import java. add(new Button("Abort")).awt. f.*.BAB V : Abstract Class dan Package 50 Antar Muka Grafis Kelas awt disamping menyediakan kemampuan untuk menggamabr bentukbentuk geometris dan foto juga menyediakan kemampuan untuk antar muka grafis.show(). f.cyan).exit(0). add(new Button("Cancel")). add(new Button("Retry")). add(new Button("Ignore")). else if (arg. else if (arg. else if (arg.WINDOW_DESTROY) System.

tombol “Yes” adalah kuning. PROGRAM HITUNG LUAS DAN KELILING PANJANG: :  LEBAR: LUAS : KELILING: :  HitungLuas HitungKell Clear . Buatlah program untuk menggambar mobil sebagai berikut : 2. tombol “No” adalah biru. tombol “Ok” orange dan seterusnya. Bila tombol Clear di klik semua EditText dibersihkan. Layout sebagai berikut : Kotak untuk memasukkan Panjang dan Lebar adalah EditText. Tombol HitungLuas dan HitungKell apabila diklik maka pada kotak luas dan kotak keliling akan muncul hasilnya apabila dalam kotak Panjnag dan Lebar ada datanya.BAB V : Abstract Class dan Package 51 Gambar 6. Hasil program ButtonTest Setiap tombol apabila di klik akan menyebabkan warna Frame berubah. Tugas 1. III.6. Buatlah program dengan komponen antar muka grafis untuk membaca Panjang dan Lebar suatu empat persegi panjang dengan EditText dan menampilkan Luas dan Keliling.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->