Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
PERTEMUAN V STREAM DAN OOP TUJUAN PRAKTIKUM 1. Praktikan memahami Stream pada Java. 2. Praktikan memahami pemrograman berbasis objek dengan mengetahui karakteristik OOP. 5.1 Stream Stream adalah representasi abstrak dari input dan output device dimana aliran data bytes akan ditransfer seperti file dalam harddisk, file pada system remote atau printer. Kita dapat membaca data dari input stream, yang dapat berupa file,keyboard, atau computer remote. Sedangkan untuk operasi penulisan berarti kita menulis data pada output stream. Package java.io mendukung dua tipe stream, yaitu binary dan karakter stream. Binary merupakan data berupa bit atau data binary, sedangkan karakter adalah tipe khusus untuk pembacaan dan penulisan teks/karakter. Kemampuan untuk memproses output dalam Java dakam bentuk byte atau bytestream diwakili oleh class abstrak OutputStream sedangkan input diwakili class InputStream. Apabila kita memproses data karakter(karakter Unicode) atau disebut character stream seperti string atau bilangan maka Java menyediakan class abstrak Reader dan Writer. Class File Keterangan Objek dari class ini mewakili path, direktori atau file yang akan diakses untuk input atau output OutputStream InputStream Class dasar untuk operasi output byte stream, merupakan class abstrak Class dasar untuk operasi input byte strean, merupakan class abstrak Class dasar untuk operasi output karakter stream,merupakan class Writer abstrak Class dasar untuk operasi input karakter stream,merupakan class Reader abstrak RandomAccessFile Class yang menyediakan dukungan untuk akses random ke file InputStream Subclass-subclass dari InputStream adalah : AudioInputStream,ByteArrayInputStream, FileInputStream, FilterInputStream, PipedInputStream, SequenceInputStream, dan StringBufferInputStream. Lab. Teknik Informatika - FTI Universitas Gunadarma 66 Dua method utama dari Input Stream adalah : read() : digunakan untuk membaca stream close() : digunakan untuk menutup koneksi input stream OutputStream Subclass-subclass dari OutputStream adalah : ByteArrayOutputStream : untuk menuliskan stream menjadi byte array FileOutputStream : digunakan untuk menulis pada file FilterOutputStream : merupakan superclass dari subclass-subclass seperti DataOutputStream, BufferOutputStream, PrintStream, CheckedOutputStream. ObjectOutputStream : digunakan untuk menuliskan objek pada OutputStream PipedOutputStream : digunakan untuk menjadi output PipedOutputStream Sebagian method-method OutputStream adalah : void close() : Menutup output stream yang aktif dan melepaskan sumber daya terkait dengan stream tersebut void flush() : Melakukan flush output stream dan memaksa semua byte buffer untuk dituliskan keluar void write(byte[ ] b) : menulis sebanyak b.length dari byte array ke output stream void write(byte [ ] b, int off, int len) : Menuliskan sebanyak len byte dari byte array b dimulai dari index offf DataOutputStream DataOutputStream merupakan class yang menyediakan cara praktis untuk menuliskan tipe data primitive ke output stream, sedangkan DataInputStream berfungsi untuk membaca hasil penulisan DataOutputStream atau mendapatkan data kembali. Sebagian method DataOutputStream : writeDouble : menuliskan data bertipe double ke output stream writeInt : menuliskan data Integer ke output stream writeBoolean : menuliskan data Boolean ke output stream writeUTF : menuliskan data string menggunakan encoding UTF-8 yang tidak tergantung pada mesin DataInputStream DataInputStream berfungsi untuk saling melengkapi dengan DataOutputStream, yaitu untuk mendapatkan data yang ditulis dengan DataOutputStream. Lab. Teknik Informatika - FTI Universitas Gunadarma 67 Tipe data primitive yang ditulis oleh DataOutputStream didapatkan kembali dengan DataInputStream dengan tidak bergantung pada mesin computer. Sebagian method DataInputStrean : readDouble() readInt() readBoolean() readUTF() BufferedInputStream dan BufferedOutputStream BufferedInputStream maupun BufferedOutputStream menyediakan fungsi buffer dalam proses output dan input untuk mempercepat dan mengefisienkan proses Kedua class ini biasanya digunakan secara bersamaan dengan implementasi class output dan input stream lain seperti DataOutputStream, DataInputStream, FIleOutputStream dan FileInputStream atau yang lain. Kedua class ini menjadi semacam penengah yang menyediakan proses buffering FileInputStream dan FIleOutputStream Seringkali proses input dan output yang kita lakukan menggunakan file sebagai sarana penulisan maupun pembacaan data. Oleh karena itu kita akan membahas class FileInputStream untuk membaca data dari file dan FIleOutputStream untuk menuliskan data ke file. Class FileInputStream merupakan turunan langsung dari class InputStream sedangkan FileOutputStream merupakan turunan langsung dari class OutputStream. Contoh dibawah akan mencoba mendeskripsikan sample penggunaan class DataOutputStream, DataInputStream, FileOutputStream, FileOutputStream, serta BufferedInputStream dan BufferedOutputStream. //Nama File cobaDataStream.java import java.io.*; public class cobaDataStream{ public static void main(String args[]) { try { DataOutputStream out2 = new DataOutputStream( new BufferedOutputStream ( new FileOutputStream("Data.txt"))); out2.writeDouble(3.14159); out2.writeDouble(1.41413); Lab. Teknik Informatika - FTI Universitas Gunadarma 68 out2.writeInt(2002); out2.writeInt(1003); out2.writeBoolean(true); out2.writeBoolean(false); out2.close(); } catch(IOException ioe) { ioe.printStackTrace(); } try { DataInputStream in5 = new DataInputStream( new BufferedInputStream (new FileInputStream("Data.txt"))); System.out.println(in5.readDouble()); System.out.println(in5.readDouble()); System.out.println(in5.readInt()); System.out.println(in5.readInt()); boolean status = in5.readBoolean(); boolean status1 = in5.readBoolean(); System.out.println(status); System.out.println(status1); } catch(EOFException e) { System.err.println("End of stream"); } catch(IOException io) { io.printStackTrace(); } } } 5.2 Pemrograman Berorientasi Objek Dalam pemrograman berorientasi objek, fokus utama adalah pada objek. Metodologi pengembangan sistem berorientasi objek mempunyai tiga karakteristik utama, yaitu : 1. Enkapsulasi(Pembungkusan) Enkapsulasi adalah pelindung program dan data yang sedang diolah. Enkapsulasi mendefinisikan perilaku dan melindungi program dan data agar tidak diakses secara sembarangan oleh program lain. Dalam Java, dasar enkapsulasi adalah class. Anda membuat suatu class yang menyatakan bahwa variable atau method sebuah class tidak dapat diakses oleh class lain dengan Lab. Teknik Informatika - FTI Universitas Gunadarma 69 menjadikan class tersebut private, atau menjadikan class tersebut protected - yaitu hanya bisa diakses oleh turunannya, atau menjadikan class tersebut public - yaitu bisa diakses oleh sembarang class. 2. Inheritansi Pewarisan adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data atau atribut dan metode dari induknya langsung. Objek-objek yang berada di sekitar kita adalah objek-objek yang saling terhubung secara hirarkis. Misalnya : Objek Gambar Bentuk 2D Lingkaran Bujur Sangkar Bentuk 3D Piramida Bola Lingkaran dan Bujur Sangkar adalah turunan dari bentuk 2D dan Bentuk 2D adalah turunan dari Objek Gambar. Lingkaran dan Bujur Sangkar mewarisi(inherit) sifat-sifat dari bentuk 2D, juga mewarisi sifat-sifat dari objek gambar. Lingkaran dan Bujur Sangkar dapat dikatakan subclass dari bentuk 2D. Bentuk 3D adalah superclass dari Bola dan Piramida, dan seterusnya. Beberapa faktor yang bersifat umum dimasukkan ke dalam kelas induknya serta mewariskan sifat tersebut pada kelas turunannya, sehingga dapat mengurangi pengulangan yang terjadi dalam desain dan pemrograman. Hal ini merupakan keuntungan dari sistem berorientasi objek. 3. Polimorfisme Walaupun Lingkaran dan Bujur Sangkat sama-sama turunan dari Bentuk 2D, tetapi cara menubah ukuran masing-masing berbeda, untuk lingkaran anda harus merubah besar jarijarinya, sedang untuk bujur sangkar anda harus mengubah panjang sisinya. Dalam Java implementasi, method suatu parent-class dapat diubah oleh sub-class, hal ini dikenal dengan overriding method. Deklarasi method sama tetapi implementasi atau definisinya berbeda(Method atau perilaku yang sama tapi implementasinya/caranya yang berbeda-beda inilah yang disebut dengan Polimorfisme). Polimorfisme yaitu konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku berbeda. Polimorfisme mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda. Contoh Program : // contoh inheritanace sederhana // file disimpan dengan nama penurunansederhana.java class A { int i; int j; Lab. Teknik Informatika - FTI Universitas Gunadarma 70 void show_ij(){ System.out.println(“I dan j = “ + I + “” + j); } } class B extends A { int K ; void show_k () { System.out.println(“k = “ +k); } void sum_all() { System.out.println(“I + j + k = “ + (i+j+k)); } } class penurunansederhana { public static void main (String args[]){ A objekBapak = new A(); B objekAnak = new B(); objekBapak.i = 13; objekBapak.j = 17; System.out.println(“Objek A -> objek superclass dari B : “) objekBapak.show_ij(); objekAnak.i = 9; objekAnak.j = 10; objekAnak.k = 11; System.out.println(“Objek A -> objek superclass dari B : “) objekAnak.show_ij(); objekAnak.show_k(); objekAnak.sum_all(); } } STEP BY STEP 1. Jelaskan definisi stream. 2. Sebutkan class-class yang terdapat di stream disertai dengan bentuk umumnya 3. Jelaskan secara singkat tentang karakteristik OOP! MATERI PRAKTIKUM 1. Memberikan penjelasan tentang konsep stream di Java 2. Memberikan penjelasan serta memberikan contoh implementasi operasi stream 3. Memberikan penjelasan serta memberikan contoh implementasi OOP. Lab. Teknik Informatika - FTI Universitas Gunadarma 71 LAPORAN AKHIR Buatlah kesimpulan mengenai pemrograman berbasis objek(OOP) dan Stream bahasa pemrograman JAVA yang telah dipraktekkan beserta dengan program-program yang telah dibuat berikut tampilan hasilnya. Lab. Teknik Informatika - FTI Universitas Gunadarma 72