laporan program uas pbo

Upload: vhiet-lupph-rama

Post on 08-Jul-2015

240 views

Category:

Documents


6 download

TRANSCRIPT

LAPORAN TUGAS UAS PEMROGRAMAN BERORIENTASI OBJEK

NAMA KELOMPOK

1. 2. 3. 4.

DEVIANA AGUSTIN RIMI FITRIANI FRANSISKA CAROLINA YANI HERTYANINGSIH

DBC 108 130 DBC 108 050 DBC 108 084 DBC 108 023

JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009

BAB I TUJUAN DAN LANDASAN TEORI

A. Tujuan Mahasiswa dapat memahami dan dapat membuat program dengan menggunakan konsep inheritance, polymotfisme, enkapsulasi, exception, dan GUI.

B. Landasan Teori 1. Pewarisan Pewarisan adalah kemampuan suatu kelas atau objek untuk mewariskan sifatsifat yang terdapat di dalamnya ke kelas turunannya. Pewarisan dilakukan untuk membuat class baru (class turunan/subclass) yang masih memiliki sifat atau spesifikasi dari class dimana ia diturunkan (Superclass). Untuk melakukan ini, Java menyediakan keyword extends yang dapat dipakai pada waktu kita mendeklarasikan class.

2. Polymorfisme Polimorfisme menggambarkan kemampuan berperilaku berbeda tergantung situasi pada waktu run (program dijalankan). Polimorfisme memiliki arti banyak bentuk, melakukan hal yang sama untuk berbagai data yang berbeda, mengirimkan pesan yang sama ke berbagai objek yang berbeda karena tiap objek memberi respon dan cara yang berbeda. Polimorfisme dapat juga

dikatakan sebagai suatu pemanggilan method yang dapat merujuk pada yang method berbeda sesuai dengan jenis objek yang diteruskan kedalam method yang dipanggil itu. Teknik polymorfisme digunakan untuk menyatakan satu nama yang merujuk (refence) ke beberapa method yang berbeda. Java menginterprestakian polymorfisme dengan 3 cara yaitu : Method overloading

Methhod overloading adalah pembuatan method-method dengan nama sama, tetapi paraemeter dari method-method tersebut berbeda. Method dengan pewarisan Method overriding dengan interface java Method overriding adalah pembuatan method dengan tidak dapat mengubah parameter dari nethod yang terdapat di superclass, baik tipe data atau jumlah parameternya.

3. Enkapsulasi Enkapsulasi adalah suatu kelas sebenarnya yang terpisah dari kelas yang lain, dimana atribut dan fungsi terbungkus dalam kapsul sehingga akses dari luar terhadap isi kelas pada dasarnya terbatas. Akses terhadap kelas bergantung pada modifier yang diberikan pada kelas dan isinya. Ada tiga macam modifier yang biasa digunakan, yaitu: Public berati dapat diakses secara bebas baik dari dalam maupun luar kelas. Private berarti akses sangat terbatas hanya dari dalam kelas itu sendiri, tidak bisa dari luar. Protected berati akses terbatas, hanya diberikan pada subkelas, dan dari dalam kelas.

4. Exception Eksepsi adalah suatu kondisi abnormal yang terjadi pada saat pengeksekusian suatu perintah. Oleh karena dalam Java everything is object maka suatu eksepsi juga direpresentasikan oleh sebuah yang menjelaskan tentang eksepsi tersebut. Penanganan eksepsi pada java membawa pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi Java adalah objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu bagian program. Saat suatu keadaan eksepsi muncul, suatu objek exception dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu.

Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil. Eksepsi dapat muncul tidak beraturan dalam suatu method, atau dapat juga dibuat secara manual dan nantinya melaporkan sejumlah keadaan kesalahan ke method yang memanggil. Lima keywords yang digunakan oleh Java untuk menangani eksepsi ini yaitu : try, catch, finally, throw, dan throws. 1. Try Try digunakan untuk menentukan suatu blok program yang harus dijaga terhadap semua eksepsi, setelah blok try masukkan bagian catch, yang menentukan tipe eksepsi yang akan ditangkap. 2. Catch Blok catch digunakan untuk menempatkan kode-kode program Java yang digunakan untuk menangani sebuah exception tertentu. 3. Throw Throw digunakan untuk secara eksplisit melemparkan suatu eksepsi. Pertama harus mendapatkan penanganan dalam suatu instance throwable, melalui suatu parameter kedalam bagian catch, atau dengan membuatnya menggunakan operator new. 4. Throws Throws digunakan untuk mengenali daftar eksepsi yang mungkin di throw oleh suatu method. Jika tipe eksepsinya adalah error, atau RuntimeException, atau suatu subclassnya, aturan ini tidak berlaku, karena tidak diharapkan sebagai bagian normal dari kerja program. 5. Finally Bagian finally akan selalu dieksekusi, di blok finally dapat memberikan perintah-perintah finalisasi. Jika tidak ada eksepsi yang cocok dengan bagian catch maka setelah blok try akan langsung di eksekusi ke blok finally.

5. GUI The Java Foundation Class (JFC), merupakan bagian penting dari Java SDK, yang termasuk dalam koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI. GUI (Graphical User Interface), memungkinkan user untuk berinteraksi dengan komputer secara lebih baik. JFC termasuk diantara 5 bagian utama dari API yaitu AWT dan Swing. Tiga bagian lainnya dari API adalah Java2D, Accessibillity, dan Drag dan Drop. Semua itu membantu pengembang dalam mendesain dan

mengimplementasikan aplikasi visual yang lebih baik. 1. AWT (Abstract Windowing Toolkit) AWT memungkinkan para pengembang untuk segera membangun applet dan aplikasi Java menggunakan sekelompok komponen antarmuka pengguna prebuilt. Sejumlah Java IDE yang tersedia mendukung pembuatan user interface menggunakan AWT dengan menyeret-danmenjatuhkan komponen dari toolbar. Tiga bagian umum untuk semua aplikasi Java GUI adalah: Container Container adalah abstract Subclass dari Component Class. Sebuah komponen yang dapat menampung komponen yang lainnya. Container merupakan turunan dari class Komponen yaitu: 1. 2. Panel terdiri dari Applet Window Dialog terdiri dari File Dialog Frame Komponen GUI Abstract Class untuk objek yang dapat ditampilkan pada console dan berinteraksi dengang user. Bagian utama dari semua kelas AWT. Komponen-komponen yaitu Button, Canvas, Checkbox, Container,

Choice, Label, List, Scrollbar, Text Komponen (Text Area dan Text Field). . 2. Swing Swing merupakan perbaikan dari AWT. Swing memiliki 10 kali lebih banyak class, dan kemampuan dibanding AWT. Swing memiliki look-and-feel yang pluggable. Terlihat ketika pembuatan tombol. Semua komponen Swing dimulai dengan huruf J bekerja dengan cara yang sama tapi sedikit berbeda.

Komponen JFrame JApplet JDialog JPanel JLabel JButton

Deskripsi Menampilkan komponen GUI pada Layar Menampilkan komponen GUI pada web browser Popup window Container tempat komponen diletakkan Sebuah area dimana text atau icon dapat ditampilkan Sebuah area dengan label yang digunakan sebagai pemicu dari event saat penekanan (clicked)

JTextfield

Sebuah area dimana input data dari keyboard dapat ditampilkan

JCheckBox JComboBox JList

Sebuah kotak area yang dapat dipilih ataupun tidak Sebuah dropdown list sebuah pilihan Area yang menampilkan list dari item-item yang dapat dipilih

JTextArea

Area yang menampilkan banyak baris dari text yang dapat diedit

JScrollPane JSlider

Sebuah area yang berisi komponen yang dapat di scroll. Sebuah komponen yang memiliki benda yang dapat digeser. Memiliki titik penandaan

3. Java2D Java2D menyediakan sekumpulan fitur untuk memungkinkan menciptakan dan memanipulasi grafis 2D termasuk citra raster, vector, dan styled text. 4. Accessibillity Dengan Accessibillity dapat mengkonversi JFC GUI standar. 5. Drag and Drop Drag and Drop memungkinkan membangun program yang mendukung drag and drop terhadap teks dari satu aplikasi Java ke aplikasi lain, atau dari aplikasi Java ke aplikasi non Java, dan sebaliknya,.

BAB II PEMBAHASAN Tujuan dari program yaitu dapat membuat program dengan menggunakan konsep Graphics Primitive untuk penggambaran elips menggunakan algoritma Midpoint. Output program yang ditampilkan adalah gambar animasi yang membentuk sebuah bunga berwarna kuning. Project disimpan dengan nama Flower.

Penjelasan Coding Prgram PanelImage.java package image; Kelas yang dideklarasikan di file akan menjadi milik package. Kalimat package mendefinisikan ruang nama (spacename) di mana kelas disimpan. image disebut identifier atau nama paket. import java.awt.*; Menjelaskan bahwa kita mengimport kelas JoptionPane dari java.awt package. Paket ini berisi kelas yang menyediakan fitur grafis dan antar muka pemakai seperti button, window, dialog box, dan text field. Tanda bintang (*) artinya melakukan import semua kelas di paket java.awt. import java.awt.image.*; Kelas ini adalah kelas abstrak yang merepresentasikan suatu citra yang akan ditampilkan pada flatform bebas import java.awt.event.*; Untuk menangani kejadian atau event handling, di dalam paket java.awt telah tersedia paket java.awt.event. Event Handling berupa method dari interface yang disebut dengan event listener sehingga jikasebuah aplikasi Java ingin menangani sebuah

event maka ia akan mengimplementasikan interface event-listener yang cocok. Tanda bintang (*) artinya melakukan import semua kelas di paket javax.awt.event. import javax.swing.*; Menjelaskan bahwa kita mengimport kelas JoptionPane dari javax.swing package atau bisa juga ditulis import javax.swing.JOptionPane. Tanda bintang (*) artinya melakukan import semua kelas di paket javax.swing. public class PanelImage extends JPanel { Class PanelImage merupakan subclass atau kelas turunan dari class JPanel (superclass) memiliki access modifier public. Untuk membuat subclass menggunakan kata kunci extends. Kurung kurawal {} mengindikasikan awal dan akhir blok. Class PanelImage menggambarkan objek PanelImage yang memiliki atribute dan method (fungsi). private String filename; Atribute filename dengan tipe data String memiliki akses modifier private. private BufferedImageOp operation; Atribute operation dengan tipe data BufferedImageOp memiliki akses modifier private. private JSplitPane splitPane = new JSplitPane(); Dilakukan instanisasi class JSplitPane dengan nama splitPane, kemudian digunkan perintah New digunakan untuk mealokasikan memori pada fungsi JSplitPane tanpa parameter. JSplitPane digunakan untuk membuat pemisah antar komponen. private JPanel parameterPanel; Atribute parameterPanel dengan tipe JPanel memiliki akses modifier private. JPanel sebagai container tempat komponen diletakkan.

private BufferedImage sourceImage, destinationImage; Atribute sourceImage dan destinationImage dengan tipe BufferedImage memiliki akses modifier private. private JLabel source = new JLabel("Original"); Dilakukan instanisasi class JLabel dengan nama source dengan akses modifier private, kemudian digunkan perintah New digunakan untuk mealokasikan memori pada fungsi constructor JLabel dengan parameter "Original". private JLabel dest = new JLabel("Invert"); Dilakukan instanisasi class JLabel dengan nama dest dengan akses modifier private, kemudian digunkan perintah New digunakan untuk mealokasikan memori pada fungsi constructor JLabel dengan parameter "Blurred". public PanelImage() { createPanel(); } Method PanelImage() dengan akses modifier public tanpa parameter. Pada method ini dipanggil method createPanel() tanpa parameter. public PanelImage(String filename) { sourceImage = loadImage(filename); createPanel(); } Method PanelImage() dengan akses modifier public memiliki parameter filename dengan tipe String. Kemudian dilakukan pengisisan sourceImage dengan nilai loadImage memiliki parameter filename. Pada method ini dipanggil method createPanel() tanpa parameter. public void addParameterPanel(JPanel panel) {

add(panel, BorderLayout.SOUTH); parameterPanel = panel; } Method addParameterPanel () dengan akses modifier public memiliki parameter panel dengan tipe Jpanel. Void berarti metode tidak mengirim apapun setelah selesainya. Pada method ini dipanggil method add() dengan parameter untuk menambahkan BorderLayout di bagian SOUTH. Kemudian dilakukan pengisisan nilai parameterPanel dengan nilai panel. public void createPanel() { source.setHorizontalAlignment(SwingConstants.CENTER); dest.setHorizontalAlignment(SwingConstants.CENTER); Method createPanel() dengan akses modifier public tanpa parameter. Void berarti metode tidak mengirim apapun setelah selesainya. Pada method ini dipanggil method setHorizontalAlignment() pada objek source dengan parameter. Kemudian

memanggil method setHorizontalAlignment() pada objek dest dengan parameter. splitPane.add(source, "left"); Memanggil method add() pada kelas splitPane dengan parameter source dan argument string berupa left. splitPane.add(dest, "right"); Memanggil method add() pada kelas splitPane dengan parameter dest dan argument string berupa right setLayout(new BorderLayout()); Memanggil method setLayout(). Pada method ini dilakukan pemanggilan method BorderLayout(). New digunakan untuk mealokasikan memori. add(splitPane, BorderLayout.CENTER);}

Memanggil method add () dengan parameter, method add digunakan untuk menambahkan BorderLayout di bagian CENTER pada objek splitPane. public void displayImage(){ Method displayImage() dengan akses modifier public tanpa parameter. Void berarti metode tidak mengirim apapun setelah selesainya. source.setIcon(new ImageIcon(sourceImage)); Memanggil method setIcon (). Pada method ini dilakukan pemanggilan method ImageIcon () dengan parameter sourceImage. New digunakan untuk mealokasikan memori. destinationImage = getOperation().filter(sourceImage,null); Mengisi nilai destinationImage dengan nilai dari pemanggilan method getOperation() dan method filter() dengan parameter sourceImage,null. dest.setIcon(new ImageIcon(destinationImage)); } Memanggil method setIcon() pada objek dest. Pada method ini dipanggil method ImageIcon() dengan parameter destinationImage. New digunakan untuk

mealokasikan memori. public BufferedImageOp getOperation() { return operation; } Method getOperation() dengan akses modifier public tanpa parameter. Dengan perintah return, alur eksekusi dikembalikan ke bagian dari program yang memanggil method tersebut. Method ini mengembalikan nilai operation dengan tipe BufferedImageOp.

public BufferedImage loadImage(String path){ BufferedImage bi; Method loadImage() dengan akses modifier public memiliki parameter path dengan tipe data String. Method loadImage() memiliki tipe BufferedImage. Pada method ini dilakukan instanisasi objek BufferedImage dengan bi. try { Try adalah blok untuk menangani exception. Pemanggilan terhadap method yang menghasilkan exception harus ditangani di blok try. Blok try diawali dan diakhiri kurung kurawal {}. Image image = new ImageIcon(path).getImage(); Dilakukan instanisasi class Image dengan nama Instance image, kemudian digunakan perintah New untuk mealokasikan memori pada fungsi constructor getImage tanpa parameter yang terdapat pada class ImageIcon dengan parameter path. if (image != null) { bi = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics2D g2 = bi.createGraphics(); g2.drawImage(image, null, null); return bi; } else return null; } Pada fungsi try dilakukan pengecekan nilai image apakah tidak sama dengan null, jika bernilai true maka objek bi diisi dengan objek BufferedImage yang didapat dari pemanggilan method getWidth dengan parameter bernilai null dan pemanggilan method getHeight yang memiliki parameter null pada kelas image. Serta pemanggilan

method TYPE_INT_RGB untuk mengatur tipe warna gambar. Dilakukan instanisasi class Graphics2D dengan nama instance g2 yang di dapat dari pemanggilan method createGraphics() pada objek bi. Dilakukan pemanggilan method drawImage dengan parameter image, null, null pada objek g2. Dengan perintah return, alur eksekusi dikembalikan ke bagian dari program yang memanggil method tersebut. Method ini mengembalikan nilai bi. Jika gambar bernilai null, maka akan dipanggil perintah return null untuk mengembalikan nilai null. catch (Exception e) Catch adalah blok yang menangkap beberapa tipe exception. Jika blok catch menangani tipe exception yang diberikan maka blok catch akan mengambil alih kendali eksekusi. Jika blok catch tidak dapat menangani exception maka exception dilewatkan ke pemanggil method tersebut. Exception yang ditangkap kemudian diinstance dengan e. javax.swing.JOptionPane.showMessageDialog(null, e.getMessage(), "Error", javax.swing.JOptionPane.ERROR_MESSAGE); return null; }} Baris program tersebut berfungsi untuk menampilkan pesan kesalahan(error) yang terjadi dan mengembalikan nilai null. public void resizePanel() { Method resizePanel() dengan akses modifier public tanpa parameter. Void berarti metode tidak mengirim apapun setelah selesainya. int height = sourceImage.getHeight() + (parameterPanel == null ? 0 : parameterPanel.getHeight() + 150);

nilai variable height dengan tipe int didapat dari nilai tinggi sourceImage (sumber gambar) yang telah ditambah dengan nilai dari tinggi parameterPanel (yang telah dicek apakah benar nilai parameter sama dengan null) dan kemudian ditambah 150. int width= 2*sourceImage.getWidth() + splitPane.getDividerSize()+150; nilai variable width dengan tipe int didapat dari dua kali nilai lebar sourceImage (sumber gambar) yang telah ditambah dengan nilai dari komponen pemisah antara kedua gambar dan kemudian ditambah 150. setSize(width, height); Mengatur size dengan parameter width untuk ukuran lebar dan height untuk ukuran tinggi. splitPane.setDividerLocation(width/2); } Memanggil fungsi setDividerLocation dengan nilai parameter width dibagi 2 pada objek splitPane. Baris ini berfungsi untuk membuat pemisah antara gambar original dengan gambar hasil inverse. public void setImage(BufferedImage image) { sourceImage = image; } Method setImage() dengan akses modifier public memiliki parameter image dengan tipe BufferedImage . Void berarti metode tidak mengirim apapun setelah selesainya. Pada method ini dilakukan pengisian nilai sourceImage dengan nilai parameter image. public void setOperation(BufferedImageOp op) { operation = op; } Method setOperation () dengan akses modifier public memiliki parameter op dengan tipe BufferedImageOp. Void berarti metode tidak mengirim apapun setelah

selesainya. Pada method ini dilakukan pengisian nilai operation dengan nilai parameter op. public void showPanel(String title) { Method showPanel () dengan akses modifier public memiliki parameter title dengan tipe String. Void berarti metode tidak mengirim apapun setelah selesainya. final JFrame frame = new JFrame(title); Dilakukan instanisasi class final JFrame dengan nama Instance franme, kemudian digunkan perintah New digunakan untuk mealokasikan memori pada fungsi constructor JFrame dengan parameter title. frame.setContentPane(this); Memanggil method setContentPane () pada objek frame dengan parameter bernilai this. This digunakan untuk merepresentasikan suatu current nilai objek dan mengakses variable-variabel kelas serta method. frame.setSize(getSize()); Memanggil method setSize() pada objek frame dengan parameter berupa method getSize(). frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); };}); Memanggil fungsi addWindowListener() pada kelas frame. Method windowClosing() dengan akses modifier public memiliki parameter e dengan tipe WindowEvent . Void berarti metode tidak mengirim apapun setelah selesainya. Memanggil method exit(0) pada objek System dengan parameter berupa nilai nol.

Method addWindowListener digunakan untuk mengasosiasikan kejadian yang berhubungan dengan window dengan objek baru kelas WindowEventHandler. Kelas WindowEventHandler merupakan subkelas dari WindowAdapter, digunakan untuk menangani kejadian penutupan window. Kejadian penutupan window ditangani metode exit() di kelas System untuk mengakhiri program. frame.show(); Memanggil method show() pada objek frame tanpa parameter. Insets insets = frame.getInsets() Dilakukan instanisasi class Insets dengan nama insets, kemudian nilai insets didapat dari pemanggilan fungsi getInsets pada objek frame. Insets digunakan untuk menyatakan margin yang muncul pada semua sisi komponen. frame.setSize(frame.getWidth()+ insets.left + insets.right, frame.getHeight() + insets.top + insets.bottom); Mengatur ukuran frame dengan parameter ukuran lebar (lebar frame + margin kiri + margin kanan), dan ukuran tinggi (tinggi frame + margin atas + margin bawah). frame.setVisible(true); }} Memanggil method setVisible() pada objek frame dengan parameter bernilai true.

Penjelasan Coding Prgram InvertImage.java package image; Kelas yang dideklarasikan di file akan menjadi milik package. Kalimat package mendefinisikan ruang nama (spacename) di mana kelas disimpan. image disebut identifier atau nama paket. import java.awt.image.*;

Kelas ini adalah kelas abstrak yang merepresentasikan suatu citra yang akan ditampilkan pada flatform bebas import java.awt.*; Menjelaskan bahwa kita mengimport kelas JoptionPane dari java.awt package. Paket ini berisi kelas yang menyediakan fitur grafis dan antar muka pemakai seperti button, window, dialog box, dan text field. Tanda bintang (*) artinya melakukan import semua kelas di paket java.awt. import java.awt.geom.*; Paket ini berisi kelas yang menyediakan fitur objek-objek geometri. class InvertImage extends PanelImage { Class InvertImage merupakan subclass atau kelas turunan dari class PanelImage (superclass). Untuk membuat subclass menggunakan kata kunci extends. Kurung kurawal {} mengindikasikan awal dan akhir blok. Class InvertImage menggambarkan objek InvertImage r yang memiliki atribute dan method (fungsi). private byte invert[ ]; Inisialisasi atribut invert dengan tipe data byte memiliki akses modifier private. Invert adalah nama array. private byte asli[ ]; Inisialisasi atribut asli dengan tipe data byte memiliki akses modifier private. asli adalah nama array. public InvertImage() { Method InvertImage() dengan access modifier public tanpa parameter. super();

Untuk menetapkan judul window dengan memanggil konstruktor JFrame tanpa parameter dengan argument string. Pemanggilan ini dengan menggunakan keyword super. initialize(); } Method initialize() digunakan untuk memanggil method private void initialize(). public InvertImage(String filename) { Method InvertImage ( ) dengan access modifier public memiliki parameter filename dengan tipe data String. super(filename); Untuk menetapkan judul window dengan memanggil konstruktor JFrame dengan parameter filename menggunakan argument string. Pemanggilan ini dengan menggunakan keyword super. initialize(); } Method initialize() digunakan untuk memanggil method private void initialize(). private void initialize() { Method initialize() dengan access modifier private tanpa parameter. Void berarti metode tidak mengirim apapun setelah selesainya. try { invert = new byte[256]; asli = new byte[256]; for (int i=0; i