Anda di halaman 1dari 11

LAPORAN PEMROGRAMAN BERORIENTASI OBYEK PERTEMUAN KE 6

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-6 EXCEPTION HANDLING A. LISTING Terlampir B. PEMBAHASAN LISTING Listing Pertama : import java.util.Scanner; public class latihanJumlah { public static void main(String[] hanafi){ Scanner masuk = new Scanner(System.in); int x,y; int jum; //mendeklarasikan tipe data yang mana pada tipe data tersebut akan digunakan untuk menjumlahkan bertipe integer yaitu variabel x dan y dan untuk pada Scanner yaitu memberi masukan pada keyboard untuk dimasukkan oleh user/programmer. try{ System.out.print("Masukkan Angka ke-1: "); x = masuk.nextInt(); System.out.print("Masukkan Angka ke-2: "); y = masuk.nextInt(); jum = x + y; System.out.println("Nilai penjumlahan = " + jum); } //program try digunakan untuk menagkap kesalahan oleh program dimana pada program diatas manangkap kesalahan apabila user atau programmer memasukkan selain numerik selain bertipe integer maka program akan menangkap kesalahan tersebut fungsi try sendiri yaitu selalu menjalankan meskipun program terdapat kesalahan ataupun tidak. 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()); } //program diatas inilah yang akan dtangkap kesalahannya dan diberi pesan atau peringatan oleh programmer yang ditangkap oleh Exception yaitu menangkap kesalah berupa inputan dimana pada inputan yang dimasukkan oleh user tidsak sama dengan tipe data yang ada di program tersebut dasn fungsi dari catch tidak akan selalu dikerjakan kecuali program mendapatkan bug(error). finally{ System.out.println("Sudah Dilakukan pengoreksian"); } } } // dari program finally ini akan selalu dikerjakan meskipun program berjalan dengan benar ataupun program mendapatkan kesalahan dari fungsinnya ini yaitu memberikan perbedaan mana itu try,catch dan mana itu finally.

C. TUGAS Praktikum ke-7 dengan judul Kelas Abstrak dan Interface: Praktek kelas abstact : public abstract class BangunDatar { public abstract double hitungLuas(); public abstract double hitungKeliling(); /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here } } public class BujurSangkar extends BangunDatar { private double sisi; public BujurSangkar(double sisi){ this.sisi = sisi; } public double hitungLuas(){ return sisi * sisi; } public double hitungKeliling(){ return 4 * sisi; } } public class AbstactSample { public static void main(String[] hanafi){ BangunDatar obyek1 = new BujurSangkar(10); System.out.println("Luas bujur sangkar dengan sisi 10 = "+obyek1.hitungLuas()); System.out.println("Kelilingnya = "+obyek1.hitungKeliling()); } } Hasil outputnya :

Praktek Interface : public interface InterfaceBangunDatar { static final String JENIS="Bangun Datar 2D"; public abstract double hitungLuas(); public abstract double hitungKeliling(); } public class InterfaceBujurSangkar implements InterfaceBangunDatar { private double sisi; public String getJenis(){

return JENIS; } public InterfaceBujurSangkar(double sisi){ this.sisi = sisi; } public double hitungLuas(){ return sisi * sisi; } public double hitungKeliling(){ return 4 * sisi; } } public class InterfaceSample { public static void main(String[] hanafi){ InterfaceBujurSangkar obyek1 = new InterfaceBujurSangkar(10); System.out.println("Jenisnya adalah: "+obyek1.getJenis()); System.out.println("Luas bujur sangkar dengan sisi 10 = "+obyek1.hitungLuas()); System.out.println("Kelilingnya = "+obyek1.hitungKeliling()); } } Hasil outputnya :

Latihan : Menghitung luas dan keliling Lingkaran menggunakan abstract kelas public abstract class hitungLingkaran { public abstract double luasLingkaran(); public abstract double kelilingLingkaran(); /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here } } public class Lingkaran extends hitungLingkaran { private double jari; public Lingkaran(double jari){ this.jari = jari; } public double luasLingkaran(){ return 3.14 * jari * jari; } public double kelilingLingkaran(){

return 2 * 3.14 * jari; } } public class outputLingkaran { public static void main(String[] hanafi){ hitungLingkaran fungsi = new Lingkaran(12); System.out.println("Luas Lingkaran dengan jari-jari 12 = "+fungsi.luasLingkaran()); System.out.println("Keliling Lingkaran dengan jari-jari 12 = "+fungsi.kelilingLingkaran()); } } Hasil outputnya:

Menghitung luas dan keliling segitiga menggunakan Interface kelas public interface hitungSegitiga { public abstract int luasSegitiga(); public abstract int kelilingSegitiga(); } public class InterfaceSegitiga implements hitungSegitiga { private int panjang; private int tinggi; private int sisi; public InterfaceSegitiga(int panjang, int tinggi, int sisi){ this.panjang = panjang; this.tinggi = tinggi; this.sisi = sisi; } public int luasSegitiga(){ return panjang * tinggi / 2; } public int kelilingSegitiga(){ return sisi * sisi * sisi; } } public class outputSegitiga { public static void main(String[] hanafi){ InterfaceSegitiga fungsi = new InterfaceSegitiga(13, 16, 7); System.out.println("Luas segitiga = "+fungsi.luasSegitiga()); System.out.println("Keliling segitiga = "+fungsi.kelilingSegitiga()); } } Hasil outputnya :

Tugas : 1. Membuat kelas abstract Manusia Untuk kelas Manusia : public abstract class Manusia { public abstract String Dosen(); public abstract String Mahasiswa(); protected String nama; protected String alamat; protected int umur; protected String pendidikan; public Manusia(){ nama = ""; alamat = ""; umur = 0; pendidikan = ""; } public Manusia(String nama, String alamat, int umur, String pendidikan){ this.nama = nama; this.alamat = alamat; this.umur = umur; this.pendidikan = pendidikan; } public void info(){ System.out.println("Nama : "+nama); System.out.println("Alamat : "+alamat); System.out.println("Umur : "+umur); System.out.println("Pendidikan : "+pendidikan); } } Untuk kelas Mahasiswa : public class Mahasiswa extends Manusia { private int id; private String jurusan; public Mahasiswa(){ id = 0; jurusan = ""; } public Mahasiswa(int id, String jurusan, String nama, String alamat){ this.id = id; this.jurusan = jurusan; super.nama = nama; super.alamat = alamat; }

public void info(){ System.out.println("Identitas diri : "+id); System.out.println("Jurusan : "+jurusan); System.out.println("Nama : "+nama); System.out.println("Alamat : "+alamat); } public String Dosen() { return nama + alamat + id +pendidikan; } public String Mahasiswa() { return nama + id + jurusan + alamat; } } Untuk kelas Dosen : public class Dosen extends Manusia { private int id; private String jurusan; public Dosen(){ id = 0; } public Dosen(int id, String nama, String alamat, String pendidikan){ this.id = id; super.nama = nama; super.alamat = alamat; super.pendidikan = pendidikan; } public void info(){ System.out.println("Identitas diri : "+id); System.out.println("Nama Dosen : "+nama); System.out.println("Alamat : "+alamat); System.out.println("Pendidikan : "+pendidikan); } public String Dosen() { return nama + alamat + id +pendidikan; } public String Mahasiswa() { return nama + id + jurusan + alamat; } } Kelas untuk menampilkan hasil dari Manusia dan Dosen : public class outputManusia { public static void main(String[] hanafi){ System.out.println("UNTUK KELAS MAHASISWA"); Manusia mh = new Mahasiswa(95410134, "TEKNIK INFORMATIKA", "HANAFI", "NGAWI"); mh.info(); System.out.println(""); System.out.println("UNTUK KELAS DOSEN"); Manusia ds = new Dosen(98765, "CUK SUBIANTORO", "BANTUL", "Strata-2"); ds.info(); } }

Hasil outputnya :

1. Perbedaan antara abstrak kelas dan interface Abstract class adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut. Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan. Namun Abstract class dapat mengimplementasikan method tersebut. Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclassnya. Interface Adalah sebuah blok signature kumpulan method tanpa tubuh (konstan). - Sebuah definisi method yang umum/general yang dapat menghubungkan class-class yang berbeda. Dengan kata lain, interface memungkinkan kita mengimplementasikan method yang sama terhadap class yang tidak ada hubungan sama sekali (tidak dalam satu hirarki) - Oleh karena itu interface bukanlah sebuah class, walaupun memiliki ciri yang serupa dengan abstract class. D. PEMBAHASAN TUGAS Sebelum lebih jauh menjelaskan sedikt yang saya peroleh dari sumber buku tentang apa itu kelas abstract dan interface Kelas abstract Kelas yang diimplementasikan secara parsial dan tujuannya untuk kenyamanan perancangan. Kelas-kelas abstract disusun dari satu metode abstract atau lebih dimana metode-metode dideklarasikan tapi tanpa badana(tidak diimplementasikan). Terdapat batasan-batasan penggunaan abstract : 1. Kita tidak dapat membuat konstruktor yang abstract. 2. Kita tidak dapat membuat metode static yang abstract. Batasan ini menyatakan bahwa metode static dideklarasikan untuk seluruh kelas, maka tidak akan ada implementasi turunan untuk metode static yang abtract. 3. Kita tidak diizinkan membuat metode private yang abstract. Ketika kita menurunkan kelas dari superkelas dengan metode abstract, maka kita harus melakukan penimpaan dan mengimplementasikan semua metode abstract di kelas itu akan menyebabkan kelas masih tetap abtract karena kita tidak dapat melakukan penimpaan terhadap metode private yang abstract. Interface Prototipe untuk kelas yang berguna ditinjau dari perspektif rancangan logis. Deskripsi ini hampir serupa dengan kelas abstract. Serupa namun tidak sama. Kelas abstract adalah kelas yang diimplementasikan secara parsial. Interface adalah kelas abstrak yang sepenuhnya tidak diimplementasikan. Sepenuhnya tidak diimplementasikan berarti tidak ada metode yang todak diimplementasikan. Juga data anggota di interface dapat dipastikan final statis yang berati konstanta merni. Manfaat penggunaan interface banyak yang sama dengan menfaat kelas abstract. Interface menyediakan sarana mendefinisikan protokol kelas tanpa kawatir rincian-rincian implemetasi. Dengan cara ini kita dapat membuat proyek besaer menjadi sangat lebih mudah dikelola.

Begitu interface telah dirancang, maka pengmbangan kelas dapat dilakukan tanpa kawatir mengenai komunikasi antar kelas-kelas. Kelas manusia (Super kelas) : public abstract class Manusia { public abstract String Dosen(); public abstract String Mahasiswa(); protected String nama; protected String alamat; protected int umur; protected String pendidikan; //pemberian atribut yang dimiliki oleh umumnya manusia dan sebagai super kelas sebagai kelas induk yang dibuat pada kelas abstract. public Manusia(){ nama = ""; alamat = ""; umur = 0; pendidikan = ""; } //mandeklarasikan konstruktor dimana ketika konstruktor tersebut untuk menjaga apabila user tidak memasukkan atribut-atribut yang ada di kelas manusia maka akan mandefault kosong. public Manusia(String nama, String alamat, int umur, String pendidikan){ this.nama = nama; this.alamat = alamat; this.umur = umur; this.pendidikan = pendidikan; } //membuat konstruktor yang kedua dimana pada konstruktor tersebut untuk menginisiasi pada tipe data yang dimiliki oleh kelas manusia fungsinya untuk menghasilkan output mana yang sebagai tipe data dan mana yang sebagai untuk outputan program. public void info(){ System.out.println("Nama : "+nama); System.out.println("Alamat : "+alamat); System.out.println("Umur : "+umur); System.out.println("Pendidikan : "+pendidikan); } } //digunakan untuk menghasilkan output pada program agar seorang programer tidak kesulitan pada program utamannya untuk membuat tampilan output lagi. Tapi kalau sudah dilakukan pembuatan metode yang sedemikian rupa maka seorang programmer tinggal membuat obyek dan dilanjutkan dengan nama methodnya. Kelas mahasiswa (subkelas) public class Mahasiswa extends Manusia { private int id; private String jurusan; public Mahasiswa(){ id = 0; jurusan = ""; }

//program diatas yaitu pemberian atribut kenapa kok Cuma diberi dua atribut saja karena dalam kelas mahasiswa itu sebagai subkelas jadi apabila memiliki atribut yang sama maka tinggal diturunkannya atau diwarisi pada kelas manusia. public Mahasiswa(int id, String jurusan, String nama, String alamat){ this.id = id; this.jurusan = jurusan; super.nama = nama; super.alamat = alamat; } //pemberian konstruktor untuk menginisiasi kenapa dalam atribut yang diinisiasi diberi super karena itulah yang menunjukkan atribut pada kelas induk untuk diturunkannya pada kelas mahasiswa. public void info(){ System.out.println("Identitas diri : "+id); System.out.println("Jurusan : "+jurusan); System.out.println("Nama : "+nama); System.out.println("Alamat : "+alamat); } //membuat method yang digunakan untuk memberi keterangan hasil output pada program yang telah dieksekusi. public String Dosen() { return nama + alamat + id +pendidikan; } .//kenapa dalam kelas mahasiswa terdapat method dosen soalnya pada kelas abstract manusia (indukkelas) sudah dideklarasikan kelas mahasiswa dan kelas dosen apabila ini dihapus maka program akan mengeluarkan kesalahan atau memberi pesan kurang pada methodnya. public String Mahasiswa() { return nama + id + jurusan + alamat; } } //method yang dideklarasikan pada kelas abstract yang dipanggil pada kelas mahasiswa diikuti dengan atribut-atibut yang dimiliki oleh mahasiswa public class Dosen extends Manusia { private int id; private String jurusan; public Dosen(){ id = 0; } //untuk anak kelas terdapat pada kelas dosen mempunyai atribut 4 kenapa Cuma dideklarasikan 2 saja soalnya atribut yang dimiliki oleh dosen itu 2 diantarannya sama dengan kelas manusia itulah hebatnya pada penurunan kelas atau sering kita kenal dengan pewarisan untungnya ialah seorang programmer tidak perlu capek-capek menulis lagi pada anakkelasnya dengan catatan atribut yang dimiliki sama dengan induk kelasnya. public Dosen(int id, String nama, String alamat, String pendidikan){ this.id = id; super.nama = nama; super.alamat = alamat;

super.pendidikan = pendidikan; } //konstruktor yang digunakan untuk menginisiasi atribut supaya program tidak ambigu untuk membedakan mana yang atribut dan mana yang inisiasi dimasukkan pada program utama. public void info(){ System.out.println("Identitas diri : "+id); System.out.println("Nama Dosen : "+nama); System.out.println("Alamat : "+alamat); System.out.println("Pendidikan : "+pendidikan); } //method yang digunakan untuk menghasilkan output. public String Dosen() { return nama + alamat + id +pendidikan; } public String Mahasiswa() { return nama + id + jurusan + alamat; } } //pejelasan ini hampir sama dengan kelas mahasiswa yang membedakan adalah pada kelas dosen kenapa ada methot mahasiswa jawabnya pun sama. public class outputManusia { public static void main(String[] hanafi){ System.out.println("UNTUK KELAS MAHASISWA"); Manusia mh = new Mahasiswa(95410134, "TEKNIK INFORMATIKA", "HANAFI", "NGAWI"); mh.info(); System.out.println(""); System.out.println("UNTUK KELAS DOSEN"); Manusia ds = new Dosen(98765, "CUK SUBIANTORO", "BANTUL", "Strata-2"); ds.info(); } } //untuk pemanggilan dari ke dua kelas yaitu pada mahasiswa dan dosen diberikan kelas yang bernama outputmanusia disini kita Cuma membuat obyek untuk tiap kelasnya lalu diikuti dengan nama kelas yang akan dilihat hasil akhirnya begitu juga kelas satunya yaitu kelas dosen.