Modul 6: Abstract Class, abstract method Setelah mengikuti mata kuliah ini mahasiswa dapat menjelaskan konsep abstract class dan penggunaannya Modul 6 - Abstract class and method 1 Pengantar : 1. 2. 3. 4. 5. Dalam modul ini akan diuraikan beberapa topik bahasan yaitu : class abstract method abstract studi class abstract java : Number class turunan Number :Integer, Float, Long,Double sebagai wrapper konversi data: bilangan ke string Modul 6 - Abstract class and method 2 1. Pengertian abstract class Suatu kelas sangat mungkin didefinisikan sebagai super class yang darinya diturunkan sub-klas sub-klas turunannya Kita tidak bermaksud mendefinisikan objek dari super class tersebut. Super class tersebut didefinisikan semata-mata hanya sebagai “payung” atau “induk” dari klas-klas turunannya. Dari klas-klas turunan ini lah objek yang sebenarnya akan diciptakan. Suatu super klass yang didefinisikan seperti ini dinamakan sebagai class abstract. Modul 6 - Abstract class and method 3 2. Pengertian abstract method Di dalam class abstract dapat didefinisikan atribut-atribut dan method-method. Atribut dan method yang didefinisikan dalam klass abstract dimaksudkan merupakan sesuatu yang umum dan terdapat pada sub-kelas sub-kelas turunannya. Suatu abstract method didefinisikan dengan cukup mendeklarasikan namanya pada class abstract dan mengoverride pada masing-masing kelas turunannya dengan menyesuaikan dengan kebutuhan kelas turunannya tersebut. Suatu class harus didefinisikan sebagai class abstract apabila minimal ada satu method yang didefinisikan sebagai abstract method. Modul 6 - Abstract class and method 4 Contoh kasus MailBox Metod play() : didefinisikan sebagai abtract method , karena play untuk text adalah berbeda dengan play untk voice Sehingga class Message adalah class abstract Untuk data sender dan metod getSender(), semua class turunan memiliki definisi yang sama sehingga data dan metod tersebut didefinisikan bukan sebagai abstrat Modul 6 - Abstract class and method 5 Class Message Satu-satunya metod abstract Yang mengharuskan class Message didefinisikan secara abtract Untuk class turunan FaxMessage tidak didefinisikan Modul 6 - Abstract class and method 6 class Mailbox Modul 6 - Abstract class and method 7 class MailboxTest (class utama) berlanjut … Modul 6 - Abstract class and method 8 class MailboxTest … lanjutan Modul 6 - Abstract class and method 9 Hasil program MailboxTest Pesan ke 1 : text dari : AMIR isi pesan : HABIS KULIAH LANGSUNG PULANG YA JANGAN MAIN2 Pesan ke 2: text dari : BUDI isi pesan : SUDAH LAPAR Pesan ke 3 : voice dari : JOHAN isi pesan : suara music dalam file spacemusic.au Modul 6 - Abstract class and method 10 3. Class abstract java : Number Dalam class java ada class abstract, yaitu class Number Class ini menjadi payung bagi class number wrapper, yaitu : Integer, Long, Float, dan Double Class Number memiliki 4 buah metod abstract yaitu intValue(), longValue(), floatValue() dan doubleValue() Modul 6 - Abstract class and method 11 4. Class Turunan Number 4 class didefnisikan secara class final Pada setiap class turunan didefnisikan metod-metod abstractnya Pada setiap class turunan didefinisikan metod toString() Modul 6 - Abstract class and method 12 5. Penggunaan class Number wrapper untuk konversi data Pada setiap operasi data umumnya diperlukan proses KONVERSI DATA DARI STRING KE BILANGAN DAN SEBALIKNYA Untuk konversi data dari String menjadi bilangan ditempuh dengan menjadikan string tersebut sebagai parameter pada pembuatan objek. Selanjutnya karena pada class ada metod intValue(), longValue(), floatValue() dan doubleValue() maka nilainilai bilangan yang bersangkutan :int, long, float dan double dapat diperoleh Untuk konversi dari bilangan (int, long, float, double) ke string cara yang ditempuh adalah dengan menjadikan bilangan tersebut sebagai argumen pada pembuatan objek class numberWrapper dan kemudian menggunakan metod toString() untuk mengambil stringnya Modul 6 - Abstract class and method 13 Program cetak Hello n kali dengan n diinput dari command line Tahukah anda apa fungsi String[] arg dalam metod main?? Jawabannya adalah bahwa setiap program dieksekusi dengan java.exe, maka kita diberi kesempatan melewatkan parameter 1, 2 atau lebih Parameter yang dilewatkan selanjutnya disimpan sebagai string dalam array of string arg yang akan otomatis diciptakan dengan ukuran sesuai dengan jumlah para meter Jika parameter satu, misalnya untuk nama program Cetak.java yang tyelah dikompilasi > java Cetak Hello disini “Hello” akan disimpan dalam arg[0] Jika parameter 2, misalnya >java Cetak Hello AKPRIND Disini “Hello” akan disimpan dalam arg[0] dan akpirnd pada arg[1] Dst… Modul 6 - Abstract class and method 14 Program CetakHello.java Dalam program ada statemen Integer N= new Integer(arg[0]) arg[0] untk eksekusi tersebut berisi string “4” Seteleh objek Integer N dibuat kita dapat memperoleh nilai int dari objek N dengan menggunakan intValue() Dengan demikian n adalah nilai int 4 untuk string “4” Konversi berhasil dilakukan Modul 6 - Abstract class and method 15 Baca dari keyboard ? Baca bilangan dari keyboard ? Untuk mencetak kelayar kita menggunakan System.out.println(…) Bagaimana untuk membaca data dari keboard?? Pemrogram java awal akan kebingungan karena java tidak menyediakan statemen langusng untuk membaca data baik string atau bilangan dari keyboard Sementara sebagaimana C++ punya statemen cin>> , PASCAL punya statemen read(var) dan BASIC punya steteman INPUT untuk membaca data baik string maupun bilangan dari keyboard Persoalan ini dapat dijawab dengan mendefinisikan sendiri metod untuk keperluan tersebut menggunakan statemen dasar java : System.in.read() Modifikasi dilakukan karena System.in.read() adalah membaca data 1 byte dari keyboard. Sehingga harus didefinisikan metod untuk membaca berkali-kali sampai diinputkan ENTER Modul 6 - Abstract class and method 16 Membaca string dari keyboard dengan metod bacaString() bacaString() didefinisikan untuk membaca data string dari keyboard sampai diketik enter. static String bacaString() throws Exception {String s="";int c=0; while(c!=13) {c=System.in.read(); if((c!=13)&(c!=10)){s+=(char)c; } } return s; } Modul 6 - Abstract class and method 17 bacaInt(), bacaFloat(), bacaDouble() Dari metod bacaString(), kita dapat mengkonversi string menjadi bilangan jika string yang dibaca adalah bilangan static int bacaInt() throws Exception {return Integer.parseInt(bacaString());} static float bacaFloat() throws Exception {return Float.parseFloat(bacaString());} static double bacaDouble() throws Exception {return Double.parseDouble(bacaString());} Penerapan metod-metod tersebut ada dalam program berikut : Modul 6 - Abstract class and method 18 Program lengkapnya… Hasilnya Modul 6 - Abstract class and method 19 Rangkuman Class abstract didefinisikan untuk suatu class yang tidak dibaut objeknya Class abstract hanya dijadikan payung bagi class-class anak yang sejenis Suatu metod didefinisikan sebagai abstract jika ia hanya didefinisikan nama metod dan parameternya Suatu class harus didefinisikan sebagai abstract jika ada satu saja metod abstract Turunan class Number yaitu Integer, Long, Float dan Double dapat digunakan untuk konversi data dari String ke bilangan dan sebaliknya Konversi dapat bolak-balik antara int, long, float dan double ke dan dari string Modul 6 - Abstract class and method 20 Latihan 1. Definisikan suatu class abstract bernama :class Orang dengan ketentuan : • Dalam kelas tersebut ada atribut :Nama (String: yaitu nama orang tersebut) dan Umur (int :yaitu umur orang tersebut). • Constructor dari class Orang didefinisikan dalam class Orang menginisialisasi Nama dan Umur. • Didefinisikans method abstract Cetak(), yang akan dioverride dalam kelas turunannya. 2. Definisikan dua buah kelas turunan dari class Orang yaitu class :Pegawai dan class Mahasiswa. Modul 6 - Abstract class and method 21 Lanjutan… Untuk class Pegawai dengan ketentuan : • Dalam kelas Pegawai ada atribut tambahan yaitu NIP dan Gaji • Mendefinisikan method NaikGaji(), yaitu untuk menaikkan gaji sebesar :10% • Mendefinisikan method Cetak() untuk mencetak :NIP, Nama, Umur (int) dan Gaji (double) Untuk class Mahasiswa dengan ketentuan : • Dalam kelas Mahasiswa ada atribut tambahan yaitu NoMhs (String), Masa studi (int) dan IP (double) • Mendefinisikan method Cetak() untuk mencetak :NoMhs, Nama, Umur, Masa studi dan IP Ujilah kemampuan klas tersebut dengan mendefinisikan klass TestOrang.java untuk program utamanya. Modul 6 - Abstract class and method 22