MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 1 MODUl 1 Paradigma Pemrograman A. Paradigma Pemrograman Penggunaan komputer meningkat di hampir setiap bidang usaha. Perkembangan pesat hardware dan software mampu menurunkan biaya komputasi secara dramatis. Hal ini dimungkinkan dengan perkembangan teknologi chip silikon. Teknologi chip silikon memungkin untuk membuat mesin komputasi dari seukuran kamar menjadi seukuran komputer yang kita kenal sekarang ini. Perkembangan pesat dalam bidang perangkat keras dan lunak diikuti pula dengan penurunan harga. Sehingga penggunaan komputer saat ini meningkat di hampir setiap bidang. Pemrograman adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman.Untuk dapat melakukan pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa pemrograman dan beberapa pengetahuan lainnya sesuai dengan masalah dihadapi. Pemrograman adalah sebuah seni dalam menggunakan satu atau lebih algoritma yang saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu sehingga menjadi sebuah program komputer. Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda pula, metode pemrograman ini biasa disebut paradigma pemrograman. Selama bertahun-tahun, para programmer belajar metodologi pemrograman yang disebut pemrograman terstruktur. Pemrograman trustukture atau sering juga disebut pemrograman prosedural mulai digunakan pada dekade tahun 1970. Pemrograman trustruktur berkembang sebagai teknik pemrograman yang menggantika teknik pemrograman tak terstruktur( unstructured programming). Melalui pemrograman terstruktur akan lebih mudah untuk memahami pemrograman berorientasi objek yang saat ini menjadi metodologi pemrograman utama yang digunakan oleh programmer saat ini karena struktur internal mereka sering dibangun menggunakan teknik pemrograman terstruktur. Pemrograman berorientasi objek mulai dibicarakan sekitar akhir tahun 60’an. Pertama kali diperkenalkan oleh Ole Johan Dhal dan Kristen Nygaard dari Universitas Oslo, Norwegia pada tahun 1966 dalam jurnal dengan judul “SIMULA An Algol Based Simulation Language”. Jadi OOP bukan hal baru.Pada tahun 1970 bahasa SMALTALK dikembangkan oleh XEROX PARC. Pada saat itu sebagian dari ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id dunia menggunaan COBOL dan FORTRAN dengan metode dekomposisi dan fungsional. Perubahan terjadi selama beberapa dekade sampai dikenalnya faktor utama berorientasi objek, yaitu : Konsep dasar berorientasi objek, konsep berorientasi objek mulai populer dimana memulai Analisis dan Desain menjadi lebih diperhatikan daripada Coding. Teknologi dasar pengembangan sistem, coding sangat dipengaruhi oleh bahasa pemrograman yang tersedia. Untuk pengembangan program terstruktur lebih mudah dikembangkan dengan pascal, atau C, dan pembuatan coding berorientasi objek akan lebih mudah dikembangkan dengan bahasa pemrograman VB.Net, C++, JAVA, PHP. Kondisi sistem, sistem yang dibagun saat ini berbeda dengan sistem beberapa tahun yang lalu. Sistem yang sekarang lebih besar, kompleks dan dapat juga merupakan sistem yang interaktif. Pendekatan berorientasi objek merupakan cara yang lebih tepat untuk sistem yang berorientasi objek. Pengenalan model, banyak organisasi mendapatkan bahwa sistem yang dibangun pada saat ini cendrung berorientasi data dari pada sistem yang dibangun sekitar tahun 1970 dan 1980. pada waktu itu penggunaan model telah mendapatkan prioritas lebih besar dibandingkan dengan kompleksitas fungsional. Pengembangan berorientasi objek merupakan cara berpikir baru tentang perangkat lunak berdasarkan abstraksi alam dunia nyata. Hal yang lebih diutamakan dalam pengembangan berorientasi objek adalah konsep mengidentifikasi objek dan mengorganisasi domain aplikasi dibandingkan dengan fokus penggunaan bahasa pemrograman berorientasi objek atau tidak. Kebanyakan usaha akhir dalam lingkungan berorientasi objek dipusatkan pada bahasa pemrograman. Pengembangan berorientasi objek adalah proses konseptual terpisah dari bahasa pemrograman sampai tahap akhir. Pengembangan berorientasi objek secara mendasar merupakan cara berpikir baru dan bukan suatu teknik pemrograman. Hal ini dapat berfungsi sebagai media spesifikasi, analisis, dokumentasi dan interface seperti halnya pemrograman. ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Metodologi berorientasi objek yang diperkenalkan pada tahun 1980, menggunakan teknik-teknik yang dibutuhkan dalam pengembangan sistem, yaitu: dynamic dan static object oriented model, state transtion diagram dan case scenario.Fukus utama metodologi pada objek, dengan melihat suatu sistem terdiri dari objek yang saling berhubungan. Objek dapat digambarkan sebagai benda, orang, tempat dan sebagainya yang mempunyai atribut dan metoda.Metodologi terdiri dari pembuatan model dari domain aplikasi, kemudian menambahkan rincian implementasi. Tahapan-tahapan metodologi berdasarkan system development life cycle dengan memperhatikan khusus berorientasi objek. B. Pengenalan Java Java telah menjadi bahasa pilihan untuk menerapkan aplikasi berbasis internet dan perangkat lunak komunikasi pada jaringan. Perangkat nirkabel , seperti ponsel, pager dan personal digital assistant (PDA), berkomunikasi melalui internet menggunakan aplikasi berbasis Java jaringan. Java telah berkembang pesat ke arena aplikasi skala besar. Hal ini tidak lagi digunakan hanya untuk membuat halaman Dunia Wide Web. Saat ini java menjadi bahasa pilihan untuk memenuhi kebutuhan pemrograman enterprise-wide dari banyak organisasi. Java dipelopori oleh James Gosling, Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan dari Sun Microsystems, Inc pada tahun 1991. Mereka membutuhkan kurang lebih 18 bulan untuk membuat versi pertamanya. Bahasa ini pada awalnya disebut “Oak” tapi kemudian diubah menjadi “Java” pada tahun 1995 karena nama Oak telah dijadikan hak cipta dan digunakan sebagai bahasa pemrograman lainnya. Antara pembuatan Oak pada musim gugur 1992 hingga diumumkan ke publik pada musim semi 1995, banyak orang yang terlibat dalam desain dan evolusi bahasa ini. Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yellin, dan Tim Lindholm merupakan kontributor kunci yang mematangkan prototipe aslinya. Java telah digunakan dalam banyak hal dan telah membuktikan keberadaannya pada abad ke 21. Saat ini, Java digunakan bermacam jenis aplikasi seperti aplikasi embedded, aplikasi keuangan, desktop, simulasi pesawat, pemrosesan citra, game, aplikasi perusahaan terdistribusi yang disebut J2EE dan masih banyak lagi. Java Virtual Machine (JVM) ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Java Virtual Machine merupakan aplikasi sederhana yang ditulis dalam bahasa C untuk mengeksi program yang ditulis dalam bahasa Java. Pada saat kompilasi (perubahan dari bahasa tingkat tinggi ke bahasa lebih rendah), program tersebut diubah menjadi KODE BYTE. Kemudian pada saat eksekusi, JVM membaca kode byte tersebu dan mengubahnya menjadi bahasa mesin yang dimengerti oleh sistem operasi tempat program tersebut dijalankan. Karena JVM sangat bergantung pada platformnya (bahasa mesin merupakan bahasa level rendah yang hanya dimengerti oleh suatu mesin tertentu, misalnya Intel, tapi tidak dapat dimengerti oleh mesin lain, seperti Macintosh), byte code ini dapat dibuat untuk terbebas dari kungkungan platform tertentu. Code byte yang dihasilkan dalam proses kompilasi bahasa Java akan selalu sama untuk setiap sistem operasi atau jenis mesinnya, tetapi JVM akan mengubah kode byte tersebut menjadi bahasa mesin tujuannya.Mesin virtual java atau lebih dikenal dalam bahasa Inggris Java Virtual Machine atau disingkat JVM merupakan mesin virtual yang digunakan secara khusus mengeksekusi berkas bytecode java. JVM merupakan perangkat lunak yang dikembangkan secara khusus agar terlepas ketergantungan atas perangkat keras serta sistem operasi dari tertentu. JVM menyediakan lingkungan kerja yang dibutuhkan untuk menjalankan aplikasi berbasis java serta mengotomatisasikan fitur-fitur seperti penanganan kesalahan. JVM umumnya didistribusikan bersama dengan seperangkat pustaka dasar yang mengimplementasikan antarmuka pemrograman aplikasi java, Application Programming Interface' (API) yang dinamai sebagai Java Runtime Environment (JRE).Program yang dieksekusi oleh JVM merupakan program berbasis bytecode yang umumnya ditulis dan dikompilasi pemrograman Java, namun saat ini bisa dengan menggunakan bahasa juga berasal dari bahasa pemrograman lain seperti: Jython (Python), Groovy, JRuby (Ruby). Mesin virtual java standarnya dibuat oleh Oracle, namun mesin-mesin virtual java lainnya yang menggunakan merek dagang "JAVA" boleh dibuat oleh perusahaan lain sejauh produk- produk tersebut tunduk pada spesifikasi yang ditetapkan serta kesepakatan atas kontrak obligasi antara perusahaan pembuat dengan Oracle. Garbage Collection Dalam ilmu komputer, Garbage Collection merupakan bentuk manajemen memori otomatis. Garbage collection akan menghapus isi dari bagian memori yang dipakai oleh ‘13 5 objek, Pemrograman Berorientasi Objek Tim Dosen variabel yang tidak lagi digunakan oleh program. Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Garbage Collection diciptakan John McCarthy sekitar 1959 untuk memecahkan masalah dalam bahasa pemrograman Lisp. Garbage collection digambarkan sebagai kebalikan dari manajemen memori secara manual dalam mengalokasikan kembali sumber daya memori. Metode yang digunakan untuk mengelola sumber daya yang dikenal dengan nama destructors. Just In Time Compiler (JIT) Meskipun Java didesain untuk diinterpretasi, secara teknis tidak ada yang menghalangi Java untuk dikompilasi menjadi bahasa mesin seperti bahasa-bahasa ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id pemrograman lainnya. Sun menyediakan kompiler Just In Time Compiler (JIT) untuk mengkompilasi kode byte itu menjadi bahasa mesinnya pada saat yang bersamaan dengan eksekusinya. Walaupun demikian, pendekatan JIT ini menghasilkan kemampuan yang lebih dibandingkan dengan interpretasi biasa. Bahasa pemrograman lain yang telah ada sebelum Java lahir sudah merupakan bahasa yang baik dan mudah dipelajasi oleh programmer profesional. Akan tetapi para programmer ini menginginkan sesuatu yang baru yang memiliki banyak hal yang menyelesaikan masalah mereka. Utamanya adalah keamanan kode mereka. Hal ini melahirkan pikiran yang revolusioner untuk menemukan bahasa pemrograman lain yang disebut Java. Tidak hanya keamanan tapi juga beberapa hal yang sering disebut sebagai Java-Buzzwords. Kata-kata ini menjelaskan berbagai fitur tambahan dan beberapa hal yang membuat Java demikian sukses dan diterima oleh dunia perangkat lunak dengan pertimbangan sederhana dan Berorientasi Objek. Para programmer yang terbiasa dengan bahasa pemrograman C dan C++ lebih mudah memahami java dan fungsionalitas java sebagai kakas pengembang perangkat lunak berbasi objek. Dengan demikian tujuannya konsep dasar dari teknologi Java dapat dimengerti dengan mudah, dan programmer dapat segera menghasilkan sesuatu sedini mungkin. Tidak hanya ini, penemu Java memastikan bahwa Java juga bermula dari bahasa pemrograman dasar yang sudah ada pada saat itu. Kemudian mereka membuang berbagai fitur yang rumit dan membingungkan. Bahasa pemrograman Java didesain sejak awal untuk menjadi bahasa yang berorientasi objek. Setelah kira-kira 30 tahun, akhirnya teknologi objek menjadi kenyataan dan diterima oleh sebagian besar komunitas pemrograman. Konsep berorientasi objek memungkinkan pembuatan software yang kompleks, berbasis network, sehingga dapat disimpulkan bahwa teknologi Java menghasilkan platform pembuatan perangkat lunak yang baik dan efisien serta berorientasi objek. Keuntungan yang Anda dapat dari Java. 1. Tulis lebih sedikit program: Jumlah kelas, jumlah metode, dll, menunjukkan bahwa program yang ditulis dalam bahasa pemrograman Java memiliki jumlah 4 kali lipat lebih kecil dari program sama yang ditulis dalam bahasa C++ 2. Tulis program lebih baik: Bahasa pemrograman Java menganjurkan praktek membuat program yang baik, dan automatic garbage collection sangat membantu ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id untuk menghindari kebocoran memori. Orientasi objeknya, arsitektur komponen JavaBeans, dan jangkauannya yanga luas, API yang mudah diperluas, memungkinkan Anda menggunakan kode yang ada. 3. Membuat program dengan lebih cepat: Bahasa pemrograman Java lebih mudah dari C++, pemrograman akan menjadi 2 kali lipat lebih cepat, dengan jumlah baris yang jauh lebih sedikit. 4. Menghindari kebergantungan pada platform tertentu: jaitu program dapat dijalankan pada banyak platform dengan TIDAK menggunakan library yang ditulis spesifik untuk platform tertentu. 5. Tulis sekali, jalankan di mana saja: Karena aplikasi yang ditulis dalam bahasa Java dikompilasi ke dalam kode byte yang bebas platform, aplikasi yang ditulis dapat jalan secara konsisten pada platform apa saja. 6. Distribusikan software lebih mudah: Dengan Java Web Start, pengguna program dapat menggunakan aplikasi dengan mudah. Sistem pengecekan versi otomatis pada saat program dimulai menjamin pengguna selalu menjalankan versi terkini. Apabila versi baru tersedia, Java Web Start akan melakukan instalasi secara otomatis. Memulai Java 1. Download java http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. Install JDK ( Java Development Kit ) dan ikuti tahapan penginstalannya. 3. Tentukan environment variabel : Path aplikasi Java dengan cara. 1. Buka System Properties (klik Start | klik kanan di Computer | Properties | Klik Advanced system settings di panel sebelah kiri). ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 2. Klik tab Advance 3. Klik PATH, lalu klik Edit… 4. Tambahkan dibagian akhir, direktori BIN dari Java Development Kit (JDK) sesuai versi yang di-install, misalnya untuk JDK 7 update 3 pada direktori C:\Program Files\Java\jdk1.7.0_03\bin. 5. Klik tombol OK. 4. Buka text editor bawaan sistem operasi misal notepad. 5. Ketik program 6. Simpan file dengan ektensi java, misal Hellowrld.java ‘13 9 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 7. Buka windows command 8. Ketik pada c:> javac Helloworld.java 9. Jalankan program java dengan cara mengetik pada c:>java namfile Soal : 1. Jelaskan pengertian pemrograman berorientasi objek 2. Buat program sederhana untuk menampilkan tulisan berikut --------------------------------------------------------------------INI ADALAH PROGRAM PERTAMA SAYA MENGGUNAKAN JAVA ----------------------------------------------------------------- ‘13 10 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 11 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 2 MODUL 2 KONSEP PEMROGRAMAN A. Program Komputer Program komputer adalah urutan langkah-langkah yang di wujudkan dalam bentuk intruksi – intruksi pemrogram ( kode program ) yang diberikan kepada komputer untuk memperoleh hasil penyelesaian suatu masalah sesusia dengan apa yang di ingikan. Tahapan pemrograman dimulai dari menentukan apa yang jadi permasalahan, masukan untuk masalah tersebut, rumus penyelesaian masalah,pemilihan bahasa program yang digunakan, penulisan kode program dan eksekusi program yang dibuat untuk melihat kesesuaian hasil yang diharapkan. Dalam pemrograman prosedural sekumpulan instruksi dapat dipandang sebagai bentuk pengelompokan : input, proses, dan output. Bagian input, proses, dan output dikerjakan secara sekuensial, dan dalam setiap bagian mungkin akan ada input, proses, dan output. Elemet pada masing–masing kelompok dapat berupa indentifier operator, dan operand , struktur data, Instruksi dasar,modul program atau file eksternal. B. Indentifier, literal dan type data Identifier Digunakan untuk nama class, method, dan variabel. Suatu variabel dapat berupa urutan tertentu huruf (besar atau kecil), angka, garis bawah, dan tanda dolar. Tidak boleh diawali oleh angka dan bersifat case sensitive. Java mengikuti aturan penamaan identifier untuk semua method public dan variabel instans dengan huruf awal kecil dan menandai bagian kata selanjutnya dengan huruf besar, misalnya currentItem, currentDate, getTimeOfDay. Untuk variabel private dan lokal identifier akan berupa huruf kecil semua dikombinasikan dengan garis bawah, misalnya next_val, temp_val. Untuk variabel final yang mewakili suatu konstanta, digunakan huruf besar semua, misalnya TOK_BRACE, DAY_FRIDAY. Literal Literal adalah nilai variabel atau nilai konstanta atau nilai objek data. Besaran konstanta pada Java dihasilkan dengan menggunakan literal yang mewakilinya. Setiap literal merepresentasikan nilai suatu tipe data ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Ada tiga besaran literal dalam Java yaitu angka, karakter, dan string. Angka terdiri dari byte, short, int, long, float, double, dan boolean. Semua variabel dan konstanta yang akan digunakan harus dideklarasikan terlebih dahulu. contoh : int nilai_tugas,nilai_uts,nilai_uas; Float nilai_ahir; String nama; Kata tercadang Nama literal tidak boleh menggunakan kata tercadang Java. Kata tercadang yang tidak boleh digunakan sebagai literal adalah sebagai berikut. abstract boolean break byte byvalue case cast catch char class const continue default do double else extends false final finally float for future generic goto if implements import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchroniz this throw throws transient true var void volatile while ed try A. Variabel dan Type data Variabel Variabel adalah satuan dasar penyimpanan dalam program Java. Suatu variabel didefinisikan dengan kombinasi identifier, tipe, dan cakupan. Bergantung pada tempat kita mendeklarasikannya, variabel dapat bersifat lokal atau sementara, misalnya didalam perulangan for, atau dapat juga berupa variabel instans yang dapat diakses oleh semua method dalam class. Cakupan lokal dinyatakan dalam kurung kurawal. Type data Java merupakan contoh bahasa yang strongly typed language. Hal ini berarti bahwa setiap variabel harus memiliki tipe yang sudah dideklarasikan. Terdapat 8 tipe ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id primitif, 6 diantaranya adalah tipe bilangan ( 4 tipe integer, 2 tipe floating point), 1 tipe karakter char, digunakan mengawa-sandi (encode) Unicode, dan 1 tipe boolean. Integer Tipe Kebutuhan Range int 4 byte -2.147.483.648 sampai 2.147.483.647 short 2 byte - 32.768 -i 32.767 long 8 byte - 9.223.372.036.854.775.808L - 9.223.372.036.854.775.807L byte 1 byte - 128 - 127 Floating Point Tipe Kebutuhan Range float 4 byte 3,40282347E+38F ( 7 digit desimal signifikan) double 8 byte 1,79769313486231570E+308 (15 digit desimal siignifikan) Char Tipe char menggunakan tanda kutip tunggal untuk menyatakan suatu char. Tipe char juga menyatakan karakter dalam upaya mengawa-sandi unicode, yang merupakan kode 2-byte. Karakter unicode paling sering dinyatakan dalam istilah skema pengkodean hexadesimal yang dimulai dari \u0000 sampai \uFFFF. Selain karakter bebas (escape ‘ \u ‘ yang menyatakan karakter unicode di Java terdapat juga \b backspace \u0008 \t tab \u0009 \n linefeed \u000a \r carriage return \u000d \” double quote \u0022 \’ single quote \u0027 \\ a backslash \u005c Boolean ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Tipe boolean memiliki nilai true dan false. Tipe ini digunakan untul logical testing dengan menggunakan operator relasional. B. Struktur Program Java Setiap kakas pengembang aplikasi memiliki struktur dan cara penulisan kode programnya sendiri,demikian juga dengan Java. Struktur program java dibagi menjadi dua bagian jaitu class header dan body. Struktur class public class myclass header { body } Struktur kelas utama ( class main ) public class myclass header { public static void main (String[] args) { body } } Contoh; 1 // Program : Welcome1.java 2 // Program cetak ucapan selamat datang 3 4 public class Welcome1 5 { ‘13 5 6 // metode main awal eksekusi aplikasi 7 public static void main( String args[] ) Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 8 { 9 System.out.println( "Welcome to Java Programming!" ); 10 11 } // ahir method main 12 13 } // ahir class Welcome1 Penjelasan program : Baris pertama dimulai dengan dimulai dengan / /, yang menunjukkan bahwa text berikutnya adalah komentar. Programmer memasukkan komentar ke program sebagai dokumentasi. Komentar ini membantu orang lain untuk membaca dan memahami program. Compiler Java mengabaikan komentar sehingga tidak mengganggu jalannya program. Sebuah komentar yang diawali dengan / / disebut end-of-line atau single-line komentar. Untuk komentar yang lebih dari satu baris dapat dituliskan dalam bentuk berikut : /* Untuk komentar yang lebih dari satu baris dapat dituliskan dalam bentuk seperti ini */ Baris kedua merupakan komentar yang menyatakan fungsi/kegunaan dari program. Baris ketiga sebuah baris kosong. Pemrogram menggunakan baris kosong dan karakter ruang untuk membuat program lebih mudah dibaca. Baris kosong dan karakter tab dikenal sebagai white space. Baris ke empat dimulai dengan deklarasi kelas untuk kelas Welcome1. Setiap program di Jawa terdiri dari setidaknya satu deklarasi kelas yang didefinisikan oleh. Baris ke lima menyatakan awal body sebuah class. Baris ke enam public static void main( String args[] ) merupakan titik awal dari setiap aplikasi Java. Tanda kurung setelah identifier utama menunjukkan bahwa itu sebuah blok program yang disebut metode. Deklarasi class Java biasanya berisi satu atau lebih metode. Untuk aplikasi Java, harus ada satu metode ini, jika tidak JVM tidak akan mengeksekusi aplikasi. Baris enam dan tujuh adalah awal dan ahir block class main. ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Baris ke sembilan adalah perintah java untuk mencetak teks yang berada di antara tanda “ “. 1. Ketik Program berikut // Addition.java // Addition program import java.util.Scanner; public class Addition { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); int number1; int number2; int sum; System.out.print( "Enter first integer: " ); number1 = input.nextInt(); // read first number from user System.out.print( "Enter second integer: " ); number2 = input.nextInt(); // read second number from user sum = number1 + number2; System.out.printf( "Sum is %d\n", sum ); } } 2. Dengan menggunakan cara yang sama seperti pada soal 1. ‘13 7 Buat program untuk menghitung luas persegi panjang Buat program untuk menghitung luas segitiga Buat program untuk menghitung volume balok Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 3 MODUL 3 Unit Prosedural Statement input/output A. Unit Prosedural Sebuah program yang kompleks umumnya akan didekomposisi menjadi beberapa sub program yang lebih sederhana. Sub program itu disebut juga modul terkadang bersifat independen terhadap program utama. Pemrograman yang menggunakan modul disebut dengan pemrograman modula. Modul dapat digunakan oleh program lain yang membutuhkannya. Dalam bahasa pemrograman modul dapat dikategori menjadi prosedur dan fungsi. 1. Prosedure Prosedur adalah program yang mengerjakan aktivitas yang spesifik yang menghasilkan efek netto. Efek netto yaitu perubahan kondisi awal menjadi kondisi akhir setelah prosedur dijalankan.Prosedur bukan program yang berdiri sendiri , sehingga untuk menjalankan prosedur dengan dipanggil di program utama. Prosedur merupakan kumpulan ekspresi-ekspresi algoritma yang berguna untuk menjalankan proses tertentu. Prosedur sudah banyak dikenal mulai dari bahasa mesin hingga bahasa level tinggi(Query). Dalam bahasa Java prosedur biasanya diawali dengan kata “void”. Prosedur dapat ditulis diatas program utama maupun dibawahnya 2. Fungsi Fungsi adalah sub program yang mengembalikan (return) sebuah nilai bertipe data primitif (int, float, double, boolean, string, atau char).Mirip dengan fungsi dalam matematika yang tugasnya mengubah nilai input menjadi nilai output Umumnya fungsi disertai penggunaan parameter untuk input data. Parameter aktual digunakan saat memanggil prosedur, melalui parameter ini data dikirim baik berupa konstanta atau variable.Parameter formal digunakan pada saat mendeklarasikan nama prosedur, melalui parameter ini data diterima dari parameter aktual, selalu berupa variabel, melakukan casting otomatis dengan urutan. B. Statement I/O ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Salah satu bagian terpenting dalam pemrograman adalah bagaimana mempelajari bahasa program yang kita gunakan untuk membuat aplikasi yang dapat menerima input dan menghasilkan output. Input merupakan aksi dari user dalam mentransfer informasi ke memori utama komputer, dan output sebagai kebalikan proses input. Aksi input dan output dilakukan melalui bagian program yang dikenal dengan nama user interface (antarmuka pengguna). Dengan kata lain interaksi pengguna dengan komputer diakukan lewat interface. Interface yang paling sederhana, adalah bentuk antar muka berbasis text yang dikenal dengan nama command line atau console interface. Pada Java input dan output ditangani oleh objek Streams.Objek ini dapat digambarkan sebagai pipa yang menghubungkan user dengan kompuer. Data yang berasal dari user dan melalui pipa ini disebut stream input dan stream output untuk kebalikkannya. Setiap program java memiliki tiga strem standart, yaitu 3, System.in, System.out, and System.err. Sebagian dari hirarki pada class IO java dapat dilihat pada gambar berikut ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Pada java interface dapat dibangun dengan pendekatan prosedur atau fungsi. Prosedure merupakan sekumpulan satu blok instruksi dengan tugas yang spesifik dimana blok ini bukan program yang berdiri sendiri dan untuk menjalankan prosedur dengan dipanggil di program utama. Perbedaan antara prosedur dan fungsi adalah bahwa prosedure tidak mengembalikan nilai. C. Input menggunakan BufferedReader Objek BufferedReader digunakan untuk menangani inputan dari keyboard. Objek ini masuk dalam kelas Reader. ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Pada Java semua inputan yang dilakukan melalui keyboard diterima sebagai string. Sehingga untuk data numerik, type data tersebut harus dikonversi ke bentuk bilangan menggunakan class wrapper yaitu Integer and Double. Berikut adalah contoh penggunaan class tersebut. int m = Integer.parseInt("55"); double num = Double.parseDouble("55.2"); Contoh 1: ...................................................................... String inputString = new String(); System.out.println("How many total miles did you run? "); inputString = input.readLine(); // Input a String double miles = Double.parseDouble(inputString); // Konvert System.out.println("How many minutes did it take you? "); inputString = input.readLine(); // Input String lainnya double minutes = Double.parseDouble(inString); // konvert System.out.println("Your average pace was " + minutes/miles + " minutes per mile"); ............................................................................ Contoh 2: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class GetInputFromKeyboard ‘13 5 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id { public static void main( String[] args ){ BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) ); String nama= ""; System.out.print("Ketik Nama Anda:"); try{ name = dataIn.readLine(); }catch( IOException e ){ System.out.println("Error!"); } System.out.println("Hello " + nama +"!"); } } D. Graphical User Interface (GUI) Saat ini bentuk teks mulai jarang digunakan. Pada kebanyakan aplikasi, interface program lebih disukai yang berbentuk gafik. Inteface ini dikenal dengan nama Graphical User Interfaces (GUIs). Pemrograman pada GUI juga memperhitungkan kemungkinan aksi yang dilakukan oleh user. Aksi ini kemudian dijadikan sebagai acuan untuk menjalankan suatu modul. Model pemrogman ini dikenal juga sebagai event-driven programming.Java menyediakan liibrary GUI pada dalam dua paket terpisah yaitu class Swing dan class AWT. Misal untuk button di awt ada di class java.awt.Button class dan class javax.swing.JButton class untuk di Swing. Swing merupakan bagian dari Java Foundation Classes (JFC). Hirarki paket GUI pada Java dapat dilihat pada gambar berikut; ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Umumnya desain interface yang sederhana paling tidak ada tiga jenis komponen yang biasa digunakan dengan tiga fungsi utama dari antarmuka pengguna. Komponen untuk fungsi input, output, dan kontrol dapat menggunkan komponen : JTextField JtextField adalah contoh dari komponen input / masukan. JtextArea Merupakan komponen output diman pengguna dapat menggunakan JtextArea untuk menampilkan teks dalam area teks. JButton Komponen kontrol yang memungkinkan pengguna untuk mengontrol tindakan program. JButton adalah contoh dari komponen kontrol. Fungsi kontrol dari buuton dapat dikaitkan dengan tindakan/bagian program harus dijalankan setiap kali pengguna mengklik objek button. JLabel Komponen ini komponen output dan dapat digunakan untuk menampilkan informasi label objek pada interface. ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Ketiga komponen biasanya diletakan pada main window. Komponen yang digunakan untuk mebuat jendela utama umumnya Jframe. Berikut adalah contoh penggunaan Jframe import javax.swing.*; public class SimpleGUI extends JFrame { public SimpleGUI(String title) { setSize(200,150); setLocation(100, 150); setTitle(title); setVisible(true); // Displays the JFrame } // SimpleGUI() public static void main(String args[]) { new SimpleGUI("My GUI"); } // main() } // SimpleGUI class Gambar berikut mengilustrasikan komponen yang sering digunakan pada interface berbasis grafik. Gambar berikut memperlihatkan constructors dan metode public komponen JTextArea, JTextField, JButton, and JLabel components. Penggalan segemen kode program berikut adalah ilistrasi penggunaan ketiga jenis konstruktor tersebut. ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id // Deklarasi instance variables components private JLabel prompt; private JTextField inField; private JTextArea display; private JButton goButton; // Instantiate the components prompt = new JLabel("Nama anda : "); inField = new JTextField(10); // lebar 10 chars display = new JTextArea(10, 30); // 10 rows x 30 columns goButton = new JButton("Klik disini"); Setelah komponen inteface dibuat maka, komponen tersebut dapat ditamhkan ke interface dengan metode add(). JPanel inputPanel = new JPanel(); inputPanel.add(prompt); // Add JLabel to panel inputPanel.add(inField); // Add JTextField to panel inputPanel.add(goButton); // Add JButton to panel contentPane.add("South", inputPanel);/ Add to Jframe Tahapan diatas baru pada proses pembuatan interface. Tahap berikutnya adalah menambahkan metode yang diperlukan untuk masing-masing komponen interface. Metode ini dikenal dengan nama actionPerformed () dan merupakan bagian dari interface ActionListener. public abstract interface ActionListener extends EventListener { public abstract void actionPerformed(ActionEvent e); } Contoh program : import javax.swing.*; import java.awt.*; import java.awt.event.*; ‘13 9 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class GreeterGUI extends JFrame implements ActionListener { private JTextArea display; private JTextField inField; private JButton goButton; private Greeter greeter; public GreeterGUI(String title) { greeter = new Greeter(); buildGUI(); setTitle(title); pack(); setVisible(true); } // GreeterGUI() private void buildGUI() { Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); display = new JTextArea(10,30); inField = new JTextField(10); goButton = new JButton("Click here for a greeting!"); goButton.addActionListener(this); JPanel inputPanel = new JPanel(); inputPanel.add(new JLabel("Input your name here: ")); inputPanel.add(inField); inputPanel.add(goButton); contentPane.add("Center", display); contentPane.add("South", inputPanel); } // buildGUI() public void actionPerformed(ActionEvent e) { if (e.getSource() == goButton) { String name = inField.getText(); display.append(greeter.greet(name) + "\n"); } } // actionPerformed() } // GreeterGUI class Contoh Menggunakan class inteface diatas ‘13 10 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class GreeterApplication { public static void main(String args[]) { new GreeterGUI("Greeter"); } } Contoh : // Addition.java // Addition program menggunakan JOptionPane untuk input dan output. import javax.swing.JOptionPane; // program menggunakan JOptionPane public class Addition { public static void main( String args[] ) { // input dari JOptionPane String firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); String secondNumber = JOptionPane.showInputDialog( "Enter second integer" ); // convert String ke Numerik int number1 = Integer.parseInt( firstNumber ); int number2 = Integer.parseInt( secondNumber ); int sum = number1 + number2; // add numbers // display result JOptionPane.showMessageDialog( null, "Jumlah " + sum, "Sum of Two Integers", JOptionPane.PLAIN_MESSAGE ); } } Soal 1. Dengan menggunakan BufferedReader . ‘13 11 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Buat program untuk menghitung luas persegi panjang 2. Dengan menggunakan seperti pada contoh program Addition . ‘13 12 Buat program untuk menghitung luas segitiga Buat program untuk menghitung volume balok Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 13 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 4 DATA A. Jenis Data Java merupakan contoh bahasa yang strongly typed language. Hal ini berarti bahwa setiap variabel harus memiliki tipe yang sudah dideklarasikan. Terdapat 8 tipe primitif, 6 diantaranya adalah tipe bilangan ( 4 tipe integer, 2 tipe floating point), 1 tipe karakter char, digunakan mengawa-sandi (encode) Unicode, dan 1 tipe boolean. Integer Tipe int short long Kebutuhan 4 byte 2 byte 8 byte byte 1 byte Range -2.147.483.648 sampai 2.147.483.647 - 32.768 -i 32.767 9.223.372.036.854.775.808L 9.223.372.036.854.775.807L - 128 - 127 - Floating Point Tipe float double Kebutuhan 4 byte 8 byte Range 3,40282347E+38F ( 7 digit desimal signifikan) 1,79769313486231570E+308 (15 digit desimal siignifikan) Char Tipe char menggunakan tanda kutip tunggal untuk menyatakan suatu char. Tipe char juga menyatakan karakter dalam upaya mengawa-sandi unicode, yang merupakan kode 2-byte. Karakter unicode paling sering dinyatakan dalam istilah skema pengkodean hexadesimal yang dimulai dari \u0000 sampai \uFFFF. Selain karakter bebas (escape ‘ \u ‘ yang menyatakan karakter unicode di Java terdapat juga \b \t \n \r \” \’ \\ ‘13 2 backspace tab linefeed carriage return double quote single quote a backslash Pemrograman Berorientasi Objek Tim Dosen \u0008 \u0009 \u000a \u000d \u0022 \u0027 \u005c Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Boolean Tipe boolean memiliki nilai true dan false. Tipe ini digunakan untul logical testing dengan menggunakan operator relasional. B. Casting type data Sesekali akan lebih mudah untuk mengkonversi data dari satu jenis ke jenis yang lain. Sebagai contoh, kita mungkin ingin memperlakukan integer sebagai nilai floating point selama perhitungan.Konversi harus ditangani dengan hati-hati untuk menghindari kehilangan/pemenggalan nilai data. Konversi pelebaran adalah contoh konversi yang paling aman, karena konversi ini cenderung untuk meningkatkan type data yang lebih rendah ke tingkat yang lebih tinggi. Sebaliknya pada kasus pengkoversian data dari type data yang lebih tinggi ke tiingkat yang lebih rendah ( konversi penyempitan ) ada kemungkinan terjadi pemenggalan data.Pada Java konversi data dapat terjadi dalam tiga cara: • assignment conversion • arithmetic promotion • casting Pada assignment conversion terjadi pada saat satu jenis data ditugaskan untuk variabel lain. public class Geometry { public static void main (String[] args) { int sisi = 7; System.out.println ("Bangun dengan " + sisi + " sis."); sisi = 10; // assignment statement System.out.println ("Bangun dengan " + sisi + " sis."); sisi = 12; System.out.println ("Bangun dengan " + sisi + " sis."); } } ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Pada arithmetic promotion terjadi secara otomatis ketika operator dalam ekspresi mengkonversi operan mereka. Contoh public class Addition { public static void main (String[] args) { System.out.println ("24 and 45 concatenated: " + 24 + 45); System.out.println ("24 and 45 added: " + (24 + 45)); } } Output dari program diatas 24 and 45 concatenated: 2445 24 and 45 added: 69 Casting adalah yang paling kuat, dan berbahaya, teknik untuk konversi . Pelebaran dan penyempitan konversi dapat dicapai dengan secara eksplisit.Untuk cast, jenis ini dimasukkan dalam tanda kurung di depan nilai yang dikonversi.Misal jika total dan hitung bilangan bulat, tapi kita menginginkan hasil floating point pada hasil pembagiannya dapat dilakukan sebagai berikut. hasil = (float) total / hitung; Casting pada Java : 1. Implicit casting 2. Explicit casting Implisit casting (konversi pelebaran). Sebuah tipe data ukuran yang lebih rendah (menggunkan lebih sedikit memori) ditugaskan untuk jenis data ukuran yang lebih besar. Hal ini dilakukan secara implisit oleh JVM. Contoh : int x = 10; // membutuhkan 4 bytes ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id double y = x; // occupies 8 bytes Explicit casting (konversi pelebaran). Sebuah tipe data ukuran yang lebih besar (menggunkani lebih banyak memori) tidak dapat ditugaskan untuk jenis data ukuran rendah. Hal ini tidak dilakukan secara implisit oleh JVM dan harus dilakukan oleh programmer. Contoh Jika dilkukan casting double x = 10.5; int y = x; maka akan terjadi error. Untuk menghindari error didepan variabel x ditambahkan (int) seperti dibawah ini. double x = 10.5; int y = (int) x; C. Format keluaran Berikut adalah bentuk format keluaran menggunakan class NumberFormat dan DecimalForma import java.util.Scanner; import java.text.NumberFormat; public class Price { public static void main (String[] args) { Scanner input = new Scanner( System.in ); final double TAX_RATE = 0.06; // 6% sales tax int quantity; double subtotal, tax, totalCost, unitPrice; System.out.print ("Enter the quantity: "); quantity = input.nextInt(); System.out.print ("Enter the unit price: "); unitPrice = input.nextDouble(); subtotal = quantity * unitPrice; tax = subtotal * TAX_RATE; ‘13 5 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id totalCost = subtotal + tax; NumberFormat money = NumberFormat.getCurrencyInstance(); NumberFormat percent = NumberFormat.getPercentInstance(); System.out.println ("Subtotal: " + money.format(subtotal)); System.out.println ("Tax: " + money.format(tax) + " at " + percent.format(TAX_RATE)); System.out.println ("Total: " + money.format(totalCost)); } } // format keluaran menggunakan class DecimalFormat . //******************************************************************** import java.util.Scanner; import java.text.DecimalFormat; public class CircleStats { public static void main (String[] args) { Scanner input = new Scanner( System.in ); int radius; double area, circumference; System.out.print ("Enter the circle's radius: "); radius = input.nextInt(); area = Math.PI * Math.pow(radius, 2); circumference = 2 * Math.PI * radius; DecimalFormat fmt = new DecimalFormat ("0.###"); System.out.println ("The circle's area: " + fmt.format(area)); System.out.println ("The circle's circumference: " + fmt.format(circumference)); } } ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 5 OPERATOR DAN EKSPRESI A. OPERATOR Operator adalah simbol atau karakter khusus yang digunakan dalam suatu ekpresi. Operator pada java diklasifikasikan dalam dua kelompok. Unary operator , opertor yang melibatkan satu operand. Binary operator, operator yang melibatkan dua operand dan tertiary jika melibatkan tiga operand. dikelompokan menjadi beberapa kelompok. Operator penugasan Operator aritmatika Operator perbandingan Operator logika dan Operator bit Operator penugasan ( assigmen ) = Operator Penulisan Arti += X += Y X=X+Y -= X -= Y X=X–Y *= X *= Y X=X*Y /= X /= Y X=X/Y %= X %= Y X=X%Y Operator aritmatika Operator Operation + Addition - Subtraction * Multiplication / Division % Modulo Contoh : Bitwise Operator ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Jenis operator ini Java Operator Operation & AND | OR ^ XOR >> Shift Kanan << Shift Kiri >>> Shift Kanan isi dengan nol Contoh : public class BitwiseOr { public static void main (String[ ] args) { int x = 133; // pendefinisian variabel int y = 35; int z; z = x | y; System.out.println ("Nilai x = " + x); System.out.println ("Nilai y = " + y); System.out.println ("x | y = " + z); } }_ Unary Operator Operator Operation ~ Unary NOT - Minus ++ Increment -- Decrement Contoh : public class IncrementDecrement { ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public static void main (String[ ] args) { int a, b, c, d; // pendefinisian variabel int x = 5; int y = 10; a = ++x; b = x++; c = -- y; d = y --; System.out.println (a); System.out.println (b); System.out.println (c); System.out.println (d); } } Relational Operator Operator Operation == Equal To != Not Equal To > Greater Than < Less Than >= Greater or Equal To <= Less or Equal To Contoh : public class Relasi { public static void main (String[ ] args) { boolean nilai; ‘13 4 Pemrograman Berorientasi Objek Tim Dosen // pendefinisian variabel Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id nilai = 10 > 5; System.out.println ("10 > 5 " + nilai); nilai = 10 < 5; System.out.println ("10 < 5 " + nilai); nilai = 10 == 5; System.out.println ("10 == 5 " + nilai); nilai = 10 != 5; System.out.println ("10 != 5 " + nilai); nilai = 10 <= 5; System.out.println ("10 <= 5 " + nilai); nilai = 10 >= 5; System.out.println ("10 >= 5 " + nilai); } } Operator logika Operator Operation ! Short-circuit NOT && Short-circuit AND || Short-circuit OR ?: Operator ternary if-then-else Urutan eksekusi pada suatu ekpresi yang melibatkan beberapa operator dijalankan berdasarkan urutan operator (preseden operator ). Berikut adalah urutan eksekusi dari operator. Tertinggi ‘13 5 () [] . ++ -- ~ * / % + - >> >>> << > >= < Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id ! <= == != & ^ | && || ?: = op= Terendah Contoh : Contoh : public class Urutan { public static void main (String[ ] args) { int x, y, z; x = 7 + 2 * 4; y = 9 * 5 % 2; z = 18 / (6-4); System.out.println (x); System.out.println (y); System.out.println (z); } } ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id B. EKSPRESI Ekpresi adalah bentuk ungkapan yang menghasilkan nilai ( mengembalikan nilai ). Dalam bentuk yang sederhana ekpresi dapat berupa sebuah literal atau variabel . Dalam bentuk yang komplek ekpresi dapat terdiri dari operand dan operator. Contoh : 5-4 Merupakan bentuk ekpresi yang menghasilkan nilai 1. 5 dan 4 disebut operand dan – berperan sebagai operator. Contoh : public class Gabung { public static void main (String[ ] args) { System.out.println (4-5*12); } } Contoh : public class Gabung { public static void main (String[ ] args) { String kalimat, satu, dua, tiga; satu = "Bahasa "; dua= "Pemrograman "; tiga = "Java"; kalimat = satu+dua+tiga; System.out.println (kalimat); } } ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 6 STRUKTUR KENDALI (CONTROL) A. Struktur kontrol Program Setiap masalah komputasi dapat diselesaikan dengan menjalankan serangkaian tindakan dalam urutan tertentu. Sebuah prosedur untuk memecahkan masalah dalam hal tindakan untuk mengeksekusi dan urutan tindakan mengeksekusi disebut algoritma. Berikut ini menunjukkan urutan tindakan seseorang. Misal tahapan seseorang untuk berangkat kerja adalah sebagai beriku : (1) Bangun dari tempat tidur,(2) melepas baju tidur, (3) mandi, (4) berpakaian, (5) sarapan, (6) Berangkat kerja. Apa yang terjadi jiika urutan diatas diubah dalam bentuk berikut (1) Bangun dari tempat tidur,(2)melepas baju tidur,(3)Berpakaian,(4)Sarapan, (5) Mandi,(6) Berangkat kerja. Menentukan urutan pernyataan (tindakan) mengeksekusi dalam sebuah program yang disebut program kontrol. Struktur kontrol adalah elemen bahasa yang mengubah aliran kontrol program, misal pengunaan pernyataan if untuk memilih antara dua atau lebih jalur alternatif dalam program. Menggunakan struktur loop untuk mengulang pernyataan. Flow dari aliran program dapat dibagi dalam empat kelompok berikut. 1. Sekuence 2. Pemilihan ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 3. Pengulangan 4. Percabangan 1. Struktur sequence Pada dasarnya eksekuksi yang dilakukan oleh komputer adalah urut sesuai dengan urutan dalam penulisan kode program. Komputer akan mengeksekusi dari baris pertama sampai baris terahir. Contoh : 1 // Addition.java 2 // Addition program that displays the sum of two numbers. 3 import java.util.Scanner; // program menggunakan class scanner 4 5 public class Addition 6 { 7 // main method awal eksekusi program 8 public static void main( String args[] ) 9 { 10 // create Scanner objek scanner 11 Scanner input = new Scanner( System.in ); 12 13 int number1; // first number to add 14 int number2; // second number to add 15 int sum; // sum of number1 and number2 ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 16 17 System.out.print( "Enter first integer: " ); // prompt 18 number1 = input.nextInt(); // read first number from user 19 20 System.out.print( "Enter second integer: " ); // prompt 21 number2 = input.nextInt(); // read second number from user 22 23 sum = number1 + number2; // add numbers 24 25 System.out.printf( "Sum is %d\n", sum ); // display sum 26 27 } // end method main 28 29 } // ahir class Addition 2. Struktur Kontrol Pemilihan Struktur kontrol pemilihan digunakan untuk merubah alur eksekusi program dari bentuk sekuence ke percabangan. Struktur kontrol ini terdiri dari a. If ...... then b. select a. Struktur if ...else Bentuk umum If kondisi Statement ...................... Else Stetemant ..................... contoh : public class PernyataanIf { public static void main (String[ ] args) { int nilai = 70; // pendefinisian variabel if (nilai >= 60) System.out.println ("Nilai = " + nilai + " } } Contoh : ‘13 4 // strukturifelse.java // Contoh penggunaan pernyataan if else Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Lulus ujian"); public class strukturifelse { public static void main (String[ ] args) { int nilai // pendefinisian variabel nilai = 75; System.out.println ("Nilai = " + nilai); if (nilai >= 80) System.out.println ("Predikat A"); else if (nilai >= 69) System.out.println ("Predikat B"); else if (nilai >= 56) System.out.println ("Predikat C"); else if (nilai >= 40) System.out.println ("Predikat D"); else System.out.println ("Predikat E"); } } IF bersarang ( Nested IF ) If kondisi statement else If kondisi statement else If kondisi statement else If kondisi statemet else statement ‘13 5 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id contoh public class PernyataanIfNested { public static void main (String[ ] args) { int umur = 28; // pendefinisian variabel String pendidikan = "sarjana"; System.out.println ("Umur = " + umur); System.out.println ("Pendidikan = " + pendidikan); if (umur <= 30); { if (pendidikan == "sarjana") System.out.println ("Diterima menjadi karyawan"); } } } b. Struktur switch ... case switch .... case switch (userInput) { case 1: statement case 2: statement default: ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id statement break; } contoh : public class PernyataanSwitch { public static void main (String[ ] args) { int userInput; // pendefinisian variabel userInput = 2; switch (userInput) { case 1: System.out.println ("Anda mimilih pertama"); break; case 2: System.out.println ("Anda mimilih kedua"); break; case 3: System.out.println ("Anda mimilih ketiga"); break; default: System.out.println ("Salah pilih"); break; } } } B. Soal 1. Ketik Program Berikut // Nama file: PernyataanIfIn.java // Dialog box untuk input data integer import javax.swing.*; public class PernyataanIfIn { public static void main (String[] args) ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id { int nilai; String bilangan = JOptionPane.showInputDialog("Masukkan nilai:"); System.out.println("Input angka: " + bilangan); nilai = Integer.parseInt(bilangan); if (nilai >= 60) System.out.println ("Nilai = " + nilai + " System.exit(0); Lulus Ujian"); } } 2. Buat program Buatlah program dengan menggunakan statemen If else dengan melakukan perhitungan hasil ujian seperti tampilan dibawah ini: ‘13 8 Masukan : Nama, Tugas, Uts,Uas Keluaran : Hasil ujian, Keterangan Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 9 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 7 KELAS 1. Konsep Pemrograman Berorientasi Objek Sejarah PBO Pemrograman berorientasi objek mulai dibicarakan sekitar akhir tahun 60’an. Pertama kali diperkenalkan oleh Ole Johan Dhal dan Kristen Nygaard dari Universitas Oslo, Norwegia pada tahun 1966 dalam jurnal dengan judul “SIMULA An Algol Based Simulation Language”. Jadi OOP bukan hal baru.Pada tahun 1970 bahasa SMALTALK dikembangkan oleh XEROX PARC. Pada saat itu sebagian dari dunia menggunaan COBOL dan FORTRAN dengan metode dekomposisi dan fungsional. Perubahan terjadi selama beberapa dekade sampai dikenalnya faktor utama berorientasi objek, yaitu : Konsep dasar berorientasi objek, konsep berorientasi objek mulai populer dimana memulai analisis dan disain menjadi lebih diperhatikan daripada coding. Teknologi dasar pengembangan sistem, coding sangat dipengaruhi oleh bahasa pemrograman yan tersedia. Untuk pengembangan program terstruktur lebih mudah dikembangkan dengan pascal, atau C, dan pembuatan coding berorientasi objek akan lebih mudah dikembangkan dengan bahasa pemrograman C++, JAVA, VB.Net, PHP. Kondisi sistem, sistem yang dibagun saat ini berbeda dengan sistem beberapa tahun yang lalu. Sistem yang sekarang lebih besar, kompleks dan dapat juga merupakan sistem yang interaktif. Pendekatan berorientasi objek merupakan cara yang lebih tepat untuk sistem yang berorientasi objek. Pengenalan model, banyak organisasi mendapatkan bahwa sistem yang dibagngun pada saat ini cendrung berorientasi data dari pada sistem yang dibagun sekitar tahun 1970 dan 1980. pada waktu itu penggunaan model telah mendapatkan prioritas lebih besar dibandingkan dengan kompleksitas fungsional 2. Pengembangan Pengembangan berorientasi objek merupakan cara berpikir baru tantang perangkat lunak berdasarkan abstraksi alam dunia nyata. ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Hal yang lebih penting dalam pengembangan berorientasi objek adalah konsep mengidentifikasi objek dan mengorganisasi domain aplikasi dibandingkan dengan fokus penggunaan bahasa pemrograman berorientasi objek atau tidak. 3. Abstraksi Abstraksi suatu cara melihat suatu objek dalam bentuk yang lebih sederhana, contoh: Bila kita melihat sebuah mobil bukan sebagai sebuah kumpulan atau ribuan komponen elektronik , mekanik dengan empat buah ban, besi, jok stir dan sebagaiya. Walau kenyataanya demikian namum kita melihat mobil sebagai single entity yang merupakan suatu objek yang mempunyai sifat dan karakteristik tersendiri. Kita tidak perlu tahu bagaimana kompleknya mobil itu, tidak perlu tahu bagaimana cara bekerja mesin, dll. Kita tidak meihat bagian-bagian dalam sebuah mobil sebagai suatu bagian yang berdiri sendiri-sendiri, tetapi sebagai satu kesatuan. Dengan abstraksi kita melihat suatu sistem yang komplek sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas subsistem-subsistem 4. Elemen – element sebuah objek Setiap objek selalu memiliki keadaan (State) dan behaviour yang dapat mengubah state tersebut. Contoh: Manusia memiliki state umur, tinggi, berat, dll. Demikian pula behaviour yang dimiliki manusia seperti makan, tidur, bekerja, dll. Behaviour ini dapat mengubah atau tidak sama sekali state yang dimiliki oleh suatu objek. Dalam bahasa Java state akan lebih dikenal dengan nama properties atau field, sedangkan behavioir akan dikenal dengan nama method. 5. Konsep Berorientasi Objek ( Encapsulation, Inheritance, Polymorphism) Encapsulation Enkapuslasi adalah satu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interfensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan sistem itu sendiri, akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface. Contoh : ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Seperti mobil sistem transmisi didalam mobil, sistem transmisi ini memyembunyikan dari anda bagaimana cara ia bekerja. Anda sebagai pengguna hanya cukup memindahkan tongkat transimis untuk mendapat percepatan yang anda inginkan. Tongkat transmisi inilah yang satu-satunya yang menjadi interface dalam mengatur transmisi dalam mobil tersebut. Kita tidak bisa menggunakan pedal rem untuk mengakses sistem transmisi tersebut, konsep yang sama dapat diterapkan dalam pemrograman Inheritance Kita sebenarnya terbiasa melihat objek tesusun secara hierarki berdasarkan calss-nya masing-masing. Dari sini muncul konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkan ciri atau sifat dari class tersebut. Polymorphism Polymorphism berasal dari bahasa yunani yang berarti banyak bentuk. Dalam OOP konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintahkan suatu objek agar melaksanakan suatu aksi atau tindakan yang mungkin secara prinsip sama tetapi secara proses berbeda. Contoh yang konkrit kembali ke masalah mobil, mobil yang ada dipasaran terdiri atas beberapa tipe dan merek, namun semunya memiliki interface kemudi yang sama, seperti stir, pedal gas dan rem.Harus diperhatikan bahwa interface yang sama tidak berarti cara kerjanya juga sama. Contoh bila anda menekan pedal gas maka mobil akan melaju cepat tetapi bagaimana proses ini terjadi dapat berbeda-beda untuk setiap jenis mobil.Dengan menggunakan ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id interface yang sama anda akan mendapatkan hasil yang sama, tetapi bagaimana proses yang terjadi dari aksi menjadi hasil mungkin saja berbeda. 6. Konsep Class dan Objek Objek adalah kesatuan entitas (benda), baik yang berwujud nyata ataupun hanya suatu sistem atau konsep yang memiliki sifat karakteristik dan fungsi. Class adalah pemodelan dari objek yang berisi informasi (aturan) tentang sifat karakteristik (data) dan tingkah laku (method yang dimiliki oleh objek tersebut). Hubungan antara class dan objek dapat diilustrasikan sebagai resep kue dengan kuenya, dimana resep kue adalah class dan kue adalah objeknya. Metode (method) disebut juga service, prosedur atau fungsi seperti yang terdapat pada bahasa pascal, tetapi cara kerjanya agak berlainan. Method adalah sub program yang tergabung dalam objek bersama-sama dengan atribut. Method digunakan untuk pengaksesan terhadap data yang terdapat dalam objek tersebut. Atribut menggambarkan data yang dapat memberikan informasi dengan class atau objek dimana atribut tersebut berada. Contoh 1 1 2 3 4 5 ‘13 5 // Fig. 3.4: GradeBook.java // Class declaration with a method that has a parameter. public class GradeBook { Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 6 // display a welcome message to the GradeBook user 7 public void displayMessage( String courseName ) 8 { 9 System.out.printf( "Welcome to the grade book for\n%s!\n", 10 courseName ); 11 } // end method displayMessage 12 13 } // end class GradeBook 1 // Fig. 3.5: GradeBookTest.java 2 // Create GradeBook object and pass a String to 3 // its displayMessage method. 4 import java.util.Scanner; // program uses Scanner 5 6 public class GradeBookTest 7 { 8 // main method begins program execution 9 public static void main( String args[] ) 10 { 11 // create Scanner to obtain input from command window 12 Scanner input = new Scanner( System.in ); 13 14 // create a GradeBook object and assign it to myGradeBook 15 GradeBook myGradeBook = new GradeBook(); 16 17 // prompt for and input course name 18 System.out.println( "Please enter the course name:" ); 19 String nameOfCourse = input.nextLine(); // read a line of text 20 System.out.println(); // outputs a blank line 21 22 // call myGradeBook's displayMessage method 23 // and pass nameOfCourse as an argument 24 myGradeBook.displayMessage( nameOfCourse ); 25 } // end main 26 27 } // end class GradeBookTest Contoh 2 1 // MaximumFinder.java 2 // 3 import java.util.Scanner; 4 5 public class MaximumFinder 6 { 7 // mencari nilai maximum dari 3 nilai yang di inputkan. 8 public void determineMaximum() 9 { 10 // create Scanner for input from command window 11 Scanner input = new Scanner( System.in ); 12 13 // obtain user input 14 System.out.print( ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 15 "Enter three floating-point values separated by spaces: " ); 16 double number1 = input.nextDouble(); // read first double 17 double number2 = input.nextDouble(); // read second double 18 double number3 = input.nextDouble(); // read third double 19 20 // determine the maximum value 21 double result = maximum( number1, number2, number3 ); 22 23 // display maximum value 24 System.out.println( "Maximum is: " + result ); 25 } // end method determineMaximum 26 27 // returns the maximum of its three double parameters 28 public double maximum( double x, double y, double z ) 29 { 30 double maximumValue = x; // assume x is the largest to start 31 32 // determine whether y is greater than maximumValue 33 if ( y > maximumValue ) 34 maximumValue = y; 35 36 // determine whether z is greater than maximumValue 37 if ( z > maximumValue ) 38 maximumValue = z; 39 40 return maximumValue; 41 } // end method maximum 42 } // end class MaximumFinder 1 // MaximumFinderTest.java 2 // Aplikasi test class MaximumFinder. 3 4 public class MaximumFinderTest 5 { 6 // application starting point 7 public static void main( String args[] ) 8 { 9 MaximumFinder maximumFinder = new MaximumFinder(); 10 maximumFinder.determineMaximum(); 11 } // end main 12 } // end class MaximumFinderTest ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 8 CLASS Pewarisan,Polimorphisme,Interface 1. Pewarisan Inheritance adalah kemampuan untuk membuat class turunan yang mewarisi property dan method dari class induk. Ketika kita membuat suatu class menggunakan inheritance, kita akan mewarisi behavior dan data dari class induknya (base class / Super Class). Class yang kita buat menggunakan pewarisan dari class induk disebut subclass atau derived class. Proses pewarisan dari base class ke subclass disebut deriving. Inheritance dapat juga dikatakan sebagai proses pewarisan seluruh data dan method yang dimiliki oleh suatu class kepada class lainnya. Class yang mewariskan disebut Base Class / Super Class, class yang diwariskan disebut SubClass. ‘13 2 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Shape merupakan kelas induk atau superclass, square,rectangle dan circle adalah kelas anak. Class anak mewarisa property dan metode class induknya. Pada bahasa pemrograman java, semua class, termasuk class yang membangun Java API, adalah subclasses dari superclass Object. Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Sehingga kode method hanya sekali ditulis dan mereka dapat digunakan oleh semua subclass. Dengan demikian subclass hanya perlu mengimplementasikan. 2. Mendefinisikan Superclass dan Subclass Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Sebagai ilustrasi, misalkan kita memiliki book sebagai class induk. Kemudian dibuat class baru dengan nama dictionary yang diturunkan dari kelas book. ‘13 3 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id class Book { protected int pages; public Book (int pages) { this.pages = pages; } public void pageMessage () { System.out.println ("Number of pages: " + pages); } }// ahir class book Perhatikan bahwa atribut pages dideklarasikan sebagai protected, penggunaan protected ini agar atribut tersebut dapat diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai private, subclasses tidak dapat menggunakannya. Perlu diingat bahawa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya. Selanjutnya kita membuat class lain bernama Dictionary yang diturunkan dari class Book. Class Dictionary kita buat dengan hanya mengextend class Book. Subclass secara otomatis akan mewariskan semua properti dan method yang ada pada class Book. class Dictionary extends Book { private int definitions; public Dictionary (int pages, int definitions) { super (pages); this.definitions = definitions; } public void definitionMessage () { System.out.println ("Number of definitions: " + definitions); ‘13 4 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id System.out.println ("Definitions per page: " + definitions/pages); } } // ahir class dictionary Ketika object Dictionary di-instantiate, default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam subclass dieksekusi, seperti terlihat pada contoh berikut. class Words { public static void main (String[] args) { Dictionary webster = new Dictionary (1500, 52500); webster.pageMessage(); webster.definitionMessage(); } } 3. Kata Kunci Super Pada subclass Dictionary pada contoh diatas memanggil constructor secara eksplisit dari superclass terdekat melalui construktor super. public Dictionary (int pages, int definitions) { super (pages); this.definitions = definitions; } Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya. 4. Overriding Method ‘13 5 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Untuk beberapa pertimbangan, terkadang class asal perlu mempunyai implementasi berbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. Kemampuan subclass untuk memodifikasi (mendefinisikan kembali) data dan method dari class induknya. Proses ini akan mengubah data dan method dari kedua class tersebut, class anak dan induknya. Ada dua alasan mengapa melakuan overriding: 1. Mendefinisikan kembali method class indunya secara total. 2. Menambahkan behavior tertentu pada method class induknya. Misal kita memiiki implementasi berikut untuk method message dalam superclass. class Thought { public void message() { System.out.println ("Persiapan : " +"Instalasi."); System.out.println(); } } Override method message dalam subclass Advice dapat dituliskan seperti berikut, class Advice extends Thought { public void message() { System.out.println ("Peringatan : " + "Baca readme.txt"); System.out.println(); super.message(); } } ‘13 6 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Berikut contoh class pengguna, ke dua class diatas class Messages { public static void main (String[] args) { Thought install = new Thought(); Advice readme = new Advice(); install.message (); readme.message (); // overriding } } 5. Metode final dan class final Java juga memungkinkan untuk mendeklarasikan class-class yang tidak lagi dapat diturunkan ke class berikutnya.. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Sebagai contoh, jika kita ingin class Book untuk dideklarasikan final, kita tulis, public final class Book { //area kode } Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String. Untuk mendeklarasikan method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method. Contoh public final String getBook() { ‘13 7 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id return name; } 6. Polimorphisme Polymorphism adalah penggunaan method dengan nama yang sama pada classclass yang berbeda dan memungkinkan method yang tepat dieksekusi berdasarkan konteks yang memanggilnya. Polymorphism dapat diimplementasikan menggunakan method Overloading dan method Overriding. Polymorphism memiliki arti “satu nama, banyak bentuk”. Hal ini disebut juga sebagai overloading yang berarti menggunakan hal yang sama untuk tujuan yang berbeda. Dengan menggunakan polymorphism kita dapat membuat banyak fungsi dengan nama yang sama tetapi memiliki dafatr argumen yang berbeda. Polymorphism dapat diilustrasikan sebagai berikut, perhatikanlah penggunaan kata “mentah” dalam beberapa kalimat. “sayuran itu masih mentah, belum dimasak”. “Pukulan petinju itu berhasil dimentahkan oleh lawannya”. “Gagasan ini masih mentah sehingga perlu dibahas kembali” . Kata “mentah” pada contoh dapat diaplikasikan pada baebagai objek dan dapat di interpretasikan ke dalam beberapa makna. Pada dasarnya polymorphism diimplementasikan melalui dua cara, yaitu polymorphism berbasis interface dan polymorphism berbasis inheritance. Seperti terlihat pada contoh berikut. /**Mendekalrasikan ekspresi gembira yang diturnkan dari ekpresi wajah */ class Gembira extends EkspresiWajah{ public String respons(){ return (“Ha ha ha h ahah .. saya gembira\n”); } } /**Mendekalrasikan ekspresi sedih yang diturnkan dari ekpresi wajah */ class Sedih extends EkspresiWajah{ public String respons(){ ‘13 8 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id return (“Hik .. hik... saya sedih\n”); } } /**Mendekalrasikan ekspresi marah yang diturnkan dari ekpresi wajah */ class Marah extends EkspresiWajah{ public String respons(){ return (“Haaaaaaaaaaiiiii... saya marah!!!!\n”); } } public class EkspresiEmosi { /**Main Method */ public static void main (String[] args) { System.out.prinln(“\nDEMO POLIMORPHISM”); System.out.prinln(“--------------------------------\ n”); //membuat objek-objek dari ekspresi dari wajah EkspresiWajah objEkspresi = new EkspresiWajah(); Gembira objGembira = new Gembira(); Sedih objSedih = new Sedih(); Marah objMarah = new Marah(); //Menyatakan objek-objek ekspresi tersebut menjadi //suatu daftar ekspresi EkspresiWajah[] ekspresi = new EkspresiWajah[4]; ekspresi [0] = objEkspresi; ekspresi [1] = objGembira; ekspresi [2] = objSedih; ekspresi [3] = objMarah; //Polymorphism membuat EkspresiWajah menjadi terlihat memiliki //beberapa tingkah laku / kondisi yang berbeda-beda ‘13 9 System.out.prinln(“Ekspresi[0] : “ + ekspresi[0].respons()); System.out.prinln(“Ekspresi[1] : “ + ekspresi[1].respons()); Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id System.out.prinln(“Ekspresi[2] : “ + ekspresi[2].respons()); System.out.prinln(“Ekspresi[3] : “ + ekspresi[3].respons()); } } 7. Interface Interface mirip dengan class, yang memiliki serangkian property, method dan event. Bedanya dengan class, intereface tidak memiliki implementasi sedangkan class dapat diimplementasikan. Berikut cara untuk membuat interface public interface [InterfaceName] { //beberapa method tanpa isi } Tujuan untuk membuat dan menggunakan interface dalam aplikasi adalah sebagai “future proof” dari kode program. Future proof artinya menyiapkan penggunaan dimasa mendatang untuk menghindari masalah yang mungkin timbul. Disisi lain, interface tidak dapat diubah setelah dipublikasikan, tetapi implementasi dari interface dapat berubah. Interface juga menyediakan cara lain untuk mengimplementasikan polymorphism. Melalui interface kita dapat menentukan metoda suatu komponen tanpa keharusan untuk menentukan bagaimana metoda tersebut dimplementasikan. Sehingga interface menyerupai prototype bagi class lain yang akan dikembangkan. Perhatikan penggalan program berikut // payable.Java public interface Payable { double getPaymentAmount(); } //Invoice.Java public class Invoice implements Payable { private String partNumber; private String partDescription; ‘13 10 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id private int quantity; private double pricePerItem; public Invoice( String part, String description, int count, double price ) { partNumber = part; partDescription = description; setQuantity( count ); setPricePerItem( price ); } public void setPartNumber( String part ) { partNumber = part; } public String getPartNumber() { return partNumber; } ....................................................................................... ....................................................................................... { return String.format( "%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f", "invoice", "part number", getPartNumber(), getPartDescription), "quantity", getQuantity(), "price per item", getPricePerItem() ); } public double getPaymentAmount() { return getQuantity() * getPricePerItem(); } } //Employee.Java public abstract class Employee implements Payable { private String firstName; private String lastName; private String socialSecurityNumber; public Employee( String first, String last, String ssn ) { firstName = first; lastName = last; socialSecurityNumber = ssn; } public void setFirstName( String first ) { firstName = first; } public String getFirstName() { return firstName; } ‘13 11 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id ........................ ........................ } // SalaryEmployee.Java public class SalariedEmployee extends Employee { private double weeklySalary; public SalariedEmployee( String first, String last, String ssn, double salary ) { super( first, last, ssn ); setWeeklySalary( salary ); } public void setWeeklySalary( double salary ) { weeklySalary = salary < 0.0 ? 0.0 : salary; } public double getWeeklySalary() { return weeklySalary; } public double getPaymentAmount() { return getWeeklySalary(); } } Dari contoh diatas, ada dua class yaitu Invoice dan SalaryEmploye yang mengimplemtasikan interface yang sama. Soal : 1. Ketik program berikut // Nama file: Pegawai.java // Contoh penggunaan overloading constructor class Pegawai { private int noKar; // variabel kelas ‘13 12 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id private String nama, alamat; // constructor dengan beberapa parameter public Pegawai (int k, String n, String a) { this.noKar = k; this.nama = n; this.alamat = a; } // constructor tanpa parameter public Pegawai () { } // constructor dengan satu parameter public Pegawai (String n) { this.nama = n; } public static void main (String[ ] args) { // Membuat objek dengan constructor pertama Pegawai kar1 = new Pegawai(1, "Andi", "Jl Thamrin 10"); // Membuat objek dengan constructor kedua Pegawai kar2 = new Pegawai(); // Membuat objek dengan constructor ketiga Pegawai kar3 = new Pegawai("Rina"); // Menampilkan data System.out.println ("Nomor Pegawai : " + kar1.noKar); System.out.println ("Nama Pegawai: " + kar1.nama); System.out.println ("Alamat Pegawai: " + kar1.alamat); System.out.println ("Nomor Pegawai : " + kar2.noKar); System.out.println ("Nama Pegawai: " + kar2.nama); System.out.println ("Alamat Pegawai: " + kar2.alamat); System.out.println ("Nomor Pegawai : " + kar3.noKar); System.out.println ("Nama Pegawai: " + kar3.nama); System.out.println ("Alamat Pegawai: " + kar3.alamat); } } ‘13 13 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 14 Pemrograman Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 9 MODUL 9 Kelas Dasar A. Java Lang Package Math Kelas Math yang berisi konstanta untuk nilai pi dan e. Kelas ini juga mendefinisikan metode perhitungan berbagai fungsi matematika, seperti fungsi trigonometri dan eksponensial. Semua konstanta dan metode tersedia dalam bentuk statis sehingga dalam penggunaannya kita tidak perlu lagi membuat sebuah instance dari kelas Math untuk menggunakan konstanta dan metode. Bahkan, kelas Matematika tidak mendefinisikan konstruktor publik, sehingga tidak dapat instantiated. Untuk memastikan bahwa metode di kelas ini memberikan hasil yang konsisten di bawah implementasi yang berbeda dari Jawa, semua metode menggunakan algoritma dari paket terkenal Math Library fdlibm yang didistribusikan secara bebas. Paket ini merupakan bagian dari netlib dan dapat diperoleh melalui http://netlib.att.com. Berikut adalah beberapa kelas math. A. Variabel 1. E public final static double E 2. Phi public final static double PI B. Methode sin public static double sin(double a) cos public static double cos(double a) tan public static double tan(double a) ‘13 2 exp Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public static double exp(double a) log public static double log(double a) throws ArithmeticException sqrt public static double sqrt(double a) throws ArithmeticException ceil public static double ceil(double a) floor public static double floor(double a) rint public static double rint(double a) pow public static double pow(double ArithmeticException round public static long round(double a) random public static synchronized double random() abs public static int abs(int a) max public static float max(float a,float b) min public static float min(float a, float b) contoh : public class fungsiMatematika { public static void main(String[] args) { int i = 7; int j = -9; double x = 72.3; double y = 0.34; System.out.println("i is " + i); System.out.println("j is " + j); ‘13 3 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id a,ouble b) throws System.out.println("x is " + x); System.out.println("y is " + y); System.out.println("|" + i + "| is " + Math.abs(i)); System.out.println("|" + j + "| is " + Math.abs(j)); System.out.println("|" + x + "| is " + Math.abs(x)); System.out.println("|" + y + "| is " + Math.abs(y)); System.out.println(x + " is approximately " + Math.round(x)); System.out.println(y + " is approximately " + Math.round(y)); System.out.println("The ceiling of " + i + " is " + Math.ceil(i)); System.out.println("The ceiling of " + j + " is " + Math.ceil(j)); System.out.println("The ceiling of " + x + " is " + Math.ceil(x)); System.out.println("The ceiling of " + y + " is " + Math.ceil(y)); System.out.println("The floor of " + i + " is " + Math.floor(i)); System.out.println("The floor of " + j + " is " + Math.floor(j)); System.out.println("The floor of " + x + " is " + Math.floor(x)); System.out.println("The floor of " + y + " is " + Math.floor(y)); System.out.println("min(" + i + "," + j + ") is " + Math.min(i,j)); System.out.println("min(" + x + "," + y + ") is " + Math.min(x,y)); System.out.println("min(" + i + "," + x + ") is " + Math.min(i,x)); System.out.println("min(" + y + "," + j + ") is " + Math.min(y,j)); System.out.println("max(" + i + "," + j + ") is " + Math.max(i,j)); System.out.println("max(" + x + "," + y + ") is " + Math.max(x,y)); System.out.println("max(" + i + "," + x + ") is " + Math.max(i,x)); System.out.println("max(" + y + "," + j + ") is " + Math.max(y,j)); System.out.println("Pi is " + Math.PI); System.out.println("e is " + Math.E); double angle = 45.0 * 2.0 * Math.PI/360.0; System.out.println("cos(" + angle + ") is " + Math.cos(angle)); System.out.println("sin(" + angle + ") is " + Math.sin(angle)); double value = 0.707; System.out.println("acos(" + value + ") is " + Math.acos(value)); System.out.println("asin(" + value + ") is " + Math.asin(value)); System.out.println("atan(" + value + ") is " + Math.atan(value)); System.out.println("exp(1.0) is " + Math.exp(1.0)); ‘13 4 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id System.out.println("exp(10.0) is " + Math.exp(10.0)); System.out.println("exp(0.0) is " + Math.exp(0.0)); System.out.println("log(1.0) is " + Math.log(1.0)); System.out.println("log(10.0) is " + Math.log(10.0)); System.out.println("log(Math.E) is " + Math.log(Math.E)); System.out.println("pow(2.0, 2.0) is " + Math.pow(2.0,2.0)); System.out.println("pow(10.0, 3.5) is " + Math.pow(10.0,3.5)); System.out.println("pow(8, -1) is " + Math.pow(8,-1)); for (i=0; i < 10; i++) { System.out.println( "The square root of " + i + " is " + Math.sqrt(i)); } System.out.println("Here's one random number: " + Math.random()); System.out.println("Here's another random number: " + Math.random()); } } String Kontruktor String () Membangun sebuah String kosong baru. String (String) Membangun sebuah String baru yang merupakan salinan dari String tertentu. String (char []) Membangun sebuah String baru yang awal nilai adalah array karakter tertentu. String (char [], int, int) Membangun sebuah String baru yang awal nilai adalah array sub tertentu karakter. String (byte [], int, int, int) ‘13 5 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Membangun sebuah String baru yang awal nilai adalah array sub byte tertentu. String (byte [], int) Membangun sebuah String baru yang awal nilai adalah array byte tertentu. Contoh : // StringConstructors.java // String class constructors. public class StringConstructors { public static void main( String args[] ) { char charArray[] = { 'b', 'i', 'r', 't', 'h', ' ', 'd', 'a' , 'y' }; String s = new String( "hello" ); // use String constructors String s1 = new String(); String s2 = new String( s ); String s3 = new String( charArray ); String s4 = new String( charArray, 6, 3); System.out.printf("s1 = %s\ns2 = %s\ns3 = %s\ns4 = %s\n", s1, s2, s3, s4 ); } } Metode compareTo public int compareTo(String anotherString) indexOf public int indexOf(int ch) substring public String substring(int beginIndex) ‘13 6 substring Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public String substring(int beginIndex, int endIndex) replace public String replace(char oldChar, char newChar) toLowerCase public String toLowerCase() toUpperCase public String toUpperCase() trim public String trim() copyValueOf public static String copyValueOf(char data[],int int count) Contoh : // StringMiscellaneous.java // This application demonstrates the length, charAt and getChars // methods of the String class. public class StringMiscellaneous { public static void main( String args[] ) { String s1 = "hello there"; char charArray[] = new char[ 5 ]; System.out.printf( "s1: %s", s1 ); // test length method System.out.printf( "\nLength of s1: %d", s1.length() ); // loop through characters in s1 with charAt and display reversed System.out.print( "\nThe string reversed is: " ); for ( int count = s1.length() - 1; count >= 0; count-- ) System.out.printf( "%s ", s1.charAt( count ) ); // copy characters from string into charArray s1.getChars( 0, 5, charArray, 0 ); System.out.print( "\nThe character array is: " ); for ( char character : charArray ) ‘13 7 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id offset, System.out.print( character ); System.out.println(); } } StringBuffer Setelah object String dibuat, isinya tidak pernah bisa berubah. Untuk dapat memanipulasi string, java menyediakan fitur kelas StringBuffer. Kelas ini digunakan untuk menciptakan dan memanipulasi informasi string secara dinamis. StringBuffer mampu menyimpan sejumlah karakter yang ditentukan kapasitasnya. Jika kapasitas StringBuffer terlampaui, kapasitas secara otomatis diperluas untuk mengakomodasi karakter tambahan. Contoh : // StringBufferCapLen.java // StringBuffer length, setLength, capacity and ensureCapacity methods. public class StringBufferCapLen { public static void main( String args[] ) { StringBuffer buffer = new StringBuffer( "Hello, how are you?" ); System.out.printf( "buffer = %s\nlength = %d\ncapacity = %d\n\n", buffer.toString(), buffer.length(), buffer.capacity() ); buffer.ensureCapacity( 75 ); System.out.printf( "New capacity = %d\n\n", buffer.capacity() ); buffer.setLength( 10 ); System.out.printf( "New length = %d\nbuf = %s\n", buffer.length(), buffer.toString() ); } } Wrapper Metode dalam penanganan char kebanyakan metode statis dan dirancang untuk menjadi metode pemprosesan nilai-nilai char secara individu. Metode ini mengambil setidaknya argumen karakter dan melakukan tes atau manipulasi ‘13 8 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id karakter. Kelas ini juga mengandung konstruktor yang menerima argumen char untuk menginisialisasi objek karakter. Contoh : // StaticCharMethods.java // Static Character testing methods and case conversion methods. import java.util.Scanner; public class StaticCharMethods { public static void main( String args[] ) { Scanner scanner = new Scanner( System.in ); // create scanner System.out.println( "Enter a character and press Enter" ); String input = scanner.next(); char c = input.charAt( 0 ); // get input character // display character info System.out.printf( "is defined: %b\n", Character.isDefined( c ) ); System.out.printf( "is digit: %b\n", Character.isDigit( c ) ); System.out.printf( "is first character in a Java identifier: %b\n", Character.isJavaIdentifierStart( c ) ); System.out.printf( "is part of a Java identifier: %b\n", Character.isJavaIdentifierPart( c ) ); System.out.printf( "is letter: %b\n", Character.isLetter( c ) ); System.out.printf( "is letter or digit: %b\n", Character.isLetterOrDigit( c ) ); System.out.printf( "is lower case: %b\n", Character.isLowerCase( c ) ); System.out.printf( "is upper case: %b\n", Character.isUpperCase( c ) ); System.out.printf( "to upper case: %s\n", Character.toUpperCase( c ) ); System.out.printf( "to lower case: %s\n", Character.toLowerCase( c ) ); } } ‘13 9 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Process Kontruktor Process public Process() Metode getOutputStream public abstract OutputStream getOutputStream() getInputStream public abstract InputStream getInputStream() getErrorStream public abstract InputStream getErrorStream() waitFor public abstract int waitFor() throws InterruptedException exitValue public abstract int exitValue() destroy public abstract void destroy() System Variabel in public static InputStream in out public static PrintStream out err public static PrintStream err Metode setSecurityManager public static void setSecurityManager(SecurityManager s) arraycopy public static void arraycopy(Object src, int src_position, ‘13 10 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Object dst, int dst_position, int length) getProperties public static Properties getProperties() exit public static void exit(int status) loadLibrary public static void loadLibrary(String libname) B. Soal 1. Ketik program berikut // StringIndexMethods.java // String searching methods indexOf and lastIndexOf. public class StringIndexMethods { public static void main( String args[] ) { String letters = "abcdefghijklmabcdefghijklm"; // test indexOf to locate a character in a string System.out.printf("'c' is located at index %d\n", letters.indexOf( 'c' ) ); System.out.printf("'a' is located at index %d\n", letters.indexOf( 'a', 1 ) ); System.out.printf( "'$' is located at index %d\n\n", letters.indexOf( '$' ) ); // test lastIndexOf to find a character in a string System.out.printf( "Last 'c' is located at index %d\n", letters.lastIndexOf( 'c' ) ); System.out.printf( "Last 'a' is located at index %d\n", letters.lastIndexOf( 'a', 25 ) ); System.out.printf( "Last '$' is located at index %d\n\n", letters.lastIndexOf( '$' ) ); // test indexOf to locate a substring in a string System.out.printf( "\"def\" is located at index %d\n", ‘13 11 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id letters.indexOf( "def" ) ); System.out.printf( "\"def\" is located at index %d\n", letters.indexOf( "def",7 ) ); System.out.printf( "\"hello\" is located at index %d\n\n", letters.indexOf( "hello" ) ); // test lastIndexOf to find a substring in a string System.out.printf( "Last \"def\" is located at index %d\n", letters.lastIndexOf( "def" ) ); System.out.printf( "Last \"def\" is located at index %d\n", letters.lastIndexOf( "def", 25 ) ); System.out.printf( "Last \"hello\" is located at index %d\n", letters.lastIndexOf( "hello" ) ); } } ‘13 12 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 13 Pemrograman Berorientas Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 10 Exception 1. Eksepsi Dalam programming dikenal dua jenis error yang umum terjadi. Error pada saat kompilasi dan error pada saat program berjalan (runtime ). Kesalahan pada saat kompilasi umummnya terjadi karena kesalahan sintak. Kesalahan yang terjadi pada saat run time kadang membuat program berhenti,kemudian menampilkan pesan kesalahan yang terjadi. Kesalahan yang mungkin terjadi tentu saja bermacam-macam. Misalnya, terjadi pembagian suatu bilangan dengan nol, hingga memori habis ketika diperlukan untuk memberntuk objek. Program berikut akan berhenti jika user menginputkan nilai 0 pada deminator. import java.util.Scanner; public class DivideByZeroNoExceptionHandling { public static int quotient( int numerator, int denominator ) { return numerator / denominator; } public static void main( String args[] ) { Scanner scanner = new Scanner( System.in ); System.out.print( "Please enter an integer numerator: " ); int numerator = scanner.nextInt(); System.out.print( "Please enter an integer denominator: " ); int denominator = scanner.nextInt(); int result = quotient( numerator, denominator ); System.out.printf("\nResult: %d / %d = %d\n", numerator, denominator, result ); } } Untuk mengatasi kesalahan sewaktu program dieksekusi, Java menyediakan penanganan eksepsi. Dalam hal ini Java akan “melontarkan” suatu eksepsi sekiranya terdapat suatu kesalahan sewaktu program dijalankan. Eksepsi adalah indikasi dari masalah yang terjadi saat suatu program dijalankan. Eksepsi menyiratkan bahwa telah terjadi masalah yang tidak biasa pada bagian dari program yang sebelumnya tidak bermasalah. Program yang tangguh dapat tahan dari kondisi yang tidak biasa atau dalam kondisi "pengecualian". Salah satu ‘13 2 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id pendekatan untuk membuat program yang tangguh adalah dengan melihat kemungkinan masalah yang mungkin terjadi dan menambahkan tes/pengujian pada program tersebut untuk setiap kemungkinan masalah yang mungkin terjadi. Akan tetapi pendekatan ini mungkin akan memperbesar kode program yang dibuat dan akan sangat sulit untuk mengantisipasi segala kemungkinan masalah yang pada program. Java memiliki metode terstruktur dan rapi dalam menghadapi masalah yang mungkin terjadi ketika program dijalankan. Metode ini disebut sebagai penanganan pengecualian (exception-handling). Penanganan eksepsi pada Java dapat digunakan untuk hal-hal berikut : Menangani kesalahan dengan menuliskan kode penangan kesalahan yang terpisah dengan kode yang akan ditangani. Sejumlah pernyataan dapat ditangani hanya dengan menggunakan sebuah penangan eksepsi. Menyediakan mekanisme yang memungkinkan untuk menjalankan kesalahan yang terjadi dalam sebuah metode ke metode yang melakukan pemanggilan metode tersebut. Menangani berbagai jenis kondisi yang tidak normal (jenis kesalahan dapat diketahui). 2. Menangkap eksepsi Ketika pengecualian terjadi dalam eksekusi suatu program, kita sebut bahwa pengecualian tersebut di-lempar-kan (thrown). Ketika ini terjadi, aliran program terlempar dari jalurnya, dan program berada dalam bahaya akan crash. Akan tetapi crash bisa dihindari jika pengecualian tersebut ditangkap (catch) dan ditangani dengan cara tertentu. Suatu pengecualian dapat dilempar oleh satu bagian program dan ditangkap oleh bagian program lain. Pengecualian yang tidak ditangkap secara umum akan menyebabkan program berhenti. Agar kesalahan karena eksepsi dapat dikendalikan, eksepsi perlu “ditangkap”,. Untuk keperluan menangkap eksepsi, Java menyediakan pernyataan try. Pernyataan ini mempunyai dua bentuk. Bentuk pertama : ‘13 3 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id try { //Blok yang akan ditangkap sekiranya terjadi eksepsi } catch(parameter) { //Blok yang akan dijalankan kalau terjadi eksepsi } Bentuk kedua : try { //Blok yang akan ditangkap sekiranya terjadi eksepsi } finally { //Blok yang akan dijalankan kalau terjadi eksepsi } Pada bentuk di atas, bagian finally akan dijalankan, tidak tergantung apakah bagian blok try mengalami eksepsi maupun tidak. Selain bentuk penganganan kesalahan diatas, Java juga menyediakan berbagai kelas yang berhubungan dengan eksepsi. Dengan kelas tertinggi kelas Throwable. ‘13 4 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Dari gambar diatas terdapat subkelas dengan nama Error dan Exception. Subkelas Error antara lain digunakan untuk menangani kesalahan seperti memory habis (OutOfMemoryError) dan stack habis (StackOverflowError). Kesalahan seperti ini biasanya tidak perlu ditangani; atau dengan kata lain program segera diakhiri kalau menemukan eksepsi seperti ini. Subkelas Exception antara lain memiliki subkelas RuntimeException, yang digunakan untuk menangani kesalahan seperti indeks array yang tidak valid (indeks array melebihi jumlah indeks, IndexArrayOutOfBounds) dan kesalahan Aritmetika (Arithmetic Exception). Kesalahan yang tergolong dalam Exception perlu ditangani; misalnya kalau ada pembagian bilangan dengan nol, program dapat diatur sehingga program tidak diakhiri (quit program). Berdasarkan kelas diatas jika diketahui berbagai kemungkinan jenis kesalahan, maka dapat ditangkap berbagai kemungkinan eksepsi dengan menggunakan catch yang bertingkat dalam catch dan try berikut ini : try { //Blok yang akan ditangkap sekiranya terjadi eksepsi } catch(RuntimeException r) { //Blok yang akan dijalankan kalau terjadi RuntimeError } catch(Exception e) { //Blok yang akan dijalankan kalau terjadi eksepsi Exception } catch(Throwable t) { //Blok yang akan dijalankan kalau terjadi eksepsi yang lain } 3. Melempar eksepsi Java menyediakan pernyataan yang digunakan untuk melontarkan eksepsi, yaitu berupa pernyataan throw. Bentuk pernyataan ini : throw variableObject; Dalam hal ini variableObject menyatakan variable objek yang merujuk ke suatu kelas eksepsi, untuk melihat efek throw, perhatikan program berikut : public class UsingExceptions { ‘13 5 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public static void main( String args[] ) { try { throwException(); } catch ( Exception exception ) { System.err.println( "Exception handled in main" ); } doesNotThrowException(); } public static void throwException() throws Exception { try { System.out.println( "Method throwException" ); throw new Exception(); } catch ( Exception exception ) { System.err.println("Exception handled in method throwException" ); throw exception; } finally { System.err.println( "Finally executed in throwException" ); } } public static void doesNotThrowException() { try { System.out.println( "Method doesNotThrowException" ); } catch ( Exception exception ) // does not execute { System.err.println( exception ); } finally { System.err.println("Finally executed in doesNotThrowException" ); } System.out.println( "End of method doesNotThrowException" ); } } ‘13 6 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 4. Assertion Assertions mengijinkan programmer untuk menentukan asumsi yang dihadapi. Sebagai contoh, sebuah tanggal dengan area bulan tidak berada antara 1 hingga 12 dapat diputuskan bahwa data tersebut tidak valid. Programmer dapat menentukan bulan harus berada diantara area tersebut. Meskipun hal itu dimungkinkan untuk menggunakan contructor lain untuk mensimulasikan fungsi dari assertions, namun sulit untuk dilakukan karena fitur assertion dapat tidak digunakan. Hal yang menarik dari assertions adalah seorang user memiliki pilihan untuk digunakan atau tidak pada saat runtime. Penulisan assertions memiliki dua bentuk. Bentuk yang paling sederhana terlihat sebagai berikut : assert <expression1>; dimana <expression1> adalah kondisi dimana assertion bernilai true. Atau assert <expression1> : <expression2>; dimana <expression1> adalah kondisi assertion bernilai true dan <expression2> adalah informasi yang membantu pemeriksaan mengapa program mengalami kesalahan. Contoh : import java.util.Scanner; public class AssertTest { public static void main( String args[] ) { Scanner input = new Scanner( System.in ); System.out.print( "Enter a number between 0 and 10: " ); int number = input.nextInt(); assert ( number >= 0 && number <= 10 ) : "bad number: " + number; System.out.printf( "You entered %d\n", number ); } } Soal 1. Praktek, ketik program berikut import java.util.InputMismatchException; import java.util.Scanner; ‘13 7 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class DivideByZeroWithExceptionHandling { public static int quotient( int numerator, int denominator ) throws ArithmeticException { return numerator / denominator; } public static void main( String args[] ) { Scanner scanner = new Scanner( System.in ); boolean continueLoop = true; do { try { System.out.print( "Please enter an integer numerator: " ); int numerator = scanner.nextInt(); System.out.print( "Please enter an integer denominator: " ); int denominator = scanner.nextInt(); int result = quotient( numerator, denominator ); System.out.printf( "\nResult: %d / %d = %d\n", numerator, denominator, result ); continueLoop = false; // input successful; end looping } catch ( InputMismatchException inputMismatchException ) { System.err.printf( "\nException: %s\n",inputMismatchException ); scanner.nextLine(); System.out.println("You must enter integers. Please try again.\n" ); catch ( ArithmeticException arithmeticException ) { System.err.printf( "\nException: %s\n", arithmeticException ); ‘13 8 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id } System.out.println("Zero is an invalid denominator. Please try again.\n" ); } } while ( continueLoop ); } } ‘13 9 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 10 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 11 MULTITHEAREADING Sebuah thread merupakan sekumpulan instruksi ( kode program) yang akan dieksekusi secara independen. Thread sebagai sebuah proses yang akan dieksekusi didalam sebuah program tertentu. Penggunaan thread didukung penggunaan sistem operasi modern saat ini memilliki kemampuan untuk menjalankan beberapa program sekaligus. Misalnya, pada saat kita mengetik sebuah dokumen di komputer dengan menggunakan text editor .Dalam waktu yang bersamaan kita dapat pula mendengarkan musik dan menikmati tayangan video via internet. Eksekusi beberapa kerjaan ini dikenal dengan nama multitasking. Pada suatu saat thread berada pada state tertentu dari beberapa state. Siklus hidup sebuah thread dimulai state new dan akan terus pada state ini sampai sekumpulan instruksi ini di eksekusi . ‘13 2 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id A. Penanganan Thread Penanganan thread pada java dilakukan melalui mekanisme memperluas kelas thread atau dengan cara mengimplemtasikan Runnable. 1. Thread menggunakan kelas thread Class namaKelas extends Thread { Public void run() { .................... .................. } } Contoh : public class FirstThread extends Thread { public void run() { for (int i=1; i<=10; i++) { System.out.println( "Messag from First Thread : " +i); try { Thread.sleep(1000); } catch (InterruptedException interruptedException) { /*Interrupted exception will be thrown when a sleeping or waiting * thread is interrupted. */ System.out.println( "First Thread is interrupted when it is sleeping" +interruptedException); } } } } ‘13 3 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Second Thread public class SecondThread extends Thread { //This method will be executed when this thread is executed public void run() { for (int i=1; i<=10; i++) { System.out.println( "Messag from Second Thread : " +i); try { Thread.sleep (1000); } catch (InterruptedException interruptedException) { System.out.println( "Second Thread is interrupted when it is sleeping" +interruptedException); } } } } 2. Thread mengimplementasikan Runnable ‘13 4 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Runnable adalah sebuah interface, dengan mengimplementasikan interface ini maka thread dapat diciptkan. Contoh : // PrintTask.java // PrintTask class sleeps for a random time from 0 to 5 seconds import java.util.Random; class PrintTask implements Runnable { private int sleepTime; // random sleep time for thread private String threadName; // name of thread private static Random generator = new Random(); // assign name to thread public PrintTask( String name ) { threadName = name; // set name of thread // pick random sleep time between 0 and 5 seconds sleepTime = generator.nextInt( 5000 ); } // end PrintTask constructor // method run is the code to be executed by new thread public void run() { try // put thread to sleep for sleepTime amount of time { System.out.printf( "%s going to sleep for %d milliseconds.\n", threadName, sleepTime ); Thread.sleep( sleepTime ); // put thread to sleep } // end try // if thread interrupted while sleeping, print stack trace catch ( InterruptedException exception ) { exception.printStackTrace(); ‘13 5 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id } // end catch // print thread name System.out.printf( "%s done sleeping\n", threadName ); } // end method run } // end class PrintTask ‘13 6 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Soal 1. Ketik kelas pengguna public class ThreadDemo { public static void main(String args[]) { //Creating an object of the first thread FirstThread firstThread = new FirstThread(); //Creating an object of the Second thread SecondThread secondThread = new SecondThread(); //Starting the first thread firstThread.start(); //Starting the second thread secondThread.start(); } } 2. Ketik program kelas pengguna import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; public class RunnableTester { public static void main( String[] args ) { // create and name each runnable PrintTask task1 = new PrintTask( "thread1" ); PrintTask task2 = new PrintTask( "thread2" ); PrintTask task3 = new PrintTask( "thread3" ); System.out.println( "Starting threads" ); // create ExecutorService to manage threads ‘13 7 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id ExecutorService threadExecutor = Executors.newFixedThreadPool( 3 ); // start threads and place in runnable state threadExecutor.execute( task1 ); // start task1 threadExecutor.execute( task2 ); // start task2 threadExecutor.execute( task3 ); // start task3 threadExecutor.shutdown(); // shutdown worker threads System.out.println( "Threads started, main ends\n" ); } } Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 8 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 12 PROGRAM JAVA 1. Applet Applet adalah satu fitur yang paling menarik dalam java. Applet merupakan program yang dijalankan melalui web browser. Beberapa pokok pembahasan dalam Applet akan dijelaskan sebagai berikut: 1. Mendefinisikan apa yang dimaksud dengan applet 2. Membuat applet sendiri 3. Mengetahui siklus yang terdapat pada applet a. init b. start c. stop d. destroy 4. Menggunakan method applet yang lain a. paint b. showStatus c. Method untuk memainkan sebuah audio clip 5. Memahami tag html pada applet Membentuk Applet Sebuah applet adalah tipe yang spesial dari program java yang dieksekusi melalui internet. Secara khusus berjalan pada suatu web browser seperti Netscape Navigator, Mozilla, atau Microsoft Internet Explorer. Bagaimanapun juga, jika dibandingkan dengan aplikasi Java yang normal, tidak diperbolehkan mengakses applet pada komputer yang dijalankan untuk alasan keamanan. Class Applet adalah sebuah subclass dari class Panel yang didefinisikan dalam AWT. Cara terbaik untuk memahami bagaimana membuat applet adalah dengan contoh. Jadi, berikut ini adalah contoh applet sederhana yang menampilkan "Hello world!". Contoh program Applet dengan menggunakan awt import java.applet.*; import java.awt.*; /* masukkan bagian ini dalam kode html ‘13 2 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id <applet code="AppletDemo" width=300 height=100> </applet> */ public class AppletDemo extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 80, 25); } } Setelah proses kompilasi, usahakan menjalankan contoh ini menggunakan perintah java. Apa yang terjadi? Ingat bahwa applet adalah aplikasi java yang spesial. Mereka tidak dieksekusi menggunakan perintah java. Bahkan applet berjalan pada web browser atau menggunakan applet viewer. Untuk membuka applet melalui sebuah web browser, secara sederhana buka dokumen HTML dimana applet terintegrasi ke dalamnya menggunakan applet HTML tag (Perintah mengeluarkan kode pada contoh Hello World). Cara lain untuk menjalankan sebuah applet adalah melalui perintah appletviewer. Untuk lebih mudahnya ikuti syntax berikut ini: appletviewer <java filename> appletviewer AppletDemo.java Tag HTML pada contoh yang diberikan mengindikasikan bahwa sebuah applet dibuat dengan lebar 300 pixel dan tinggi 100 pixel. Kemudian, method drawString menggambar string "Hello world!" pada posisi pixel (80,25) menghitung kebawah dari bagian kanan. Ketika membuat sebuah applet, diharuskan meng-extend class Applet. Sebagaimana yang disebutkan sebelumnya, classnya dapat ditemukan dalam package java.applet. Oleh karena itu, mengimport package java.applet merupakan suatu keharusan. Juga, telah disebutkan sebelumnya bahwa class Applet adalah subclass dari class Panel. Hal ini mengimplikasikan bahwa beberapa method dari class applet ditemukan dalam class Panel. Untuk mengakses method atau field dalam class Panel atau class-class induk, diperlukan suatu aksi untuk import package java.awt . Siklus Applet (The Applet Life Cycle) ‘13 3 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id 1. init() init adalah method yang dipanggil pertama kali. Yang sebenarnya berisi permintaan pertama ketika applet di load. 2. start() Setelah meminta method init, method ini meminta dokumen HTML yang ditampilkan applet setiap waktu. Eksekusi ringkasan dengan method ini dilakukan ketika applet ditampilkan kembali. 3. stop() Ketika web browser meninggalkan dokumen HTML applet,method ini dipanggil untuk menginformasikan applet bahwa dia harus menghentikan proses eksekusinya. 4. destroy() Method ini dipanggil ketika applet perlu dihapus dari memory. Method stop selalu dipanggil sebelum method ini diminta untuk dijalankan. Contoh : import java.awt.*; import java.applet.*; /* <applet code="AudioApplet" width=300 height=100> </applet> */ public class AudioApplet extends Applet { AudioClip ac; public void init() { try { /*audio clip tersimpan dalam direktori yang sama seperti kode javanya*/ /* spaceMusic telah terdownload dari java.sun.com */ ac = getAudioClip(getCodeBase(), "spaceMusic.au"); ac.loop(); } catch (Exception e) { System.out.println(e); } } public void stop() { ‘13 4 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id ac.stop(); } public void paint(Graphics g) { g.drawString("Playing space music!", 80, 25); } } 2. Window GUI (Graphical User Interface), memungkinkan user untuk berinteraksi dengan komputer secara lebih baik melalui berbagai elemen grafis,diantaranya: button, dialog box, menu, dsb. Sejak 1994 Java berupaya untuk membuat perangkat bergaya desktop yang dikenal sebagai AWT (Abstract Windowing Toolkit). Kemudian pada tahun 1997, muncul JFC (Java Foundation Class) untuk kepentingan pembuatan aplikasi Window yang merupakan pengembangan dari AWT.JFC mempunyai kode swing yang terdapat pada package yang disediakan pada JAVA SDK versi 1.2 ke atas (JAVA 2)JAVA menyediakan dua graphical library. Contoh program windowing pada java : // TextFieldFrame.java // Demonstrating the JTextField class. import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JOptionPane; public class TextFieldFrame extends JFrame { private JTextField textField1; // text field with set size private JTextField textField2; // text field constructed with text private JTextField textField3; // text field with text and size private JPasswordField passwordField; // password field with text // TextFieldFrame constructor adds JTextFields to JFrame ‘13 5 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public TextFieldFrame() { super( "Testing JTextField and JPasswordField" ); setLayout( new FlowLayout() ); // set frame layout // construct textfield with 10 columns textField1 = new JTextField( 10 ); add( textField1 ); // add textField1 to JFrame // construct textfield with default text textField2 = new JTextField( "Enter text here" ); add( textField2 ); // add textField2 to JFrame // construct textfield with default text and 21 columns textField3 = new JTextField( "Uneditable text field", 21 ); textField3.setEditable( false ); // disable editing add( textField3 ); // add textField3 to JFrame // construct passwordfield with default text passwordField = new JPasswordField( "Hidden text" ); add( passwordField ); // add passwordField to JFrame // register event handlers TextFieldHandler handler = new TextFieldHandler(); textField1.addActionListener( handler ); textField2.addActionListener( handler ); textField3.addActionListener( handler ); passwordField.addActionListener( handler ); } // end TextFieldFrame constructor // private inner class for event handling private class TextFieldHandler implements ActionListener { // process text field events public void actionPerformed( ActionEvent event ) { String string = ""; // declare string to display ‘13 6 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id // user pressed Enter in JTextField textField1 if ( event.getSource() == textField1 ) string = String.format( "textField1: %s", event.getActionCommand() ); // user pressed Enter in JTextField textField2 else if ( event.getSource() == textField2 ) string = String.format( "textField2: %s", event.getActionCommand() ); // user pressed Enter in JTextField textField3 else if ( event.getSource() == textField3 ) string = String.format( "textField3: %s", event.getActionCommand() ); // user pressed Enter in JTextField passwordField else if ( event.getSource() == passwordField ) string = String.format( "passwordField: %s", new String( passwordField.getPassword() ) ); // display JTextField content JOptionPane.showMessageDialog( null, string ); } // end method actionPerformed } // end private inner class TextFieldHandler } // end class TextFieldFrame Soal 1. Ketik program berikut // AdditionApplet.java // Adding two floating-point numbers. import java.awt.Graphics; import javax.swing.JApplet; // program uses class Graphics // program uses class JApplet import javax.swing.JOptionPane; // program uses class JOptionPane ‘13 7 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class AdditionApplet extends JApplet { private double sum; // sum of values entered by user // initialize applet by obtaining values from user public void init () { String firstNumber; // first string entered by user String secondNumber; // second string entered by user double number1; // first number to add double number2; // second number to add // obtain first number from user firstNumber = JOptionPane.showInputDialog( "Enter first floating-point value" ); // obtain second number from user secondNumber = JOptionPane.showInputDialog( "Enter second floating-point value" ); // convert numbers from type String to type double number1 = Double.parseDouble( firstNumber ); number2 = Double.parseDouble( secondNumber ); sum = number1 + number2; // add numbers } // end method init ‘13 8 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id // draw results in a rectangle on applet's background public void paint( Graphics g ) { super.paint( g ); // call superclass version of method paint // draw rectangle starting from (15, 10) that is 270 // pixels wide and 20 pixels tall g.drawRect( 15, 10, 270, 20 ); // draw results as a String at (25, 25) g.drawString( "The sum is " + sum, 25, 25 ); } // end method paint } // end class AdditionApplet 2. Ketik program beriku <html> <applet code = "AdditionApplet.class" width = "300" height = "65"> </applet> </html> ‘13 9 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 10 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 13 JAVA API API (Application Programming Interface) adalah sekumpulan perintah, fungsi, komponen, dan protokol yang disediakan oleh sistem operasi ataupun bahasa pemrograman tertentu yang dapat digunakan oleh programmer saat membangun perangkat lunak. Dalam API terdapat fungsi-fungsi atau perintah-perintah untuk menggantikan bahasa yang digunakan dalam system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh programmer. Keuntungan menggunakan API: Probabilitas API dapat digunakan untuk bahasa pemrograman ataupun untuk sistem operasi mana saja asalkan paket-paket API sudah terpasang. Lebih Mudah Dimengerti API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa system call. Hal ini sangat penting dalam hal editing dan pengembangan. Mudah Dikembangkan Dengan adanya API, memudahkan programmer untuk mengembangkan suatu system. Beberapa API yang tersedia di Java • java.lang = Basic language classes • java.util = Utilities and collections classes • java.applet = The applet API • javax.swing, java.awt = Swing and 2D graphics • java.io = Input and output Java I/O Semua input dan output (I / O) di Jawa dicapai melalui penggunaan input stream dan output stream. Pada modul sebelumnya input dan output stream telah sering digunakan untuk menginputkan data dengan System.in menampilkannya dengan dan kemudian System.out. Pada gambar dibawah terlihat bahwa System.out menghubungakan program ( sumber ) ke layar dan input stream System.in menghubungkan keyboard (sumber) ke program berjalan (destination). Aliran data ini akan menjadi kunci untuk menghubungkan file ke program. ‘13 2 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Java memiliki berbagai stream untuk melakukan I / O. Mereka didefinisikan dalam paket java.io, yang harus diimpor oleh setiap program. I/O stream umumnya diatur dalam hirarki. ‘13 3 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Secara umum, file biner yang diproses oleh subclass dari InputStream dan OutputStream. File teks yang diproses oleh subclass dari Reader dan Writer, keduanya merupakan aliran meskipun nama-nama mereka. 1. File Java memandang setiap file sebagai aliran byte berurutan.Setiap sistem operasi menyediakan mekanisme untuk menentukan akhir dari sebuah file, seperti penanda akhir-of-file atau hitungan byte total file yang tercatat dalam struktur data. Sebuah program Java memproses aliran byte dan selanjutnya menerima indikasi dari sistem operasi saat rangkaian byte mencapai akhir dari stream. Indikasi ahir dari stream dapat berupa end-of-file atau nilai kembalian dari sebuah metode dipanggil. Java melakukan proses pengolahan file dengan menggunakan kelas dari paket java.io. Pada paket ini terdapat pendefinisian untuk kelas seperti FileInputStream (untuk byte berbasis input dari file), FileOutputStream (untuk byte berbasis output ke file), FileReader (untuk karakter berbasis input dari file) dan FileWriter (untuk karakter berbasis output ke file). File dibuka dengan cara menciptakan objek dari kelas-kelas tersebut. Selain itu java juga memiliki kelas yang memungkinkan programmer untuk melakukan input dan output dari objek atau variabel dari tipe data primitif. Data akan tetap disimpan sebagai byte atau karakter.Untuk melakukan input dan output tersebut, objek kelas ObjectInputStream dan ObjectOutputStream dapat digunakan bersama-sama dengan aliran byte-file berbasis kelas FileInputStream dan FileOutputStream. Objek file dapat dibuat dengan cara berikut public File( String name ) public File( File directory, String name ) atau ‘13 4 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Pada penulisan ke dua berisi path absolut berisi semua direktori, dimulai dengan direktori rootkemuidan mengarah ke file yang dituju. Contoh : // FileDemonstration.java // Demonstrating the File class. import java.io.File; public class FileDemonstration { // display information about file user specifies public void analyzePath( String path ) { // create File object based on user input File name = new File( path ); if ( name.exists() ) { System.out.printf(%s%s\n%s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s", name.getName() " exists", ( name.isFile() ? "is a file" : "is not a file" ), ( name.isDirectory() ? "is a directory" : "is not a directory" ), ( name.isAbsolute() ? "is absolute path" : "is not absolute path" ), "Last modified: ", name.lastModified(), "Length: ", name.length(), "Path: ", name.getPath(), "Absolute path: ", name.getAbsolutePath(), "Parent: ", name.getParent() ); if ( name.isDirectory() ) // output directory listing { String directory[] = name.list(); System.out.println( "\n\nDirectory contents:\n" ); for ( String directoryName : directory ) System.out.printf( "%s\n", directoryName ); } } else { System.out.printf( "%s %s", path, "does not exist." ); ‘13 5 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id } } } // FileDemonstrationTest.java // Testing the FileDemonstration class. import java.util.Scanner; public class FileDemonstrationTest { public static void main( String args[] ) { Scanner input = new Scanner( System.in ); FileDemonstration application = new FileDemonstration(); System.out.print( "Enter file or directory name here: " ); application.analyzePath( input.nextLine() ); } } Soal Latihan 1. Praktek 1 Buat file biner dengan isian berikut ( buat dengan notepad ) Widget 14 3.35 Spoke 132 0.32 Wrap 58 1.92 Thing 28 4.17 Brace 25 1.75 Clip 409 0.12 Cog 142 2.08 dan beri nama inventory.dat 2. Praktek 2 input file Ketik program berikut // InventoryItem.java // Represents an item in the inventory. import java.text.DecimalFormat; public class InventoryItem { private String name; ‘13 6 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id private int units; private float price; private DecimalFormat fmt; public InventoryItem (String itemName, int numUnits, float cost) { name = itemName; units = numUnits; price = cost; fmt = new DecimalFormat ("0.##"); } public String toString() { return name + ":\t" + units + " at " + price + " = " + } } Ketik program berikut // Inventory.java // Demonstrates the use of a character file input stream. import InventoryItem; import java.util.StringTokenizer; import java.io.*; public class Inventory { public static void main (String[] args) { final int MAX = 100; InventoryItem[] items = new InventoryItem[MAX]; StringTokenizer tokenizer; String line, name, file="inventory.dat"; int units, count = 0; float price; try { FileReader fr = new FileReader (file); BufferedReader inFile = new BufferedReader (fr); line = inFile.readLine(); while (line != null) ‘13 7 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id fmt.format ((units * price)); { tokenizer = new StringTokenizer (line); name = tokenizer.nextToken(); try { units = Integer.parseInt (tokenizer.nextToken()); price = Float.parseFloat (tokenizer.nextToken()); items[count++] = new InventoryItem (name, units, price); } catch (NumberFormatException exception) { System.out.println ("Error in input. Line ignored:"); System.out.println (line); } line = inFile.readLine(); } inFile.close(); for (int scan = 0; scan < count; scan++) System.out.println (items[scan]); } catch (FileNotFoundException exception) { System.out.println ("The file " + file + " was not found."); } catch (IOException exception) { System.out.println (exception); } } } 3. Praktek 3 output file Ketik program berikut // TestData.java // Demonstrates the use of a character file output stream. import java.io.*; ‘13 8 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class TestData { public static void main (String[] args) throws IOException { final int MAX = 10; int value; String file = "test.dat"; FileWriter fw = new FileWriter (file); BufferedWriter bw = new BufferedWriter (fw); PrintWriter outFile = new PrintWriter (bw); for (int line=1; line <= MAX; line++) { for (int num=1; num <= MAX; num++) { value = (int) (Math.random() * 100); outFile.print (value + " "); } outFile.println (); } outFile.close(); System.out.println ("Output file has been created: " + file); } } ‘13 9 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 10 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id MODUL PERKULIAHAN Pemrograman Berorientasi Objek Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh FASILKOM Teknik Informatika 87023 Tim Dosen 14 JAVA API Java Util API (Application Programming Interface) adalah sekumpulan perintah, fungsi, komponen, dan protokol yang disediakan oleh sistem operasi ataupun bahasa pemrograman tertentu yang dapat digunakan oleh programmer saat membangun perangkat lunak. Dalam API terdapat fungsi-fungsi atau perintah-perintah untuk menggantikan bahasa yang digunakan dalam system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh programmer. Keuntungan menggunakan API: Probabilitas API dapat digunakan untuk bahasa pemrograman ataupun untuk sistem operasi mana saja asalkan paket-paket API sudah terpasang. Lebih Mudah Dimengerti API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa system call. Hal ini sangat penting dalam hal editing dan pengembangan. Mudah Dikembangkan Dengan adanya API, memudahkan programmer untuk mengembangkan suatu system. Beberapa API yang tersedia di Java • java.lang = Basic language classes • java.util = Utilities and collections classes • java.applet = The applet API • javax.swing, java.awt = Swing and 2D graphics • java.io = Input and output Java Util Kelas penanggalan, waktu adalah salah satu bagian dari kelas java,util. Beberpa dari kelas ini adalah : java.util.Date Java util.Date memiliki banyak konstruktor dan metode, berikut beberapa metode dan kostruktornya. ‘13 2 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public Date() public Date(long n) public long getTime() public void setTime(long n) public String toString() java.util.Calendar Java util.Calendar memiliki banyak metode dan konstanta. Berikut beberapa metode dan konstantanya . Metode : public static Calendar getInstance() public final Date getTime() public void setTimeInMilis(long milis) public final void set(int year, int month, int date) public int get(int field) Konstanta : Calendar.YEAR Calendar.MONTH (zero based) Calendar.DAY_OF_YEAR Calendar.HOUR Calendar.MINUTE Calendar.SECOND Calendar.MILLISECOND Contoh : import java.util.Date; import java.io.*; import java.util.*; import java.util.TimeZone.*; public class tanggal { public static void main(String [] adr){ Calendar c = Calendar.getInstance( ); // today System.out.println("Year: " + c.get(Calendar.YEAR)); System.out.println("Month: " + c.get(Calendar.MONTH)); System.out.println("Day: " + c.get(Calendar.DAY_OF_MONTH)); ‘13 3 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id System.out.println("Day of week = " + c.get(Calendar.DAY_OF_WEEK)); System.out.println("Day of year = " + c.get(Calendar.DAY_OF_YEAR)); System.out.println("Week in Year: " + c.get(Calendar.WEEK_OF_YEAR)); System.out.println("Week in Month: " + c.get(Calendar.WEEK_OF_MONTH)); System.out.println("Day of Week in Month: " +c.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("Hour: " + c.get(Calendar.HOUR)); System.out.println("AM or PM: " + c.get(Calendar.AM_PM)); System.out.println("Hour (24-hour clock): " +c.get(Calendar.HOUR_OF_DAY)); System.out.println("Minute: " + c.get(Calendar.MINUTE)); System.out.println("Second: " + c.get(Calendar.SECOND)); } } 1. Kerjakanlah latihan soal dibawah ini dengan menggunakan Method Date dan Timer pada system parker kendaraan Motor, dan kembangkan dengan menggunakan array untuk melakukan penginputan jumlah kendaraan motor yang masuk. Contoh public class TiketParkir { String jenis,plat,petugas,loket; int jamMasuk,jamKeluar,menitMasuk,menitKeluar,detikMasuk,detikKeluar; public TiketParkir(String jenis) { this.jenis=jenis; } public String displayJenis() { return "Tiket Parkir " +jenis; } } Nama class:TiketParkirMotor.java ‘13 4 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id public class TiketParkirMotor extends TiketParkir { final int HARGA=1000; public TiketParkirMotor(String loket,String petugas) { super("Motor"); this.loket=loket; this.petugas=petugas; } public long hitungHarga() { if (jumlahJam()==0) return (jumlahJam()+1)*HARGA; else if ((jumlahMenit()>0) || (jumlahDetik()>0)) return (jumlahJam()+1)*HARGA; else return jumlahJam()*HARGA; } public String toString() { String data; data="\n======================\n" +displayJenis()+"\n======================"+"\nNo. Plat : " + plat +"\nLoket : " + loket + "\nPetugas : " + petugas + "\nJam Masuk : "+jamMasuk+":"+menitMasuk+":"+detikMasuk+"\nJam Keluar : "+jamKeluar+":"+menitKeluar+":"+detikKeluar+ "\nLama : " + jumlahJam() + " jam " + jumlahMenit() +" menit " + jumlahDetik() +" detik " +"\nHarga :" + hitungHarga(); return data; } public int jumlahJam() ‘13 5 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id { int jam=0; if (menitKeluar>=menitMasuk) jam=jamKeluar-jamMasuk; else jam=jamKeluar-jamMasuk-1; return jam; } public int jumlahMenit() { int menit=0; if (menitKeluar>=menitMasuk) menit = menitKeluar-menitMasuk; else menit=menitMasuk-menitKeluar; if (!(detikKeluar>=detikMasuk)) menit=menit-1; return menit; } public int jumlahDetik() { int detik=0; if (detikKeluar>=detikMasuk) detik = detikKeluar-detikMasuk; else { if (detikMasuk==0) detik=60-detikKeluar; else detik=detikMasuk-detikKeluar; } ‘13 6 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id return detik; } public void setJamMasuk(int jam,int menit,int detik) { this.jamMasuk=jam; this.menitMasuk=menit; this.detikMasuk=detik; } public void setJamKeluar(int jam,int menit,int detik) { this.jamKeluar=jam; this.menitKeluar=menit; this.detikKeluar=detik; } } Nama class: TiketMotorApp.java import java.io.*; import java.util.*; public class TiketMotorApp { public static void main(String args[]) throws IOException { TiketParkirMotor motor=new TiketParkirMotor("UMB","Tono"); BufferedReader streami = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Program Input Tiket Parkir Motor"); System.out.print("No. Plat : "); motor.plat=streami.readLine(); Date jamMasuk=new Date(); motor.setJamMasuk(jamMasuk.getHours(),jamMasuk.getMinutes(),jamMasuk.getSec onds()); ‘13 7 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id System.out.print("Tekan Enter Bila Motor Sudah Keluar"); streami.readLine(); Date jamKeluar=new Date(); motor.setJamKeluar(jamKeluar.getHours(),jamKeluar.getMinutes(),jamKeluar.getSec onds()); System.out.println(motor); } } Daftar Pustaka 1. Dasar Pemrograman Java 2, Abdul Kadir,Penerbit Andi,2005 2. Esensi-esensi Bahasa Pemograman Java oleh Bambang Hariyanto, Ir., MT 3. Java™ How to Program, Deitel H.M , Prentice Hall,2004 4. http:/www.sun.com 5. http://www.java.com ‘13 8 Pemrogramam Berorientasi Objek Tim Dosen Pusat Bahan Ajar dan eLearning http://www.mercubuana.ac.id