Pemrograman Berbasis Objek - Kelas XII [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Akhi Ha Runi Nur Rahayu, S.Pd. Bait Syaiful Rijal, S.Pd.



PEMROGRAMAN BERORIENTASI OBJEK UNTUK SMK KELAS XII Sesuai Kurikulum 2013 Spektrum 2018



PROGRAM KEAHLIAN : TEKNOLOGI INFORMASI DAN KOMUNIKASI KOMPETENSI KEAHLIAN : REKAYASA PERANGKAT LUNAK



1



KATA PENGANTAR



Tidak ada hal terbaik selain mengucapkan Alhamdulillah, wujud syukur kepada Allahu Ta’ala yang telah memberikan kemudahan dalam penyusunan buku ini. Dengan hadirnya buku Pemrograman Berorientasi Objek ini, penulis berharap dapat memenuhi kebutuhan buku yang sesuai dengan Kurikulum 2013 bagi siswasiswi SMK Kompetensi Keahlian Rekayasa Perangkat Lunak. Pengembangan buku ini tidak terlepas dari Permendikbud No.24 tahun 2016 tentang Kompetensi Inti dan Kompetensi Dasar Pelajaran pada Kurikulum 2013 dan SK Dirjen No. 130 tahun 2017. Hal tersebut dimaksudkan agar buku ini dapat mendukung lulusan Kompetensi Keahlian Rekayasa Perangkat Lunak lebih mampu dan lebih siap kerja dalam rangka memenuhi kebutuhan Dunia Usaha / Dunia Industri dan Instansi Pemerintah secara profesional dalam pengembangan sistem informasi atau aplikasi berbasis objek. Tim penulis menyadari bahwa dalam penyusunan buku ini tentu memiliki kekurangan dan kesalahan. Untuk itu, dengan kerendahan hati tim penulis mengharap masukan dan saran perbaikan dari pembaca demi sempurnanya buku Pemrograman Berorientasi Objek ini. Akhir kata, tim penulis menyampaikan terima kasih kepada semua pihak yang telah memberikan dukungan sehingga buku ini dapat diselesaikan sebagaimana mestinya. Semoga buku ini bermanfaat dan menjadi jembatan bagi generasi bangsa untuk mewujudkan sumber daya manusia yang professional di bidang IT.



Penulis



2



DAFTAR ISI



Halaman KATA PENGANTAR................................................................................................... 2 DAFTAR ISI ............................................................................................................... 3 DAFTAR GAMBAR .................................................................................................... 5 DAFTAR TABEL ........................................................................................................ 7 BAB I .......................................................................................................................... 8 A.



Definisi dan dasar-dasar thread............................................................... 10 1.



Definisi Thread ....................................................................................... 10



2.



State dari Thread.................................................................................... 10



3.



Prioritas .................................................................................................. 11



B.



Class Thread.............................................................................................. 12 1.



Constructor ......................................................................................... 12



2.



Constants ............................................................................................. 12



3.



Methods ................................................................................................ 13



C.



Membuat Thread ....................................................................................... 14 1.



Menurunkan (extend) class Thread ...................................................... 15



2.



Mengimplementasikan interface Runnable ......................................... 15



3.



Extend vs Implement ............................................................................. 15



D.



Sinkronisasi ............................................................................................... 16



E.



Komunikasi antar thread (Interthread) .................................................... 17



BAB 2 ....................................................................................................................... 26 A.



Pendahuluan.............................................................................................. 26



B.



Dasar GUI (Graphical User Interfaces) .................................................... 27



C.



Perbedaan AWT Classes dan Swing ....................................................... 27



D.



Membuat Graphical Input and Output Menggunakan Option Panes .... 30



E.



Menggunakan Frame pada GUI................................................................ 35



F.



Buttons, Text Fields, dan Labels ............................................................. 37



G.



Mengubah Tata Letak sebuah Frame ...................................................... 40



H.



Text Areas, Scrollbars, dan Fonts ........................................................... 42 3



I.



Radio Buttons dan Combo Box .................................................................. 44 1.



Radio Button .......................................................................................... 44



2.



Combo Box ............................................................................................. 48



J.



Mouse Events ............................................................................................ 51



K.



Menggambar pada Java Menggunakan JPanel ...................................... 54



L.



Membuat Field Khusus untuk Password ................................................ 57



BAB 3 ....................................................................................................................... 67 A.



Komunikasi Data ....................................................................................... 67



B.



JDBC (Java Database Connectivity) ........................................................ 68



PENILAIAN AKHIR SEMESTER GANJIL ................................................................ 81 BAB 4 ....................................................................................................................... 95 A.



Pendahuluan.............................................................................................. 95



B.



Menampilkan Objek Multimedia berupa Gambar dalam Aplikasi ......... 95



C.



Menampilkan Objek Multimedia berupa Audio dalam Aplikasi ........... 100



BAB 5 ..................................................................................................................... 115 A.



Pengenalan dan Instalasi Code Igniter (CI)........................................... 115 1.



Definisi Framework Code Igniter ........................................................ 115



2.



Cara Instalasi Code Igniter (CI) ........................................................... 116



3.



Alur Kerja Framework Code Igniter (CI) ............................................. 118



B.



Pengenalan Model View Controller (MVC) ............................................ 119 1.



Definisi Model View Controller (MVC) ................................................ 119



2.



Komponen-komponen dari Model View Controller (MVC) ............... 119



C. Penerapan PHP Framework Code Igniter dengan metode Model View Controller (MVC) ............................................................................................... 123 PENILAIAN AKHIR SEMESTER GENAP .............................................................. 147 SUMBER ................................................................................................................ 159 KUNCI JAWABAN ................................................................................................. 160 PROFIL PENULIS ................................................................................................... 162



4



DAFTAR GAMBAR



Gambar 1. Ilustrasi Thread....................................................................................... 10 Gambar 2. Hirarki Kelas pada GUI Programming .................................................... 28 Gambar 3. Screenshot Program GUI Sederhana “Hello, world!” .............................. 31 Gambar 4. Hasil running program ............................................................................ 32 Gambar 5. Hasil running program ............................................................................ 33 Gambar 6. Hasil akhir program ................................................................................ 33 Gambar 7. Hasil running program ............................................................................ 35 Gambar 8. Hasil running program akhir ................................................................... 35 Gambar 9. Membuat Sebuah Frame ........................................................................ 36 Gambar 10. Menampilkan Button dalam Sebuah Frame ......................................... 40 Gambar 11. Contoh Penggunan BorderLayout pada Frame .................................... 42 Gambar 12. Text Areas ............................................................................................ 43 Gambar 13. Scrollbars ............................................................................................. 43 Gambar 14. Modifikasi Fonts ................................................................................... 44 Gambar 15. Radio Buttons ....................................................................................... 48 Gambar 16. Combo Box........................................................................................... 51 Gambar 17. Hasil running program awal .................................................................. 54 Gambar 18. Mouse Event Listener ........................................................................... 54 Gambar 19. Menggambar Doodle Sederhana ......................................................... 57 Gambar 20. Membuat Kolom Password................................................................... 60 Gambar 21. Membuat Project Baru .......................................................................... 96 Gambar 22. Membuat JFrameForm ......................................................................... 96 Gambar 23. Memasukan Label pada Aplikasi .......................................................... 97 Gambar 24. Menambahkan Package ....................................................................... 97 Gambar 25. Label Properties ................................................................................... 98 Gambar 26. Load Image to Application .................................................................... 99 Gambar 27. Menampilkan Gambar dalam Aplikasi .................................................. 99 Gambar 28. Membuat Form Baru untuk Menampilkan Audio ................................ 100 Gambar 29. Memasukan Tombol Audio pada Frame............................................. 101 Gambar 30. Hasil running program audio .............................................................. 102 Gambar 31. Hasil ekstract file codeigniter .............................................................. 117 Gambar 32. Memilih data inti pada codeigniter ...................................................... 117 Gambar 33. Alur Kerja dari Framework CI ............................................................. 118 Gambar 34. Komponen Model View Controller (MVC) ........................................... 123 Gambar 35. Hasil akhir program latihan 1 .............................................................. 126 Gambar 36. Hasil akhir program latihan 2 .............................................................. 127 Gambar 37. Hasil eksekusi program ...................................................................... 130 Gambar 38. Halaman tambah karyawan ................................................................ 133 5



Gambar 39. Halaman edit karyawan ...................................................................... 135 Gambar 40. Hasil update penambahan fitur pada program ................................... 137 Gambar 41. Hasil akhir program telah selesai ....................................................... 138



6



DAFTAR TABEL



Tabel 1. Constructor dari Thread ............................................................................. 12 Tabel 2. Konstanta dalam Thread ............................................................................ 13 Tabel 3. Daftar method dalam class thread.............................................................. 13 Tabel 4. Methods untuk komunikasi Interthread ....................................................... 17 Tabel 5. Perbedaan AWT class dan swing ............................................................... 28 Tabel 6. Tiga Klasifikasi Method JOptionPane ......................................................... 31 Tabel 7. Jenis MouseEvents pada java .................................................................... 51



7



SEMESTER GANJIL



8



BAB I THREAD



KOMPETENSI DASAR



KOMPETENSI DASAR 3.1 Menerapkan dasar dasar thread



4.1 Membuat instruksi - instruksi thread



Pernahkah kamu menulis rangkuman materi di text editor sambil browsing materi tersebut di internet? Apakah dua kegiatan tersebut bisa dilakukan dalam waktu yang bersamaan? Ya, tentu saja bisa! Berdasarkan prinsip sekuensial, seharusnya dua kegiatan tersebut dilakukan secara berurutan. Menulis dulu atau browsing dulu. Namun terdapat satu instruksi di komputer yang memperbolehkan dua kegiatan tersebut dikerjakan secara bersamaan. Persis seperti saat kita berkirim pesan dengan doi via aplikasi chatting sambil mendengarkan musik kesukaan! Instruksi apa itu? Bila pada pembelajaran sebelumnya kita terbiasa dengan program yang berurutan atau sekuensial, maka bab ini akan membahas program yang bekerja secara bersamaan. Sebuah program sekuensial yang dimaksud adalah sebuah program yang hanya memiliki satu aliran eksekusi di mana setiap eksekusi memiliki sebuah titik awal, serangkaian proses, dan titik akhir. Jadi, selama eksekusi (runtime), hanya ada satu proses saja yang dieksekusi. Namun kita tahu bahwa di dunia ini terdapat banyak sekali proses yang terjadi dan berjalan bersama-sama. Komputer pun demikian. Kita dapat mengerjakan beberapa proses (menulis, browsing, mendengarkan musik, dll) secara bersamasama. Namun dengan keterbatasan kita sebagai manusia yang disandingkan dengan beberapa pekerjaan sekaligus, membuat kita harus mampu mengalokasikan energi secara tepat agar semua pekerjaan tersebut bisa terselesaikan semua dengan baik. Oleh karena itu, kita sebagai programmer perlu belajar materi thread ini agar bisa mengontrol processor dan instruksi pada komputer. Hal tersebut tidak lain agar pembagian memori untuk setiap pelaksanaan instruksi (thread) menjadi lebih efisien.



9



A. Definisi dan dasar-dasar thread 1. Definisi Thread Penggunaan sistem operasi modern saat ini telah mendukung kemampuan untuk menjalankan beberapa program. Misalnya, pada saat kamu mengetik sebuah dokumen di komputer menggunakan text editor, dalam waktu yang bersamaan kamu juga dapat mendengarkan musik dan surfing lewat internet. Sistem operasi yang telah terinstal dalam komputermu itulah yang membuatmu bisa melakukan multitasking atau mengerjakan banyak pekerjaan dalam satu waktu. Seperti itu juga dalam sebuah program. Sebuah progam dapat mengeksekusi beberapa proses secara bersama-sama. Di dalam proses terdapat thread yang mengontrol aliran program. Berdasarkan jumlah thread yang terlibat dalam sebuah proses, terdapat dua jenis proses. Pertama, single-thread di mana suatu proses hanya memiliki satu-thread atau proses tunggal. Kedua, multi-thread, di mana suatu proses memiliki lebih dari satu aktivitas atau thread. Mudahnya, dalam aktivitas makan bisa saja makan pisang (single-thread) dan bisa saja makan utama yang terdiri dari nasi, lauk, dan sayur (multi-thread). Contoh aplikasi yang mengizinkan kita melakukan multi-threading adalah HotJava browser di mana kita bisa browsing sekaligus bisa mengunduh objek yang lain, seperti gambar, memainkan animasi, dan juga file audio pada saat yang bersamaan.



Gambar 1. Ilustrasi Thread 2. State dari Thread Sebuah thread memungkinkan untuk memiliki beberapa state: 



Running Sebuah thread yang pada saat ini sedang dieksekusi dan di dalam control dari CPU. 10







Ready to run Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untuk melakukannya.







Resumed Setelah sebelumnya diblock atau diberhentikan sementara, state ini kemudian siap untuk dijalankan.







Suspended Sebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.







Blocked Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan, karena masih menunggu sebuah resource tersedia atau sebuah event terjadi.



3. Prioritas Untuk menentukan thread mana yang akan menerima control dari CPU dan akan dieksekusi pertama kali, setiap thread akan diberikan sebuah prioritas. Sebuah prioritas adalah sebuah nilai integer dari angka 1 sampai dengan 10, dimana semakin tinggi prioritas dari sebuah thread, berarti semakin besar kesempatan dari thread tersebut untuk dieksekusi terlebih dahulu. Sebagai contoh, asumsikan bahwa ada dua buah thread yang berjalan bersamasama. Thread pertama diberikan prioritas nomor 5 kemudian thread kedua diberikan prioritas 10. Anggaplah bahwa thread pertama telah berjalan pada saat thread kedua dijalankan. Karena nilai prioritas yang diberikan lebih besar thread kedua, maka thread kedua akan menerima control dari CPU karena thread tersebut memiliki prioritas yang lebih tinggi dibandingkan thread yang pada saat itu tengah berjalan. Salah satu contoh dari skenario ini adalah context switch. Sebuah context switch terjadi apabila sebagian dari thread telah dikontrol oleh CPU dari thread yang lain. Ada beberapa skenario mengenai bagaimana cara kerja dari context switch. Salah satu skenarionya adalah sebuah thread yang sedang berjalan memberikan kesempatan kepada CPU untuk mengontrol thread lain agar bisa berjalan secara bersamaan. Dalam kasus ini, prioritas tertinggi dari thread adalah thread yang siap untuk menerima kontrol dari CPU. Cara yang lain dari



11



context switch adalah thread yang sedang berjalan diambil alih oleh thread yang memiliki prioritas lebih tinggi seperti yang telah dicontohkan sebelumnya. Hal ini juga mungkin dilakukan apabila lebih dari satu CPU tersedia sehingga lebih dari satu prioritas thread siap untuk dijalankan. Untuk menentukan diantara dua thread yang memiliki prioritas sama untuk menerima kontrol dari CPU, sangat bergantung



kepada



sistem



operasi



yang



digunakan.



Windows



95/98/NT



menggunakan time-slicing dan round-robin untuk menangani kasus ini. Setiap thread dengan prioritas yang sama akan diberikan sebuah jangka waktu tertentu untuk dieksekusi sebelum CPU mengontrol thread lain yang memiliki prioritas yang sama. Sedangkan



Solaris



membiarkan



sebuah



thread



untuk



dieksekusi



sampai



menyelesaikan tugasnya atau sampai secara suka rela membiarkan CPU untuk mengontrol thread yang lain. B. Class Thread 1. Constructor Marilah kita lihat bersama beberapa constructor yang terdapat pada class Thread. Tabel 1. Constructor dari Thread Thread Constructor Thread()



Keterangan Membuat sebuah object Thread yang baru.



Thread(String name)



Membuat sebuah object thread dengan memberikan penamaan yang spesifik.



Thread(Runnable target)



Membuat sebuah object Thread yang baru berdasar pada object Runnable. Target



menyatakan



sebuah



object



dimana method run dipanggil. Thread(Runnable target, String name)



Membuat sebuah object Thread yang baru dengan nama yang spesifik dan berdasarkan pada object Runnable.



2. Constants Class Thread juga menyediakan beberapa constants sebagai nilai prioritas. Tabel berikut ini adalah rangkuman dari class Thread. 12



Tabel 2. Konstanta dalam Thread Thread Constants



Keterangan



public final static int MAX_PRIORITY



Nilai prioritas maksimum, 10



public final static int MIN_PRIORITY



Nilai prioritas minimum, 1.



public final static int NORM_PRIORITY



Nilai default prioritas, 5.



3. Methods Method- method inilah yang disediakan dalam class Thread. Tabel 3. Daftar method dalam class thread Thread Methods public static Thread currentThread()



Keterangan Mengembalikan



sebuah



reference



kepada thread yang sedang berjalan. public final String getName()



Mengembalikan nama dari thread.



public final void setName(String name)



Mengulang



pemberian



nama



thread



sesuai dengan argument name. Hal ini dapat menyebabkan SecurityException. public final int getPriority()



Mengembalikan nilai prioritas yang telah diberikan kepada thread tersebut.



public final boolean isAlive()



Menunjukkan



bahwa



thread



tersebut



sedang berjalan atau tidak. public final void join([long millis, [int Sebuah overloading method. Sebuah nanos]])



thread yang sedang berjalan, harus menunggu sampai thread tersebut selesai (jika tidak ada parameter-parameter spesifik), atau sampai waktu yang telah ditentukan habis.



public static void sleep(long millis)



Menunda thread dalam jangka waktu milis. Hal ini dapat menyebabkan InterruptedException.



public void run()



Eksekusi thread dimulai dari method ini.



public void start()



Menyebabkan



eksekusi



dari



thread



berlangsung dengan cara memanggil 13



method run. C. Membuat Thread Sebelum masuk dalam tahapan membuat sebuah thread mari kita perhatian salah satu contoh sebuah thread. Berikut adalah implementasi sebuah tread dalam bentuk program penghitung sederhana. import javax.swing.*; import java.awt.*; class CountDownGUI extends JFrame { JLabel label; CountDownGUI(String title) { super(title); label = new JLabel("Start count!"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new Panel(), BorderLayout.WEST); getContentPane().add(label); setSize(250,200); setVisible(true); } void startCount() { try { for (int i = 10; i > 0; i--) { Thread.sleep(100); label.setText(i + ""); } Thread.sleep(100); label.setText("Count down complete."); Thread.sleep(100); } catch (InterruptedException ie) { } label.setText(Thread.currentThread().toString()); } public static void main(String args[]) { CountDownGUI cdg = new CountDownGUI("Hitung Mundur"); cdg.startCount(); }}



14



Sebuah thread dapat diciptakan dengan dua model cara, yaitu: menurunkan (extend) class Thread atau dengan mengimplementasikan sebuah interface Runnable. 1. Menurunkan (extend) class Thread Untuk menjalankan thread, dapat dilakukan dengan memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run() pada definisi class. Konstruktor dari cara ini adalah : SubThread namaObject = new SubThread(); namaObject.start();



2. Mengimplementasikan interface Runnable Cara



lain



untuk



membuat



sendiri



sebuah



thread



adalah



dengan



mengimplementasikan interface Runnable. Hanya satu method yang dibutuhkan oleh interface Runnable yaitu method run. Cara ini merupakan cara yang paling sederhana dalam membuat thread. Runnable merupakan unit abstrak, yaitu kelas yang mengimplementasikan interface ini hanya cukup mengimplementasikan fungsi run(). Dalam mengimplementasi fungsi run(), kita akan mendefinisikan instruksi yang membangun sebuah thread. Konstruktor dari cara ini adalah : MyThread myObject= new MyThread(); Thread namaObject = new Thread(myObject); Atau dengan cara singkat seperti : New Thread(new ObjekRunnable());



MyThread merupakan class yang mengimplementasikan interface dari Runnable, dan object dari class MyThread akan menjadi parameter instansi object class Thread.



3. Extend vs Implement Dari dua cara untuk menciptakan thread seperti diatas, memilih salah satu dari kedua cara tersebut bukanlah sebuah permasalahan. Implementasi sebuah interface 15



Runnable menyebabkan lebih banyak pekerjaan yang harus dilakukan karena kita harus mendeklarasikan sebuah object Thread dan memanggil method Thread dari object ini. Sedangkan menurunkan (extend) sebuah class Thread, menyebabkan class yang kamu buat tidak dapat menjadi turunan dari class yang lainnya karena Java tidak memperbolehkan adanya multiple inheritance. Sebuah pilihan antara mudah tidaknya untuk diimplementasikan (implement) dan kemungkinan untuk membuat turunan (extend) adalah sesuatu yang harus kamu tentukan sendiri. Perhatikan mana yang lebih penting bagi kamu karena keputusan ada ditanganmu.



D. Sinkronisasi Sampai sejauh ini, kamu telah melihat contoh-contoh dari thread yang berjalan Bersama-sama tetapi tidak bergantung satu dengan yang lainnya. Thread tersebut adalah thread yang berjalan sendiri tanpa memperhatikan status dan aktifitas dari thread lain yang sedang berjalan. Pada contoh tersebut, setiap thread tidak membutuhkan resource atau method dari luar sehingga tidak membutuhkan komunikasi dengan thread lain. Namun dalam situasi tertentu, thread yang berjalan bersama-sama terkadang membutuhkan resource atau method dari luar. Oleh karena itu, mereka butuh untuk berkomunikasi satu dengan yang lain sehingga dapat mengetahui status dan aktifitas mereka. Sinkronisasi adalah method atau blok yang memiliki tambahan keyword synchronized,sehingga apabila dijalankan maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program. Thread lain akan menunggu thread yang sedang mengeksekusi method ini hingga selesai. Mekanisme sinkronisasi penting apabila terjadi pembagian sumber daya maupun data di antara thread-thread. Sinkronisasi juga melakukan penguncian pada sumber daya atau data yang sedang diproses. Sinkronisasi dapat dilakukan pada dua bagian yaitu 



Sinkronisasi Blok Sintak untuk sinkronisasi blok adalah sebagai berikut : synchronized



}



()



{







Sinkronisasi Method Sintak untuk sinkronisasi method adalah sebagai berikut: synchronized TypeBalikanMethod NamaMethod ( parameter) { }



E. Komunikasi antar thread (Interthread) Dalam implementasi penggunaan thread pada pemrogaman, dimungkinkan untuk sebuah thread melakukan komunikasi dengan thread lainnya. Pada bagian ini, akan mempelajari mengenai method-method dasar yang digunakan thread untuk berkomunikasi dengan thread lain yang sedang berjalan.



Tabel 4. Methods untuk komunikasi Interthread Methods untuk komunikasi Interthread public final void wait()



Keterangan Menyebabkan



thread



ini



menunggu



sampai thread yang lain memanggil notify atau notifyAll method dari object ini.



Hal



ini



dapat



menyebabkan



InterruptedException. public final void notify()



Membangunkan



thread



yang



telah



memanggil method wait dari object yang sama. public final void notifyAll()



Membangunkan



semua



thread



yang



telah memanggil method wait dari object yang sama.



17



RANGKUMAN 1. Thread adalah rangkaian eksekusi dari sebuah aplikasi java dan setiap program java minimal memiliki satu buah thread. Sebuah thread bisa berada di salah satu dari 5 status, yaitu running, ready to run, resumed, suspended dan blocked. 2. Pembentukan sebuah thread dapat dilakukan dengan dua cara, yaitu dengan extends class thread dan implements interface thread. 3. Dalam Java, kita dapat membuat prioritas suatu thread relative terhadap thread yang lain sehingga thread yang mempunyai prioritas lebih tinggi mempunyai kesempatan lebih besar untuk mengakses suatu sources. 4. Sinkronisasi adalah method atau blok yang memiliki tambahan keyword synchronized. Apabila method synchronized tersebut dijalankan, maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program.



TUGAS TIDAK TERSTRUKTUR (KELOMPOK) Silakan membentuk kelompok yang terdiri masing-masing empat anak. Buatlah masing-masing 5 contoh program yang didalamnya terdapat thread, dimana thread tersebut dibuat dengan cara: Extends class thread



Implements interface thread



18



TUGAS TERSTRUKTUR (MANDIRI) Buatlah sebuah banner sederhana yang akan mencetak string yang diinputkan oleh user. String akan ditampilkan secara berulang-ulang dan bergerak dari kiri ke kanan (Agar proses perpindahannya tidak terlalu cepat, gunakan method sleep dari class Thread).



UJI KOMPETENSI DASAR 1 SOAL PILIHAN GANDA



19



1. Dibawah ini yang tidak termasuk dalam jenis status pada thread adalah... A. Playing B. Running C. Resumed D. Suspended E. Blocked



2. Sebuah instruksi yang akan dieksekusi didalam sebuah program tertentu disebut... A. Method B. Thread C. Class D. Object E. Constructor



3. Nilai default prioritas yang terdapat pada thread constanta public final static int NORM_PRIORITY adalah... A. 0 B. 10 C. 5 D. 1 E. 15



4. Constructor Thread(String name) digunakan untuk... A. Membuat sebuah object Thread yang baru dengan nama yang spesifik dan berdasarkan pada object Runnable. B. Membuat sebuah object Thread yang baru berdasar pada object Runnable. Target menyatakan sebuah object dimana method run dipanggil. C. Membuat sebuah object Thread yang baru. D. Membuat sebuah object thread dengan memberikan penamaan yang spesifik. E. Membuat sebuah object Interface 20



5. Thread methods yang digunakan untuk menunjukkan bahwa thread tersebut sedang berjalan atau tidak adalah. .. A. public void run() B. public final void setName(String name) C. public static void sleep(long millis) D. public final void join([long millis, [int nanos]]) E. public final boolean isAlive()



6. Thread methods public static Thread currentThread() digunakan untuk ... A. Mengembalikan nama dari thread. B. Eksekusi thread dimulai dari method ini. C. Mengembalikan nilai prioritas yang telah diberikan kepada thread tersebut. D. Mengembalikan sebuah reference kepada thread yang sedang berjalan. E. Menunjukkan bahwa thread tersebut sedang berjalan atau tidak.



7. SubThread namaObject = new SubThread(); namaObject.start(); Script diatas dapat digunakan jika kita ingin ... A. Mengimplementasikan interface Runnable B. Sinkronisasi Blok C. Menurunkan (extend) class Thread D. Sinkronisasi Method E. Komunikasi antar thread 8. Method yang memiliki tambahan keyword synchronized,sehingga apabila dijalankan maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program disebut sebagai.. A. Blocked B. Sinkronisasi C. Suspended D. Thread E. Inheritance 21



9. SInkronisasi thread dapat dilakukan dengan dua cara yaitu ... A. Blok dan Method B. Class dan Runable C. Blok dan Class D. Method dan Suspended E. Runable dan Suspended



10. Methods Interthread yang digunakan untuk Membangunkan thread yang telah memanggil method wait dari object yang sama.adalah ... A. public final void notifyAll() B. public final void notify() C. public void run() D. public void start() E. public final void wait()



11. Thread merupakan bagian dari proses suatu program. Menurut jenisnya, thread dibedakan menjadi ... A. Single-thread dan multi-thread B. Singular-thread dan particular-thread C. Void thread dan non void thread D. Synchronized thread dan opposite thread E. Controlled thread dan uncontrolled thread 12. Sebuah thread yang sedang dieksekusi oleh CPU berada pada state ... A. Running B. Ready to run C. Resumed D. Suspended E. Blocked



13. Thread yang sudah siap untuk dieksekusi namun masih dalam daftar tunggu berada dalam state ... 22



A. Running B. Ready to run C. Resumed D. Suspended E. Blocked



14. Blocked thread yang siap untuk dijalankan berada pada state ... A. Running B. Ready to run C. Resumed D. Suspended E. Blocked



15. Apabila sebuah thread berhenti sementara dan mengizinkan thread yang lain untuk dikerjakan terlebih dahulu, berarti thread tersebut sedang berada pada state ... A. Running B. Ready to run C. Resumed D. Suspended E. Blocked



16. Memori komputer sangat terbatas. Thread yang menunggu resource tersedia agar bisa berjalan berarti thread tersebut sedang berada pada state ... A. Running B. Ready to run C. Resumed D. Suspended E. Blocked



23



17. Sebuah thread berjalan dan memiliki prioritas default yaitu 5. Kemudian ada sebuah thread juga yang akan dieksekusi dengan nilai prioritas 10. Maka, apa yang terjadi? A. Thread pertama akan memiliki nilai prioritas 1 B. Thread pertama akan memiliki nilai prioritas 10 C. Thread kedua akan memiliki nilai prioritas 5 D. Thread pertama akan dieksekusi sampai selesai terlebih dahulu E. CPU menjalankan thread kedua karena nilai prioritasnya lebih tinggi



18. Yang menjadi penentu pemberian nilai prioritas thread untuk menerima kontrol dari CPU adalah ... A. Processor B. RAM C. OS D. HDD E. ROM



19. Method thread yang digunakan untuk mengembalikan nilai prioritas yang tela diberikan kepada thread tersebut adalah ... A. currentThread() B. getName() C. getPriority() D. isAlive() E. setPriority()



20. Thread (String name) merupakan sebuah object thread dengan ciri ... A. Objek baru B. Nama yang spesifik C. Objek bersifat runnable D. Prioritas bernilai 10 E. Nama yang dikembalikan dari thread sebelumnya F. 24



SOAL URAIAN 1. Apa yang kamu ketahui tentang thread? 2. Sebutkan dan jelaskan cara untuk membuat sebuah thread! 3. Jelaskan konsep prioritas dalam thread! 4. Apa keuntungan dilakukannya sebuah proses sinkronisasi pada thread? 5. Sebutkan dan jelaskan 3 method pada class thread yang kamu ketahui!



REMEDIAL 1. Apa perbedaan proses dengan thread? 2. Dalam sebuah proses, bisa saja memiliki beberapa thread. Bagaimana bentuk komunikasi antarthread tersebut? 3. Sebutkan dan jelaskan state yang dimiliki oleh thread ! 4. Bagaiaman thread bekerja dalam sebuah program? 5. Tuliskan sintak sederhana untuk membuat constructor Runnable target !



PENGAYAAN Setelah kamu mengetahui apa itu thread, coba buatlah sebuah program sederhana yang mengimplementasikan syncronized thread!



25



BAB 2 Graphical User Interfaces (Perancangan Antar Muka)



KOMPETENSI DASAR



KOMPETENSI DASAR 3.2



Merancang antar muka atau



4.2



User Interface (UI) 3.3



Merancang



User



Membuat kode program untuk antar muka atau User Interface (UI)



Interface 4.3



menggunakan library



Mendesain



User



Interface



menggunakan library



A. Pendahuluan Ungkapan “don’t judge a book by the cover” sangatlah benar. Namun dalam praktiknya, kita sering melihat sesuatu dari luarnya terlebih dahulu. Realita tersebut mendorong developer untuk memahami pula tampilan luar sebuah program agar pengguna tertarik untuk menggunakan program tersebut. Bukankah selain program tersebut bermanfaat, user juga memperhatikan seberapa eye-catching bila dilihat? Coba kamu bayangkan bila sebuah program terdiri dari 2 warna pokok yaitu merah menyala dan biru elektrik. Kemudian tombol menu utama terletak di pojok kanan bawah. Kira-kira, apakah pengguna akan nyaman dengan warna dan tata letak program tersebut? Tentu tidak. Itulah yang menjadi tujuan utama dari perancangan antar muka pengguna (Graphical User Intefaces) yaitu untuk mencari tahu cara memposisikan dan menata komponen antarmuka pengguna agar mudah dipahami oleh pengguna. Semakin sederhana sebuah user interface dan semakin mudah dimengerti, maka user interface tersebut akan semakin baik. Dan user interface yang baik akan memberikan kemudahan bagi pengguna untuk dapat berinteraksi dengan program. Selain itu, tujuan dari user interface terletak pada sisi seni atau aestetik dari program. 26



B. Dasar GUI (Graphical User Interfaces) GUI merupakan entitas yang berpotensi sangat kompleks karena melibatkan banyak object dan class yang saling berinteraksi. Setiap komponen pada layar dan window diwakili oleh suatu objek, sehingga seorang programmer yang memulai dengan GUI harus banyak belajar hal baru mengenai class, method, dan package name. Selain itu, jika GUI melakukan tugas-tugas yang rumit, object harus berinteraksi satu sama lain dan memanggil method satu sama lain. Hal ini akan mengakibatkan masalah komunikasi dan cakupan pemrograman yang rumit. Faktor lain yang membuat penulisan GUI sulit adalah bahwa jalur eksekusi kode menjadi tidak dapat dipastikan. Ketika program GUI sedang berjalan, pengguna dapat mengklik salah satu tombol dan berinteraksi dengan komponen layar lainnya dengan urutan apa pun. Karena eksekusi program dilakukan karena serangkaian peristiwa yang terjadi, dapat dikatakan bahwa program dengan GUI didorong karena adanya perlakuan dari pengguna (sebuah peristiwa). Dalam bab ini, kamu akan belajar cara menangani masukan pengguna sehingga program GUI yang dibuat dapat merespons interaksi pengguna dengan tepat.



C. Perbedaan AWT Classes dan Swing Abstract Windowing Toolkit (AWT) atau disebut juga “Another Windowing Toolkit” adalah pustaka windowing, memiliki kelebihan multiplatform serta menyediakan sejumlah kelas untuk membuat GUI di Java. Dengan class AWT ini, developer dapat membuat window, gambar, manipulasi gambar, dan menggunakan komponen seperti Button, Scrollbar, Checkbox, TextField, dan menu pull-down. Cara penulisan AWT menggunakan native code. Swing merupakan perbaikan kelemahan pada AWT. Secara keseluruhan ditulis menggunakan bahasa pemrogaman Java. Banyak kelas swing menyediakan komponen alternatif dari AWT. Sebagai contoh, kelas JButton swing menyediakan fungsionalitas lebih banyak dibanding kelas Button. Selain itu komponen swing umumnya diawali dengan huruf “J”, misalnya JButton,



27



JTextField, JFrame, JLabel, JTextArea, JPanel, dan sebagainya. Teknologi swing menggunakan dan memperluas gagasan-gagasan pada AWT.



Tabel 5. Perbedaan AWT class dan swing Java.awt



Javax.swing



Frame



JFrame



Panel



JPanel



Button



JButton



TextField



JTextField



List



JList



Label



JLabel



Choice



JComboBox



Check Box



JCheckBox



Gambar 2. Hirarki Kelas pada GUI Programming 28



Lebih lengkapnya, berikut adalah kelas-kelas pada AWT: 1. Komponen Merupakan bagian utama dari semua kelas AWT, berupa kelas abstrak untuk objek yang ditampilkan pada console dan berinteraksi dengan pengguna. 2. Kontainer Merupakan subclass abstrak dari kelas Komponen. Berfungsi menampung komponen yang lain. 3. Panel Merupakan turunan dari kelas Kontainer namun merupakan superclass dari kelas Applet. Panel berupa frame atau window tanpa titlebar dan menubar. 4. Window Merupakan turunan lain dari kelas Kontainer. Kelas ini tidak memiliki border dan menubar. Bersifat top level window yang berarti tidak bisa dimasukkan dalam objek yang lainnya. Untuk mengatur ukuran window dapat menggunakan method setSize: void setSize(int lebar, int tinggi) Default dari Window adalah not visible sehingga kita perlu mengatur visibility menjadi true. Sintaknya seperti ini? void setVisible(boolean b)



5. Frame Merupakan turunan dari kelas Window. Frame merupakan subclass Window yang memiliki judul, menubar, border, dan pengatur ukuran pada titik-titik sudutnya. Memiliki empat konstruktor, dua diantaranya yang sering digunakan: a. frame(), berfungsi mengkonstruksi frame baru yang awalnya invisible. b. frame(String title), berfungsi mengkonstruksi frame baru yang awalnya invisible dengan title yang sudah ditentukan.



29



D. Membuat Graphical Input and Output Menggunakan Option Panes Cara paling sederhana untuk membuat jendela GUI pada Java adalah dengan membuat option pane pop up. Option pane adalah kotak pesan sederhana yang muncul di layar dan menyajikan pesan atau permintaan untuk input kepada pengguna. Class pada Java yang digunakan untuk menampilkan Option Panes disebut “JOptionPane”. JOptionPane berada dalam paket javax.swing



sehingga



kamu



harus



mengimpor



paket



ini



untuk



menggunakannya. "Swing" adalah nama salah satu pustaka GUI Java. Nama paket dimulai dengan “javax” kali ini, bukan java lagi.



import javax.swing.*; // for GUI components



JOptionPane dapat dianggap setara dengan keluaran System.out.println dan input Scanner. Program berikut ini membuat pesan "Hello, world!" di layar dengan menggunakan JOptionPane:



// A graphical equivalent of the classic "Hello world" program. import javax.swing.*; // for GUI components



public class HelloWorld { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Hello, world!"); } }



30



Berikut adalah tampilan kode program di atas (Screenshot dari kode program “Hello, world!”):



Gambar 3. Screenshot Program GUI Sederhana “Hello, world!”



JOptionPane dapat digunakan untuk menampilkan pesan (seperti yang baru saja ditunjukkan), menyajikan daftar pilihan kepada pengguna, dan meminta



pengguna



untuk



mengimplementasikan



ketiga



mengetik perilaku



input. ini



Tiga



adalah



metode



yang



showMessageDialog,



showConfirmDialog, dan showInputDialog. Metode-metode ini dirinci dalam Tabel 6: Tabel 6. Tiga Klasifikasi Method JOptionPane Method



Penjelasan



ShowConfirmDialog



Menampilkan sebuah kotak pesan berisi pilihan “Yes/No/Cancel”



ShowInputDialog



Menampilkan kotak input yang berisi pesan



yang



diberikan



mengembalikan



nilai



di



input



layar



dan



pengguna



sebagai sebuah String



ShowMessageDialog



Menampilkan



string



pesan



yang



dimasukan dalam kotak input ke layer



31



Pada kode program di bawah ini dicontohkan ketiga klasifikasi dari option pane:



Gambar 4. Hasil running program



// Shows several JOptionPane windows on the screen.



import javax.swing.*; // for GUI components public class UseOptionPanes { public static void main(String[] args) { // read the user's name graphically String name = JOptionPane.showInputDialog(null, "What is your name?"); // ask the user a yes/no question int choice = JOptionPane.showConfirmDialog(null, "Apakah anda siswa SMK? " + name + "?"); // show different response depending on answer if (choice == JOptionPane.YES_OPTION) { JOptionPane.showMessageDialog(null, 32



"Iya! Saya Siswa SMK"); } else { // choice == NO_OPTION or CANCEL_OPTION JOptionPane.showMessageDialog(null, "Bukan, Saya Bukan Siswa SMK"); } } }



Gambar 5. Hasil running program



Gambar 6. Hasil akhir program



33



Salah



satu



keterbatasan



pada



JOptionPane



adalah



pada



perintah



showConfirmDialog hanya menerima input dari user berupa String saja. Jika input yang diberikan oleh pengguna berupa number, maka String perlu dikonversikan terlebih dahulu ke dalam bentuk number menggunakan method Integer.parseInt atau Double.parseDouble. Berikut adalah contoh kode program untuk menerima input berupa number: 1 // Uses JOptionPane windows for numeric input. 2 3 import javax.swing.*; // for GUI components 4 5 public class UseOptionPanes2 { 6 public static void main(String[] args) { 7 String ageText = JOptionPane.showInputDialog(null, 8 "Berapa umurmu?"); 9 int age = Integer.parseInt(ageText); 10 11 String moneyText = JOptionPane.showInputDialog(null, 12 "Berapa uangmu?"); 13 double money = Double.parseDouble(moneyText); 14 15 JOptionPane.showMessageDialog(null, 16 "Jika kamu bisa menabung,\n" + 17 "Maka kamu akan memiliki " + (money * 32) + 18 "uang pada umur " + (age + 5) + "!"); 34



19



}



20 }



Gambar 7. Hasil running program



Gambar 8. Hasil running program akhir E. Menggunakan Frame pada GUI JOptionPane sangatlah berguna, tetapi method ini tidak fleksibel dan tidak mumpuni untuk membuat antarmuka pengguna dengan komponen yang kompleks. Untuk mengatasi hal ini, maka harus dipelajari tentang berbagai jenis widget atau komponen yang dapat digunakan pada Java. Secara teknis, Frame juga merupakan komponen karena Frame membentuk window yang tertampil pada layar. Frame juga memiliki banyak metode yang tidak ditemukan dalam component lain. 1 // Sets several properties of a window frame. 2 35



3 import java.awt.*; // for Dimension 4 import javax.swing.*; // for GUI components 5 6 public class SimpleFrame { 7 public static void main(String[] args) { 8 JFrame frame = new JFrame(); 9 frame.setForeground(Color.WHITE); 10 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 11 frame.setLocation(new Point(10, 50)); 12 frame.setSize(new Dimension(300, 120)); 13 frame.setTitle("Ini adalah frame"); 14 frame.setVisible(true); 15



}



16 }



Gambar 9. Membuat Sebuah Frame



36



F. Buttons, Text Fields, dan Labels Komponen pertama yang akan dibahas adalah Button (tombol). Button merupakan komponen pada layar yang dapat diklik dan menimbulkan sebuah aksi. Button direpresentasikan dengan JButton class. Setiap objek JButton yang dibuat merupakan lambang dari setiap button pada layar. Jika ada tiga button pada satu layar maka diperlukan tiga JButton objects yang diletakkan pada satu frame. Button dapat dibuat tanpa parameter (sebuah tombol tanpa keterangan teks), dapat dimodifikasi ukurannya dengan method setSize, teks keterangannya dengan method setText, dan dapat pula diubah warna background tombolnya dengan method: JButton button1 = new JButton(); button1.setText("I'm the first button"); JButton button2 = new JButton("The second button"); button2.setBackground(Color.YELLOW); Textfield adalah suatu komponen pada Jframe yang berfungsi untuk menginput data secara langsung oleh user. Textfield ini biasanya digunakan untuk mengisi data-data ke dalam sistem seperti nama, alamat, email, dan lainlain. Sebagai komponen dengan fasilitas input, textfield kemudian dijadikan sarana komunikasi antara user dengan developer sehingga developer dapat mengubah form sesuai dengan kebutuhan user. Cara pembuatan textfield dapat dilihat dari potongan kode program di bawah ini: //membuat objek tf JTextField tf = new JTextField();



//memasukkan textfield ke dalam frame Frame.add(tf);



//mengatur posisi textfield di dalam frame tf.setBounds(100,10,200,20); //x, y, width, height



37



Label adalah salah satu komponen pada Jframe yang berguna untuk memberi keterangan atau variable di dalamnya. Variable tersebut disesuaikan dengan kebutuhan pengguna. Dengan adanya label, keterangan atas suatu objek dapat digambarkan secara singkat sehingga pengguna dapat dengan mudah mengoperasikan program yang telah dikembangkan oleh developer. Pembuatan label dapat dilihat dari potongan kode program di bawah ini: //membuat objek label Jlabel label = new Jlabel(“Masukkan nomor kartu perpustakaan”);



//menentukan layout frame frame.setLayout(null);



//memasukkan label ke dalam frame Frame.add(label);



//mengatur posisi label di dalam Frame Label.setBounds(15,15,125,20) //x, y, width, height



Membangun sebuah tampilan merupakan kegiatan penggabungan dari berbagai komponen. Beberapa komponen tersebut digabungkan ke dalam satu frame. Frame berguna sebagai wadah untuk menampung berbagai macam komponen. Untuk menambahkan komponen ke dalam frame maka diperlukan method JFrame dan masukkan komponen sebagai parameter. Berikut adalah contoh kode program untuk membuat frame dan menempatkan dua tombol di dalamnya: 1 // Creates a frame containing two buttons. 2 3 import java.awt.*; 4 import javax.swing.*; 5 38



6 public class ComponentsExample { 7 public static void main(String[] args) { 8 JFrame frame = new JFrame(); 9 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 10 frame.setSize(new Dimension(300, 100)); 11 frame.setTitle("A frame"); 12 13 JButton button1 = new JButton(); 14 button1.setText("I'm a button."); 15 button1.setBackground(Color.BLUE); 16 frame.add(button1); 17 18 JButton button2 = new JButton(); 19 button2.setText("Click me!"); 20 button2.setBackground(Color.RED); 21 frame.add(button2); 22 23 frame.setVisible(true); 24



}



25 }



39



Gambar 10. Menampilkan Button dalam Sebuah Frame



Pada gambar di atas, tampilan layar tidak sesuai dengan apa yang dituliskan pada source code. Karena pada source code dideklarasikan dua tombol namun yang tertampil pada layar hanya satu tombol saja yaitu tombol kedua. Hal tersebut muncul karena tombol kedua menutupi tombol pertama pada layar. Posisi letak tombol pertama adalah sama dengan tombol kedua sehingga terjadi adalah penumpukan antara kedua tombol tersebut. Pada subbab selanjutnya akan dibahas mengenai penyusunan layout komponen pada suatu frame. Hal ini sangat berguna agar tampilan GUI dapat mudah dipahami dan dikases oleh pengguna. G. Mengubah Tata Letak sebuah Frame Permasalahan pada program di sub-bab sebelumnya adalah mengenai tata letak (layout) komponen pada sebuah frame. Komponen memiliki tata letak seperti posisi komponen, ukuran komponen, urutan penempatan komponen dan lain-lain. Pada program di sub-bab sebelumnya belum didefinisikan mengenai tata letak komponen yang ada di dalamnya. Maka hal yang perlu dilakukan agar tombol pertama dan kedua tidak saling menumpuk adalah dengan mendefinisikan tata letak kedua tombol tersebut. Pada Java dikenal beberapa package pengaturan tata letak salah satunya adalah dengan java.awt package. import java.awt.*; // for layout managers import javax.swing.*; // for GUI components



40



Tata letak yang sering digunakan pada Java adalah BorderLayout. BorderLayout membagi sebuah Frame menjadi lima bagian: utara, selatan, barat, timur, dan tengah. Ketika BorderLayout digunakan untuk menambahkan komponen ke dalam Frame, yang dilakukan adalah melalui dua parameter: komponen yang akan ditambahkan dan konstanta yang mewakili wilayah di mana menempatkannya. Konstanta tersebut adalah BorderLayout.NORTH, BorderLayout.SOUTH,



BorderLayout.WEST,



BorderLayout.EAST,



dan



BorderLayout.CENTER. Jika kamu tidak memberikan parameter kedua yang mewakili letak posisi, Java akan menempatkan komponen di tengah secara otomatis. Berikut adalah contoh penggunaan manajer tata letak BorderLayout: 1 import java.awt.*; 2 import javax.swing.*; 3 public class ContohBorderLayout { 4 public static void main(String[] args) { 5 JFrame frame = new JFrame(); 6 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 7 frame.setSize(new Dimension(210, 200)); 8 frame.setTitle("Contoh Border Layout"); 9 frame.setLayout(new BorderLayout()); 10 frame.add(new JButton("Utara"), BorderLayout.NORTH); 11 frame.add(new JButton("Selatan"), BorderLayout.SOUTH); 12 frame.add(new JButton("Barat"), BorderLayout.WEST); 13 frame.add(new JButton("Timur"), BorderLayout.EAST); 14 frame.add(new JButton("Tengah"), BorderLayout.CENTER); 15 frame.setVisible(true); 41



16



}



17 }



Gambar 11. Contoh Penggunan BorderLayout pada Frame H. Text Areas, Scrollbars, dan Fonts Text fields sangat berguna untuk melakukan input berupa single-line text, namun text fields tidak dapat menampung input ketika teks yang diinputkan banyak dan lebih dari satu baris. Kelemahan pada text fields ini dapat diatasi oleh Text Areas. Text Areas dapat menampung inputan berupa multiple lines text, Text Areas pada java dideklarasikan dengan JTextArea object.



JTextArea area = new JTextArea(5, 20);



42



Gambar 12. Text Areas Pada gambar di atas merupakan contoh penggunaan Text Area dengan jumlah baris adalah 5 baris. Namun masalah akan timbul ketika pengguna melakukan input data yang jumlah barisnya adalah lebih dari 5 baris. Teks pada baris ke-6 dan selanjutnya pasti tidak tertampil dalam Text Area tersebut, untuk mengatasi masalah ini maka diperlukan Scrollbars. Scrollbars pada java dideklarasikan dengan JScrollPane object. // use scrollbars on this text area frame.add(new JScrollPane(area));



Gambar 13. Scrollbars Selain menambah scrollbars pada text area, pengembang juga bisa melakukan modifikasi pada jenis font beserta ukuranya. Pemilihan jenis font 43



yang baik akan membuat audiens tertarik untuk berinteraksi dengan program yang dibuat. Pada java, Font direpresentasikan sebagai Font object, font dapat diubah jenisnya, style (bold atau italic), dan ukurannya (font size). Sebagai contoh, berikut adalah pengubahan font pada text area dengan jenis font Times New Roman, style Bold dan, font size 14. area.setFont(new Font("Times New Roman", Font.BOLD, 14));



Gambar 14. Modifikasi Fonts I. Radio Buttons dan Combo Box 1. Radio Button Radio button adalah salah satu elemen form dasar dalam pembuatan GUI. Radio button biasa digunakan pada saat ada dua atau lebih pilihan yang eksklusif, dan user hanya diperbolehkan untuk memilih hanya salah satu dari pilihan tersebut. Dengan kata lain, jika memilih salah satu pilihan dalam form radio button tersebut, maka secara otomatis akan mengeliminasi pilihan lain yang mungkin dipilih sebelumnya. Fungsi dari button ini sangatlah membantu dalam tujuan menghindarkan user memasukan data yang rentan salah, karena dalam form tersebut hanya ditampilkan pilihan yang valid. Radio Button pada java dideklarasikan dengan JRadioButton, berikut adalah contoh kode program penerapan Radio Button pada sebuah frame:



import java.awt.*; import java.awt.event.*; import javax.swing.*; 44



class RadioButtonFrame extends JFrame implements ActionListener { RadioButtonFrame() { setTitle("Radio Buttons"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); topPanel = new JPanel(); ButtonGroup g = new ButtonGroup(); hijauButton



=



addRadioButton(topPanel,



g,



"Hijau",



kuningButton



=



addRadioButton(topPanel,



g,



"Kuning",



false);



false); unguButton



=



addRadioButton(topPanel,



g,



false); getContentPane().add(topPanel, "North"); panel = new JPanel(); getContentPane().add(panel, "Center"); JMenuBar mb = new JMenuBar(); JMenu file = new JMenu("MyFile"); JMenuItem quit = new JMenuItem("Quit"); file.add(quit); quit.addActionListener(this); mb.add(file); JMenu color = new JMenu("Color"); JMenuItem greenItem = new JMenuItem("Hijau"); 45



"Ungu",



color.add(greenItem); greenItem.addActionListener(this); JMenuItem yellowItem = new JMenuItem("Yellow"); color.add(yellowItem); yellowItem.addActionListener(this); JMenuItem magentaItem = new JMenuItem("Magenta"); color.add(magentaItem); magentaItem.addActionListener(this); mb.add(color); setJMenuBar(mb); } JRadioButton



addRadioButton(JPanel



jp,



ButtonGroup



String name, boolean v)



{ JRadioButton b = new JRadioButton(name, v); b.addActionListener(this); g.add(b); jp.add(b);return b; }



public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == hijauButton) setColor(Color.green); else if (source == kuningButton) setColor(Color.yellow); else if (source == unguButton) setColor(Color.magenta); else { 46



g,



JMenuItem selection = (JMenuItem)source; String cmd = selection.getText(); if (cmd.equals("Quit")) System.exit(0); else if (cmd.equals("Hijau")) { setColor(Color.green); hijauButton.setSelected(true); } else if (cmd.equals("Kuning")) { setColor(Color.yellow); kuningButton.setSelected(true); } else if (cmd.equals("Ungu")) { setColor(Color.magenta); unguButton.setSelected(true); } } }



private void setColor(Color c) { panel.setBackground(c); panel.repaint(); topPanel.setBackground(c); topPanel.repaint(); }



private JPanel panel, topPanel; private JRadioButton hijauButton, kuningButton, unguButton; 47



}



public class RadioButtons { public static void main(String[] args) { JFrame jf = new RadioButtonFrame(); jf.setSize(500, 300); jf.setVisible(true); } }



Gambar 15. Radio Buttons 2. Combo Box Combo Box merupakan kombinasi dari text box dan list box dimana masukan data dapat dilakukan dengan pengetikan maupun pemilihan. Pada kasus di bawah ini akan dicontohkan penggunaan list box dan check box dalam satu frame:



import java.awt.*; import java.awt.event.*; 48



import javax.swing.*; import javax.swing.event.*; public class States extends JFrame implements ActionListener, ListSelectionListener { States() { setTitle("Kota"); setSize(600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComboBox choice = new JComboBox(); choice.addItem("Red"); choice.addItem("Orange"); choice.addItem("Green"); choice.addItem("Black"); choice.addItem("Blue"); choice.addItem("Cyan"); choice.addActionListener(this); String



[]



items



=



{



"Palembang",



"Yogyakarta",



"Surabaya", "Jakarta", "Bandung", "Bogor", "Semarang", "Manado" }; JList words = new JList(items); JScrollPane sPane = new JScrollPane(words); words.addListSelectionListener(this); JPanel jp = new JPanel(); jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); jp.add(sPane); jp.add(choice); getContentPane().add(jp, "East"); show = new Show(); show.setBackground(Color.white); getContentPane().add(show, "Center"); } private Color color = Color.red; private String [] states = { }; // initialized if color chosen first 49



private Show show; public void actionPerformed(ActionEvent e) { JComboBox source = (JComboBox)e.getSource(); Object item = source.getSelectedItem(); if (item.equals("Red")) color = Color.red; else if (item.equals("Green")) color = Color.green; else if (item.equals("Blue")) color = Color.blue; else if (item.equals("Orange")) color = Color.orange; else if (item.equals("Black")) color = Color.black; else if (item.equals("Cyan")) color = Color.cyan; show.updatePanel(color, states); } public void valueChanged(ListSelectionEvent e) { JList source = (JList)e.getSource(); Object [] values = source.getSelectedValues(); states = new String [values.length]; for (int k=0; k> Event >> Action >> actionPerformed sehingga tombol tersebut memiliki aksi apabila diklik.



Di dalam method jButton1ActionPerformed tambahkan kode program di bawah ini: Private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: DefaultPieDataset objek = new DefaultPieDataset(); objek.setValue("Satu", new Integer(10)); objek.setValue("Dua", new Integer (20)); objek.setValue("Tiga", new Integer (30)); JFreeChart chart = ChartFactory.createPieChart("Pie Chart", objek); ChartFrame



frame



=



new



chart); frame.setSize(300,300); frame.setVisible(true); }



106



ChartFrame("Contoh



Pie



Chart",



Perlu diketahui bahwa kode program di atas akan menghasilkan error dikarenakan ada library yang belum diimpor. Maka pada bagian setelah package, import terlebih dahulu library di bawah ini: import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.data.general.DefaultPieDataset;



6. Proses pembuatan grafik sederhana telah selesai. Lakukan Run program dan akan dihasilkan Grafik Pie seperti gambar di bawah ini:



107



RANGKUMAN 1. Multimedia adalah gabungan dari beberapa komonen yaitu teks, grafik, suara, video dan animasi untuk menghasilkan presentasi yang menarik. 2. Cara standar untuk mengelola dan menamplikan gambar dalam sebuah aplikasi berbasis Java adalah dengan menggunakan method getResource(). 3. Audio dalam aplikasi berbasi Java dapat ditampilkan jika format audio tersebut adalah .wav (waveform audio format).



TUGAS TERSTRUKTUR (MANDIRI) Carilah referensi tentang mengelola media berupa video dalam sebuah aplikasi java. Catat dan pahami prosedur untuk memasukan sebuah video dalam aplikasi berbasis java. Lalu diskusikanlah dengan guru kalian!



TUGAS TIDAK TERSTRUKTUR (KELOMPOK) Buatah kelompok terdiri dari 4 orang. 1. Pahami prosedur untuk memasukkan media animasi ke dalam aplikasi berbasis Java. Lalu praktikkan bersama anggota kelompokmu! 2. Buatlah sebuah project berrsama untuk mengembangkan sebuah program yang didalamnya dapat mengolah multimedia berupa gambar, audio, dan video dalam satu Form!



Uji Kompetensi Dasar 5 Soal Pilihan Ganda 1. Fungsi dari IDE GUI Builder adalah... A. Memanggil method lain B. Membuat frame C. Menampilkan komponen multimedia D. Membuat button E. Mendesai user interface



2. Cara mengelola dan menampilkan gambar dalam sebuah aplikasi berbasis Java adalah dengan menggunakan method.... 108



A. getResource() B. panggilgambar() C. getsource() D. postResource() E. voidResource()



3. Salah satu tools yang disediakan oleh perangkat Netbeans yang bertujuan untuk menampilkan suatu output yang berguna bagi user adalah.... A. JFrame B. JOption C. Label D. Button E. Textfield



4. Berikut adalah ekstensi untuk file gambar, kecuali... A. PNG B. JPG C. TIFF D. BMP E. WAV



5. Fungsi dari JavaPackage adalah... A. Membuat project baru B. Membuat tempat penyimpanan file C. Membuat method memanggil program D. Membungkus class Java kedalam grup-grup tertentu yang telah ditentukan E. Media output



6. Salah satu alat pada Jframe yang berguna untuk menempatkan suatu variable di dalamnya adalah fungsi dari... A. Button B. Label 109



C. Form D. Package E. Icon



7. Ekstensi file audio yang dapat dieksekusi dalam program java adalah... A. WAV B. MP3 C. AAC D. MPEG E. WMA



8. Untuk mengeksekusi audio dalam program, diperlukan setting pada button berupa penambahan... A. Method B. Class C. Label D. Event E. Resource



9. Perusahaan pengembang format audio WAV adalah... A. Oracle B. Apple C. Microsoft D. Google E. SUN



10. Perhatikan potongan code berikut: in = new FileInputStream(new File ("C:\\Music\\lagu-lagu.wav"));



Merupakan sebuah potongan code yang berguna untuk... A. Menjalankan program audio B. Membuat button C. Membaca file dari lokasi tertentu D. Memberikan event 110



E. Memanggil resource



11. Multimedia secara istilah diartikan sebagai .. A. Media teks, grafik, suara, video, dan animasi B. Gabungan beberapa media sekaligus C. Informasi komputer yang disajikan ke dalam bentuk grafik D. Pembuatan presentasi E. Mengolah foto dan video



12. Library gratis yang disediakan untuk mendukung Java dalam menampilkan Grafik adalah ... A. JDBC B. IDE Builder C. JFreeChart D. JChart E. Media Framework



13. Fungsi grafik pada sebuah aplikasi adalah ... A. User senang menggunakan aplikasi tersebut B. User lmudah memahami alur aplikasi tersebut C. User mudah memahami informasi dalam aplikasi tersebut D. Untuk menampilkan data berupa angka-angka E. Memberikan gambaran umum alur aplikasi tersebut



14. Apabila kita ingin menyisipkan video ke dalam Form, maka library yang harus dipanggil adalah ... A. JDBC B. IDE Builder C. JFreeChart D. JChart E. Media Framework



111



15. Grafik lingkaran yang menunjukkan ukuran dari suatu item dalam suatu rangkaian data secara proporsional terhadap jumlah dari keseluruhan item disebut grafik ... A. Column B. Pie C. Line D. Bar E. Area



16. Grafik yang sangat ideal untuk menampilkan tren data pada interval waktu yang sama adalah ... A. Column B. Pie C. Line D. Bar E. Area



17. XY chart digunakan untuk ... A. Menunjukkan hubungan dari suatu bagian dengan keseluruhan data namun dapat berisi lebih dari satu rangkaian data B. Membandingkan nilai keseluruhan dari sejumlah rangkaian data C. Menggambarkan fluktuasi harga stok D. Menunjukkan hubungan antara nilai numerik pada beberapa rangkaian data E. Menekankan besarnya perubahan dai waktu ke waktu



18. Stock chart digunakan untuk ... A. Menunjukkan hubungan dari suatu bagian dengan keseluruhan data namun dapat berisi lebih dari satu rangkaian data B. Membandingkan nilai keseluruhan dari sejumlah rangkaian data C. Menggambarkan fluktuasi harga stok D. Menunjukkan hubungan antara nilai numerik pada beberapa rangkaian data 112



E. Menekankan besarnya perubahan dai waktu ke waktu



19. Berikut media yang tidak didukung untuk disisipkan ke dalam Form ... A. Grafik B. Gambar C. Video D. Audio E. Note



20. Perhatikan potongan sintak di bawah ini. objek.setValue("Satu", new Integer(10)); Sintak tersebut digunakan untuk ... A. Membuat objek baru B. Memberi nilai objek dengan nama Satu dan porsi 10 C. Memberi nilai objek dengan nama Satu dan porsi 10% dari keseluruhan D. Mengubah nilai objek dari 1 menjadi 10 E. Mengkonversi nilai objek dari String ke integer



Soal Uraian 1. Apa yang kamu ketahui tentang multimedia? 2. Jelaskan langkah-langkah untuk mengolah file gambar dalam program berbasis java! 3. Jelaskan langkah-langkah untuk mengolah file audio dalam program berbasis java! 4. Jelaskan langkah-langkah untuk menyisipkan grafik dalam Form ! 5. Jelaskan langkah-langkah untuk menyisipkan video dalam Form !



113



REMEDIAL 1. Sebutkan beberapa media yang bisa digunakan untuk menambah daya tarik suatu aplikasi. Sebutkan keunggulan masing-masing media tersebut ! 2. Apa ekstensi file gambar dan audio yang dapat diakses oleh Form? 3. Carilah jenis-jenis grafik yang dapat digunakan untuk menggambarkan suatu data. Sebutkan dan jelaskan minimal 5 jenisnya! 4. Library apa saja yang harus kita panggil agar bisa menyisipkan Grafik dalam Form? 5. Bagaimana library Media Framework bekerja dalam Form?



PENGAYAAN Buatlah sebuah project untuk mengembangkan sebuah program yang didalamnya dapat mengolah multimedia berupa gambar, audio, video, grafik, dan animasi dalam satu Form!



114



BAB 5 MODEL VIEW CONTROLLER (MVC)



Kompetensi Dasar 3.6.



3.7.



Kompetensi Dasar



Memahami Model Vew Controller 4.6.



Mempresentasikan Model View



(MVC) dalam pemrograman



Controller (MVC) dalam



berorientasi objek



pemrograman berorientasi objek



Menerapkan aplikasi berbasis



4.7.



Membuat aplikasi dengan Model



MVC dalam aplikasi dengan



View Controller (MVC) dengan



pelbagai hasil



hasil final (meta-data)



Materi ini akan membahas tentang Model View Controller (MVC) dalam pemrograman berorientasi obyek. Namun, sebelum lebih lanjut mempelajari MVC ini, siswa diharapkan untuk mengulang kembali pembelajaran terhadap konsep dasar Pemrograman Berorientasi Obyek (PBO) karena pemahaman siswa terkait dengan



pemrograman berorientasi obyek merupakan langkah awal untuk



mempermudah



dalam



mempelajari,



memahami



dan



menerapkan



metode



pengembangan aplikasi dengan konsep MVC. Dalam penerapan MVC ini kita akan menggunakan PHP Framework dengan Code Igniter (CI). Dengan demikian pembahasan pada materi ini dimulai dari mempelajari cara instalasi CI dan bekerja dalam metode MVC.



A. Pengenalan dan Instalasi Code Igniter (CI) 1. Definisi Framework Code Igniter Dalam membangun sebuah aplikasi web, tentu kita akan membutuhkan suatu framework. Framework merupakan suatu kerangka kerja yang berupa sekumpulan folder yang memuat file-file php yang menyediakan class libraries, helpers, plugins dan lainnya.



Dengan adanya framework maka akan mempercepat dan



mempermudah pembangunan dari sebuah aplikasi web. Selanjutnya adalah menentukan framework yang akan kita gunakan, dalam materi ini kita akan menggunakan framework Code Igniter (CI). Framework Code Igniter merupakan salah satu framework PHP yang paling banyak di gunakan oleh web developer untuk 115



membangun sebuah aplikasi berbasis website karena Code Igniter merupakan sebuah web application network yang bersifat open source yang digunakan untuk membangun aplikasi php dinamis. Code Igniter memiliki banyak kelebihan diantaranya adalah  Free yaitu dapat didownload secara gratis pada situs resminya yaitu www.codeigniter.com  Ringan dan cepat  Sangat mudah dalam menggunakannya yaitu hanya mengekstrak isi folder codeigniter pada project yang sedang dibuat dilocalhost  Syntax yang terstruktur  Codeigniter ini menyediakan fasilitas yang sangat lengkap yang disertai dengan tutorial penggunaannya serta implementasin kodenya  Keamanan user atau pengakses aplikasi tidak berhubungan langsung dengan database.



2. Cara Instalasi Code Igniter (CI) Sebelum melakukan instalasi maka ada beberapa hal yang perlu diperhatikan yaitu pastikan kita sudah menginstall server local seperti XAMPP, kemudian memiliki program editor PHP seperti PHP Storm, Dreamweaver, dll. Jika sudah maka kita maka kita akan lanjut pada tahap selanjutnya yaitu melakukan instalasi Code Igniter:  Download CodeIgniter  Extract file zip CodeIgniter dan simpan di folder root server local kalian masingmasing. Jika menggunakan xampp maka akan tersimpan pada bagian htdocs. Kemudian ubahlah nama folder menjadi “codeigniter”.



116



Gambar 31. Hasil ekstract file codeigniter



 Bukalah folder tersebut, karena didalam folder tersebut memiliki banyak folder dan file maka pilihlah folder application, system, dan file index.php, kemudian yang lainnya bisa dihapus.



Gambar 32. Memilih data inti pada codeigniter



 Lakukanlah



pengaksesan



pada



browser



dengan



menuliskan



“localhost/codeigniter”, maka akan ada tampilan “Welcome to CodeIgniter!”. 117



Dengan demikian, proses instalasi sudah selesai tinggal menjalankan cara kerja Code Igniter menggunakan metode MVC.



3. Alur Kerja Framework Code Igniter (CI) Berikut adalah uraian alur kerja dari framework CI:



Gambar 33. Alur Kerja dari Framework CI (Sumber: idcloudhost.com)  Index.php: Index.php disini berfungsi sebagai file pertama dalam program yang akan dibaca oleh program.  The Router: Router akan memeriksa HTTP request untuk menentukan hal apa yang harus dilakukan oleh program.  Cache File: Apabila dalam program sudah terdapat “cache file” maka file tersebut akan langsung dikirim ke browser. File cache inilah yang dapat membuat sebuah website dapat di buka dengan lebih cepat. Cache file dapat melewati proses yang sebenarnya harus dilakukan oleh program codeigniter.  Security: Sebelum file controller di load keseluruhan, HTTP request dan data yang disubmit oleh user akan disaring terlebih dahulu melalui fasilitas security yang dimiliki oleh codeigniter.  Controller: Controller akan membuka file model, core libraries, helper dan semua resources yang dibutuhkan dalam program tersebut.  View: Hal yang terakhir akan dilakukan adalah membaca semua program yang ada dalam view file dan mengirimkannya ke browser supaya dapat dilihat. 118



Apabila file view sudah ada yang di “cache” maka file view baru yang belum tercache akan mengupdate file view yang sudah ada.



B. Pengenalan Model View Controller (MVC) 1.



Definisi Model View Controller (MVC) Model View Controller (MVC) yang sering disingkat dengan sebutan MVC



merupakan sebuah metode, konsep dalam mengembangkan aplikasi yang memisahkan antara data (model) dari tampilan (view) dan cara bagaimana melakukan pemrosesannya (controller). Model View Controller (MVC) merupakan salah satu solusi arsitektur dalam memudahkan pengembangan perangkat lunak seperti dilakukannya maintenance baik dalam penambahan, perbaikan serta pengurangan kode-kode program. Oleh karena itu, MVC ini banyak digunakan untuk membangun dan mengembangkan aplikasi web saat ini.



2.



Komponen-komponen dari Model View Controller (MVC) Berikut adalah uraian tentang komponen-komponen pada MVC, yaitu:



a. Model Model memegang peran pada bagian kode program yaitu menangani query atau database, mewakili struktur data yang biasa berisi fungsi-fungsi dalam pengelolaan database atau manipulasi data seperti melakukan penambahan data (insert), mengubah data (update) atau menghapus data (delete). Selanjutnya, mari kita coba perhatikan bagaimana contoh dari sintak sebuah model dapat dibuat. Berikut adalah contoh sebuah dengan ilustrasi untuk menampilkan data dari table user. Misal buat sebuah model dengan nama terserah kamu.(model dibuat di dalam folder model di application/model). Disini dicontohkan membuat sebuah model dengan nama “contoh_data.php”.











Perhatikan



pada



contoh



di



atas.



Kita



menampilkan



data



dengan



menggunakan foreach(). variabel $user akan menjadi $u. $user adalah variabel yang di parsing melalui controller dan berisi data user dalam bentuk array. Selanjutnya akses alamat controller user untuk melihat hasilnya.



c.



Controller Controller (pengontrol) merupakan komponen terakhir dari metode MVC yang memiliki tugas pada bagian pemrosesan terhadap perintah-perintah suatu data (model) dan dapat ditampilkan pada halaman web (view). Sehingga, Controller (pengontrol) bertindak diantara model dan view. User tidak akan berhubungan dengan model secara langsung, intinya data yang tersimpan di database (model) di ambil oleh controller dan kemudian controller pula yang menampilkan nya ke view. Jadi controller lah yang mengolah intruksi. Selanjutnya, mari kita coba perhatikan bagaimana contoh dari sintak sebuah controller dapat dibuat.Contoh controller yang akan dibuat kali ini berkaitan dengan ilustrasi pada materi sebelumnya. Kita akan membuat file controller dengan nama contoh.php dimana disini nanti berisikan sebuah function.



Sintaks diatas merupakan perintah untuk... A. Memulai session B. Memberi nilai pada variabel session C. Menghapus session D. Membaca nilai dari variabel session E. Memberi nilai



15. Mengatur sesuatu yang berhubungan dengan database, merupakan fungsi dari... A. Controller B. Interface C. Model D. View E. Framework



16. Dokumen halaman web yang telah anda buat, disimpan pada direktori... A. Htdocs B. Mysql C. Galery D. Xampp E. Data



17. Tag yang atribut TYPE-nya dapat digunakan untuk menerima masukan berupa pilihan yaitu... A. Circle B. Submit C. Radio D. Button E. Square 144



18. Perintah masukkan yang benar agar menampilkan tampilan seperti dibawah ini: “ini tombol input dengan type=”submit”: Kirimkan adalah... A.
ini tombol input dengan type=”submit”:



B.
ini tombol input dengan type=”reset”



C.
ini tombol input dengan type=”reset”



D.
ini tombol input dengan type=”reset”



E.
ini tombol input dengan type=”submit”



19. Atribut yang digunakan untuk menentukan metode pengiriman yang dipakai adalah... A. Method B. Class C. Model D. Post E. Controller



20. Kepanjangan HTML adalah… A. Horizon Terminal Mark-up List B. Hyper Text Mark-up List C. Hypno Terminal Maximal List D. Hyper Text Manual Language E. Hyper Text Mark-up Language



145



SOAL URAIAN 1. Deskripsikan



menurut



pendapat



anda,



bagaimana



konsep



MVC



dalam



pemrograman berorietasi obyek. 2. Jelaskan konsep Model, View, dan Controller pada MVC. 3. Jelaskan hubungan antara 3 komponen yaitu Model, View, dan Controller pada MVC. 4. Sebutkan dan jelaskan framework yang dapat digunakan atau diterapkan dalam konsep MVC. 5. Tuliskan contoh potongan code program dengan menggunakan framework CI pada konsep MVC.



REMEDIAL 1. Jelaskan konsep Model, View, dan Controller pada MVC! 2. Sebutkan keuntungan menggunakan framework dalam pengembangan sebuah aplikasi! 3. Carilah dan deskripsikan contoh framework yang menerapkan konsep MVC! 4. Buatlah sebuah template sederhana untuk user interface menerapkan konsep view! 5. Sebutkan dan jelaskan langkah-langkah pembuatan aplikasi menggunakan konsep MVC! (Studi kasus: membuat aplikasi data nilai siswa)



PENGAYAAN Buatlah sebuah project untuk mengembangkan sebuah program yang didalamnya dapat mengolah fungsi CRUD menggunakan konsep mvc!



146



PENILAIAN AKHIR SEMESTER GENAP



1. Berikut adalah turunan dari komponen Swing pada pemrograman GUI, kecuali … A. JTextField B. JApplet C. JFrame D. JExit E. JDialog



2. Untuk menambahkan gambar pada tampilan program dapat menggunakan label yang didalamnya diselipkan statement … A. JLabel(new ImageIcon(" ")); B. JFrame(new ImageIcon(" ")); C. JFrame(new PictureIcon(" ")); D. JLabel(new ImageTool(" ")); E. JLabel(new GraphicIcon(" "));



3. Suatu strategi pembangunan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya disebut ... A. DFD Level Abstraksi B. Pemrograman Terstruktur C. Sequence Diagram D. Pemrograman Berorientasi Objek E. Function Diagram



4. Berikut bahasa pemrograman yang biasa digunakan dalam pengembangan sistem berorientasi objek, kecuali ... A. PHP B. C++ 147



C. C D. Java E. Delphi



5. Proses pemanggilan suatu baris array menggunakan ... A. Index B. [ ] C. Deklarasi variabel D. Multidimensi E. Tipe data 6. ODBC merupakan singkatan dari…. A. Open Database Connectivity B. Open Data Connectivity C. Open Database Connection D. Open Data Connection E. Open Data Base Connection



7. Berikut pernyataan yang tepat mengenai StringBuffer ... A. Synchronized B. Asynchronized C. Performa Lambat D. Versi 1.5 E. Immutable



8. Berikut pernyataan yang tepat mengenai StringBuilder ... A. Synchronized B. Asynchronized C. Performa Cepat D. Versi 1.0 E. Immutable



9. Method utama pada sebuah program Java adalah ... A. class Main 148



B. public static void main (String [] args) C. int main D. import java.util.Scanner; E. include



10. Berikut yang merupakan nama variabel ...



A. x = 10; B. { } C. public static void main (String [] args) { } D. int x E. class Variabel { }



11. Suatu strategi pembangunan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya disebut ... A. DFD Level Abstraksi B. Pemrograman Terstruktur C. Sequence Diagram D. Pemrograman Berorientasi Objek E. Function Diagram 12. ODBC merupakan singkatan dari…. A. Open Database Connectivity B. Open Data Connectivity C. Open Database Connection D. Open Data Connection E. Open Data Base Connection 149



13. Untuk mengaktifkan hubungan antar aplikasi dan database, maka sebuah Connection harus dibentuk dengan menggunakan…. A. Database B. Driver Manager C. JDBC Driver D. API E. ODBC



14. Event yang menerima berita dari event-event atau proses-proses interaksi user ketika tombol ditekan adalah … A. Event Listener B. Event Object C. Event Model D. Event Source E. Event Handling



15. Kelas adalah kumpulan objek-objek dengan karakteristik yang sama. Selain kelas, terdapat beberapa konsep dasar PBO di bawah ini, kecuali... A. Object B. Encapsulation C. Polymorphism D. Inheritance E. Interface



16. Berikut yang bukan merupakan ciri-ciri Pemrograman Prosedural .. A. Menguraikan masalah berdasarkan fungsi B. Pendekatan Top Down C. Menggunakan bahasa Java D. Tidak menyediakan Data Hiding E. Tidak memungkinkan overloading



17. Methods Interthread yang digunakan untuk Membangunkan thread yang telah memanggil method wait dari object yang sama.adalah ... A. public final void notifyAll() 150



B. public final void notify() C. public void run() D. public void start() E. public final void wait()



18. Method yang menjadi turunan dari class java.awt.Component dan merupakan tool pada GUI Java disebut dengan … A. Package B. Component C. Function D. Field E. Frame



19. Sumber data merupakan suatu unsur pada komunikasi data yang bertugas untuk…. A. mengirimkan informasi B. menerima informasi C. mendapatkan informasi D. mencetak informasi E. mengolah informasi



20. Nilai default prioritas yang terdapat pada thread constanta public final static int NORM_PRIORITY adalah... A. 0 B. 10 C. 5 D. 1 E. 15



21. Fungsi yang merepresentasikan logic dalam OOP adalah... A. Model B. View C. Controller D. Database 151



E. Framework



22. Pemisahan antara desain antarmuka, data logic dan proses logic merupakan pendekatan konsep dari.... A. Inheritance B. Polymorphisme C. MVC D. Class E. Method



23. Meneruskan variable data hasil pengolahan dari Model merupakan fungsi dari.... A. Model B. View C. Controller D. Database E. Framework



24. Berikut bahasa pemrograman yang biasa digunakan dalam pengembangan sistem berorientasi objek, kecuali... A. PHP B. C++ C. C D. Java E. Python



25. Menerima dan merepresentasikan data yang nantinya ditampilkan ke User, merupakan fungsi dari... A. Controller B. Interface C. Model D. View E. Framework 26. Proses untuk mengambil, melakukan update dan menghapus informasi data website yang diterapkan ke dalam class dan function merupakan konsep dari... 152



A. View B. Model C. Data D. Controller E. Database



27. Menyediakan penanganan kesalahan/error, mengerjakan proses logika dari aplikasi serta melakukan validasi atau pengecekan terhadap input dari user merupakan salah satu fungsi dari... A. View B. Form C. Model D. Controller E. Database



28. Berisi tentang perintah-perintah HTML/CSS. Dan hanya potongan dari beberapa perintah PHP yang mana proses data yang diterima dari hasil proses logic yang telah diolah oleh Model adalah file yang di... A. Controller B. Model C. View D. Database.php E. CI



29. Potongan kode dibawah ini merupakan contoh dari perintah-perintah yang ada pada bagian...



A. Controller B. View 153



C. Model D. Form E. Button



30. Perhatikan potongan code berikut:



Merupakan sebuah potongan code yang berada pada file bagian... A. View B. Controller C. View.php D. Model E. Show



31. Kesalahan yang berasal dari kode program disebut dengan ... A. Exception class B. Error class C. Handling class D. Java runtime E. Harddish crash



32. Kesalahan yang berasal dari environment disebut dengan ... A. Exception class B. Error class C. Handling class D. Java runtime E. Harddisk crash



33. Di bawah ini yang bukan merupakan exception class ... A. Error pembagian 0 B. ArrayIndexOutOfBounds C. Kesalahan input D. NumberFormatException 154



E. Out of memory



34. Di bawah ini yang merupakan error class ... A. Error pembagian 0 B. ArrayIndexOutOfBounds C. Kesalahan input D. NumberFormatException E. Out of memory



35. Sintak di bawah ini akan menghasilkan error pada ...



A. Exception class B. Error class C. Handling class D. Java runtime E. Harddisk crash



36. Blok di bawah ini yang digunakan untuk exception handling adalah ... A. Penulisan tanda petik dua B. Penulisan titik koma C. Try-catch D. Penulisan kurung kurawal E. Exception – Error



37. Bila error tidak dapat tertangani, maka hal fatal yang terjadi adalah ... A. Program dihentikan paksa B. Muncul pesan error C. Program tidak dapat dijalankan sama sekali D. Stack race tidak dapat mengidentifikasi method E. Compiler memanggil blok throw



38. Deklarasi blok throw yang benar adalah ... A. throw ; B. throw ; 155



C. throw ; D. throw ; E. throw ;



39. Selain blok try-catch, blok yang bisa digunakan untuk exception handling adalah ... A. Runtime B. ArrayOutOfBound C. NumberFormatException D. Throws E. Out of Memory



40. String dalam Java berlaku sebagai ... A. Tipe data B. Objek C. Method D. Accessor E. Mutator



41. Fungsi dari IDE GUI Builder adalah... A. Memanggil method lain B. Membuat frame C. Menampilkan komponen multimedia D. Membuat button E. Mendesai user interface



42. Cara mengelola dan menaplikan gambar dalam sebuah aplikasi berbasis Java adalah dengan menggunakan method.... A. getResource() B. panggilgambar() C. getsource() D. postResource() E. voidResource()



156



43. Salah satu tools yang disediakan oleh perangkat Netbeans yang bertujuan untuk menampilkan suatu output yang berguna bagi user adalah.... A. JFrame B. JOption C. Label D. Button E. Textfield



44. Berikut adalah ekstensi untuk file gambar, kecuali... A. PNG B. JPG C. TIFF D. BMP E. WAV



45. Fungsi dari JavaPackage adalah... A. Membuat project baru B. Membuat tempat penyimpanan file C. Membuat method memanggil program D. Membungkus class Java kedalam grup-grup tertentu yang telah ditentukan E. Media output



46. Salah satu alat pada Jframe yang berguna untuk menempatkan suatu variable di dalamnya adalah fungsi dari... A. Button B. Label C. Form D. Package E. Icon



47. Ekstensi file audio yang dapat dieksekusi dalam program java adalah... A. WAV B. MP3 C. AAC 157



D. MPEG E. WMA



48. Untuk mengeksekusi audio dalam program, diperlukan setting pada button berupa penambahan... A. Method B. Class C. Label D. Event E. Resource



49. Perusahaan pengembang format audio WAV adalah... A. Oracle B. Apple C. Microsoft D. Google E. SUN



50. Perhatikan potongan code berikut: in = new FileInputStream(new File ("C:\\Music\\lagu-lagu.wav")); Merupakan sebuah potongan code yang berguna untuk... A. Menjalankan program audio B. Membuat button C. Membaca file dari lokasi tertentu D. Memberikan event E. Memanggil resource



158



SUMBER Boehm, B. W. (1981) Software Engineering Economics, Ch. 4 Prentice Hall, Upper Saddle River, NJ. Boehm, B. W. (1988) "A spiral model of software development and enhancement", Computer, 21(5), 61-72. DC Green, Komunikasi Data, Andi Yogyakarta, Yogyakarta, 1998. Graham Langley, Prinsip Dasar Telekomunikasi, 1986, PT. Multimedia Gramedia Group http://en.wikipedia.org/wiki/Gantt https://www.dumetschool.com/blog/Cara-Instalasi-CodeIgniter-Dan-Bekerja-DenganMetode-MVC http://www.tutorial-webdesign.com/tutorial-crud-create-read-update-dan-deletemenggunakan-codeigniter-1/ https://www.tianrosandhy.com/blog/tutorial-membuat-aplikasi-crud-sederhana-phpcodeigniter Ir. Lukas Tamutama, Pengantar Komunikasi Data, 1991, PT Elek Media Komputindo Ramos, E.,Al Schroeder, Lawrance Simpson. 1992. Data Communication and Fundamentals Using Novell Software.MacMillan Publishing. Royce, W. W. (1970) "Managing the development of large software systems: concepts and techniques", Proceedings of IEEE WESCON, August 1970. Suryadi HS, D. 1993. Pengantar Komunikasi Data. Gunadarma. Thamura, Frans (2007) "JENI", Jakarta: Meruvian Foundation. Thomas, Robert M. 1996. PENGANTAR LOCAL AREA NETWORK. Elek Media Komputindo. Jakarta William stallings, Dasar-dasar Komunikasi Data,2001,Salemba Teknika, www.Ilmukomputer.com



159



KUNCI JAWABAN BAB 1



BAB 2



BAB 3



1



A



11



A



1



A



11



C



1



A



2



B



12



A



2



B



12



D



2



D



3



C



13



B



3



C



13



A



3



B



4



D



14



C



4



A



14



A



4



E



5



E



15



D



5



B



15



B



5



A



6



D



16



E



6



E



16



E



6



C



7



C



17



E



7



D



17



A



7



A



8



B



18



C



8



A



18



A



8



E



9



A



19



C



9



E



19



C



9



C



10



B



20



B



10



A



20



D



10



D



BAB 3



BAB 4



BAB 5



11



B



1



C



11



B



1



A



11



D



12



D



2



A



12



C



2



C



12



A



13



A



3



A



13



C



3



C



13



E



14



C



4



E



14



C



4



C



14



B



15



B



5



D



15



B



5



D



15



C



16



A



6



B



16



C



6



C



16



A



17



D



7



A



17



D



7



D



17



C



18



B



8



D



18



C



8



A



18



A



19



C



9



C



19



E



9



C



19



A



20



B



10



C



20



C



10



C



20



E



160



PENILAIAN AKHIR SEMESTER GANJIL 1



A



11



A



21



A



31



A



41



B



2



B



12



C



22



D



32



B



42



A



3



C



13



C



23



B



33



C



43



A



4



A



14



E



24



E



34



D



44



B



5



B



15



A



25



A



35



E



45



C



6



E



16



D



26



C



36



D



46



A



7



D



17



D



27



A



37



C



47



B



8



A



18



D



28



E



38



B



48



A



9



E



19



A



29



C



39



A



49



E



10



A



20



E



30



D



40



B



50



E



PENILAIAN AKHIR SEMESTER GENAP 1



D



11



B



21



A



31



A



41



C



2



A



12



B



22



C



32



B



42



A



3



D



13



C



23



C



33



E



43



A



4



C



14



A



24



C



34



E



44



E



5



A



15



D



25



D



35



A



45



D



6



A



16



E



26



C



36



C



46



B



7



A



17



B



27



D



37



A



47



A



8



B



18



B



28



A



38



B



48



D



9



B



19



A



29



C



39



D



49



C



10



D



20



C



30



C



40



B



50



C



161



PROFIL PENULIS



Akhi Ha Runi Nur Rahayu, S.Pd. atau yang lebih akrab disapa Runi ialah seorang perempuan kelahiran Bantul pada tanggal 05 Februari. Anak keempat dari empat bersaudara ini telah menyelesaikan pendidikan S1-nya di Universitas Negeri Yogyakarta pada tahun 2016. Sejak kelulusannya, ia mulai mengabdi di SMK Negeri 1 Bantul hingga sekarang. Buku ini adalah karya pertamanya dalam kepenulisan non fiksi. Kontak personal bisa melalui surel [email protected].



Laki-laki yang akrab disapa Bait ini memiliki nama lengkap Bait Syaiful Rijal, S.Pd. Kesibukannya selain menjadi guru di SMK Negeri 1 Bantul juga sedang menyelesaikan studi S2 di Universitas Negeri Yogyakarta. Ipul adalah anak pertama dari dua bersaudara, lahir di Sleman pada November tanggal 17. Buku ini juga merupakan karya pertamanya dalam kepenulisan non fiksi. Kontak personal bisa melalui surel [email protected].



162