Konstruktor dapat juga mempunyai beberapa parameter. Biasanya parameter-parameter tersebut digunakan untuk mengeset insial dari objek
C. Dasar Teori
B.
Tujuan
Pada akhir pembahasan, diharapkan mahasiswa mempunyai kompetensi dalam :
Membuat superclass dan subclass sendiri
Menjelaskan mengenai konsep pewarisan sifat objekC. Dasar Teori
Java mengijinkan kita untuk mendefinisikan suatu kelas yang bersifat generik. Selanjutnya, kelas tersebut dapat diturunkan lagi menjadi kelas baru dengan sifat yang lebih spesifik. Dalam terminology Java, kelas induk yang diturunkan disebut dengan superclass. Adapun kelas baru hasil turunan disebut dengan subclass.
Format
class nama-subclass extends nama-superclass { //badan kelas
}
D. Latihan
Cara membuat kelas induk dan kelas turunan. Pada latihan ini, Anda akan membuat kelas induk dengan nama Induk dan class turunannya bernama Child .
Percobaan 1
Membuat kelas turunan (Child) dari kelas sebelumnya (Induk) class Induk { int i, j; void showInduk() { System.out.println("i = " + i + " dan j = " + j); } }
class Child extends Induk { int k; void showChild() { System.out.println("k = " + k); } void sum() { System.out.println("i + j + k = " + (i + j + k)); } }
STIMATA
Pemrograman Java
32
public class Main {
public static void main(String args[]) { Induk superOb = new Induk();
Child subOb = new Child();
System.out.println("Data di SuperClass"); superOb.i = 10; superOb.showInduk(); System.out.println(); System.out.println("Data di SubClass"); subOb.i = 7; subOb.showInduk(); subOb.showChild(); System.out.println(); subOb.sum(); } }
Hasil Runing Program diatas adalah sebagai berikut: Data di SuperClass i = 10 dan j = 0 Data di SubClass i = 7 dan j = 0 k = 0 i + j + k = 7
E. TUGAS
1. Apa yang anda ketahui tentang kelas induk dan kelas turunan, dan apapula perbedaan diantara keduanya.
2. Dari hasil running program induk.java diatas, untuk data induk muncul i = 10 dan j = 0, sedangkan untuk data kelas child muncul i = 7 dan j = 0 serta k =0. Mengapa demikian, jelaskan alasan Anda.
3. Ubah data j dan k yang masing-masing bernilai 0 menjadi j = 9 dan k = 11, kemudian catat berapa nilai i+j+k?
STIMATA
Pemrograman Java
33
Modul 8 : Input dan Output
A. Latar Belakang
Dasar Teori I/O yang disampaikan secara teoritis dalam sesi kuliah (tatap muka) dikelas mengakibatkan mahasiswa memahami secara abstrak sebatas jangkauan pikirannya. Diperlukan aktivitas yang dapat merangsang pemahaman berdasar pengalaman dengan cara mempraktekkan dalam program yang diharapkan mampu menguatkan pemahaman teoritis diperkuiahan
Dalam kegiatan ini mahasiswa mempraktekkan membuat program yang berisikan beberapa kelas, yaitu BufferedReader, InputStreamReader, System.in, dan try {}
B. Tujuan
Setelah melakukan kegiatan ini, mahasiswa diharapkan mempunyai kompetensi dalam 1. mengenal dasar-dasar I/O
2. melakukan Input 3. menampilkan Output 4. dasar-dasar Baca/Tulis File 5. Kelas File
6. membuat program yang bisa digunakan untuk menuliskan kalimat
C. Dasar Teori
Proses input dan output (I/O) adalah hal yang paling sering dijumpai pada sebagian besar program yang membutuhkan data-data eksternal. Java menydiakan terhadap proses I/O dengan menghadirkan paket java.io.*
Stream
Program java melakukan proses I/O melalui stream. Stream adalah sebuah abstraksi yang dapat memberikan atau mendapatkan informasi. Stream dapat menghubungkan dengan perlatan fisik yang terdapat dalam siste I/O Java, seperti keyboard, file, layar console dan yang lainnya.
Kelas-kelas dalam stream
Nama Kelas Keterangan
BufferedInputStream Stream input yang telah ter-buffer BufferedOutputStream Stream output yang telah ter-buffer
ByteArrayInputStream Stream input yang membaca dari array byte ByteArrayOutputStream Stream output yang menulis ke array byte
DataInputStream Stream input yang berisi method-method untuk membaca tipe data standar terdapat dalam java DataOutputStream Stream output yang berisi method-method untuk
membaca tipe data standar terdapat dalam java FileInputStream Stream input yang membaca dari sebuah file FileOutputStream Stream output yang menulis ke sebuah file FilterInputStream Mengimplementasikan inputstream
FilterOutputStream Mengimplementasikan Outputstream
InputStream Kelas abstrak yang menjelaskan stream input OutputStream Kelas abstrak yang menjelaskan stream output PipedInputStream Penyalur input
PipedOutputStream Penyalur Output
STIMATA
Pemrograman Java
34
Kelas-kelas stream karakter
Nama Kelas Keterangan
BufferedReader Stream karakter input yang telah ter-buffer BufferedWriter Stream Karakter output yang telah ter-buffer CharArrayReader Stream input yang membaca dari array karakter CharArrayWriter Stream output yang menulis ke array karakter FileReader Stream input yang membaca dari sebuah file FileWriter Stream output yang menulis ke sebuah file FilterWriter Reader yang ter-filter
FilterReader Writer yang ter-filter
InputStreamReader Stream input yang menerjemahkan byte ke karakter LineNumberReader Line input yang menghitung jumlah baris
OuputStreamWriter Stream input yan menterjemahkan karakter ke byte PipedReader Penyalur Input
PipedWriter Penyalur Output
PrintWriter Stream output yang berisi method println() dan print() Reader Kelas abstrak yang menjelaskan stream karakter input StringReader Stream input yang membaca dari sebuah string StringWriter Stream output yang menulis ke sebuah string
Writer Stream output
Perintah Try {} catch {}
perintah try { ... }, adalah perintah yang ingin dijalankan pada situasi yang “mungkin” tidak berhasil atau perintah yang akan dilakukan apabila kesalahan ditangkap..
Parameter pada catch, yaitu IOException e adalah jenis kesalahan yang ingin Anda tangkap. Dalam hal ini Anda ingin menangkap adanya kesalahan IO, yaitu kesalahan yang bertipe IOException. Jika tidak ada kesalahan IO yang ditemukan, maka bagian ini akan dilewatkan (tidak dijalankan). try { ... } catch (IOException e) { ... }
Membaca Input data Karakter Percobaan 1 import java.io.*; /** * @author Irul */ class DemoKarakter {
public static void main(String [] args) throws IOException { System.out.print("Masukkan sembarang karakter: ");
char ch;
InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();
System.out.println("Karakter yang dimasukkan adalah \'"+ch+"\'"); }
STIMATA
Pemrograman Java
35
Membaca Input data String Percobaan 2 import java.io.*; /** * @author Irul */ class DemoInput {
public static void main(String [] args) throws IOException { System.out.print("Masukkan Nama Anda: ");
String nama;
InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);
nama = br.readLine();
System.out.println("Hello "+nama + ", sudahkan Anda paham Java?"); }
}
Membaca Input data Numerik Percobaan 3 import java.io.*; /** * @author Irul */ class DemoNumerik {
public static void main(String [] args) throws IOException { System.out.print("Masukkan sebuah bilangan bulat: "); String temp;
int bilangan = 0;
InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);
temp = br.readLine(); try{
bilangan =Integer.parseInt(temp); }catch (NumberFormatException nfe){
System.out.println("Data yang dimasukkan bukan bilangan bulat");
System.exit(1); }
System.out.println("Bilangan yang dimasukkan adalah : "+bilangan); }
}
Membaca dan Menulis File Percobaan 4 import java.io.*; /** * @author Irul */ class BacaFile {
public static void main(String [] args) { FileInputStream finput = null;
int data; //Membuka file try {
finput = new FileInputStream("g:/data.txt"); }catch (FileNotFoundException fnfe){
STIMATA
Pemrograman Java
36
System.out.println("File tidak ditemukan"); return; //Keluar dari method
}
//Membaca data dari dalam file try{
while ((data = finput.read())!= -1) { //konversi data ke type char
System.out.println((char) data); }
}catch (IOException e){
System.out.println(e.getMessage()); return; } //Menutup File try { finput.close();
}catch (IOException e){} }
}
D. Praktek
Progam berikut ini, membangun sebuah program aplikasi yang dapat digunakan untuk menuliskan kalimat dengan menggunakan class-class di java.io.
Ketik kode berikut ini dan simpan dengan nama baca.java, compile dan kemudian jalankan.
import java.io.*;
public class baca //StringReader {
public static void main (String[] args) {
System.out.println("Ketik Kalimat, Kemudian tekan Tombol 'Enter.'"); String string = "";
InputStreamReader input = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(input);
// membaca iputan dari user try
{
string = reader.readLine(); }
catch(Exception e){}
System.out.println("Tulisan Anda: " + string);
// menunggu diketik kata “ENTER” atau ditekan tombol ENTER untuk keluar System.out.println("Tekan/Ketik 'Enter' untuk keluar");
try {
string = reader.readLine(); }
catch(Exception e){
System.out.println ("Ada kesalahan!!!");} }
}
STIMATA
Pemrograman Java
37
Modul 9 : Kelas File
A. Latar Belakang
Dasar Teori kelas File yang disampaikan secara teoritis dalam sesi kuliah (tatap muka) dikelas mengakibatkan mahasiswa memahami secara abstrak sebatas jangkauan pikirannya. Diperlukan aktivitas yang dapat merangsang pemahaman berdasar pengalaman dengan cara mempraktekkan dalam program yang diharapkan mampu menguatkan pemahaman teoritis diperkuiahan.
B. Tujuan
Setelah melakukan kegiatan ini, mahasiswa diharapkan mempunyai kompetensi dalam Membaca file
Menyimpan file
C. Dasar Teori
Menulis Teks
Untuk membaca sebuah file, Anda dapat menggunakan class FileInputStream. Berikut ini adalah salah satu constructor dari class tersebut :
FileInputStream(String filename).
Constructor tersebut membuat sebuah koneksi terhadap file dimana nama dari file tersebut ditunjukkan sebagai sebuah argument. Exception berupa FileNotFoundException akan muncul jika file tidak ditemukan atau tidak dapat dibuka dan kemudian dibaca.
Setelah membuat sebuah input stream, Anda kemudian dapat menggunakannya untuk membaca sebuah file dengan menggunakan method read. Method read menghasilkan sebuah nilai integer, dan akan menunjukkan nilai 1 jika telah mencapai batas akhir file.
Berikut ini diberikan aplikasinya untuk membaca sebuah file Menyimpan Fille
Untuk menuliskan sebuah file, Anda dapat menggunakan class FileOutputStream. Berikut ini salah satu constructor yang dapat Anda gunakan.
FileOutputStream(String filename)
Constructor tersebut menyediakan jalur output stream terhadap sebuah file yang akan ditulis. Sebuah Exception berupa FileNotFoundException akan muncul jika file yang dimaksud tidak dapat dibuka untuk ditulis.
Jika output stream telah dibuat, Anda dapat menggunakannya untuk menulis file yang dituju penggunakan method write. Method tersebut menggunakan penandaan sebagai berikut : void write(int b)
Parameter b mereferensikan data yang akan dituliskan pada file sesuai dengan hasil output stream.
STIMATA Pemrograman Java
38
/** * @author Irul */ import java.io.*; class TulisFile {public static void main(String args[]) throws IOException { System.out.println("Nama File apa yang akan Anda tulis?"); String filename;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); filename = br.readLine();
System.out.println("Masukkan Nama File " + filename + "..." ); System.out.println("Ketik E$ to end.");
FileOutputStream fos = null; try {
fos = new FileOutputStream(filename); }catch (FileNotFoundException ex) {
System.out.println("File tidak dapat dibuka ."); }
try {
boolean done = false; int data; do { data = br.read(); if ((char)data == 'E') { data = br.read(); if ((char)data == '$') { done = true; } else { fos.write('E'); fos.write(data); } } else { fos.write(data); } } while (!done);
} catch (IOException ex) {
System.out.println("Baca file bermasalah"); } } } Membaca Fille import java.io.*; class ReadFile {
public static void main(String args[]) throws IOException { System.out.println("File Apa yang akan dibuka?");
String filename;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
filename = br.readLine();
System.out.println("Baca File " + filename + "..."); FileInputStream fis = null;
STIMATA
Pemrograman Java
39
try {
fis = new FileInputStream(filename); }catch (FileNotFoundException ex) { System.out.println("File not found."); } try { char data; int temp; do { temp = fis.read(); data = (char) temp; if (temp != -1) {
System.out.print(data); }
} while (temp != -1); }
catch (IOException ex) {
System.out.println("Baca file bermasalah"); }
} }
FileReader dan FileWriter import java.io.*;
class CopyFile {
void copy(String input, String output) { FileReader reader;
FileWriter writer; int data;
try {
reader = new FileReader(input); writer = new FileWriter(output);
while ((data = reader.read()) != -1) { writer.write(data); } reader.close(); writer.close(); }
catch (IOException ie) { ie.printStackTrace(); }
}
public static void main(String args[]) { String inputFile = args[0];
String outputFile = args[1]; CopyFile cf = new CopyFile(); cf.copy(inputFile, outputFile); }
STIMATA
Pemrograman Java
40
BufferedReader dan BufferedWriter
Program menggunakan teknik dari perangkaian stream dimana clas FileReader dan FileWriter didekorasi dengan class BufferedReader dan BufferedWriter, berurutan.
BufferedReader ;
BufferedWriter ; import java.io.*; class CopyFile {
void copy(String input, String output) { BufferedReader reader;
BufferedWriter writer; String data;
try {
reader = new BufferedReader(new FileReader(input)); writer = new BufferedWriter(new FileWriter(output)); while ((data = reader.readLine()) != null) {
writer.write(data, 0, data.length()); }
reader.close(); writer.close(); }
catch (IOException ie) { //ie.printStackTrace();
System.out.println(“bufferd bermasalah”)
} }
public static void main(String args[]) { String inputFile = args[0];
String outputFile = args[1]; CopyFile cf = new CopyFile(); cf.copy(inputFile, outputFile); }
}
D. Latihan
Buatlah sebuah program yang memuat dua String sebagai argument, sumber dan nama file tujuan. Kemudian, baca file sumber dan tuliskan isi dari file tersebut terhadap file tujuan, seluruh spasi yang ada („ „) diubah menjadi underscore („ _ „).
STIMATA
Pemrograman Java
41
Modul 10 :Pembuatan GUI - 1
A. Latar Belakang
Dalam module sebelumnya, Anda telah mempelajari bagaimana untuk mendapatkan input user dan memanipulasi file-file menggunakan stream.
Kini Anda akan mempelajari lebih banyak tentang cara-cara pendesainan user-interface dalam program-program GUI.
B. Tujuan
Pada akhir pembahasan diharapkan, mahasiswa mempunyai kompetensi pada pembuatan aplikasi visual dengan;
Menggunakan AWT Menggunakan Swing JButton JFrame JLabel JTextField
C. Dasar Teori
Dalam Java, terdapat dua pake yang dapat digunakan untuk mengembangkan program-program GUI, yaitu: AWT dan Swing. AWT (Abstract Window Toolkit) yang berisi library dan digunakan untuk menyederhanakan implementasi user-interface. Swing adalah bentuk implementasi selanjutnnya yang menambahkan komponen-komponen dalam system GUI.
D. Latihan
Percobaan 1
Pada percobaan satu ini diimplementasikan komponen-komponen (Jbutton, Jframe, Jlabel, dan JTexFeild ) swing pada sebuah program operasi matematika sederha.
package irul; import java.awt.event.*; import javax.swing.*; /** * @author Irul */
class DemoTeks implements ActionListener{ public JLabel label1,label2,label3;
public JTextField textField1, textField2, textField3; public JButton button1, button2, button3,button4;
public DemoTeks() {
label1 = new JLabel("Nilai A"); label1.setLocation(10, 10);
label1.setSize(label1.getPreferredSize());
STIMATA
Pemrograman Java
42
textField1 = new JTextField(20); textField1.setLocation(10,25);
textField1.setSize(textField1.getPreferredSize()); label2 = new JLabel("Nilai B");
label2.setLocation(10, 45);
label2.setSize(label2.getPreferredSize());
textField2 = new JTextField(20); textField2.setLocation(10,60);
textField2.setSize(textField2.getPreferredSize());
label3 = new JLabel("Hasil Perhitungan A dan B "); label3.setLocation(10, 90);
label3.setSize(label3.getPreferredSize());
textField3 = new JTextField(20); textField3.setLocation(10,105); textField3.setSize(textField3.getPreferredSize()); textField3.setEditable(false); button1=new JButton("Tambah"); button1.setLocation(245,10); button1.setSize(button1.getPreferredSize()); button1.addActionListener(this); button1.setMnemonic('T'); button2=new JButton("Kurang"); button2.setLocation(245,40); button2.setSize(button2.getPreferredSize()); button2.addActionListener(this); button2.setMnemonic('u'); button3=new JButton("Kali"); button3.setLocation(245,70); button3.setSize(button3.getPreferredSize()); button3.addActionListener(this); button3.setMnemonic('K'); button4=new JButton("Bagi"); button4.setLocation(245,100); button4.setSize(button4.getPreferredSize()); button4.addActionListener(this); button4.setMnemonic('B'); }
public void createAndShowGUI(){
JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Kalkulator by Irul"); frame.setLayout(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(label1); frame.getContentPane().add(textField1); frame.getContentPane().add(label2); frame.getContentPane().add(textField2); frame.getContentPane().add(label3); frame.getContentPane().add(textField3);
STIMATA Pemrograman Java
43
frame.getContentPane().add(button1); frame.getContentPane().add(button2); frame.getContentPane().add(button3); frame.getContentPane().add(button4); frame.setBounds(0, 0, 350, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); }public void actionPerformed(ActionEvent event) { double a=0.0, b= 0.0, c=0.0;
try{
a = Double.parseDouble(textField1.getText()); b = Double.parseDouble(textField2.getText()); }catch (NumberFormatException e){
e.printStackTrace();
//System.out.println(“abjad tidak diterima”); }
JButton jbt = (JButton) event.getSource(); if(jbt == button1){ c = a + b; }else if (jbt == button2){ c = a - b; }else if (jbt == button3){ c = a * b; }else { c = a / b; } textField3.setText(new String().valueOf(c)); }
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){
DemoTeks app = new DemoTeks(); app.createAndShowGUI();
} }); } }
Hasil Running program DemoTeks diatas adalah seperti ditunjukkan pada gambar 9.1 berikut ini.
STIMATA
Pemrograman Java