Anda di halaman 1dari 7

LAPORAN PEMROGRAMAN BERORIENTASI OBYEK PERTEMUAN KE 5

Di Susun Oleh : Nama : Mohamad Hanafi Nim : 095410134 Jurusan : Teknik Informatika/Strata-1

LABORATORIUM TERPADU Sekolah Tinggi Manajemen Informatika dan Komputer


AKAKOM

Yogyakarta 2011

PERTEMUAN KE-5 POLYMORPHISME

A. LISTING Terlampir B. PEMBAHASAN LISTING Pada pertemuan kali ini kita disuguhkan dengan praktikum yang sama dengan praktikum sebelumnya karena atau disebabkan ada beberapa kendala masalah. Bahkan listing yang saya buat ini sama persis dengan praktek yang sebelumnya mungkin Cuma beda dari segi penambahan parameter yang berbeda dari praktek sebelumnya. package prakpol; /** * * @author Student */ class EkspresiWajah { public String respons(String bntkmata,String eksbibir,String bntktelinga){ return bntkmata + eksbibir + bntktelinga; } } // program diatas menyatakan tentang pembuatan class ekspresi wajah seseorang dengan menggunakan Overloading yang berarti pendefinisian ulang suatau metode dalam yang sama, methode disini menggunakan method respons pada program ini dijadikan superclass(kelas induk) dengan parameter yang digunakan ialah bentuk mata, ekspresi bibir, bentuk telinga class Gembira extends EkspresiWajah{ public String respons(String eksbibir,int bntkmata,String bntktelinga){ return eksbibir + bntkmata + bntktelinga; } } //untuk kelas gembira yaiitu merupakan turunan dari ekspresi wajah atau bisa dikatakan dengan subclass(kelas anak) yang menggunakan kata String Extends yang didalamya menggunkan parameter ekspresi bibir, bentuk mata, bentuk telinga ketika sedang gembira dengan menggunakan method yang sama seperti pada induk kelas class Sedih extends EkspresiWajah{ public String respons(int lebarbibir, String bntkmata, String bntktelinga){ return lebarbibir + bntkmata + bntktelinga; } } // program ini pun sama dengan class gembira yang diturunkan pada kelas EkspresiWajah sedangkan parameter yang digunakan lebar bibir, bentuk mata dan bentuk telinga yang perlu diingat adalah apabila pada public tipenya int maka pada tipe data methodnya pun int. //untuk setiap return pada tiap class yaitu berfungsi untuk mengembalikan nilai yan dimasukkan oleh user pada program yang terakhir atau lebih tepatnya pada program utama. class Marah extends EkspresiWajah{ public String respons(String warnamata, String bntkbibir, int krtnwajah){ return warnamata + bntkbibir + krtnwajah; } }

//pada program ini mempunyai class Marah yang diwarisi oleh class EkspresiWajah mempunyai method respons pada intinya sama dengan pembahasan subkelas-subkelas yang ada diatasnya Cuma yang membedakan adalah bentuk parameter yang berbeda. public class Emosional { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here EkspresiWajah obj = new EkspresiWajah(); Gembira objG = new Gembira(); Sedih objS = new Sedih(); Marah objM = new Marah(); System.out.println("Ekspresi wajah : "+obj.respons("sipit ","lebar ","agakmelebar")); System.out.println("Ekpresi wajah gembira : "+objG.respons("mengecil ", 1, " agakmengecil")); System.out.println("Ekpresi wajah sedih dengan ukuran lebar bibirnya : "+objS.respons(3, " lebar", " membesar")); System.out.println("Ekspresi wajah lagi marah : "+objM.respons("merah ", "terlalumaju ", 6)); } }// pada program utam ini kita membuat obyek baru yang sebelumnya diikuti denga nama kelas induk setelah itu diikuti dengan kelas anak dan obyeknya juga setelah dideklarasikan obyeknya kita membuat keluaran dari program yang System.out.println diikuti dengan nama public dan nama methodnya. Untuk hasil outputnya dapat dilihat deperti berikut:

C. TUGAS Praktikum Exception Handling Praktikum : public class LatihanException1 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here int x = 2; int y = x - 2; int z = x / y; System.out.println("Nilai z = " + z); } } Hasil outputnya :

public class LatihanException2 { public static void main(String[] args){ int x = 2; int y = x - 2; try{ int z = x / y; System.out.println("Nilai z = "+z); } catch (ArithmeticException e){ System.out.print("Terdapat Kesalahan: "); System.out.println(e.getMessage()); } } } Hasil outputnya :

public class ExceptionFinally { public static void main(String[] args){ int ages[]=new int[5]; try{ System.out.println(ages[7]); } catch(ArrayIndexOutOfBoundsException exp){ System.out.println("Array Tidak bisa diakses"); } finally{ System.out.println("Sudah dilakukan pengecekan"); } } } Hasil outputnya :

Latihan: import java.util.Scanner; public class Latihan { public static void main(String[] hanafi){ Scanner masuk = new Scanner(System.in); int x; try{ System.out.print("Masukkan Angka: "); x = masuk.nextInt(); System.out.println("Nilai x = " + x); } catch (Exception e){ System.out.println("Maaf yang anda Masukkan salah silahkan coba ulangi"); System.out.print("Terdapat Kesalahan: "+ e); System.out.println(e.getMessage()); } finally{ System.out.println("Sudah Dilakukan pengoreksian"); } } } Hasil outputnya : Bila dimasukkan angka

Bila dimasukkan selain numerik

Tugas: public class Tugas2 { public Tugas2(){ } public static void main(String[] hanafi) { int a = 10; try{ int b = hanafi.length; int c = a / b; System.out.println("Hasilnya adalah "+ c); int ab[] = {1}; ab[10] = 100;

} catch (ArithmeticException e){ System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); } catch (ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi indeks Array diluar batas"); System.out.println("Diatasi blok penanganan B"); } } } Hasil outputnya :

D. PEMBAHASAN TUGAS Sebelum membahas tugas terlebih dahulu alangkah baiknya kita menjelaskan tentang Exception handling dahulu yaitu kesalahan merupakan normal dari pemrograman. Beberapa kesalahan merupakan kelemahan perancangan atau implementasi. Jenis kesalahan ini bisa disebut bug. Tipe kesalahan kedua bukan bug tapi merupakan hasil situasi/kondisi sistem/lingkungan seperti memori habis atau nama file tidak sah. Kondisi abnormal yang muncul disaat jalan disebut Exception. Exception adalah kondisi pengeculian. Exception adalah sesuatu diluar biasannya. Kebanyakan Exception digunakan sebagai sarana melaporkan kondisi-kondisi kesalahan. Exception menyediakan penerbitan atau pembangkitan kesalah serta cara menanganinnya. Struktur kendali ini memungkinkan kita menspesifikasikan dimana kita dapat menangani suatu tipe kesalahan secara pasti. Untuk program tugasnya ada dibawah ini : public class Tugas2 { public Tugas2(){ } public static void main(String[] hanafi) { int a = 10; try{ int b = hanafi.length; int c = a / b; System.out.println("Hasilnya adalah "+ c); int ab[] = {1}; ab[10] = 100; } catch (ArithmeticException e){ System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); } catch (ArrayIndexOutOfBoundsException e){ System.out.println("Terjadi indeks Array diluar batas"); System.out.println("Diatasi blok penanganan B"); } } }

Program akan menyebabkan div-by-zero-exception jika dijalankan tanpa parameter baris perintah karena pembagi divBy akan bernilai nol. Program berlanjut dari pembagian dengan nol bila kita memberikan argumen beris perintah saat menjalankan program. Program akan membangkitkan ArrayIndexOutOfBoundsException karena array intArr mempunyai panjang 1 sementara diprogram terdapat kode yang memberikan nilai ke elemen 10. Ketika kita menggunakan banyak klausa catch maka kita harus menyusun subkelas Exception lebih dulu muncul sebelum superkelasnya. Penyusunan ini karena pernyataan catch superkelas menangkap Exception tipe kelasnya ditambah semua tipe subkelasnya. Dengan demikian, catch terhadap Exception subkelas tidak pernah dicapai bila terdapat klausa catch terhadap exception superkelas lebih dulu. Kita tidak usah kawatir karena dibantu kompilator java. Kode yang tidak dapat dicapai (unreachable code) akan dilaporkan sebagai kesalahan saat kompilasi.