Modul Praktikum Pbo
Modul Praktikum Pbo
2014
BAB 1
1. Tujuan
PENGENALAN JAVA
Mengetahui cara instalasi Java sebagai bahasa implementasi praktikum pemrograman berorientasi objek Memahami struktur dasar / sintaks bahasa Java. Membuat program bahasa Java sederhana.
2. Dasar Teori Mempersiapkan Lingkungan kerja JAVA Untuk menulis program JAVA digunakan editor. IDE (Integrated Development Environment) yang telah ada untuk Java, antara lain: NetBeans yang disponsori Sun Microsystems. Diperlukan penginstalan Java SDK dan Netbeans IDE 7.2.1. Java SDK NetBeans : adalah platform dasar Java yang diperlukan agar PC dapat
mengeksekusi kode-kode program yang menggunakan bahasa Java. : adalah aplikasi editor terpadu (IDE) yang menyediakan kontrol-
kontrol visual dalam pemrograman desktop. a. Instalasi JAVA SDK Java Development Kit (JDK) dapat didownload pada situs Java Sun Microsystem, yaitu: http://java.sun.com. Pada instalasi ini digunakan versi jdk1.7.1_02. Instalasi dilakukan dengan mengklik installer jdk yang akan mengekstrak file JDK membuat direktori yang diperlukan. Untuk versi jdk dibawah 1.6 diperlukan setting variable path. b. NETBEANS IDE 7.2.1 Tampilan awal NETBEANS IDE 7.2.1 (Gambar 1.1)
Memulai lembar project baru, pilih file New Project... pada bagian menu. Pada bagian choose project Categoty pilih java, dan pada bagian Projects pilih Java Application (Gambar 1.2)
Page 1
Masukkan project name dan project location seperti terlihat pada Gambar 1.3. Sebagai latihan berikan nama project dengan hello_world.
Pada bagian create main class, dapat diberikan nama yang berbeda dari Project Name nya. Tidak perlu menambahkan .Main atau .Java, NetBeans akan secara otomatis memberikan ekstensi-nya. Setelah selesai, klik finish
c. Aturan dasar program java Case sensitive Kurung kurawal{} Komentator titik koma (;) : penggunaan huruf besar dan kecil memiliki arti berbeda : symbol menandai awal dan akhir suatu blok program : diawali tanda // atau tanda /**/ : setiap pernyataan diakhiri dengan symbol titk-koma
Page 2
B C
Analisa program
A
Pada baris ini keyword public memanggil sebuah variable yang menentukan apakah dapat digunakan oleh bagian program. Keyword class yang menyatakan kelas dimana atribut dan fungsi berada di dalamnya. Kelas pertama Hello_world1 adalah kelas pengendali yaitu nama kelas yang akan dikenali compiler java. Pada saat kompilasi, compiler membuat file Hello_world1.class
Baris ini memuat metode pertama program. Metode adalah fungsi yang menjalankan suatu aksi tertentu. Metode main() bersifat statis dan kosong. Eksekusi selalu dimulai dengan metode utama dari kelas yang mengendalikan aplikasi, yaitu kelas yang memiliki nama sama dengan file sumber aplikasi.
Baris ini menampilkan pesan siap belajar java pada hasil running. System adalah kelas yang merupakan bagian dari pustaka java, out objek yang terdapat pada kelas system. Keyword println() mencetak baris menampilkan sebuah teks.
Paket(package)
interface menjadi suatu unit 4. Tugas a. Buatlah sebuah program yang mencetak data berikut : Nama NIM Alamat No.Telp Email : mutiara sugiharto : 12/336147/PA/15080 : Jl. Menteri Supeno No.45 Yogyakarta : 0324-6575757 : [email protected]
Data bisa diganti dengan data anda b. Buatlah sebuah program untuk mencetak kalimat berikut Suatu saat perusahaan computer di dunia akan lebih dari lima dari sekarang. Thomas Watson, IBM, 1943. (Buatlah program dengan pseudocode di bawah ini) System.out.print(Suatu saat ..) System.out.println(akan ..) System.out.println(Thomas)
Page 3
BAB 2
1. Tujuan Praktikan dapat memahami operator dengan benar. Memahami struktur dasar / sintaks bahasa Java. Membuat program bahasa Java sederhana. 2. Dasar Teori a. Identifier Adalah nama yang biasa digunakan dalam pemrograman untuk menyatakan : variable, konstanta, kelas, metode. Identifier valid : No kode_barang kodeBarang Pelanggan_alamat Identifier invalid : 1_harga %barang NamaPelanggan tidak boleh diawali angka symbol % tidak boleh digunakan tidak boleh menggunakan spasi
b. Keyword Identifier penggunaan khusus yang sudah ada pada pustaka Java, dan tidak dapat digunakan sebagai identifier Contoh keyword pada Java : case package return new this public break class c. Tipe Data Dibagi menjadi 2 kategori :
1. Tipe data primitif : tipe data yang mempunyai nilai tertentu, bukan referensi kelas atau objek.Dibagi menjadi 4 tipe data primitive Tipe Data Jenis Storage Nilai Integer(bilangan byte 8 bit -128 s/d 127 bulat short 16 bit 32768 s/d 32767 long 64 bit 922337203s/d 922337203 int 32 bit 2147483648 s/d 2147483647 Float(bilangan nyata) float 32 bit 3.4E-38 s/d 3.4E+38 double 64 bit 1.7E-308 s/d 1.7E+308 char char 16 bit \u0000 s/d \uFFFF boolean boolean 1 bit True atau false 2. Tipe data referensi : terbentuk dari tipe data sederhana dan tipe data referensi string array class interface d. Operator Operator digunakan untuk melakukan pengolahan data, melibatkan konstanta dan variabel yang telah kita buat. Jenis Operator Increment/ Decrement Unary Operator Perkalian/pembagian/modulus Penambahan/pengurangan Operator shift
Laboratorium Teknologi Jaringan
Page 5
BAB 3
FLOWCONTROL
1. Tujuan Praktikan mengenal beberapa perintah untuk seleksi kondisi Praktikan mampu menggunakan bernagai conditional statement 2. Dasar Teori A. Percabangan Pernyataan bentuk if : if (kondisi) Pernyataan; Pernyataan bentuk if else if (condition) statement; else statement;
Bentuk Else if : if (condition){ statement(s); } else if (condition) statement; else if (condition){ statement(s); } else statement4; Switch :
switch (identifier) { case value1: statements; break; case value2: statements; break; default: statements; break; }
Terdapat tiga pilihan tergantung pada nilai variabel identifier: Value1 Value2 Default
Statement else if
int nilai; nilai = 75; System.out.println ("Nilai = nilai); " +
if (isSurplus == 0) if (salesTotal < 10000000) komisi = 0.02; else komisi = 0.04; else if (salesTotal < 10000000) komisi = 0.03; else komisi = 0.06;
if (nilai >= 80) System.out.println ("Predikat else if (nilai >= 69) System.out.println ("Predikat else if (nilai >= 56) System.out.println ("Predikat else if (nilai >= 40) System.out.println ("Predikat else System.out.println ("Predikat
Page 7
2. Dasar Teori a. Pemrograman berorientasi objek : berorientasikan kepada objek, jadi semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. b. Kelas dan Objek Kelas : dengan satu atau lebih objek di dalamnya, didefinisikan sebagai sesuatu yang mempunyai data (sifat) dan fungsi (kelakuan). Konsep pewarisan (inheritance): Proses pembentukan kelas baru dari kelas yang sudah ada menjadi kelas Superclass dan kelas Subclasses. Proses pembentukan kelas
menghasilkan hierarki kelas yaitu puncak hierarki yang disebut kelas abstrak. Konsep overriding : Objek subclass dapat melakukan perubahan perilaku dari metode
yang diwarisinya dari objek superclass-nya.dimanfaatkan pada kasus inheritance dimana penamaan method yang sama namun berbeda implementasi. Objek : instance dari sebuah kelas, objek berisi semua variable dalam kelas/ Variable kelas: digunakan bersama-sama oleh semua objek dalam kelas Variable objek: disebut instance variable dimana semua objek mempunyai salinan variable dari pendefinisian dalam kelas. Variable static: tidak dapat diubah oleh subkelas Metode : terdapat 2 macam metode dan 1 metode pengendali Metode kelas: dapat dieksekusi meskipun tidak terdapat objek pada kelas tersebut Metode objek: metode hanya dapat dieksekusi sehubungan dengan objek tertentu Metode main() : digunakan saat aplikasi java dimulai, berupa keyword static c. Instansiasi Objek : mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari kelas bersangkutan. menginstansiasi kelas dengan menggunakan operator new dan memasukkan instance-nya ke dalam variable referensi yang baru saja dideklarasikan d. Latihan (Praktekkan program berikut, tulis hasil di lembar laporan serta analisa program)
Page 8
metode
Pada program diatas menjelaskan kelas main memanggil fungsi lain. Pada file Rumah, terdapat kelas Rumah dan deklarasi metode r_tamu dan k_mandi. Keyword void tidak mengembalikan nilai metode. Pada file Isirumah di deklarasikan variable Panggil sebagai objek referensi ke metode k_mandi.
Operator titik (.) untuk mengakses (instance variable dan method). Pada Rumah.r_tamu dan Panggil.k_mandi
Analisa Program
Variable instance dideklarasikan setelah dekalarasi kelas , tetapi
sebelum
deklarasi
metode.
Pada
program , setiap objek berasal dari kelas Kucing memiliki variable Nama, Warna, Berat Variable Nama dan Warna bertipe data string dan variable Berat interger,
Membuat objek baru dengan variable instance kucingku Operator titik (.) untuk mengakses (instance variable dan method). Kucingku.Nama=cepot
Page 9
Contoh instansiasi lebih dari satu objek dari satu kelas yang sama
Variabel referensi : kelas digunakan untuk mendeklarasikan sebuah variabel yang berupa objek. Variabel yang berupa objek ini sering disebut dengan referensi objek (object reference). Mengisi Nilai pada Referensi Objek:
Karyawan Karyawan001,Karyawan002; Karyawan001 = new Karyawan(); Karyawan002 = Karyawan001;
Deklarasi variable referensi ke objek karyawan Objek karyawan menyimpan referensinya ke var karyawan001 memasukkan karyawan001 ke dalam karyawan002
variabel karyawan002 sebagai referensi ke objek yang ditunjuk oleh karyawan001. Dengan demikian, variabel karyawan001 dan karyawan002 masing-masing menunjuk ke objek Karyawan yang sama. Maka dari itu, setiap perubahan yang terjadi pada objek yang bersangkutan melalui karyawan001 akan berpengaruh juga pada objek yang ditunjuk oleh karyawan002, karena keduanya sebenarnya adalah objek yang sama, begitu juga sebaliknya.
public class PengaruhReferensiObjek1 { public static void main(String[] args) { /*Instansiasi 2 objek referensi yang mengacu pada 1 objek karyawan */ Karyawan Karyawan001 = new Karyawan(); Karyawan Karyawan002 = Karyawan001; //mengisi data Objek Karyawan melalui objek referensi 1 Karyawan001.nama = "Mischella"; Karyawan001.divisi = "HRD"; //mencetak data object karyawan yang di acu 2 objek referensi System.out.println("Data Karyawan001"); System.out.println("Nama : " + Karyawan001.nama); System.out.println("Divisi : " + Karyawan001.divisi); System.out.println(" "); System.out.println("Data Karyawan002"); System.out.println("Nama : " + Karyawan002.nama); System.out.println("Divisi : " + Karyawan002.divisi);}}
Page 10
double volumeTabung(int jejari, int tinggi) { return (3.14 * jejari * jejari * tinggi); }
Constructor Constructor adalah method khusus yang didefinisikan di dalam kelas dan akan dipanggil secara otomatis tiap kali terjadi instansiasi objek. Constructor itu sendiri berfungsi untuk melakukan inisialisasi nilai terhadap data-data yang terdapat pada kelas yang bersangkutan. Jika kita tidak mendefinisikan constructor pada kelas yang kita buat, maka secara otomatis Java akan membuatkannya untuk kita. Constructor semacam ini dinamakan dengan default constructor Keyword This Java menyediakan kata kunci this. this merupakan referensi ke objek yang sedang aktif. this digunakan di dalam method untuk mewakili nama kelas bersangkutan. Overload terhadap method dan constructor Parameter dalam suatu method dikatakan berbeda dari method yang lainnya apabila: Jumlahnya berbeda, meskipun tipe datanya sama Tipe datanya berbeda, meskipun jumlahnya sama Jumlah dan tipe datanya berbeda Prose pendefinisian method dengan nama sama ini disebut dengan overload
Page 11
implementasi method non-void dengan return public class Karyawan { String ID, nama, divisi; double gaji; void cetakData() { System.out.println("Data Karyawan : "); System.out.println("ID : " + ID); System.out.println("Nama : " + nama); System.out.println("Divisi : " + divisi); System.out.println("Gaji : " + gaji); } double hitungSumbanganZakat() { double zakat = gaji * 0.025; return zakat; } Implementasi method dengan parameter pada kelas Karyawan public class Karyawan { String ID, nama, divisi; double gaji; void isiData(String kode, String Nama, String Div, double Gaji) { ID = kode; nama = Nama; divisi = Div; gaji = Gaji; } void cetakData() { System.out.println("Data Karyawan : "); System.out.println("ID : " + ID); System.out.println("Nama : " + nama); System.out.println("Divisi : " + divisi); System.out.println("Gaji : " + gaji); }
Laboratorium Teknologi Jaringan
Pemanggilan method berparameter pada kelas Karyawan public class ImplementasiMethodBerparameter { public static void main(String[] args) { //instatiasi objek Karyawan Karyawan karyawan001 = new Karyawan(); /*mengisi data pada objek Karyawan melalui method isiData()*/ karyawan001.isiData("k001", "Rommy", "Marketing", 2350000); //memanggil method cetakData(); karyawan001.cetakData(); } }
Page 12
double hitungSumbanganZakat() { double zakat = gaji * 0.025; return zakat; } } Deklarasi kelas Karyawan dengan constructor Deklarasi kelas Karyawan dengan constructor dinamis public class Karyawan { String ID, nama, divisi; public class Karyawan { double gaji; String ID, nama, divisi; //constructor kelas karyawan double gaji; Karyawan() { ID = "k001"; //constructor kelas Karyawan nama = "Budi"; Karyawan(String kode, String divisi = "Produksi"; Nama, String Div, double Gaji) { gaji = "1750000"; ID = kode; } nama = Nama; divisi = Div; void cetakData() { gaji = Gaji; System.out.println("Data } Karyawan :"); System.out.println("ID void cetakData() { : " + ID); System.out.println("Data System.out.println("Nama Karyawan :"); : " + nama); System.out.println("ID : " + ID); System.out.println("Divisi : " + System.out.println("Nama divisi); : " + nama); System.out.println("Gaji : " + gaji); System.out.println("Divisi : " + } divisi); System.out.println("Gaji double hitungSumbanganZakat() : " + gaji); { } double zakat = gaji * 0.025; double hitungSumbanganZakat() return zakat; { } double zakat = gaji * } 0.025; return zakat; } }
Page 13
1. Tujuan Praktikum Praktikan dapat mengimplementasikan enkapsulasi Dapat membedakan antara instance variable dan local variable Praktikan mampu menggunakan beberapa operator dan method yangmenyertai penerapan array dan string.
2. Dasar teori 1. Implementasi Enkapsulasi(pembungkusan) Suatu cara untuk meyembunyikan informasi detail dari suatu class, berupa information hiding dan interface to acsess data.Hak akses data dan perilaku objek memiliki tingkatan: Metode serta variable bersifat private: atribut kelas hanya dapat di akses oleh metode dalam kelas dimana di definisikan Metode serta variable bersifat public : variabael dan metode dapat diakses dari dalam maupun luar kelas Metode serta variable bersifat protected: atribut kelas hanya dapat di akses oleh kelas dan subkelas tersebut Metode serta variable bersifat default : hanya kelas dalam paket dapat mengakses variable dan metode kelas
Pada enkapsulasi membuat variable bersifat private dan melakukan perubahan terhadap atribut yang di beri hak akses dengan cara membuat suatu interface berupa metode untuk menginisialisasi nilai dari suatu atribut disebut interface to acsess data. Secara umum, pembungkusan data dan method dari suatu kelas dapat dituliskan seperti berikut:
class NamaKelas { tingkat-akses data1; tingkat-akses data2; . tingkat-akses dataN; tingkat-akses method1(daftar-parameter) { //kode untuk method1 } tingkat-akses methodN(daftar-parameter) { //kode untuk methodN } . tingkat-akses methodN(daftar-parameter) { //kode untuk methodN } }
2. Inisialisasi instan variable dan local variabel Untuk pengaksesan data di luar, metode statis dapat mengakses data statis dari kelas dan metode non statis dapat mengakses data setiap kelas. Variabel instan : sama dengan variable kelas tetapi tidak menggunakan keyword static Variabel local : dideklarasikan dan digunakan hanya di dalam badan metode tertentu.
Static modifier: atribut atau metode sama untuk semua objek dari kelas tertentu
Laboratorium Teknologi Jaringan Page 14
a. Array : tipe data yang digunakan apabila data diberikan berupa kelompok data yang disajikan secara berurutan.
tipe_data nama_variabel_array[]
Untuk mengetahui jumlah elemen dari sekelompok data yang bertipe array, dapat digunakan perintah length .Sintaks: nama_variabel_array.length Array untuk dua dimensi tipe_data nama_variabel_array[][]
b. String : String merupakan deretan karakter. Pada java, string merupakan objek dari kelas String. Penulisan string dilakukan dengan mengapit data menggunakan tanda petik (ganda). String judul = Pemrograman Berorientasi Objek; c. Latihan program yang menunjukkan pengaruh tingkat akses data dan method pada kelas dari tingkat akses public dan private di Mahasiswa dalam suatu kelas
public class PengaruhHakAkses {
terdapat tanda error (yang bergaris bawah) yang menandakan bahwa variabel ipk tidak bisa diakses secara langsung karena didefinisikan menggunakan hak akses private Laboratorium Teknologi Jaringan
public static void main(String[] args) { Mahasiswa Yahya = new Mahasiswa(); //BENAR, karena nim secara default bersifat public Yahya.nim = 1009; //BENAR, karena nama bersifat public Yahya.nama = "Yahya AlMahandiz"; Yahya.ipk = 3.77;//SALAH,karena ipk bersifat private //BENAR, karena method setC() bersifat public Yahya.setIPK(3.77); System.out.println("NIM : " + Yahya.nim); System.out.println("Nama : " + Yahya.nama); System.out.println("IPK : " + Yahya.getIPK()); }}
Page 15
public class RobotStatic { static String nama; static String asalNegara; static void test() { System.out.println("Hello.."); System.out.println("Saya adalah robot " + nama); System.out.println("Saya berasal dari " + asalNegara); } } pemanggilan data dan method statis public class ContohStatic2 { public static void main(String[] args) { RobotStatic.nama = "Gathotkaca"; RobotStatic.asalNegara = "Indonesia"; RobotStatic.test(); } }
dapat memanggil method test() tanpa harus membuat objek dari kelas ContohStatic. method test() tidak dapat mengakses dataC, karena data tersebut tidak dideklarasikan sebagai data statis.
Program menghitung string public static void main(String[] args) { String A="pemrograman berorientasi objek"; String B="laboratorium jaringan"; String C="Sekolah Vokasi"; int nA= A.length(); int nB=B.length(); System.out.println(A+"panjang string="+nA);
for(int j = 0; j < 5; j ++) { System.out.println(B+"panjang string="+nB); System.out.print (bilangan[i][j] + " "); System.out.println(C+"panjang string="+C.length()); System.out.println(); } } } }
Page 16
BAB VII
1. Tujuan Praktikum
INHERITANCE
Praktikan dapat membedakan pemakaian overloading dan overriding. Praktikan mampu menerapkan konsep pewarisan, overloading dan overriding dalam pemrograman dengan Java. Praktikan mampu menerapkan konsep pewarisan, overloading dan overriding dalam pemrograman dengan Java.
2. Dasar teori a. Pewarisan (inheritance) adalah suatu cara pembuatan class baru dengan menggunakan kembali class yang sudah didefinisikan sebelumnya dengan menambahkan atribut dan method baru.Pada konsep pewarisan ada beberapa istilah yang perlu diketahui,yaitu: Sub class, digunakan untuk menunjukkan class anak atau turunan secara hirarkis dari super class. Super class, digunakan untuk menunjukkan class induk secara hirarkis dari sub class (class anak). Extends, digunakan untuk menunjukkan bahwa suatu class merupakan turunan dari class lain. Misal A extends B, berarti class A adalah turunan dari class B. A merupakan subclass, sedangkan B merupakan superclass. Super, digunakan untuk memanggil konstruktor dari super class atau memanggil variabel yang mengacu pada super class. Misal super(x,y,z), berarti atribut x, y, dan z diambil dari atribut pada class induk. b. Cara Pewarisan Kelas. Kelas turunan secara prinsip dapat dibuat dengan menggunakan bentuk :
Class KelasTurunan extends KelasDasar{ Tubuh kelas }
c. Pemanggilan construktor Super Kelas Superkelas tidak mengandung konstruktor. Untuk itu digunakan kata kunci super. Super (nama , nim ) Pemanggilan konstruktor kelas dasar harus memenuhi persyaratan berikut : Pemanggilan dengan super seperti diatas hanya bisa dilakukan pada konstruktor. Pemanggilan konstruktor superkelas harus berkedudukan sebagai pernyataan pertama dalam konstruktor. d. Overriding Overriding adalah suatu cara untuk mendefinisikan ulang method yang ada pada class induk apabila class anak menginginkan adanya informasi yang lain. Overriding dilakukan dengan cara menulis ulang method yang ada pada class induk dengan syarat bahwa nama dan parameter fungsi tersebut harus sama (tidak boleh diubah). Meskipun fungsi telah ditulis ulang oleh class anak, fungsi yang asli pada class induk masih dapat dipanggil di class anak dengan menggunakan class super. e. Overloading Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih) yang memiliki nama yang sama. Pada bahasan overloading dikenal istilah signature. Signature sebuah fungsi adalah parameter lengkap dengan tipe datanya yang terdapat dalam fungsi tersebut. Misal terdapat fungsi: public int jumlahMahasiswa (int laki2, int perempuan, String kelas); maka signature dari fungsi tersebut adalah (int, int, String). Suatu fungsi dikatakan dioverload manakala terdapat beberapa fungsi dengan nama yang sama namun memiliki signature yang berbeda-beda, sebagai contoh:
Laboratorium Teknologi Jaringan Page 17
f. Latihan 1. Contoh Kasus Pewarisan DOSEN nama nik jurusan View() REKTOR Th_mulai Jabatan Viewrektor() DEKAN fakultas Viewdekan() KALAB laborat Viewkalab()
Menunjukkan hirarki kelas dosen., memiliki turunan berupa kelas rektor, kelas dekan dan kelas kalab. class induk (class dosen) memiliki atribut nama, nik dan jurusan. Method yang dimiliki oleh class dosen adalah view(). Class turunan dari class dosen ada tiga class. Pada class rektor, terdapat tambahan atribut berupa th_mulai dan jabatan_ke, serta method viewRektor(). Pada class dekan terdapat tambahan atribut fakultas, dan method viewDekan(). Pada class kalab terdapat tambahan atribut laboratorium, dan method viewKalab(). Pendefinisian class dosen
Public class Dosen { protected String nama protected String nik; protected String jurusan; Dosen (String namaX, String nikX, String jurX) { nama = namaX; nik = nikX; jurusan = jurX;} public void view() { Constructor untuk kelas Dosen
Page 18
Pemanggilan konstruktor
overloading
Pada class tersebut terdapat dua subclass dengan nama yang sama yaitu infoMahasiswa namun memiliki signature yang berbeda. Subclass pertama digunakan untuk menghitung jumlah mahasiswa kelas A angkatan 2008. Sedangkan pada subclass kedua digunakan untuk menghitung jumlah mahasiswa aktif sampai tahun 2008. Overloading fungsi ditentukan oleh signature nya, tidak ditentukan oleh nilai balikan fungsi. Dalam satu class, apabila ada dua atau lebih fungsi yang memiliki nilai balikan yang berbeda namun memiliki signatue yang sama, maka fungsi tersebut tidak dapat dikatakan sebagai overloading. Page 19
BAB VIII
1. Tujuan Praktikum
POLIMORFISME
Mampu membuat method Polimorfisme untuk implementasi listingcode yang berbeda sesuai dengan behavior masing- masing kelas. Mampu membuat Variabel instans sebagai penentu akses pada kelas public, kelas private dan protected
2. Dasar teori Polimorfisme Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda melalui satu cara yang sama. Apabila mempunyai objek yang bertipe superkelas, variable objek ini bisa diisi dengan objek superkelas ataupun objek subkelas tanpa perlu melakukan perubahan tipe.Pada polimorfisme kondisi yang harus terpenuhi supaya fungsi dapat dijalankan yaitu: 1. Semua kelas diturunkan dari suatu kelas yang sama 2. Method yang dipanggil harus melalui variabel dari super class. 3. Method yang dipanggil juga harus merupakan method yang ada pada super class. 4. Signature method harus sama baik yang ada pada super class maupun di subclass. 5. Method access attribute pada subclass tidak boleh lebih terbatas daripada yang ada pada super class. Program polimorfisme(1)
class Binatang{ public void info() { System.out.println(" Info tentang Hewan : "); } } class Herbivora extends Binatang { public void info() { System.out.println ("Info pada herbivora: Memakan makanan berupa tumbuh - tumbuhan"); } } class Kelinci extends Herbivora{ public void info(){ System.out.println("Info pada Kelinci: Memakan makanan berupa wortel"); } } public class Polimorfisme { public static void main(String[] args) { Herbivora herbivora; Kelinci kelinciku; Binatang hewan; herbivora=new Herbivora(); kelinciku=new Kelinci(); hewan=herbivora; hewan.info(); hewan=kelinciku; hewan.info(); } }
merupakan program untuk membangun class kendaraan. Pada class kendaraan mewarisi ke tiga class, yaitu class pesawat, mobil, dan kapal. Pendefinisian class pesawat
Public class pesawat extends kendaraan{ Private String nama; Private String jenis; } Public pesawat(String nama){ Super(pesawat); This.nama = nama; Jenis = belum teridentifikasi; } Public pesawat (String nama, String jenis){ Super(pesawat); This.nama=nama; This.jenis=jenis; } Public void informasi(){ System.out.println(nama pesawat adalah+nama); System.out.println(jenis pesawat adalah+jenis);}}
Page 20
Pada program utama dilakukan pemanggilan terhadap ketiga class tersebut, masing-masing dengan parameter yang bersesuaian
Page 21
dari manusia diturunkan kelas sopir. Kelas sopir diimplementasikan dalam java
/* Disimpan dalam file sopir.java */ public class sopir extends manusia { public sopir(String n) { super(n); } public void kerja() { System.out.println("Ngung... Ngung... Ngung...Ciiit.."); } }
Dedi adalah seorang sopir keturunan manusia, untuk menginstantiasi objek dedi ditunjukkan dalam kode berikut.
/* Disimpan dalam file dedi.java */ public class dedi { public static void main(String arg[]) { sopir dedi= new sopir("Dedi"); System.out.println("Nama= "+ dedi.tampilkanNama()); dedi.makan(); dedi.kerja(); } }
Kemudian Andi sang programmer, Badu sang tentara dan Dedi sang sopir diperintahkan untuk bekerja, apa reaksinya?
/* Disimpan dalam file pekerja.java */ public class pekerja { public static void main(String args[]) { manusia[] profesi= new manusia[3]; profesi[0]=new programmer("Andii"); profesi[1]=new tentara("Badu","Kopral"); profesi[2]=new sopir("Dedi"); for (int i=0; i<3; i++) { profesi[i].kerja(); } } }
Message sama yang dikirimkan ke objek berbeda akan menghasilkan hasil yang berbeda, inilah yang disebut polymorfisme.
Page 22
BAB VIII
INTERFACE
1. Tujuan Praktikum Memahami konsep pewarisan ganda Memahami konsep interface Mengimplementasikan Interface pada Java untuk melakukan pewarisan ganda 2. Dasar Teori Untuk membuat suatu kelas dapat kita turunkan dengan pewarisan field-field dan metodh pada base classnya. Bagaimana kita membuat kelas yang menurunkan sifat dari beberapa base class? misalkan kita akan membuat kelas superman yang dia bisa membuat program layaknya programmer, dia juga ahli menggunakan senjata layaknya tentara, bahkan dia bisa terbang seperti elang (keturunan binatang)? Caranya adalah dengan pewarisan ganda. Dalam Java tidak dikenal pewarisan ganda, sehingga digunakan interface. /* Disimpan dalam file "superman.java" */ interface programmer { void memrogram(); } interface tentara { void menembak(); } interface burung { void terbang(); void buangKotoran(); } class superman implements programmer,tentara,burung { public void memrogram(){}; public void menembak(){}; public void terbang(){}; public void buangKotoran(){}; } Kemudian kelas superman diinstantiasi menjadi objek bernama bejo, contoh kode program /* Disimpan dalam file "bejo.java" */ public class bejo { public static void main(String arg[]) { superman bj= new superman(); bj.memrogram(); { System.out.println("Implementasi memrogram ...tak..tik"); } bj.menembak(); { System.out.println("Implementasi menembak ...dor..dor"); } bj.terbang(); { System.out.println("Implementasi terbang......Zap...."); } } }
Laboratorium Teknologi Jaringan Page 23
Page 24
BAB X
1. Tujuan Praktikum Praktikan mampu mengenali dan memahami input dan output (I/O) dalam pemrograman dengan Java. Mampu membuat sistem stream untuk penanganan operasi input/output, buffered stream dan random accees file. 2. Dasar teori Stream Operasi input dan output pada java menggunakan konsep aliran data,Aliran data sendiri sudah di lakukan dan di pelajari pada bab-bab sebelumnya yaitu aliran data dari device output dengan memanfaakan method println() pada objek System.out, dan device input pada objek System.in dari kelas System Stream adalah aliran data yang berupa aliran byte atau karakter, dari device input ke divice output pada saat program di eksekusi. Proses untuk membaca data dari layar lalu memprosesnya pada saat program dijalankan serta menampilkan hasil proses tersebut pada layar console dilakukan oleh kelas InputStreamReader, kelas ini akan membaca data yang diketikkan oleh user melalui console dan sekaligus memperlakukannya sebagai Stream, tahap yang dilakukan oleh kelas InputStreamReader meliputi 3 langkah yaitu: 1. Membuat objek dari kelas InputStreamReader, dengan sintaks InputStreamReader dataIn = new InputStreamReader(System.in); 2. Menampung objek Stream ke buffer BufferedReader bufIn = new BufferedReader(dataIn,1); 3. Membaca data dari objek Stream String data = bufIn.readLine(); Inputan dan penyimpanan sementara data dari keybord untuk proses kemudian di outputkan hasilnya bisa bermacam-macam cara antara lain: 1. Dengan melakukan langkah-langkah seperti InputStreamReader diatas dimana kita harus membuat objek dari kelas InputStramReader, lalu menampung objek Stream ke buffer, kemudian membaca data dari objek stream
import java.io.*; public class Persegi1 { public static void main(String args[]) { try { System.out.print("masukkan panjang = "); InputStreamReader pnj = new InputStreamReader(System.in); BufferedReader input1 = new BufferedReader(pnj,1); String panj = input1.readLine(); int panjang=Integer.parseInt(panj); System.out.print("masukkan Lebar = "); InputStreamReader lbr = new InputStreamReader(System.in); BufferedReader input2 = new BufferedReader(lbr,1); String lebr = input2.readLine(); int lebar=Integer.parseInt(lebr);
Page 25
2. Selain itu juga ada cara untuk mengimputkan data dari console dengan memanfaatkan kelas yang kita buat sendiri dimana kelas ini nantinya akan diwariskan pada suatu file yang memanggil dan membutuhkan warisan dari kelasyang kita buat, sehingga proses yang dilakukan oleh kelas InputStreamReader hanya ada pada kelas induk yang akan mewarisi
import java.io.*; public class InputConsole{ /**Membaca string dari keyboard*/ public static String readString(){ BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in),1); // Menginisialisasi string String string = " "; // Get the string from the keyboard try{ string = bfr.readLine(); } catch (IOException ex){ System.out.println(ex); } // Mengembalikan string hasil pembacaan dari keyboard return string; } /**Mengambil nilai int dengan parsing string input dari keyboard*/ public static int readInt(){ return Integer.parseInt(readString()); } //Mengambil nilai byte dengan parsing string input dari keyboard public static byte readByte(){ return Byte.parseByte(readString()); } //Mengambil nilai short dengan parsing string input dari keyboard public static short readShort(){ return Short.parseShort(readString()); } //Mengambil nilai long dengan parsing string input dari keyboard public static long readLong(){ return Long.parseLong(readString()); } //Mengambil nilai float dengan parsing string input dari keyboard public static float readFloat() { return Float.parseFloat(readString()); } //Mengambil nilai double dengan parsing string input dari keyboard public static double readDouble(){ return Double.parseDouble(readString()); } }
Page 26
Membaca Input Data Karakter Untuk membaca input berupa karakter, kita bisa menggunakan method read() yang terdapat pula pada kelas BufferedReader. Berikut ini contoh program yang akan menunjukkan bagaimana menangani proses input data karakter. Program dengan proses input data karakter
import java.io.*; class DemoInputKarakter { public static void main(String[] args) throws IOException { System.out.print("Masukkan sebuah karakter: "); char KarakterInput; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); KarakterInput = (char) br.read(); System.out.println("Karakter yang dimasukkan adalah \'" + KarakterInput + "\'"); } }
Membaca Input Data String Untuk membaca input berupa string, kita bisa menggunakan method readLine(), bukan method read(). Berikut ini contoh program yang akan menunjukkan bagaimana menangani proses input data string. Program dengan proses input data string
import java.io.*; class DemoInputString { public static void main(String[] args) throws IOException { System.out.print("Masukkan nama Anda: "); String namaInput; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); namaInput = br.readLine(); System.out.println("Halo " + namaInput + "..."); System.out.println("Semoga Anda Sukses Selalu.."); } }
Membaca Input Data Numerik Untuk membaca input berupa data numerik, kita bisa menggunakan method readLine() seperti pada saat menangani input data string, dan selanjutnya string hasil input tersebut dikonversi ke tipe numerik. Berikut ini contoh program yang akan menunjukkan bagaimana menangani proses input data numerik. Program dengan proses input data numerik
import java.io.*; class DemoInputNumerik { public static void main(String[] args) throws IOException { System.out.print("Masukkan sebuah bilangan bulat : "); String temp; int bilanganInput = 0; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); // input data dianggap sebagai string temp = br.readLine(); try { // konversi dari string ke integer bilanganInput = Integer.parseInt(temp); } catch (NumberFormatException nfe) { System.out.println("Nilai yang dimasukkan " + "bukan bilangan bulat"); System.exit(1); } System.out.println("Bilangan yang anda masukkan adalah " + bilanganInput); }}
Page 27