A. TUJUAN
1. Memahami dasar-dasar input-ouput dalam pemrograman Java
2. Memahami prinsip kerja stream
3. Memahami penggunaan console dalam proses input-output
B. DASAR TEORI
Program Java melakukan proses I/O melalui stream, yaitu sebuah abstraksi yang
dapat memberikan atau mendapatkan informasi. Stream dapat dihubungkan dengan
peralatan fisik yang terdapat dalam sistem I/O Java, seperti keyboard, file, layar console,
soket jaringan, dan lainnya. Walaupun dihubungkan dengan peralatan fisik yang berbeda,
cara kerja stream selalu sama, sehingga kode program yang ditulis juga sama untuk
masing-masing peralatan fisik. Misalnya, untuk melakukan penulisan sebuah teks ke
layar console maupun ke dalam file, maka dapat digunakan kelas dan method yang sama.
Stream ada dua jenis, yaitu stream byte dan stream karakter. Stream byte
digunakan untuk memberikan atau menyimpan informasi data dalam bentuk byte,
misalnya untuk menulis dan membaca file biner. Sedangkan stream karakter pada proses
I/O yang melibatkan data-data berbentuk karakter, misalnya proses baca/tulis ke suatu file
teks, dengan menggunakan karakter Unicode.
Node Stream
Terdapat tiga tipe dasar node, yaitu:
File
Memori (misalnya objek array atau String)
Pipe (suatu kanal dari satu proses)
Tipe dari node stream dapat dibagi lagi sesuai dengan Tabel 3.
BufferedReader(Reader inputReader)
inputReader adalah stream yang akan dihubungkan dengan instance atau objek
dari kelas BufferedReader yang dibuat. Karena Reader merupakan kelas abstrak, maka
perlu dicari kelas turunannya yang berupa kelas konkrit. Salah satunya adalah kelas
InputStreamReader, yang dapat mengonversi byte ke karakter. Sedangkan agar objek dari
InputStreamReader dapat dihubungkan dengan System.in, perlu digunakan bentuk
constructor seperti berikut,
InputStreamReader(InputStream inputStream)
Dalam hal ini, inputStream dapat diisi dengan System.in. Sehingga untuk
membuat objek BufferedReader yang dapat terhubung dengan keyboard, perlu digunakan
kode berikut:
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
Pada tahap ini objek br sudah siap digunakan untuk melakukan proses input, yaitu
dengan melakukan pemanggilan terhadap method read() maupun readline().
Untuk membaca input berupa karakter, digunakan method read() yang terdapat
pada kelas BufferedReader, dengan pendeklarasian sebagai berikut:
int read() throws IOException
Membaca Input Data String
Untuk melakukan input berupa string harus digunakan method readLine(), bukan
read(), dengan deklarasi method sebagai berikut:
Untuk input berupa data numerik, maka caranya sama dengan melakukan input
terhadap data string. Selanjutnya string hasil input tersebut dikonversi ke tipe numerik
dengan memanggil method parseInt() yang terdapat pada kelas Integer untuk bilangan
bulat, atau parseDouble() yang terdapat pada kelas Double untuk bilangan riil. Parameter
yang dilewatkan ke dalam method tersebut harus bertipe string. Sebaiknya proses
konversi berada di dalam blok try-catch untuk menghindari masukan string yang tidak
dapat dikonversi ke bilangan bulat, misalnya string “abc”.
Menampilkan Output
C. TUGAS PENDAHULUAN
1. Jelaskan fungsi method-method berikut ini.
a. int read()
b. int read(byte[] buffer)
c. int read(byte[] buffer, int offset, int length)
2. Jelaskan perbedaan antara 2 method berikut:
a. int read(byte[] buffer)
b. int read(byte[] cbuf)
D. PERCOBAAN
5. Buatlah program untuk menerima masukan data dan menampilkan hasilnya sesuai
tampilan berikut:
E. TUGAS LAPORAN RESMI
1. Tujuan
2. Teori Singkat
Sebuah thread, secara definisi adalah sebuah proses ringan. Mereka digunakan untuk
meningkatkan fungsionalitas dan performansi dengan cara melakukan beberapa tugas
pada saat yang sama, yaitu bersamaan. Ada dua metode untuk menerapkan thread di
dalam Java :
1. penerapan sebuah antarmuka
2. perpanjangan sebuah class
Tread merupakan pemrograman Java tingkat menengah, untuk itu mahasiswa diharapkan
sudah mengenal dengan konsep-konsep dasar Object Oriented Paradigm dan mengerti
dengan istilah seperti 'extending', 'interface' dan 'class'. Alasan mengapa ada dua cara
membuat thread. Hail Ini dikarenakan jika sebuah class sudah menjadi sebuah class
turunan dari beberapa class selain 'Thread', maka ini tidak dapat memperpanjang 'Thread'
karena beberapa turunan tidak diperbolehkan di dalam pemrograman bahasa Java. Jadi,
dalam kasus seperti itu kita gunakan antarmuka 'Runnable' sebagai gantinya.
{
Cara yang lain untuk melakukan hal ini dengan cara menerapkan 'Runnable', seperti
terlihat dibawah,
Perhatikan pada kedua metode menggunaan fungsi 'run()', dimana bertanggung jawab
pada kerja thread. Antarmuka 'Runnable' sebenarnya bukan apa-apa tetapi sebuah class
yang berisi hanya satu metode abstrak, 'public abstract void run();'. Yang perlu diingat
adalah bahwa sebuah antarmuka hanya menyediakan sebuah rancangan framework atas
class yang dapat diterapkan. Ini juga menarik untuk dicatat bahwa sebenarnya class
'Thread' juga menerapkan antarmuka 'Runnable'.
Menciptakan Thread :
Pada kode Thread diatas tidak melakukan sesuatu apapun yg berguna, agar Thread tsb
bisa berguna maka dibutuhkanmethod run(),ada 3 buah cara tuk menciptakan Thread dgn
method run() -nya.
Praktik
PRAKTIK 1
1. Meng-Extends class Thread
PRAKTIK 3
3. Dengan menggunakan Anonymous Inner Classes
Kadang kita tidak ingin menciptakan class untuk Thread dan kondisinya tidak
cocok untuk pake interface Runnable. Jika hal tersebut terjadi, maka kita bias membuat
anonymous inner class, spt ini:
public class MyClass{
public MyClass(){
new Thread(){
public void run(){
//buat suatu pekerjaan disini, misal print sesuatu ke console
System.out.println("asiik gua dijalanin duluan");
}
}.start();
}
//tuk menjalankan MyClass di main method gak perlu lg ciptakan Thread dgn method
start() krn di constructor sudah ada
public static void main(String[] args){
new MyClass ();
}
}
PRAKTIK 4
4. Latihan
pembuatan contoh suatu progress dengan memanfaatkan class SwingWorker :
// Class CounterTask.java
import javax.swing.JTextArea;
import javax.swing.SwingWorker;
@Override
protected Integer doInBackground() throws Exception {
int i = 0;
int count = 10;
while (! isCancelled() && i < count) {
i++;
publish(new Integer[] {i});
setProgress(count * i / count);
Thread.sleep(DELAY);
process(i);
}
return count;
}
@Override
protected void done() {
if (isCancelled())
textArea.append("Cancelled !");
else
textArea.append("Done !");
}
}
// class SwingWorkerDemo.java
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
// Cancel button
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
task.cancel(true);
}
});
- amati dan buatlah kesimpulan dari program diatas, sertakan dalam listing
5. TUGAS
Diberikan oleh dosen pengampu praktikum