. Penggunaan Ordered List Penggunaan Unordered List Penggunaan Direktori List Penggunaan Menu List Penggunaan Definition lis List Penggunaan tag Font Penggunaan garis Penggunaan tag image Penggunaan attribute-attribute tag IMG Table sederhana Tabel dengan format yang lebih kompleks Cellpadding, cellspacing dan border Rowspan. Colspan. Tabel dengan sel berisi gambar Penggunaan tag anchor . Tag ini akan membuat baris baru dengan menyisipi satu baris kosong. Penulisan isi paragraf diapit oleh dan (Lihat Gambar 13.21). . •
376 376 377 377 379 379 380 380 381 381 382 382 383 384 384 385 385 386 387 387 388 389 389 390 391 391 392 392
14.1. 14.2. 14.3. 14.4. 14.5. 14.6. 14.7. 14.8. 14.9. 14.10. 14.11. 14.12. 14.13. 14.14. 14.15. 14.16. 14.17. 14.18.
Halaman pencarian Google Pertukaran data antara client dan server Jendela Services Opera sedang memanggil alamat server Daftar perangkat lunak yang terinstal pada Windows Lokasi direktori yang bisa dibaca web server Pengujian halaman web dinamis Mekanisme kerja aplikasi web dengan JSP NetBeans 6.1 dengan Apache Tomcat terintegrasi Admin Console Java Application Server Penentuan lokasi penyimpanan file Penetuan tipe project Penentuan nama dan lokasi project Tipe dan pengaturan server Lingkungan kerja NetBeans Struktur direktori aplikasi JSP Hasil eksekusi halaman web JSP Hasil eksekusi penggunaan tag deklarasi
395 398 401 402 403 404 405 406 408 408 409 410 410 411 411 412 413 415
xix
14.19. 14.20. 14.21. 14.22. 14.23.
xx
Hasil eksekusi tag ekspresi Hasil eksekusi halaman login.html Hasil eksekusi jika nama dan password benar Penyerangan dengan DOS Membatasi akses untuk IP address tertentu
416 419 419 421 422
No.
Judul Tabel
2.1. 4.1 7.1. 7.2. 7.3. 8.1. 8.2. 9.1. 9.2. 9.3.
Aturan-aturan dalam DFD Perintah yang berhubungan dengan pengelolaan file/direktori Operator Aritmatika Operator perbandingan Operator logika Tipe data pada Java Operator aritmatika pada Java Tipe data pada C++. Tabel 9.2. Operator pada C++. Kelas, fungsi, dan parameter pada aplikasi persediaan toko buku Tabel dan atribut pada Basis Data Penjualan Buku Tabel, atribut, tipe data dan constraint/domain pada Basis Data Penjualan Buku Tabel, kolom, tipe data yang akan dibuat Daftar attribute TYPE untuk Ordered list dan Unordered list Bagian-bagian pada tag Table Attribute-attribute tag Jenis-jenis operator
11.1. 11.2. 12.1. 13.1. 13.2. 13.3. 21.1.
Halaman 30 85 153 154 154 180 183 226 228 271 271 338 354 358 362 382
xxi
No. 1. 2. 3.
xxii
Judul Lampiran Daftar Istilah / Glosari Daftar Alamat Situs Fungsi-fungsi Built-in pada Visual Basic.
Halaman 427 433 435
A.
Deskripsi Umum
Buku ini diberi judul “Rekayasa Perangkat Lunak”,sama dengan salah satu program keahlian pada Sekolah Menengah Kejuruan (SMK). Meskipun demikian, sebenarnya isi dari buku ini tidak secara khusus membahas tentang Rekayasa Perangkat Lunak. Dari sisi pandang bidang Ilmu Komputer ada lima sub-bidang yang tercakup dalam dalam buku ini, yaitu sub-bidang Rekayasa Perangkat Lunak, Sistem Operasi, Algoritma dan Struktur Data, Bahasa Pemrograman dan Basis Data. Hal ini disesuaikan dengan kurikulum tingkat SMK untuk Program Keahlian Rekayasa Perangkat Lunak. Pokok bahasan tentang Rekayasa Perangkat Lunak secara umum membahas dasar-dasar pengertian Rekayasa Perangkat Lunak, masalah dan pemecahan masalah, dan metode-metode pengembangan perangkat lunak. Pembahasan tentang subbidang Sistem Operasi berisi sistem computer, sistem operasi dan bekerja dalam jaringan computer. Cakupan materi algoritma meliputi algoritma dasar dan algoritma lanjutan. Sub bidang Bahasa Pemrograman mengambil porsi yang cukup besar, meliputi pemrograman GUI dengan VB & VB.Net, pemrograman Java, pemrograman C++, pemrograman berorientasi obyek dan Pemrograman berbasis web. Sub-bidang terakhir yang menjadi bagian dari buku ini adalah Basis Data dengan cakupan tentang system basis data, pemodelan konseptual, basis data relasional, Microsoft Access dan SQL.
B.
Peta Kompetensi
Secara umum, buku ini mengacu pada Standar Kompetensi dan Kompetensi Dasar (SKKD) bagi SMK seperti berikut. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Menggunakan algoritma pemrograman tingkat dasar Menggunakan algoritma pemrograman tingkat lanjut Mengoperasikan aplikasi basis data Membuat aplikasi berbasis Microsoft Access Menguasai teknik elektronika dasar Menguasai teknik elektronika digital Membuat file dengan HTML sesuai spesifikasi Menerapkan dasar-dasar pembuatan web statis tingkat dasar Membuat program aplikasi menggunakan VB dan VB.NET Membuat paket software aplikasi Melakukan pemrograman data deskripsi (SQL – Stuctured Query Language) tingkat dasar 12. Mengoperasikan bahasa pemrograman data deskripsi (SQL) tingkat lanjut 13. Membuat halaman web dinamis tingkat dasar
xxiii
14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Membuat halaman web dinamis tingkat lanjut Membuat program aplikasi web menggunakan JSP Membuat program aplikasi basis data menggunakan XML Membuat program basis data menggunakan Microsoft (SQL Server) Membuat program basis data menggunakan PL/SQL (Oracle) Membuat program aplikasi menggunakan C++ Menjelaskan sistem peripheral Membuat program dalam bahasa pemrograman berorientasi obyek Membuat program aplikasi menggunakan Java Mengoperasikan sistem operasi komputer berbasis teks dan GUI
Dalam penyajian buku ini, bab-bab tidak disusun berdasarkan SKKD, akan tetapi disusun berdasarkan urutan materi pokok bahasan. Sehingga di beberapa bab berisi gabungan dari beberapa standar kompetensi. Atau satu kompetensi dasar mungkin berada tidak pada kelompok standar kompetensi seperti pada daftar SKKD, tetapi berada pada sub bab yang lain. Kesesuaian SKKD dan isi bab dapat dilihat pada table berikut ini. Kode Kompetensi
ELKA-MR.UM.001.A ELKA.MR.UM.004.A TIK.PR02.001.01 TIK.PR02.002.01
HDW.OPR.103.(1).A HDW.OPR.104.(1).A TIK.PR02.020.01 TIK.PR08.004.01 TIK.PR08.024.01 TIK.PR08.027.01 TIK.PR08.003.01 TIK.PR02.016.01 TIK.PR03.001.01 TIK.PR03.002.01 TIK.PR04.002.01
xxiv
Kompetensi Menguasai Teknik Dasar Elektronika Menguasai Dasar Elektronika Digital dan Komputer Menggunakan algoritma pemograman tingkat dasar Menggunakan algoritma pemograman tingkat lanjut Mengoperasikan sistem operasi jaringan komputer berbasis teks Mengoperasikan sistem operasi jaringan komputer berbasis GUI Mengoperasikan aplikasi basis Data Membuat aplikasi Berbasis Microsoft Acces Membuat dokumen dengan HTML sesuai spesifikasi Menerapkan dasar-dasar pembuatan web statis tingkat dasar. Membuat program aplikasi menggunakan VB & VB.NET Membuat paket software Aplikasi Mengoperasikan bahasa pemrograman data deskripsi (SQL) tingkat dasar Mengoperasikan bahasa pemrograman data deskripsi (SQL) tingkat Lanjut Membuat Halaman Web dinamis tingkat dasar
Bab Terkait 3 3 5 6 4 4 10 dan 11 11 13 13 7 7 12 12 13
Kode Kompetensi
TIK.PR04.003.01 TIK.PR02.009.01 TIK.PR08.012.01 TIK.PR08.001.01 TIK.PR06.003.01 TIK.PR08.005.01 TIK.PR08.006.01 TIK.PR08.008.01
Kompetensi Membuat Halaman Web dinamis tingkat Lanjut. Mengoperasikan bahasa pemograman berorientasi obyek Membuat program aplikasi menggunakan Java Membuat program aplikasi menggunakan C++ Menjelaskan sistem Peripheral Membuat program basis data menggunakan PL/SQL Membuat program basis data menggunakan SQL Server Membuat program aplikasi web berbasis JSP
Bab Terkait 13 8 8 9 3 10 dan 12 12 14
C. Cara Menggunakan Buku Buku ini secara khusus ditujukan kepada siswa dan guru SMK untuk program keahlian RPL. Namun demikian, buku ini juga terbuka bagi pembaca umum yang berminat dalam dunia RPL, Algoritma dan Pemrograman, Basis Data dan Internet. Bagi siswa, buku ini dapat dijadikan buku pegangan, karena ini buku ini menyediakan bahan-bahan pelajaran yang cukup lengkap untuk mata pelajaran selama tiga tahun di bangku sekolah. Beberapa bagian dari buku ini mungkin memerlukan buku-buku bantu lainnya untuk lebih memperkaya wawasan dan peningkatan kemampuan. Sedangkan bagi guru, buku ini dapat digunakan sebagai buku referensi untuk menyusun modul-modul ajar bagi anak didiknya. Buku ini disusun sedemikian rupa agar siswa dapat belajar secara mandiri dan terdorong untuk mencoba secara langsung. Oleh karena itu dalam buku ini, akan banyak dijumpai ilustrasi baik yang berupa gambar, skema maupun listing program. Hal ini dimaksudkan agar siswa dapat dengan mudah memahami penjelasan ataupun penerapan suatu konsep tertentu. Bahkan pada bagian akhir bab diakhiri dengan soal-soal latihan dari pokok bahasan pada bab tersebut.
xxv
Gambar 1.1. Tampilan desktop Microsoft Windows. Coba kita perhatikan Gambar 1.1. di atas. Bagi pengguna komputer, gambar di atas merupakan tampilan yang sangat dikenal. Gambar ini merupakan tampilan desktop Sistem Operasi Microsoft Windows. Pada gambar tersebut, kita melihat sejumlah ikon-ikon tertentu. Apabila kita klik ganda pada satu ikon maka suatu perangkat lunak (software) tertentu akan terbuka dan dapat kita gunakan untuk menyelesaikan suatu tugas tertentu. Pada masa sekarang, rasanya hampir semua bidang kehidupan tersentuh penggunaan perangkat lunak atau software. Beberapa perangkat lunak mungkin sudah terbiasa kita gunakan atau kita lihat seperti perangkat lunak untuk memainkan atau membuat musik, perangkat lunak untuk membantu kasir dalam penjualan barang, perangkat lunak untuk mengetik dokumen, dan lain-lain. Perangkat lunak ini merupakan hasil dari serangkaian proses atau kegiatan yang dikenal sebagai Rekayasa Perangkat Lunak. Apakah sebenarnya Rekayasa Perangkat Lunak itu? Bab ini akan memberi jawaban atas pertanyaan ini.
Rekayasa Perangkat Lunak
1
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Menjelaskan pengertian perangkat lunak, program, prosedur dan rekayasa perangkat lunak o Memahami tujuan rekayasa perangkat lunak o Memahami ruang lingkup rekayasa perangkat lunak o Memahami posisi bidang rekayasa perangkat lunak pada disiplin ilmu komputer dan keterkaitannya dengan bidang ilmu lain o Mengetahui perkembangan ilmu rekayasa perangkat lunak o Mengetahui profesi dan sertifikasi dalam bidang rekayasa perangkat lunak o Menjelaskan prinsip-prinsip pemecahan masalah dalam rekayasa perangkat lunak
1.1. PENGERTIAN REKAYASA PERANGKAT LUNAK Istilah Rekayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software Engineering. Istilah Software Engineering mulai dipopulerkan tahun 1968 pada Software Engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer. Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999). Pengertian RPL sendiri adalah sebagai berikut: Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program komputer. Pernyataan “semua aspek produksi” pada pengertian di atas, mempunyai arti semua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL. 1.2. TUJUAN REKAYASA PERANGKAT LUNAK Secara umum tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Mari kita perhatikan Gambar 1.2. berikut ini.
2
Pendahuluan
Kinerja
Waktu
Biaya
Gambar 1.2. Tujuan RPL. Dari Gambar 1.2 dapat diartikan bahwa bidang rekayasa akan selalu berusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara lebih khusus kita dapat menyatakan tujuan RPL adalah : a.
Memperoleh biaya produksi perangkat lunak yang rendah.
b.
Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu.
c. d.
Menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis
platform.
Menghasilkan perangkat lunak yang biaya perawatannya rendah.
1.3. RUANG LINGKUP Sesuai definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut.
Software Requirement
Software Design
Software Construction Software Testing
Process
Software Quality Tools & Method
Software Engineering
Management
Software Maintenance Configuration Management
Gambar 1.3. Ruang lingkup RPL (Abran et.al., 2004).
Rekayasa Perangkat Lunak
3
-
Software
requirements berhubungan persyaratan perangkat lunak.
-
Software design mencakup proses penentuan arsitektur, komponen, antarmuka, dan karakteristik lain dari perangkat lunak.
-
Software construction berhubungan dengan detil pengembangan perangkat
-
Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak.
dengan
spesifikasi
kebutuhan
dan
lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan.
Software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak
-
telah dioperasikan.
-
Software configuration management berhubungan dengan usaha perubahan
-
Software
-
Software engineering tools and methods mencakup kajian teoritis tentang alat
-
Software engineering process berhubungan dengan definisi, implementasi,
-
Software quality menitikberatkan pada kualitas dan daur hidup perangkat lunak.
konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu.
engineering management berkaitan dengan pengelolaan pengukuran RPL, termasuk perencanaan proyek perangkat lunak.
dan
bantu dan metode RPL.
pengukuran, pengelolaan, perubahan dan perbaikan proses RPL.
1.4. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU KOMPUTER Disiplin ilmu komputer (Computer Science) lahir pada awal-awal tahun 1940-an yang merupakan integrasi dari teori algoritma, logika matematika dan ditemukannya cara penyimpanan program secara elektronik pada komputer. Sejak itu ilmu komputer mengalami perkembangan yang terus menerus sehingga cakupannya menjadi semakin meluas. Cakupan pengetahuan dalam ilmu komputer seringkali didiskripsikan sebagai suatu studi sistematis pada proses-proses algoritma yang menjelaskan dan mentransformasikan informasi (Denning, 2000). Termasuk di sini adalah teori,
analisis, disain, efisiensi, penerapan dan aplikasinya. Ada beberapa model pengelompokkan sub-bidang ilmu dalam disiplin ilmu komputer seperti terlihat pada Gambar 1.4, 1.5 dan 1.6.
4
Pendahuluan
Computer Science
Section A Komputasi Umum
Section B Perangkat Keras
Section C Organisasi Sistem Komputer
Section D Perangkat Lunak
Section E Data
Section F Teori Komputasi
Section G Matematika Komputasi
Section H Sistem Informasi
Section I Metodologi Komputasi
Section J Aplikasi Komputer di Bidang Lain
Section K Aspek Lain
Gambar 1.4. Klasifikasi disiplin ilmu komputer menurut ACM (1998).
Rekayasa Perangkat Lunak
5
Computer Science
Algoritma & Struktur Data
Bahasa Pemrograman
Arsitektur Komputer
Sistem Operasi dan Jaringan
Rekayasa Perangkat Lunak
Basis Data & Pencarian Informasi
Inteligensia Buatan dan Robotika
Grafis
Interaksi Komputer - Manusia
Ilmu Pengetahuan Komputasi
Pengorganisasian Informatika
Bio-Informatics
Gambar 1.5. Klasifikasi disiplin ilmu komputer menurut Denning (2000).
6
Pendahuluan
Computer Science
Dasar Matematika Komputasi
Teori Komputasi
Algoritma dan Struktur Data
Bahasa Pemrograman dan Compilers
Concurrent, Parallel dan Sistem Terdistribusi
Rekayasa Perangkat Lunak
Komunikasi
Basis Data
Intelijensia Buatan
Komputer Grafis dan Visual
Interaksi Manusia Komputer
Komputasi Untuk Ilmu Pengetahuan
Gambar 1.6. Klasifikasi disiplin ilmu komputer menurut Wikipedia (2007). Berdasarkan pengelompokkan Denning (2000) dan Wikipedia (2007), RPL merupakan sub-bidang ilmu komputer yang setara dengan sub-bidang lainnya. Sedangkan menurut ACM (Association for Computing Machinery), RPL merupakan bagian dari Section D (Perangkat Lunak). Meskipun terlihat terpisah-pisah, namun dalam penerapannya, sub-bidang RPL selalu membutuhkan dukungan dari sub-bidang lain, terutama sub-bidang Algoritma dan Struktur Data, Bahasa Pemrograman, Basis Data, Sistem Operasi dan Jaringan, dan Sistem Informasi.
Rekayasa Perangkat Lunak
7
1.5. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU LAIN Cakupan ruang lingkup yang cukup luas, membuat RPL sangat terkait dengan disiplin bidang ilmu lain. Tidak saja dengan sub-bidang dalam disiplin ilmu komputer namun dengan beberapa disiplin ilmu lain di luar ilmu komputer. Hubungan keterkaitan RPL dengan ilmu lain dapat dilihat pada Gambar 1.7.
Manajemen
Matematika
Ergonomika
Rekayasa Perangkat Lunak Manajemen Kualitas
Manajemen Proyek
Rekayasa Sistem
Gambar 1.7. Keterkaitan RPL dengan bidang ilmu lain.
-
Bidang ilmu manajemen meliputi akutansi, finansial, pemasaran, manajemen operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia, kebijakan dan strategi bisnis.
-
Bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik, analisis numerik dan matematika diskrit.
-
Bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas, manajemen resiko, dan penjadwalan proyek.
-
Bidang ilmu manajemen kualitas meliputi pengembangan sistem kualitas, manajemen resiko dan keandalan, perbaikan kualitas, dan metode-metode kuantitatif.
-
Bidang ilmu ergonomika menyangkut hubungan (interaksi) antara manusia dengan komponen-komponen lain dalam sistem komputer.
-
Bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya-keuntungan, pemodelan, simulasi, proses dan operasi bisnis.
1.6. PERKEMBANGAN REKAYASA PERANGKAT LUNAK Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah yang cukup panjang. Gambar 1.8 menyajikan intisari perkembangan RPL. Dari sisi disiplin ilmu, RPL masih relatif muda dan akan terus berkembang. Arah perkembangan yang saat ini sedang dikembangkan antara lain meliputi : Agile
8
Pendahuluan
Software Development, Experimental Software Development, Model-Driven Software Development dan Software Product Lines. Tahun
Kejadian
1940an
Komputer pertama yang membolehkan pengguna menulis kode program langsung
1950an
Generasi awal interpreter dan bahasa macro Generasi pertama compiler
1960an
Generasi kedua compiler Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesanan Konsep Software Engineering mulai digunakan
1970an
Perangkat pengembang perangkat lunak Perangkat minicomputer komersial
1980an
Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak
1990an
2000an
Pemrograman berorientasi obyek (OOP) Agile Process dan Extreme Programming Peningkatan drastis kapasitas memori Peningkatan penggunaan internet Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing
Gambar 1.8. Perkembangan RPL. 1.7. PROFESI DAN SERTIFIKASI Profesi sebagai seorang Software Engineer mungkin masih terasa asing di telinga orang Indonesia. Sebagian besar orang Indonesia mungkin lebih familiar dengan sebutan Ahli Teknologi Informasi, Analis Sistem Informasi, Programmer, Operator atau sebutan profesi lainnya. Hal ini karena adanya kerancuan tentang istilah RPL seperti telah disebutkan di awal bab. Namun di negaranegara yang maju dalam bidang teknologi informasi, sebutan Software Engineer telah mulai banyak digunakan. Sertifikasi kompetensi dalam bidang RPL, saat ini masih menjadi perdebatan di kalangan ahli dan penyedia perangkat lunak. Sebagian besar sertifikasi dalam industri perangkat lunak biasanya sangat spesifik untuk perangkat lunak tertentu. Sebagai contoh, perusahaan perangkat lunak seperti Redhat Linux Inc., Adobe Inc., Oracle,
Rekayasa Perangkat Lunak
9
atau Microsoft, memberikan sertifikasi kemampuan pada seseorang yang menguasai perangkat lunak yang diproduksinya. ACM (Association for Computing Machinery) pernah menyelenggarakan sertifikasi untuk program Software Engineer pada tahun 1980an, namun dihentikan karena kurangnya peminat. IEEE (Institute of Electrical and Electronics Engineers) telah mengeluarkan lebih dari 500 sertifikat profesi perangkat lunak. Di Canada, telah dikeluarkan sebuah sertifikat legal untuk RPL yang disebut sebagai ISP (Information Systems Profesional). Saat ini, sertifikasi untuk RPL di Indonesia juga belum tersedia, namun telah disusun Standar Kompetensi Kerja Nasional Indonesia untuk Bidang Programmer Komputer. Meskipun belum memenuhi cakupan bidang RPL secara keseluruhan, namun paling tidak dapat digunakan sebagai pendekatan sertifikasi bidang RPL. 1.8. REKAYASA PERANGKAT LUNAK DAN PEMECAHAN MASALAH Secara konsep, rekayasa perangkat lunak memiliki kedekatan dengan prinsipprinsip pemecahan masalah. Pemahaman tentang masalah, strategi dan proses pemecahan masalah, serta pendekatan sistem pada pemecahan masalah akan sangat membantu proses rekayasa perangkat lunak. 1.8.1. Masalah dan Gejala Masalah (problem) adalah perbedaan antara kondisi yang terjadi dan kondisi yang diharapkan atau boleh juga diartikan sebagai perbedaan antara kondisi sekarang dengan tujuan yang diinginka. Sebagai contoh seorang siswa berharap memperoleh
nilai di atas 80 untuk ujian mata pelajaran Pemrograman C++, namun pada kenyataannya dia hanya memperoleh nilai 60. Adanya perbedaan ini menunjukkan adanya masalah.
Seringkali kita kesulitan membedakan antara gejala dan masalah. Gejala adalah
tanda/petunjuk
Gambar 1.9. Profesi dokter.
10
Pendahuluan
terjadinya
suatu
masalah.
Perhatikan seorang yang berprofesi sebagai dokter pada Gambar 1.9. Seorang dokter dalam usaha mengobati penyakit pasien selalu bertanya dulu tentang gejala-gejala yang dirasakan pasien kemudian menyimpulkan bahwa pasien menderita penyakit tertentu dan menentukan obat yang tepat. Pusing, demam, batuk, dan pilek merupakan gejala atau tanda dari penyakit flu. Apabila dokter hanya memberi obat sakit kepala, maka penyakit flu tidak akan sembuh. Satu masalah mungkin memiliki satu gejala tetapi mungkin juga lebih (perhatikan Gambar 1.10).
Gambar 1.10. Gejala dan masalah. Mungkin kita bertanya-tanya apa hubungan masalah dan gejala dengan RPL. Seperti telah disampaikan di awal bab, perangkat lunak yang merupakan hasil dari RPL merupakan alat bantu yang digunakan untuk menyelesaikan tugas / masalah tertentu. Apabila kita tidak mengetahui dengan benar masalahnya mustahil kita dapat menentukan bagaimana menyelesaikannya. Dan, untuk mengetahui dengan baik masalah, maka pengetahuan tentang gejala dari masalah menjadi sangat penting. 1.8.2. Tipe-tipe Masalah Masalah dapat dikelompokkan seperti pada Gambar 1.11.
Gambar 1.11. Tipe-tipe masalah (Deek et al, 2005).
-
Masalah pemenuhan standar Tipe masalah dalam kelompok ini adalah masalah-masalah yang berhubungan dengan pencapaian standar yang telah ditentukan dalam sebuah organisasi. Biasanya tujuan seperti ini berlaku dalam jangka yang relative panjang.
Rekayasa Perangkat Lunak
11
-
Masalah pemilihan alternative Masalah dalam kelompok ini berhubungan dengan bagaimana memilih solusi terbaik dari berbagai alternative berdasarkan kriteria-kriteria tertentu. Permasalahan ini seringkali kita jumpai dalam kehidupan sehari-hari, seperti bagaimana memilih sekolah yang tepat, memilih lokasi tempat tinggal, memilih bidang pekerjaan. Masing-masing alternatif dan kriteria memiliki bobot yang telah disepakati.
-
Masalah pemenuhan kepuasan konsumen Pada organisasi-organisasi yang bersifat profit (mencari keuntungan), masalah-masalah pada kelompok ini merupakan tipe yang seringkali muncul. Konsumen memiliki berbagai macam keinginan yang satu sama lain berbeda. Memenuhi seluruh keinginan konsumen sangat tidak mungkin dan sangat memberatkan sebuah organisasi. Oleh karena itu perlu dicari pemecahan yang sama-sama menguntungkan, baik bagi konsumen maupun organisasi tersebut.
-
Masalah pencapaian tujuan Tipe ini mirip dengan tipe pertama (masalah pemenuhan standar). Yang berbeda adalah, pada tipe ini tujuan yang ingin dicapai dapat berubah-ubah dan bersifat jangka pendek.
1.8.3. Pemecahan Masalah Pemecahan masalah adalah sebuah proses dimana suatu situasi diamati kemudian bila ditemukan ada masalah dibuat penyelesaiannya dengan cara menentukan masalah, mengurangi atau menghilangkan masalah atau mencegah masalah tersebut terjadi. Ada banyak urutan proses pemecahan masalah yang diajukan oleh para ahli, salah satunya seperti terlihat pada Gambar 1.12.
Pada gambar 1.12 terlihat serangkaian tahapan proses yang berbeda yang dapat digunakan dalam berbagai tingkatan, tergantung dari tipe dan sifat masalahnya. Masalah yang berbeda membutuhkan penggunaan cara yang berbeda, bahkan mungkin urutan yang berbeda. Tahapan kritis dari proses pemecahan masalah adalah Pendefinisian Masalah. Apabila masalah tidak cukup jelas didefinisikan maka tahapan-tahapan berikut sulit untuk dijalankan. Bahkan apabila dipaksakan, kemungkinan besar penyelesaian yang tepat tidak akan diperoleh.
12
Pendahuluan
Gambar 1.12. Proses pemecahan masalah (diadopsi dari Deek et al, 2005) Secara umum proses pemecahan masalah dapat dilakukan dengan empat tahapan utama yaitu : •
Memahami dan mendefinisikan masalah Bagian ini merupakan bagian yang sangat penting karena menjadi awal dari seluruh proses pemecahan masalah. Tujuan pada bagian ini adalah memahami masalah dengan baik dan menghilangkan bagian-bagian yang dirasa kurang penting.
•
Membuat rencana untuk pemecahan masalah Pada bagian ini ada dua kegiatan penting yaitu : a) mencari berbagai cara penyelesaian yang mungkin diterapkan b) membuat rencana pemecahan masalah Penyelesaian suatu masalah biasanya tidak hanya satu tapi mungkin bisa beberapa macam. Sebagai ilustrasi, apabila kita berada di kota Surabaya dan ingin pergi ke Jakarta, maka banyak cara yang mungkin bisa dilakukan, misalnya kita bisa menempuh dengan angkutan darat, laut atau udara. Dengan angkutan darat kita bisa menggunakan kereta api, bus atau angkutan yang lain. Jalurnya pun kita bisa lewat jalur utara, tengah atau selatan. Jadi banyak sekali cara penyelesaian yang bisa kita kembangkan. Masing-masing mempunyai karakteristik sendiri-sendiri. Dari sekian banyak penyelesaian ini kita harus memilih satu yang berdasarkan persyaratan tertentu merupakan cara yang paling baik untuk menyelesaikan permasalahan. Setelah terpilih, maka kita dapat membuat rencana kasar (outline) penyelesaian masalah dan membagi masalah
Rekayasa Perangkat Lunak
13
dalam bagian-bagian yang lebih kecil. Rencana kasar (outline) penyelesaian masalah hanya berisi tahapan-tahapan utama penyelesaian masalah. •
Merancang dan menerapkan rencana untuk memperoleh cara penyelesaian Pada bagian ini rencana kasar penyelesaian masalah diperbaiki dan diperjelas dengan pembagian dan urutan rinci yang harus ditempuh dalam penyelesaian masalah.
•
Memeriksa dan menyampaikan hasil dari pemecahan masalah Bagian ini bertujuan untuk memeriksa apakah akurasi (ketepatan) hasil dari cara yang dipilih telah memenuhi tujuan yang diinginkan. Selain itu juga untuk melihat bagaimana daya guna dari cara yang dipilih yang dipilih.
1.9. RINGKASAN •
14
Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi o
Program adalah kumpulan perintah yang dimengerti oleh komputer
o
Prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi
•
RPL adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan.
•
Tujuan RPL adalah menghasilkan perangkat lunak dengan kinerja tinggi, tepat waktu, berbiaya rendah, dan multiplatform.
•
RPL merupakan sub bidang ilmu komputer yang dalam penerapannya membutuhkan dukungan baik dari sub bidang ilmu komputer lainnya maupun bidang-bidang ilmu lain.
•
Sertifikasi untuk bidang RPL belum tersedia, namun mengacu pada bidang Programmer
•
Masalah (problem) adalah perbedaan antara kondisi yang terjadi dan kondisi yang diharapkan dan Gejala adalah tanda/petunjuk terjadinya suatu masalah.
•
Tipe-tipe masalah : o
Masalah pemenuhan standar
o
Masalah pemilihan alternatif
o
Masalah pemenuhan kepuasan konsumen
o
Masalah pencapaian tujuan
Pendahuluan
•
Pemecahan masalah adalah sebuah proses dimana suatu situasi diamati kemudian bila ditemukan ada masalah dibuat penyelesaiannya dengan cara menentukan masalah, mengurangi atau menghilangkan masalah atau mencegah masalah tersebut terjadi.
•
Tahapan utama pemecahan masalah : o
Memahami dan mendefinisikan masalah
o
Membuat rencana untuk pemecahan masalah
o
Merancang dan menerapkan rencana untuk memperoleh cara penyelesaian
o
Memeriksa dan menyampaikan hasil dari pemecahan masalah
1.10. SOAL-SOAL LATIHAN 1. Sebutkan pengertian dari perangkat lunak dan rekayasa perangkat lunak. 2. Apakah perbedaan antara program komputer dan prosedur? 3. Sebutkan lima sub bidang ilmu komputer berdasarkan pengelompokkan Denning. 4. Sebutkan lima bidang ilmu lain yang erat kaitannya dengan rekayasa perangkat lunak. 5. Apakah gejala dan masalah itu?
Rekayasa Perangkat Lunak
15
16
Pendahuluan
Ketika kita bekerja dengan komputer seperti pada Gambar 2.1., kita membutuhkan serangkaian tahapan dan cara-cara tertentu agar dapat menghasilkan sesuatu yang menjadi harapan kita. Demikian juga dalam rekayasa perangkat lunak, diperlukan tahapan-tahapan kerja yang harus dilalui. Rekayasa perangkat lunak yang sukses tidak hanya membutuhkan kemampuan komputasi seperti algoritma, pemrograman, dan basis data yang kuat, namun juga perlu penentuan tujuan yang baik, identifikasi (Sumber: Clip Art Microsoft Office 2007) cara penyelesaian, metode Gambar 2.1. Bekerja dengan komputer. pengembangan, urutan aktifitas, identifikasi kebutuhan sumberdaya, dan faktor-faktor lain. Hal-hal seperti ini terkait dengan apa yang disebut dengan metode rekayasa perangkat lunak. Isi dari bab ini tidak termasuk dalam standar kompetensi bidang keahlian RPL. Namun penulis memandang perlu disampaikan agar kalian dapat mengetahui bagaimana sebenarnya rekayasa perangkat lunak dilakukan dan metode-metode apa saja yang biasa digunakan. Beberapa bagian dari bab ini mungkin agak sulit dipahami, sehingga peran guru dalam membantu menjelaskan akan sangat diperlukan. Rangkuman bab disampaikan di bagian akhir dari uraian isi.
Rekayasa Perangkat Lunak
17
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Memahami karakteristik umum model proses dalam rekayasa perangkat lunak. o Menyebutkan beberapa model rekayasa perangkat lunak . o Mengetahui prinsip-prinsip dari metode waterfall, prototyping, dan unified process. o Memahami tahapan-tahapan dalam rekayasa perangkat lunak. 2.1.
MODEL PROSES REKAYASA PERANGKAT LUNAK
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti terlihat pada Gambar 2.2.
Gambar 2.2. System Development Life Cycle (SDLC). Setiap model yang dikembangkan mempunyai karakteristik sendiri-sendiri. Namun secara umum ada persamaan dari model-model ini, yaitu: •
Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang jelas. Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah. Oleh karena itu pemahaman masalah seperti dijelaskan pada Bab 1, merupakan bagian penting dari model pengembangan perangkat lunak.
•
Tahapan-tahapan pengembangan yang teratur.
•
Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa
Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya model-model tersebut mengikuti pola umum analysis – design – coding – testing - maintenance.
18
Metode Rekayasa Perangkat Lunak
pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut. •
Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak. Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
•
Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi, peningkatan “image” organisasi dan lain-lain.
Ada banyak model pengembangan perangkat lunak, antara lain The Waterfall Model, Joint Application Development (JAD), Information Engineering (IE), Rapid Application Development (RAD) termasuk di dalamnya Prototyping, Unified Process (UP), Structural Analysis and Design (SAD) dan Framework for the Application of System thinking (FAST). Pada buku ini akan dibahas tiga model pengembangan yaitu The Waterfall Model, Prototyping, dan Unified Processs (UP). 2.1.1. The waterfall model Model siklus hidup (life cycle model) adalah model utama dan dasar dari banyak model. Salah satu model yang cukup dikenal dalam dunia rekayasa perangkat lunak adalah The Waterfall Model. Ada 5 tahapan utama dalam The Waterfall Model seperti terlihat pada Gambar 2.3. Disebut waterfall (berarti air terjun) karena memang diagram tahapan prosesnya mirip dengan air terjun yang bertingkat. berikut:
Tahapan-tahapan dalam The Waterfall Model secara ringkas adalah sebagai
•
Tahap investigasi dilakukan untuk menentukan apakah terjadi suatu masalah atau adakah peluang suatu sistem informasi dikembangkan. Pada tahapan ini studi kelayakan perlu dilakukan untuk menentukan apakah sistem informasi yang akan dikembangkan merupakan solusi yang layak
•
Tahap analisis bertujuan untuk mencari kebutuhan pengguna dan organisasi serta menganalisa kondisi yang ada (sebelum diterapkan sistem informasi yang baru).
•
Tahap disain bertujuan menentukan spesifikasi detil dari komponen-komponen sistem informasi (manusia, hardware, software, network dan data) dan produkproduk informasi yang sesuai dengan hasil tahap analisis.
•
Tahap implementasi merupakan tahapan untuk mendapatkan atau mengembangkan hardware dan software (pengkodean program), melakukan pengujian, pelatihan dan perpindahan ke sistem baru.
Rekayasa Perangkat Lunak
19
•
Tahapan perawatan (maintenance) dilakukan ketika sistem informasi sudah dioperasikan. Pada tahapan ini dilakukan monitoring proses, evaluasi dan perubahan (perbaikan) bila diperlukan.
Gambar 2.3. The Waterfall Model 2.1.2. Prototyping model Prototyping adalah salah satu pendekatan dalam rekayasa perangkat lunak yang secara langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau komponen-komponen perangkat lunak akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual dilakukan (Howard, 1997).
Prototyping model dapat diklasifikasikan menjadi beberapa tipe seperti terlihat
pada gambar 2.4.
20
Metode Rekayasa Perangkat Lunak
Gambar 2.4. Klasifikasi prototyping model (Harris, 2003) •
Reusable prototype : Prototype yang akan ditransformasikan menjadi produk final.
•
Throwaway prototype : Prototype yang akan dibuang begitu selesai menjalankan maksudnya.
•
Input/output prototype : Prototype yang terbatas pada antar muka pengguna (user interface).
•
Processing prototype : Prototype yang meliputi perawatan file dasar dan proses-proses transaksi.
•
System prototype : Prototype yang berupa model lengkap dari perangkat lunak.
Tahap-tahap dalam prototyping boleh dikata merupakan tahap-tahap yang dipercepat. Strategi utama dalam prototyping adalah kerjakan yang mudah terlebih dahulu dan sampaikan hasil kepada pengguna sesegera mungkin. Harris (2003) membagi prototyping dalam enam tahapan seperti terlihat pada gambar 2.5. Tahapan-tahapan secara ringkas dapat dijelaskan sebagai berikut: •
Identifikasi kandidat prototyping. Kandidat dalam kasus ini meliputi user interface (menu, dialog, input dan output), file-file transaksi utama, dan fungsi-
fungsi pemrosesan sederhana.
Rekayasa Perangkat Lunak
21
•
Rancang bangun prototype dengan bantuan software seperti word processor, spreadsheet, database, pengolah grafik, dan software CASE (Computer-Aided System Engineering).
•
Uji prototype untuk memastikan prototype dapat dengan mudah dijalankan untuk
•
Siapkan prototype USD (User’s System Diagram) untuk mengidentifikasi bagianbagian dari perangkat lunak yang di-prototype-kan.
•
Evaluasi dengan pengguna untuk mengevaluasi prototype dan melakukan
tujuan demonstrasi.
perubahan jika diperlukan.
Transformasikan prototype menjadi perangkat lunak yang beroperasi penuh
•
dengan melakukan penghilangan kode-kode yang tidak dibutuhkan, penambahan program-program yang memang dibutuhkan dan perbaikan dan pengujian perangkat lunak secara berulang.
Gambar 2.5. Tahapan-tahapan prototyping model (Harris, 2003)
22
Metode Rekayasa Perangkat Lunak
2.1.3. Unified Process dan Unified Modeling Language
Unified Process (UP) atau kadang disebut sebagai Unified Software Development Process (USDP) adalah kerangka proses pengembangan yang bersifat use-case-driven, berpusat pada arsitektur perangkat lunak, interatif dan tumbuhkembang (Alhir, 2005). Kerangka pengembangan ini termasuk baru dalam metodologi pengembangan perangkat lunak. UP dapat diaplikasikan pada berbagai skala proyek, mulai dari skala kecil sampai dengan skala besar.
Daur hidup UP secara umum akan tampak seperti pada bagan di Gambar 2.6. Bagan ini biasa disebut sebagai “hump chart”. Pada bagan ini terlihat ada empat tahap pengembangan yaitu inception, elaboration, construction dan transition. Selain itu tampak pula sejumlah aktivitas (disciplines) yang harus dilakukan sepanjang pengembangan perangkat lunak, yaitu, business modeling, requirements, analysis and design, implementation, test. Tahap dan aktivitas tersebut akan dilakukan secara iteratif (Ambler, 2005).
Gambar 2.6. RUP Life Cycle (Ambler, 2005). Penjelasan singkat untuk empat tahapan dalam UP adalah sebagai berikut: •
Inception.
Tahapan ini merupakan tahapan paling awal dimana aktivitas penilaian terhadap sebuah proyek perangkat lunak dilakukan. Tujuannya adalah untuk mendapatkan kesepakatan dari stakeholder sehubungan dengan tujuan dan dana proyek.
Rekayasa Perangkat Lunak
23
•
Elaboration. Tujuan dari tahap ini adalah untuk mendapatkan gambaran umum kebutuhan, persyaratan dan fungsi-fungsi utama perangkat lunak. Hal ini penting untuk mengetahui secara lebih baik resiko-resiko proyek, baik meliputi resiko arsitektur perangkat lunak, perencanaan, maupun implementasi. Pada tahap ini telah dimulai rancang bangun perangkat lunak secara iterative melalui aktivitas-aktivitas seperti business modeling, requirements, analysis dan design meskipun baru pada tahap awal.
•
Construction. Tujuan dari tahapan ini adalah membangun perangkat lunak sampai dengan saat perangkat lunak tersebut siap digunakan. Titik berat tahapan ini adalah pada penentuan tingkat prioritas kebutuhan / persyaratan, melengkapi spesifikasinya, analisis lebih dalam, disain solusi yang memenuhi kebutuhan dan persyaratan, pengkodean dan pengujian perangkat lunak. Jika dimungkinkan versi awal dari perangkat lunak diuji cobakan untuk mendapatkan masukan dari pengguna.
•
Transition. Tahap ini difokuskan pada bagaimana menyampaikan perangkat lunak yang sudah jadi pada pengguna. Perangkat lunak akan secara resmi diuji oleh baik oleh penguji (tester) yang kompeten maupun oleh pengguna. Beberapa aktivitas seperti pemindahan pusat data dan pelatihan pengguna dan staf pendukung harus dilakukan pada tahap ini.
Dalam pengembangan perangkat lunak dengan menggunakan UP, maka tidak lepas dari penggunaan notasi-notasi yang biasa disebut sebagai UML (Unified Modeling Language). Meskipun UP mensyaratkan penggunaan UML, namun UML sendiri dapat digunakan pada berbagai metodologi yang lain bahkan dapat digunakan pada bidang selain sistem informasi. UML adalah bahasa pemodelan standar atau kumpulan teknik-teknik pemodelan untuk men-spesifikasi, mem-visualisasi, mengkonstruksi dan mendokumentasi hasil kerja dalam pengembangan perangkat lunak (Fowler, 2004). UML lahir dari penggabungan banyak bahasa pemodelan grafis berorientasi obyek yang berkembang pesat pada akhir tahun 1980an dan awal 1990an. Secara sederhana UML digunakan untuk menggambar sketsa sistem. Pengembang menggunakan UML untuk menyampaikan beberapa aspek dari sebuah perangkat lunak melalui notasi grafis. UML mendefinisikan notasi dan semantik. Notasi merupakan sekumpulan bentuk khusus yang memiliki makna tertentu untuk menggambarkan berbagai diagram piranti lunak dan semantik mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Ada beberapa jenis diagram yang disediakan dalam UML, antara lain adalah: •
Use-case diagram.
•
Activity diagram.
•
Class diagram. Diagram ini berguna untuk menggambarkan class, fitur, dan
24
Diagram ini berguna untuk menggambarkan interaksi antara pengguna dengan sebuah perangkat lunak
Diagram ini berguna untuk menggambarkan prosedurprosedur perilaku perangkat lunak. hubungan-hubungan yang terjadi. Pada diagram ini pendekatan berorientasi obyek memegang peranan yang sangat penting.
Metode Rekayasa Perangkat Lunak
•
Sequence diagram. Diagram ini berguna untuk menggambarkan interaksi antar obyek dengan penekanan pada urutan proses atau kejadian.
•
State machine diagram.
•
Component diagram. Diagram ini berguna untuk menggambarkan struktur
2.2.
Diagram ini digunakan untuk menggambarkan bagaimana suatu kejadian mengubah obyek selama masa hidup obyek tersebut. dan koneksi komponen.
TAHAPAN REKAYASA PERANGKAT LUNAK
Seperti telah disebutkan, meskipun dalam pendekatan berbeda-beda, namun model-model di atas memiliki kesamaan, yaitu menggunakan pola tahapan analysis –
design – coding(construction) – testing – maintenance. 2.2.1. Analisis
Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih tujuan mereka. Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat lunak. Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya hasil analisis. Tahapan-tahapan dalam analisis rekayasa perangkat lunak secara ringkas dapat dilihat pada Gambar 2.7. Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu pemodelan proses bisnis. Model proses adalah model yang memfokuskan pada seluruh proses di dalam sistem yang mentransformasikan data menjadi informasi (Harris, 2003). Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses. Biasanya model ini digambarkan dalam bentu Diagram Arus Data (Data Flow Diagram / DFD). DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk mentransformasi data menjadi informasi.
Rekayasa Perangkat Lunak
25
Gambar 2.7. Tahapan dan aktifitas dalam analisis.
26
Metode Rekayasa Perangkat Lunak
Umumnya ada empat notasi yang sering digunakan dalam DFD seperti tampak Gambar 2.8.
External Entitiy
External Entity melambangkan sumber data (dari mana data berasal) atau penerima informasi (tujuan akhir dari data). Contoh external entity antara lain konsumen yang memesan suatu produk, manajer yang mengevaluasi laporan penjualan mingguan, dan lainlain. Proses adalah serangkaian langkah yang dilakukan untuk memanipulasi data, misalnya pengumpulan, pengurutan, pemilihan, pelaporan, peringkasan, analisis dan lain-lain.
Process
Data Store
Data Flow
Data store adalah tempat untuk menyimpan data untuk digunakan kemudian. Nama yang pada data store ini merupakan abstraksi dari data yang disimpan. Namun detil / item data apa saja yang ada, bagaimana cara akses, atau bagaimana mengorganisasinya tidak dijelaskan dalam notasi ini. Data flow menunjukkan aliran data dari satu tempat ke tempat lain. Perpindahan data ini dapat dari external entity ke proses, antar proses satu dengan yang lain, dari proses ke data store. Dalam penggambarannya setiap data flow harus diberi label yang menunjukkan data apa yang mengalir. Gambar 2.8. Notasi pada DFD.
Dalam pembuatan DFD ada beberapa tahapan yang dilakukan secara berurutan. Gambar 2.9. menunjukkan urutan tahapan tersebut.
Rekayasa Perangkat Lunak
27
Gambar 2.9. Tahapan pembuatan DFD.
Context diagram adalah DFD ruang lingkup dari sistem yang menunjukkan batas-batas sistem, external entitiy yang berinteraksi dengan sistem dan aliran data utama antara external entity dengan sistem. Context diagram menggambarkan keseluruhan sistem dalam suatu proses tunggal. Gambar 2.10 menunjukkan sebuah contoh context diagram.
Gambar 2.10. Context diagram sistem pemesanan makanan (Hoffer et al., 2002).
Context diagram pada Gambar 2.10 tampak hanya ada satu proses tunggal yang merepresentasikan sistem yang dimodelkan. Pada proses ini diberi notasi angka 0 untuk menunjukkan ini adalah level paling abstrak dari sistem. Selain itu ada tiga external entity yaitu customer, kitchen dan restaurant manager. Ketiganya dapat
28
Metode Rekayasa Perangkat Lunak
berperan sebagai sumber data (dalam contoh di atas adalah customer) atau sebagai penerima informasi (dalam contoh di atas customer, kitchen, dan restaurant manager). Data flow yang tampak pada gambar menunjukkan ada satu data flow yang masuk ke sistem dan ada tiga data flow yang keluar dari sistem. Masing-masing data flow diberi label yang menunjukkan data apa yang sedang mengalir. Setelah context diagram terbentuk dengan benar maka langkah selanjutnya adalah merinci context diagram tersebut dalam DFD Level 0. DFD Level 0 adalah DFD yang merepresentasikan proses-proses, data flow dan data storage utama di dalam sistem. DFD Level 0 ini akan digunakan sebagai dasar untuk membangun DFD yang level dibawahnya (Level 1, 2, 3, .. dst) atau biasa disebut sebagai dekomposisi DFD. Gambar 3.10 merupakan DFD level 0 dari context-diagram pada gambar 2.11.
Gambar 2.11. DFD Level 0. Pada gambar 2.11 tampak adanya pemecahan pada proses dari yang semula hanya satu menjadi empat. Masing-masing proses diberi nomor kode 1.0, 2.0, 3.0 dan 4.0. Jumlah external entity harus tetap yaitu 3 demikian pula data flow yang keluar dan masuk (input dan output) ke dalam sistem harus sama dengan pada context diagram. Sedangkan data flow yang berada di dalam sistem (yang mengalir antar proses dan atau data storage) tergantung pada proses dan data storage yang terlibat. Ada dua data storage yaitu Goods Sold File dan Inventory File. Kedua data
Rekayasa Perangkat Lunak
29
storage ini digunakan untuk menyimpan data dari suatu proses. Data ini juga akan dibaca / diakses oleh proses yang lain. Sebagai contoh data storage Inventory File berisi data hasil proses 3.0 (Update Inventory File). Data ini akan digunakan proses 4.0 (Produce Management Reports) untuk membuat laporan yang akan disampaikan pada Restaurant Manager. DFD level berikutnya yaitu level 1, 2 dan seterusnya diperlukan apabila level sebelumnya dirasa kurang detil. Sebagai contoh apabila DFD level 0 (Gambar 14.12) dirasa belum cukup detil menunjukkan arus data yang mengalir, maka dapat dibuat detilnya pada DFD level 1. Bagian yang harus didetilkan biasanya adalah proses. Detil pada level berikutnya, mungkin pada semua proses atau hanya pada prosesproses tertentu saja. DFD pada level 0 maupun level di bawahnya memiliki kesamaan aturan yang tersaji berikut pada tabel berikut ini. Tabel 2.1. Aturan-aturan dalam DFD Kelompok Umum
• •
External Entity
• •
Process Data Storage
• • • • • •
Data Flow
• • • • • •
Aturan input-input ke suatu process akan selalu berbeda dengan outputoutputnya obyek obyek (External Entity, Process, Data Storage, dan Data Flow) yang ada pada suatu DFD selalu memiliki nama yang unik nama yang dipakai pada External Entity selalu menggunakan kata benda data tidak boleh mengalir secara langsung dari External Entity yang satu ke External Entity yang lain nama yang dipakai pada Process selalu menggunakan kata kerja tidak ada Process yang hanya menghasilkan output tidak ada Process yang hanya menerima input nama yang dipakai pada Data Storage selalu menggunakan kata benda data tidak boleh mengalir secara langsung dari Data Storage yang satu ke Data Storage yang lain data tidak boleh mengalir secara langsung dari External Entity ke Data Storage demikian juga sebaliknya. nama yang dipakai pada Data Flow selalu menggunakan kata benda Data Flow di antara dua notasi hanya memiliki satu arah aliran Percabangan (fork) menunjukkan adanya data yang persis sama yang mengalir dari suatu tempat ke dua atau lebih tempat yang lain Penggabungan (join) menunjukkan adanya data yang persis sama yang mengalir dua atau lebih tempat menuju satu tempat yang lain Data Flow menuju Data Storage berarti terjadi update data Data Flow dari Data Storage berarti terjadi pembacaan / pengambilan data
2.2.2. Disain Disain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis computer (Whitten et al, 2004).
30
Metode Rekayasa Perangkat Lunak
Disain perangkat lunak sering juga disebut sebagai physical design. Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak (Whitten et al, 2004). Output utama dari tahapan disain perangkat lunak adalah spesifikasi disain. Spesifikasi ini meliputi spesifikasi disain umum yang akan disampaikan kepada stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap implementasi. Spesifikasi disain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun. Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini. Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya. Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface yang mencakup desain input, output form dan report, desain hardware,
software dan jaringan. Desain proses merupakan kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis. 2.2.3. Konstruksi
Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke dalam kode-kode program computer. Buku ini sebagian besar berisi tentang bagian ini. 2.2.4. Pengujian Pengujian sistem melibatkan semua kelompok pengguna yang telah direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan bisa menerima perangkat lunak tersebut berdasarkan criteria-kriteria yang telah ditetapkan. 2.2.5. Perawatan dan Konfigurasi Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka tahapan baru menjadi muncul yaitu perawatan perangkat lunak. Ada beberapa tipe perawatan yang biasa dikenal dalam dunia perangkat lunak seperti terlihat pada diagram di Gambar 2.12.
Rekayasa Perangkat Lunak
31
Gambar 3.12. Tipe-tipe perawatan. •
Tipe perawatan corrective dilakukan jika terjadi kesalahan atau biasa dikenal sebagai bugs. Perawatan bisa dilakukan dengan memperbaiki kode program, menambah bagian yang dirasa perlu atau malah menghilangkan bagianbagian tertentu.
•
Tipe perawatan routine biasa juga disebut preventive maintenance dilakukan secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada kesalahan.
•
Tipe perawatan sistem upgrade dilakukan jika ada perubahan dari komponenkomponen yang terlibat dalam perangkat lunak tersebut. Sebagai contoh perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan perangkat lunak harus diupgrade.
2.3. •
RINGKASAN Model-model rekayasa perangkat lunak pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life
Cycle (SDLC). •
Model pengembangan perangkat lunak yang sekarang umum digunakan adalah The Waterfall Model, Prototyping, dan Unified Process (UP).
•
Tahapan-tahapan utama dalam rekayasa perangkat lunak meliputi : analisis, disain, konstruksi, pengujian dan perawatan.
32
Metode Rekayasa Perangkat Lunak
2.4.
SOAL-SOAL LATIHAN
1. Sebutkan tahapan-tahapan dalam System Developmen Life Cycle (SDLC) 2. Sebutkan persamaan karakteristik yang dimiliki oleh model-model pengembangan perangkat lunak. 3. Sebutkan lima model pengembangan perangkat lunak yang anda ketahui. 4. Apakah yang dimaksud tahapan konstruksi pada rekayasa perangkat lunak? 5. Gambarkan notasi-notasi dalam Data Flow Diagram yang anda ketahui.
Rekayasa Perangkat Lunak
33
34
Metode Rekayasa Perangkat Lunak
Gambar 3.1. Rangkaian dan perangkat elektronik. Kalau kalian pernah membuka atau melihat-lihat bagian dalam sebuah perangkat elektronik, maka kalian akan menjumpai kondisi yang mirip dengan Gambar 3.1. di atas. Ada papan circuit, kabel-kabel yang saling berhubungan, dan perangkat elektronik lainnya. Perangkat elektronik seperti inilah yang juga menyusun sebuah perangkat komputer. Sehingga pemahaman tentang elektronika, elektronika digital dan sistem komputer menjadi penting bagi kalian yang ingin berkecimpung dalam dunia rekayasa perangkat lunak. Bab ini akan membahas dua standar kompetensi, yaitu teknik elektronika dasar dan teknik elektronika digital, terutama yang berhubungan dengan sistem komputer. Ada dua kompetensi dasar pada standar kompetensi teknik elektronika dasar, yaitu memahami prinsip-prinsip elektronika dasar dan mengetahui komponen-komponen elektronika dasar. Sedangkan standar kompetensi untuk teknik elektronika digital terdiri dari kompetensi dasar menguasai teknik elektronika digital dan menguasai teknik elektronika digital untuk komputer. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat uraian materi. Ringkasan diletakkan pada akhir bab. Sebelum mempelajari kompetensi ini ingatlah kembali tentang teknik elektronika dasar dan materi-materi pendukung dari mata pelajaran matematika.
Rekayasa Perangkat Lunak
35
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Menguasai konsep elektronika dasar. o Mengetahui komponen-komponen elektronika. o Menguasai konsep eletronika digital. o Menguasai elektronika digital dan sistem komputer. 3.1.
DASAR ELEKTRONIKA
3.1.1. Konsep Dasar Elektronika Elektronika adalah ilmu yang mempelajari alat listrik arus lemah yang dioperasikan dengan cara mengontrol aliran elektron atau partikel bermuatan listrik dalam suatu alat seperti komputer, peralatan elektronik, termokopel, semikonduktor, dan lain sebagainya. Ilmu yang mempelajari alat-alat seperti ini merupakan cabang dari ilmu fisika, sementara bentuk desain dan pembuatan sirkuit elektroniknya adalah bagian dari teknik elektro, teknik komputer, dan ilmu/ teknik elektronika dan instrumentasi. Alat-alat yang menggunakan dasar kerja elektronika ini biasanya disebut sebagai peralatan elektronik (electronic devices). Contoh peralatan/ piranti elektronik ini: Tabung Sinar Katoda (Cathode Ray Tube, CRT), radio, TV, perekam kaset, perekam kaset video (VCR), perekam VCD, perekam DVD, kamera video, kamera digital, komputer pribadi desk-top, komputer Laptop, PDA (komputer saku), robot, smart card, dll. Seperti disebutkan di atas elektronika didasarkan pada pengetahuan tentang kelistrikan. Listrik, dapat diartikan sebagai berikut: •
Listrik adalah kondisi dari partikel subatomik tertentu, seperti elektron dan proton, yang menyebabkan penarikan dan penolakan gaya di antaranya.
•
Listrik adalah sumber energi yang disalurkan melalui kabel. Arus listrik timbul karena muatan listrik mengalir dari saluran positif ke saluran negatif.
Ada 2 jenis muatan listrik: positif dan negatif. Melalui eksperimen, muatansejenis saling menolak dan muatan-lawan jenis saling menarik satu sama lain. Besarnya gaya menarik dan menolak ini ditetapkan oleh hukum Coulomb. Hukum Coulomb adalah hukum yang menjelaskan hubungan antara gaya yang timbul antara dua titik muatan, yang terpisahkan jarak tertentu, dengan nilai muatan dan jarak pisah keduanya. Satuan unit SI dari muatan listrik adalah coulomb, yang memiliki singkatan "C". Simbol Q digunakan dalam persamaan untuk mewakili kuantitas listrik atau muatan. Contohnya, "Q=0,5 C" berarti "kuantitas muatan listrik adalah 0,5 coulomb". Jika listrik mengalir melalui bahan khusus, misalnya dari wolfram dan tungsten, cahaya pijar akan dipancarkan oleh logam itu. Bahan-bahan seperti itu dipakai dalam bola lampu (bulblamp atau bohlam). Setiap kali listrik mengalir melalui bahan yang mempunyai hambatan, maka akan dilepaskan panas. Semakin besar arus listrik, maka
36
Elektronika dan Sistem Komputer
panas yang timbul akan berlipat. Sifat ini dipakai pada elemen setrika dan kompor listrik. Hambatan listrik adalah perbandingan antara tegangan listrik dari suatu komponen elektronik (misalnya resistor) dengan arus listrik yang melewatinya. Hambatan listrik dapat dirumuskan sebagai berikut:
atau
di mana V adalah tegangan dan I adalah arus. Tegangan listrik (kadang disebut sebagai Voltase) adalah perbedaan potensial listrik antara dua titik dalam rangkaian listrik, dan dinyatakan dalam satuan volt. Besaran ini mengukur energi potensial dari sebuah medan listrik yang mengakibatkan adanya aliran listrik dalam sebuah konduktor listrik. Tergantung pada perbedaan potensial listriknya, suatu tegangan listrik dapat dikatakan sebagai ekstra rendah, rendah, tinggi atau ekstra tinggi. Arus listrik adalah banyaknya muatan listrik yang mengalir tiap satuan waktu. Muatan listrik bisa mengalir melalui kabel atau penghantar listrik lainnya.
Pada zaman dulu, Arus konvensional didefinisikan sebagai aliran muatan positif, sekalipun kita sekarang tahu bahwa arus listrik itu dihasilkan dari aliran elektron yang bermuatan negatif ke arah yang sebaliknya. Satuan SI untuk arus listrik adalah ampere (A). 3.1.2. Komponen-Komponen Elektronika •
Resistor
Resistor adalah komponen dasar elektronika yang digunakan untuk membatasi jumlah arus yang mengalir dalam satu rangkaian. Sesuai dengan namanya resistor bersifat resistif dan umumnya terbuat dari bahan karbon. Satuan resistansi dari suatu Gambar 3.2. Resistor. resistor disebut Ohm atau dilambangkan dengan simbol W (Omega). Tipe resistor yang umum adalah berbentuk tabung dengan dua kaki tembaga di kiri dan kanan. Pada badannya terdapat lingkaran membentuk gelang kode warna untuk memudahkan pemakai mengenali besar resistansi tanpa mengukur besarnya dengan Ohmmeter.
Rekayasa Perangkat Lunak
37
•
Kapasitor
Kapasitor adalah komponen elektronika yang dapat menyimpan muatan listrik. Struktur sebuah kapasitor terbuat dari 2 buah plat metal yang dipisahkan oleh suatu bahan dielektrik. Bahan-bahan dielektrik yang umum dikenal misalnya udara vakum, keramik, gelas dan lainlain. Jika kedua ujung plat metal diberi Gambar 3.3. Kapasitor. tegangan listrik, maka muatan-muatan positif akan mengumpul pada salah satu kaki (elektroda) metalnya dan pada saat yang sama muatan-muatan negatif terkumpul pada ujung metal yang satu lagi. •
Induktor
Induktor adalah komponen yang dapat menyimpan energi magnetik. Energi ini direpresentasikan dengan adanya tegangan emf (electromotive force) jika induktor dialiri listrik. Fungsi utama dari induktor di dalam suatu rangkaian adalah untuk melawan fluktuasi arus Gambar 3.4. Induktor. yang melewatinya. Aplikasinya pada rangkaian dc salah satunya adalah untuk menghasilkan tegangan dc yang konstan terhadap fluktuasi beban arus. Pada aplikasi rangkaian ac, salah satu gunanya adalah bisa untuk meredam perubahan fluktuasi arus yang tidak dinginkan. Akan lebih banyak lagi fungsi dari induktor yang bisa diaplikasikan pada rangkaian filter, tuner dan sebagainya. 3.2.
ELEKTRONIKA DIGITAL
3.2.1. Pengertian Elektronika Digital Elektronika digital adalah sistem elektronik yang menggunakan signal digital. Signal digital didasarkan pada signal yang bersifat terputus-putus. Biasanya dilambangkan dengan notasi aljabar 1 dan 0. Notasi 1 melambangkan terjadinya hubungan dan notasi 0 melambangkan tidak terjadinya hubungan. Contoh yang paling gampang untuk memahami pengertian ini adalah saklar lampu. Ketika kalian tekan ON berarti terjadi hubungan sehingga dinotasikan 1. Ketika kalian tekan OFF maka akan berlaku sebaliknya. Elektronik digital merupakan aplikasi dari aljabar boolean dan digunakan pada berbagai bidang seperti komputer, telpon selular dan berbagai perangkat lain. Hal ini karena elektronik digital mempunyai beberapa keuntungan, antara lain: sistem digital mempunyai antar muka yang mudah dikendalikan dengan komputer dan perangkat lunak, penyimpanan informasi jauh lebih mudah dilakukan dalam sistem digital dibandingkan dengan analog. Namun sistem digital juga memiliki beberapa
38
Elektronika dan Sistem Komputer
kelemahan, yaitu: pada beberapa kasus sistem digital membutuhkan lebih banyak energi, lebih mahal dan rapuh. 3.2.2. Gerbang Logika Elektronik digital atau atau rangkaian digital apapun tersusun dari apa yang disebut sebagai gerbang logika. Gerbang logika melakukan operasi logika pada satu atau lebih input dan menghasilkan ouput yang tunggal. Output yang dihasilkan merupakan hasil dari serangkaian operasi logika berdasarkan prinsip-prinsip aljabar boolean. Dalam pengertian elektronik, input dan output ini diwujudkan dan voltase atau arus (tergantung dari tipe elektronik yang digunakan). Setiap gerbang logika membutuhkan daya yang digunakan sebagai sumber dan tempat buangan dari arus untuk memperoleh voltase yang sesuai. Pada diagram rangkaian logika, biasanya daya tidak dicantumkan. Dalam aplikasinya, gerbang logika adalah blok-blok penyusun dari perangkat keras elektronik. Gerbang logika ini dibuat dengan menggunakan transistor. Seberapa banyak transistor yang dibutuhkan, tergantung dari bentuk gerbang logika. Dasar pembentukan gerbang logika adalah tabel kebenaran (truth table). Ada tiga bentuk dasar dari tabel kebenaran yaitu AND, OR, dan NOT. Berikut adalah tabeltabel dan bentuk gerbang logikanya.
Gambar 3.5. Tabel kebenaran dan representasinya dalam gerbang logika. Penjelasan dari Gambar 3.5 di atas adalah sebagai berikut:
Rekayasa Perangkat Lunak
39
-
Pada AND, bila ada dua buah input A dan B maka output atau signal hanya dihasilkan jika A = 1 dan B = 1.
-
Pada OR, bila ada dua buah input A dan B maka output atau signal akan dihasilkan jika salah satu atau kedua input bernilai 1
-
Pada NOT, bila ada satu input mempunyai nilai tertentu maka operasi NOT akan menghasilkan output / signal yang merupakan kebalikan dari nilai inputnya.
Selain bentuk dasar di atas, beberapa bentuk yang merupakan turunan dari bentuk dasar juga penting diketahui. Gambar 3.6. menampilkan bentuk tabel kebenaran dan gerbang logika NAND, NOR, dan XOR. NAND adalah hasil operasi NOT + AND, NOR adalah operasi NOT + OR sedangkan XOR adalah ekslusif OR. NAND dan NOR merupakan bentuk gerbang logika yang banyak sekali digunakan untuk membangun perangkat elektronik digital.
Gambar 3.6. Bentuk turunan tabel kebenaran dan representasinya dalam gerbang logika.
40
Elektronika dan Sistem Komputer
3.2.3. Rangkaian Digital Pada sub bab di atas kita telah belajar tentang bentuk-bentuk gerbang logika berdasarkan tabel kebenaran. Sebuah rangkaian digital sebenarnya disusun dari satu atau lebih gerbang logika ini. Perhatikan contoh pada Gambar 3.7. berikut ini. Kalau kita perhatikan pada gambar tersebut, pada bagian atas terlihat ada empat notasi gerban logika NAND, satu pin untuk sumber daya 5 V dan satu pin untuk ground. Sedangkan pada bagian bawah adalah representasi dari rangkaian digital ini, yaitu sebuah chip 7400.
Gambar 3.7. Contoh rangkaian digital dan representasinya pada hardware.
3.3.
SISTEM KOMPUTER
Istilah komputer berasal dari bahasa Latin “Computare” yang berarti menghitung. Oleh karena itu sebenarnya setiap alat yang berfungsi sebagai alat hitung seperti mesin penjumlah, kalkulator, atau bahkan simpoa (abacus) secara teknis dapat disebut sebagai komputer. Namun dalam perkembangannya, komputer mempunyai perkembangan arti yang berbeda. Komputer adalah alat pengolah data elektronik yang bekerja dan dikontrol oleh sekumpulan instruksi (program) (Blissmer, 1985). Sistem komputer adalah kumpulan elemen-elemen yaitu manusia, perangkat keras, dan perangkat lunak yang
Rekayasa Perangkat Lunak
41
saling berinteraksi untuk mencapai tujuan yaitu mendapatkan informasi yang berguna, kemudahan dalam bekerja, kecepatan dan tujuan lainnya. Ada tiga komponen utama dalam sistem komputer yaitu manusia sebagai pengguna, perangkat keras dan perangkat lunak (Gambar 3.8). Apabila satu tidak ada maka sistem komputer menjadi tidak bekerja. Sebagai contoh jika hanya ada manusia dan perangkat keras, maka sistem komputer tidak bekerja karena tidak program yang membantu manusia menjalankan perangkat keras.
Gambar 3.8. Sistem Komputer. 3.3.1. Perangkat keras Perangkat keras adalah semua bagian fisik computer. Perangkat keras dibedakan dengan data yang berada di dalamnya atau yang beroperasi di dalamnya, dan perangkat lunak yang menyediakan instruksi buat perangkat keras untuk menyelesaikan tugasnya. Secara umum ada empat komponen dasar pada komputer yang saling terkait (Lihat Gambar 3.9).
Gambar 3.9. Komponen dasar komputer
42
Elektronika dan Sistem Komputer
-
Unit Masukan (Input), yaitu perangkat yang memungkinkan pengguna memasukkan data atau perintah ke dalam komputer. Contoh perangkat yang termasuk dalam unit masukan adalah : keyboard, mouse, joystick, dan digitizer.
-
Unit Keluaran (Output), yaitu perangkat yang memungkinkan pengguna menerima informasi hasil pemrosesan oleh komputer. Contoh perangkat yang termasuk dalam unit keluaran adalah : monitor, printer, dan plotter.
-
Unit Memori Utama (Main memory), yaitu perangkat yang digunakan untuk
menyimpan data, program, dan informasi hasil pemrosesan komputer pada saat pemrosesan. Unit memori utama terdiri dari banyak sel, yang masing-masing
dapat menyimpan satu satuan informasi. Unit memori utama terdiri dari dua bagian, yaitu ROM (Read Only Memory) dan RAM (Random Access Memory). ROM hanya dapat ditulisi sekali saja dan selanjutnya hanya dapat dibaca. RAM dapat ditulisi, dihapus dan dibaca berulang kali. Data, program, dan informasi yang sedang diproses disimpan dalam RAM ini, dan akan hilang apabila komputer dimatikan. Itu sebabnya data, program, dan informasi yang akan digunakan lagi disimpan dalam media penyimpanan tambahan (secondary storage) seperti, hard disk, disket, CD, tape dan lain-lain. -
Unit Pemrosesan Pusat (Central Processing Unit), yaitu bagian yang digunakan untuk memproses data, program, dan informasi pada komputer. Ada dua bagian penting dalam CPU yaitu Arithmetic and Logical Unit (ALU) dan Control Unit. Banyak orang menyebutkan ALU adalah jantung dari sebuah komputer. ALU bertanggung jawab pada dua operasi dasar yaitu operasi aritmatik dan perbandingan. Sedangkan Control Unit bertanggung jawab untuk menkoordinasi semua aktivitas unit-unit lain, misalnya bagaimana keyboard dapat dikenali dan bekerja sebagai unit input yang dimengerti aktivitasnya.
Secara fisik, arsitektur umum dari sebuah komputer yang biasa kita kenal (Personal Computer/PC) dapat dilihat pada Gambar 3.10. Sebuah PC merupakan rangkaian dari berbagai macam komponen yang memiliki fungsi masing-masing.
Rekayasa Perangkat Lunak
43
Keterangan gambar:
1. 2. 3. 4. 5. 6. 7. 8.
Display Motherboard CPU Main Memory Expansion Cards Power Supply Optical Disc Drive Secondary Storage (Hard Disk) 9. Keyboard 10. Mouse
Gambar 3.10. Perangkat keras komputer.
Berikut ini penjelasan singkat tentang komponen-komponen fisik dalam sebuah komputer : 1.
44
Display. Komponen display atau monitor termasuk dalam unit keluaran sebuah komputer. Sebuah kabel menghubungkan monitor dengan adapter video yang diinstal pada slot ekspansi motherboard. Komputer mengirimkan signal kepada adapter video, mengenai karakter, gambar atau grafik apa yang harus ditampilkan. Adapter video akan mengkonversi signal menjadi sekumpulan instruksi tentang bagaimana monitor harus menampilkan teks, atau gambar pada layarnya.
Elektronika dan Sistem Komputer
Gambar 3.11. Display atau monitor. 2.
Motherboard. Motherboard atau dikenal juga sebagai mainboard, system board atau logic board (pada Apple Computer) dan kadang disingkat sebagai mobo adalah pusat dari papan sirkuit utama pada sebuah sistem elektronik, seperti perangkat komputer modern. Pada komponen ini akan diletakkan (ditancapkan) komponen-komponen lain seperti memori utama, processor, adapter video, adapter suara dan lain-lain, sehingga terbentuk sistem komputer yang komplit dan dapat bekerja.
Gambar 3.12. Motherboard sebuah komputer.
Rekayasa Perangkat Lunak
45
3.
CPU. Central Processing Unit (CPU), atau sering disebut sebagai Processor, adalah komponen pada komputer digital yang menginterpretasi insktruksi dan memproses data pada suatu program komputer. CPU menyediakan bagian penting dari sustu sisitem digital yaitu kemampuan untuk diprogram. Komponen ini merupakan komponen yang harus ada pada setiap perangkat komputer.
AMD Athlon processor
Intel processor
Gambar 3.13. Central Processing Unit (CPU) 4.
Main Memory. Main Memory atau kadang disebut sebagai Primary Storage, atau Internal Memory, adalah memori komputer yang secara langsung dapat diakses oleh CPU tanpa menggunakan jalur input/output komputer. Komponen ini digunakan untuk menyimpan data yang sedang aktif digunakan. Primary storage dapat terdiri dari beberapa tipe penyimpan seperti main storage, cache memory, dan special registers.
Gambar 3.14. Berbagai jenis main memory.
46
Elektronika dan Sistem Komputer
5.
Expansion Cards. Expansion card (kartu ekspansi) adalah sebuah printed circuit board (PCB) yang dapat ditancapkan pada slot ekspansi yang tersedia pada motherboard komputer untuk menambah fungsionalitas dari komputer. Contoh
expansion card antara lain kartu adapter video, kartu adapter audio, kartu adapter jaringan dan lain-lain.
Gambar 3.15. Pemasangan expansion card. 6.
Power Supply. Power supply atau kadang-kadang disebut PSU (Power Supply Unit) adalah perangkat yang menyuplai energi listrik atau energi jenis lain pada komponen lain dalam komputer.
Gambar 3.16. Power Supply Unit.
Rekayasa Perangkat Lunak
47
7.
Optical Disc Drive. Optical Disc adalah sebuah media penyimpanan sekunder
yang berbentuk seperti piringan hitam, namun dalam ukuran yang lebih kecil. Data yang tersimpan dalam Optical Disc diakses ketika material yang spesifik pada Optical Disc disinari oleh sinar laser. Ada dua tipe utama dalam Optical Disc yaitu yang berbasis pada CD (Compact Disc) dan yang berbasis pada DVD (Digital Versatile Disc). Perangkat untuk membaca, menulis, atau menghapus disebut Optical Disc Drive.
Gambar 3.17. CD-RW Drive, salah satu contoh Optical Disc Drive. 8. Secondary Storage (Hard Disk). Secondary Storage adalah perangkat yang digunakan untuk membantu Primary Storage (main memory), terutama untuk menyimpan data, program, atau informasi yang akan digunakan lagi. Berbeda dengan primary storage, data, program dan informasi pada secondary storage tidak akan hilang meskipun komputer dimatikan, kecuali apabila memang sengaja dihapus. Secondary storage yang paling banyak ditemui dalam setiap Hard disk akan menyimpan data dengan komputer adalah Hard Disk. menggunakan material bersifat magnetic dalam pola-pola tertentu yang merepresentasikan data.
48
Elektronika dan Sistem Komputer
Gambar 3.18. Hard Disk 9.
Keyboard. Keyboard atau papan kunci, perangkat yang digunakan untuk menginputkan teks dan karakter pada komputer. Perangkat ini juga dapat digunakan untuk mengontrol fungsi-fungsi khusus pada komputer. Gambar 3.19 menunjukkan lay out sebuah keyboard yang umum kita jumpai.
Gambar 3.19. Skema umum sebuah keyboard. 10. Mouse. Mouse, biasanya terdiri dari pointing device, yang digunakan untuk mendeteksi pergerakan relative dari dua permukaan secara dua dimensi yang kemudian ditampilkan pada display. Sebagai tambahan, pada mouse seringkali ditambahkan fungsi lain, seperti "wheels" atau roda. Selain mendeteksi pergerakan, mouse juga berperan dalam mengeksekusi perintah dengan cara menekan tombol pada mouse sekali (click) atau dua kali berurutan (double click).
Rekayasa Perangkat Lunak
49
Gambar 3.20. Berbagai jenis mouse. 3.3.2. Perangkat lunak Perangkat lunak/piranti lunak adalah program komputer yang berfungsi sebagai sarana interaksi antara pengguna dan perangkat keras. Atau boleh juga diartikan sebagai ‘penterjemah' perintah-perintah yang dijalankan pengguna komputer untuk diteruskan ke atau diproses oleh perangkat keras. Program komputer ini, isinya dapat diubah dengan mudah. Pada komputer, perangkat lunak dimuat ke dalam RAM kemudian dieksekusi di dalam CPU. Pada level paling bawah, perangkat lunak berisi bahasa mesin yang bersifat spesifik terhadap suatu processor. Ada banyak model penggolongan perangkat lunak, namun secara umum perangkat lunak dapat dibagi menjadi tiga kelompok, yaitu :
1.
System Software
System Software adalah perangkat lunak yang digunakan untuk membantu menjalankan perangkat keras dan sistem komputer. Tujuan dari system software adalah membatasi semaksimal mungkin programmer aplikasi dari kompleksitas sebuah komputer, terutama yang berhubungan dengan akses memori dan perangkat keras secara langsung. Termasuk dalam kelompok ini adalah sistem operasi, driver perangkat keras, perangkat lunak pendiagnosa, windowing system, utilities dan lain-lain. Dari kelompok ini sistem operasi merupakan perangkat lunak yang paling penting. Perangkat lunak ini bekerja sebagai antar muka antara komputer dengan dunia luar. Pada bagian hardware, sistem operasi akan mendiskripsikan perangkat keras yang ada atau terhubung dengan komputer. Sistem operasi menyediakan antar muka pada perangkat keras ini menggunakan “driver” tertentu sehingga perangkat ini dapat dikenali dan bekerja sebagai mana mestinya. Penjelasan lebih detil tentang sistem operasi dapat dilihat pada Bab 4.
50
Elektronika dan Sistem Komputer
Gambar 3.21. Tampilan desktop sistem operasi Windows XP.
2.
Programming Software
Programming Software adalah perangkat lunak yang menyediakan alat bantu atau fungsi yang dapat membantu programmer dalam membuat program komputer. Software ini sangat bergantung pada bahasa pemrograman yang digunakan. Alat bantu ini meliputi editor teks, compiler, interpreter, linkers, debugger dan lainlain. Sebuah Integrated Development Environment (IDE) atau lingkungan pengembangan terpadu menggabungkan alat-alat bantu ini untuk mempermudah programmer. Kita akan banyak mempelajari bagian ini pada buku ini.
3.
Application Software
Application Software adalah perangkat lunak yang digunakan membantu manusia mengerjakan tugas-tugas tertentu (kadang tidak berhubungan dengan komputer. Tipe-tipe application software antara lain, perangkat lunak otomatisasi industri, perangkat lunak bisnis, perangkat lunak pendidikan, perangkat lunak software, database, dan game komputer. Beberapa contoh application software dapat dilihat pada Gambar-Gambar berikut ini.
Rekayasa Perangkat Lunak
51
Gambar 3.22. Application software Microsoft Word (Software pengolah kota).
Gambar 3.23. Application software Winrar (Software kompresi dan ekstraksi file).
52
Elektronika dan Sistem Komputer
Gambar 3.24. Application software PowerSim (Software untuk simulasi sistem).
Gambar 3.25. Application software Hysis (Software untuk perancangan pabrik).
Rekayasa Perangkat Lunak
53
3.4.
3.5.
RINGKASAN •
Elektronika adalah ilmu yang mempelajari alat listrik arus lemah yang dioperasikan dengan cara mengontrol aliran elektron atau partikel bermuatan listrik.
•
Elemen penting dalam teori kelistrikan adalah muatan listrik (Q), hambatan (R), tegangan (V) dan arus (I).
•
Elektronika digital adalah sistem elektronik yang menggunakan signal digital dan tersusun dari apa yang disebut sebagai gerbang logika.
•
Gerbang logika adalah blok-blok penyusun dari perangkat keras elektronik.
•
Ada tiga bentuk dasar dari tabel kebenaran dan gerban logika yaitu AND, OR, dan NOT. Selain itu dikenal juga bentuk turunan yaitu NAND, NOR, dan XOR.
•
Komputer adalah alat pengolah data elektronik yang bekerja dan dikontrol oleh sekumpulan instruksi (program).
•
Sistem komputer adalah kumpulan elemen-elemen yaitu manusia, perangkat keras, dan perangkat lunak yang saling berinteraksi untuk mencapai tujuan yaitu mendapatkan informasi yang berguna, kemudahan dalam bekerja, kecepatan dan tujuan lainnya.
•
Ada tiga komponen utama dalam sistem komputer yaitu manusia sebagai pengguna, perangkat keras dan perangkat lunak.
SOAL-SOAL LATIHAN
1. Jelaskan pengertian elektronika. 2. Sebutkan hubungan antara muatan listrik, hambatan, tegangan dan arus. 3. Sebutkan komponen-komponen elektronika yang anda ketahui. 4. Sebutkan pengertian elektronika digital. 5. Gambarkan bentuk-bentuk gerbang logika. 6. Gambarkan satu contoh rangkaian digital. 7. Sebutkan komponen-komponen dalam sistem komputer. 8. Jika satu dari komponen sistem komputer tidak tersedia, apa yang akan terjadi?
54
Elektronika dan Sistem Komputer
Gambar 4.1. Menjalankan sistem operasi berbasis teks. Kalau kita perhatikan sekilas Gambar 4.1 di atas mungkin kita akan bertanyatanya baris-baris tulisan apakah yang tersaji pada gambar tersebut. Tapi kalau kita cermati kita akan dapat menduga teks di atas adalah baris perintah dan hasil eksekusi dari sistem operasi. Bagian perintah sistem operasi berbasis teks ini sering kita abaikan namun sebenarnya sangat penting dan berguna. Bab ini akan membahas standar kompetensi mengoperasikan sistem operasi komputer berbasis teks dan GUI. Ada dua kompetensi dasar pada standar kompetensi ini yaitu menyiapkan pengoperasian PC, mengoperasikan PC yang tersambung ke jaringan, dan memutuskan koneksi jaringan. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat uraian materi. Ringkasan diletakkan pada akhir bab. Sebelum mempelajari kompetensi ini ingatlah kembali tentang sistem komputer pada bab sebelumnya dan materi-materi pendukung dari mata pelajaran matematika.
Rekayasa Perangkat Lunak
55
TUJUAN
Setelah anda membaca Bab ini, diharapkan pembaca akan mampu : o Menjelaskan pengertian sistem operasi. o Menjalankan proses instalasi dan booting sistem operasi. o Menjalankan sistem operasi dengan mode teks maupun GUI pada sistem operasi. o Mengoperasikan PC yang tersambung ke jaringan 4.1.
PENGERTIAN SISTEM OPERASI
Seperti telah disebutkan pada bab terdahulu, sistem operasi termasuk dalam kelompok system software yaitu perangkat lunak yang berperan dalam menjalankan perangkat keras komputer dan sistem komputer secara keseluruhan. Sistem Operasi adalah perangkat lunak yang bertugas mengelola penggunaan sumberdaya dalam komputer dan menyediakan antarmuka bagi pengguna untuk mengakses sumberdaya tersebut. 4.1.1
FUNGSI Fungsi-fungsi sebuah sistem operasi secara umum dapat dilihat pada gambar
4.2. •
Antar muka pengguna
Fungsi ini merupakan fungsi yang paling mudah dikenali oleh pengguna karena melalui fungsi ini pengguna dapat berinteraksi dengan sistem operasi, perangkat keras maupun perangkat lunak yang lain. Sistem operasi pada dasarnya menunggu input atau instruksi dari pengguna dan kemudian menerjemahkan perintah-perintah tersebut dalam bahasa yang dimengerti oleh komputer. Antar muka pengguna menjadi tempat bagi pengguna untuk menuliskan atau menyampaikan perintah tersebut.
56
Sistem Operasi
Gambar 4.2. Fungsi-fungsi sistem operasi. Secara garis besar ada dua model antar muka pengguna yaitu Command Line Interface (CLI) dan Graphical User Interface (GUI). CLI memberikan fasilitas bagi pengguna untuk memberikan perintah dalam bentuk teks sedangkan GUI lebih berbasis pada tampilan grafis. Dewasa ini hampir semua sistem operasi modern menyediakan model GUI sebagai antar muka pengguna. Beberapa menyediakan GUI yang terintegrasi dengan kernel sistem operasi, misalnya pada Microsoft Windows dan Apple Mac OS versi awal. Sedangkan yang lainnya menyediakan GUI yang bersifat modular, yaitu tidak terintegrasi langsung pada kernel sistem operasinya, seperti pada Unix, Linux dan Mac OS versi X ke atas. •
Manajemen memori
Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte, yang ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri. Memori utama berfungsi sebagai tempat penyimpanan instruksi/data yang akses datanya digunakan oleh CPU dan perangkat Masukan/Keluaran. Memori utama termasuk tempat penyimpanan data yang yang bersifat volatile -- tidak permanen -- yaitu data akan hilang kalau komputer dimatikan. Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen memori seperti: o
Menjaga track dari memori yang sedang digunakan dan siapa yang menggunakannya.
o
Memilih program yang akan di-load ke memori.
Rekayasa Perangkat Lunak
57
Gambar 4.3. Manajemen memori pada sistem operasi Microsoft Windows •
Manajemen file
File (berkas) adalah kumpulan informasi yang berhubungan, sesuai dengan tujuan pembuat berkas tersebut. Umumnya file merepresentasikan program dan data. File dapat mempunyai struktur yang bersifat hirarkis (direktori, volume, dll.). Sistem operasi mengimplementasikan konsep abstrak dari file dengan mengatur media penyimpanan massal, misalnya tapes dan disk. Sistem operasi bertanggung-jawab dalam aktivitas yang berhubungan dengan manajemen file :
58
o
Pembuatan dan penghapusan file.
o
Pembuatan dan penghapusan direktori.
o
Mendukung manipulasi berkas dan direktori.
o
Memetakan berkas ke secondary-storage.
o
Mem-back-up berkas ke media penyimpanan yang tidak permanen (nonvolatile).
Sistem Operasi
Gambar 4.4. Windows Explorer sebagai sarana pengelolaan file. •
Manajemen proses
Proses adalah sebuah program yang sedang dieksekusi. Sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Alokasi sumber daya tersebut dikelola oleh Sistem Operasi. Misalnya, penggunaan memori oleh CPU, file-file yang terbuka, dan penggunaan oleh perangkat-perangkat input/output lain. Ketika proses tersebut berhenti dijalankan, sistem operasi akan mendapatkan kembali semua sumber daya yang bisa digunakan kembali. Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen proses seperti: o
Membuat dan menghapus proses pengguna dan sistem proses.
o
Menunda atau melanjutkan proses.
o
Menyediakan mekanisme untuk sinkronisasi proses.
o
Menyediakan mekanisme untuk komunikasi proses.
o
Menyediakan mekanisme untuk penanganan deadlock.
Rekayasa Perangkat Lunak
59
Gambar 4.5. Manajemen proses pada sistem operasi Microsoft Windows. •
Manajemen sistem masukan dan keluaran (I / O)
Sistem ini sering disebut dengan device manager. Menyediakan device driver yang umum sehingga operasi Masukan/Keluaran dapat seragam (membuka, membaca, menulis, menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas pada perangkat keras, CD-ROM dan floppy disk. Komponen Sistem Operasi untuk sistem Masukan/Keluaran: o
Penyangga: menampung Masukan/Keluaran.
o
Spooling: melakukan penjadwalan pemakaian Masukan/Keluaran sistem supaya lebih efisien (antrian dsb.).
o
Menyediakan driver: untuk dapat melakukan operasi rinci untuk perangkat keras Masukan/Keluaran tertentu.
60
Sistem Operasi
sementara
data
dari/ke
perangkat
Gambar 4.6. Manajemen I / O pada sistem operasi Microsoft Windows. 4.1.2
BIOS
BIOS merupakan singkatan dari Basic Input/Output System. BIOS adalah kodekode program yang pertama kali dijalankan ketika komputer dinyalakan (booting). Fungsi utama BIOS adalah untuk mengidentifikasi dan mengenali perangkat keras komputer. Biasanya BIOS akan tersimpan dalam ROM (Read Only Memory) yang ada pada motherboard suatu komputer. Ketika komputer dinyalakan maka BIOS akan mencoba mengenali bagianbagian komputer berikut ini: •
clock generator.
•
processors dan caches.
•
chipset (memory controller and I/O controller).
•
system memory.
•
Semua perangkat PCI
•
primary graphics controller.
•
Mass storage controllers (seperti SATA and IDE controllers).
•
Various I/O controllers (such keyboard/mouse and USB).
Setelah dikenali maka BIOS akan memanggil program untuk boot suatu sistem operasi (boot loader).
Rekayasa Perangkat Lunak
61
Kita dapat melakukan setting BIOS dengan menggunakan fasilitas yang disediakan oleh BIOS. Biasanya dengan menekan tombol Del atau F2 (tergantung jenis komputernya) ketika komputer baru dinyalakan. Jika berhasil masuk maka kita akan disuguhi tampilan seperti pada Gambar 4.7. kita dapat melakukan serangkain pengaturan pada perangkat keras yang ada pada komputer.
Gambar 4.7. Tampilan BIOS utility. 4.2.
JENIS-JENIS SISTEM OPERASI
Sistem operasi telah berkembang melalui jalan yang panjang. Dari yang paling sederhana sampai yang paling modern dewasa ini. Masing-masing memiliki kelebihan dan kekurangan terutama sehubungan dengan fungsi-fungsi yang dimilikinya. Pada bagian berikut ini akan dibahas beberapa sistem operasi yang banyak digunakan dan familiar bagi pengguna komputer. 4.2.1. DOS DOS adalah singkatan dari Disk Operating System. DOS merujuk pada perangkat sistem operasi yang digunakan di banyak komputer yang menyediakan abstraksi dan pengelolaan perangkat penyimpan sekunder dan informasinya. Misalnya penggunaan sistem file yang mengelola file-file yang ada pada perangkat penyimpan. DOS biasanya dijalankan dari satu atau dua disc. Hal ini karena pada masa DOS digunakan media penyimpan masih sangat terbatas kemampuannya (paling besar mungkin hanya 1,4 Megabyte). Ada banyak jenis DOS diantaranya Apple DOS, Commodore DOS, Atari DOS dan lain-lain. Jenis ini sangat bergantung dengan jenis perangkat komputernya. Jenis DOS yang paling terkenal adalah jenis DOS yang berjalan pada mesin-mesin yang compatible dengan IBM Personal Computer.
62
Sistem Operasi
Untuk menjalankan perintah-perintah sistem operasi, DOS menggunakan perintah berbasis teks atau CLI. Setiap kali selesai mengetikkan suatu perintah, kita harus menekan tombol ENTER untuk mengeksekusi perintah tersebut. Contoh operasi dengan menggunakan DOS dapat dilihat pada Gambar 4.8.
Gambar 4.8. Contoh penggunaan DOS. 4.2.2. UNIX UNIX adalah sistem operasi yang mula-mula dikembangkan oleh suatu kelompok di AT & T pada laboatorium Bell. Unix banyak digunakan baik untuk server maupun workstation. Linkungan Unix dan model program client-server menunjukkan bahwa Unix lebih dikembangkan sebaga sistem operasi yang kuat di jaringan komputer dari pada sistem operasi untuk computer personal. UNIX dirancang untuk portable, multi-tasking, dan multi-user. Konsep utama Unix antara lain banyak menggunakan file teks biasa untuk menyimpan data, menggunakan sistem file berjenjang, memperlakukan perangkat sebagai suatu file, dan menggunakan banyak program kecil yang eksekusinya pada CLI dapat digabung dengan tanda pipeline (|). Pada Gambar 5.2 di atas, tampak beberapa perintah UNIX yang digabung dengan pipeline. Konsep yang sangat solid dan stabil membuat Unix banyak dijadikan dasar sistem operasi modern. Gambar 4.9. menunjukkan bagaimana Unix merupakan dasar dari banyak sistem operasi yang ada sekarang.
Rekayasa Perangkat Lunak
63
Gambar 4.9. Unix dan sistem operasi turunannya. Sistem UNIX terdiri dari beberapa komponen yang biasanya dipaket bersama. Umumnya paket-paket tersebut adalah sebagai berikut: •
Kernel dengan sub komponen seperti :
64
o
conf — file konfigurasi.
o
dev — driver perangkat keras
o
sys — kernel sistem operasi, manajemen memori, penjadwalan proses,
o
h — header files, mendefinisikan struktur kunci di dalam sistem.
sistem calls dan lain-lain.
Sistem Operasi
Gambar 4.10. Manajemen memori dan penjadwalan proses pada Unix. •
•
Development Environment: o
cc —compiler untuk bahasa C
o
as — machine-language assembler
o
ld — linker, untuk menggabung file-file object
o
lib — object-code libraries (diinstall di folder /lib atau /usr/lib) libc, kumpulan pustaka untuk bahasa C
o
make – program untuk mengkompilasi kode program
o
include — file-file header untuk pengembangan perangkat lunak dan menentukan standar interface
o
Other languages — bahasa-bahasa pemrograman lain seperti Fortran-77, Free Pascal, dan lain-lain.
Commands: o
sh —"Shell" untuk melakukan pemrograman mengeksekusi perintah-perintah tertentu.
o
Utilities — Sekumpulan perintah CLI yang berguna untuk fungsi-fungsi
berbasis
CLI
atau
yang bermacam-macam, meliputi:
System utilities — Program-program untuk pengelolaan sistem seperti mkfs, fsck, dan lain-lain.
User utilities — Program-program untuk pengelolan lingkungan kerja, seperti passwd, kill, dan lain-lain.
Rekayasa Perangkat Lunak
65
o
Document formatting — Program untuk penyiapan dokumen seperti nroff, troff, tbl, eqn, refer, dan pic. Beberapa sistem Unix modern juga
memasukkan aplikasi seperti TeX dan Ghostscript. o
Graphics — Sistem Unix modern menyediakan X11 sebagai sistem standard windowing dan GUI.
Gambar 4.11. X windows system di UNIX. 4.2.3. Microsoft Windows Micosoft Windows atau orang lebih sering menyebut Windows saja pada awalnya hanyalah add-on dari MS-DOS karena tingginya tuntutan pada sistem operasi yang berbasis GUI. Versi awal Windows berjalan di atas MS-DOS. Meski demikian Windows versi awal telah menunjukkan beberapa fungsi-fungsi yang umum dijumpai dalam sistem operasi, antara lain: memiliki tipe file executable tersendiri, memiliki driver perangkat keras sendiri, dan lain-lain.
66
Sistem Operasi
Gambar 4.12. Windows versi 3.11. Secara konsep sebenarnya Windows lebih banyak ditujukan bagi komputer personal. Pada awalnya Windows juga tidak mendukung konsep multi-tasking dan multi-user. Akomodasi terhadap jaringan atau fungsi-fungsi client-server juga tidak sekuat pada UNIX dan turunannya. Sehingga masalah yang sering muncul di sistem operasi Windows adalah masalah keamanan yang berhubungan dengan jaringan. Namun Windows memiliki kelebihan dari sisi kemudahan pemakaian. Pada versi yang terbaru (Windows Vista) konsep multi-user dan multi-tasking telah semakin matang. Selain itu tampilan GUI telah dirubah dengan banyak menggunakan efek tiga dimensi.
Gambar 4.13. Windows Vista.
Rekayasa Perangkat Lunak
67
4.2.4. Apple Mac OS Seperti terlihat pada Gambar 5.10, Apple Mac OS merupakan turunan dari UNIX melalui jalur BSD (Berkeley Software Distribution). Oleh karena itu kekuatan dalam multi-tasking, multi-user, networking yang ada pada UNIX juga dimiliki oleh Mac OS. Mac OS adalah sistem operasi berbasis GUI. Apple merupakan pelopor dalam penggunaan GUI pada sistem operasi. Penggunaan icon, mouse dan beberapa komponen GUI merupakan sumbangan yang luar biasa bagi perkembangan sistem operasi berbasis GUI. Versi awal dari Mac OS hampir secara penuh mengandalkan pada kemampuan GUI-nya dan sangat membatasi penggunaan CLI (Gambar 5.15). Meskipun sangat memudahkan namun ada beberapa kelemahan, antar lain: multi-tasking yang tidak berjalan sempurna, pengelolaan memori yang terbatas, dan konflik pada beberapa program yang ditanamkan. Memperbaiki sistem Mac OS kadang-kadang menjadi suatu pekerjaan yang sangat melelahkan.
Gambar 4.14. Mac OS versi awal. Pada Mac OS X (versi terbaru), semua kelemahan pada versi lama telah coba dihilangkan. Multi-tasking telah berjalan dengan baik dan manajemen memori yang jauh lebih baik. Selain itu tampilan GUI-nya disebut-sebut sebagai yang terbaik di antara sistem operasi yang ada..
68
Sistem Operasi
Gambar 4.15. Mac OS X. 4.2.5. Linux Linux sangat mirip dengan sistem-sistem UNIX, hal ini dikarenakan kompatibilitas dengan UNIX merupakan tujuan utama desain dari proyek Linux. Perkembangan Linux dimulai pada tahun 1991, ketika mahasiswa Finlandia bernama Linus Torvalds menulis Linux, sebuah kernel untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU intel yang cocok untuk PC. Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi komponen lainlah yang membentuk secara komplit sistem operasi Linux. Dimana kernel Linux terdiri dari kode-kode yang dibuat khusus untuk proyek Linux, kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux, melainkan biasa dipakai dalam beberapa sistem operasi yang mirip UNIX. Contohnya, sistem operasi BSD dari Berkeley, X Window System dari MIT, dan proyek GNU dari Free Software Foundation. Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem perpustakaan utama Linux awalnya dimulai oleh proyek GNU, tetapi perkembangan perpustakaannya diperbaiki melalui kerjasama dari komunitas Linux terutama pada pengalamatan, ketidak efisienan, dan bugs. Komponen lain seperti GNU C Compiler, gcc, kualitasnya sudah cukup tinggi untuk dipakai langsung dalam Linux. Alat-alat administrasi network dibawah Linux berasal dari kode yang dikembangkan untuk 4.3BSD, tetapi BSD yang lebih baru , salah satunya FreeBSD, sebaliknya meminjam kode dari Linux, contohnya adalah perpustakaan matematika Intel floating-pointemulation.
Rekayasa Perangkat Lunak
69
Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya paling cepat. Kehadiran sejumlah kelompok pengembang, tersebar di seluruh dunia, yang selalu memperbaiki segala fiturnya, ikut membantu kemajuan sistem operasi Linux. Bersamaan dengan itu, banyak pengembang yang sedang bekerja untuk memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux). Masalah utama yang dihadapi Linux dahulu adalah interface yang berupa teks (text based interface). Ini membuat orang awam tidak tertarik menggunakan Linux karena harus dipelajari terlebih dahulu dengan seksama untuk dapat dimengerti cara penggunaannya (tidak user-friendly). Tetapi keadaan ini sudah mulai berubah dengan kehadiran KDE dan GNOME. Keduanya memiliki tampilan desktop yang menarik sehingga mengubah persepsi dunia tentang Linux.
Gambar 4.16. Linux dengan desktop KDE. 4.3.
MENYIAPKAN DAN MENJALANKAN SISTEM OPERASI
Mengenal sistem informasi saja tidak cukup. Bagi seorang yang bergerak dalam pemrograman perlu mengetahui secara lebih mendalam tentang bagaimana instalasi, booting dan menjalankan sistem operasi, dari pada pengguna biasa. 4.3.1. Instalasi Instalasi adalah pemasangan perangkat lunak pada system computer. Sedangkan Instalasi Sistem Operasi adalah pemasangan system operasi pada sistem computer. Sistem operasi akan dipasang terlebih dahulu dibanding perangkat
70
Sistem Operasi
lunak yang lain. Perangkat lunak yang lain baru bisa dijalankan setelah sistem operasi terinstal dengan benar. Seperti telah dijelaskan, masing-masing sistem operasi memiliki ciri tersendiri. Demikian juga dengan proses instalasi sistem operasi. Proses instalasi sangat bergantung pada jenis sistem operasinya. Berdasarkan tampilan anta mukanya kita dapat membagi menjadi dua, yaitu yang berbasis GUI dan berbasis CLI. Proses instalasi berbasis GUI ada pada sistem operasi Microsoft Windows (GUI penuh pada versi Vista), Apple Mac OS ver X dan yang di atasnya, beberapa versi Linux seperti, Ubuntu dan turunannya (Xubuntu, Kubuntu, Edubuntu, dan lain-lain), Mandriva dan turunannya (PC Linux OS), dan Fedora versi terbaru. Sedangkan versi CLI ada pada Linux versi Slackware, Gentoo dan lain-lain. Proses instalasi juga dapat dibagi berdasarkan sumber instalasinya, yaitu bersumber dari media baik itu CD, DVD atau hard-disc dan yang bersumber dari network (jaringan). Proses instalasi dengan menggunakan media CD atau DVD merupakan metode yang paling umum digunakan. Pada bagian ini hanya akan dijelaskan tentang proses instalasi dengan sumber dari CD/DVD Tahapan-tahapan dalam instalasi biasanya seperti terlihat pada Gambar 4.16. Tahapan-tahapan instalasi ini mungkin bervariasi antar sistem operasi. Namun secara umum tahapan dalam sistem operasi apapun tidak akan berbeda jauh.
Gambar 4.16. Tahapan-tahapan instalasi. •
Cek kesiapan perangkat keras. Tahap ini bertujuan untuk memastikan bahwa semua perangkat perangkat keras dan periferalnya terpasang dengan benar. Selain itu juga untuk melihat apakah spesifikasi perangkat keras komputer didukung oleh sistem operasi tersebut.
•
Setting BIOS. Pada dasarnya tahapan ini adalah untuk mengkonfigurasi BIOS agar meletakkan media instalasi dalam urutan paling atas dalam prioritas booting.
Rekayasa Perangkat Lunak
71
•
Booting dari media instalasi. Apabila setting BIOS berhasil dengan baik, maka komputer akan boot dari media instalasi. Gambar 4.17 merupakan screen-shot dari proses booting di bagian awal.
Gambar 4.17. Testing media instalasi. •
Setting I/O utama. Tahapan ini bertujuan untuk mengatur agar perangkat input / output utama (mouse, keyboard dan video) dapat berjalan dengan baik ketika proses instalasi dilakukan.
•
Persiapan dan penentuan lokasi instalasi. Media yang paling umum digunakan sebagai target instalasi adalah hard disk yang tertanam di komputer. Kita perlu mempersiapkan hard disk tersebut agar siap ditulis. Persiapan ini meliputi partisi hard disk (termasuk besarnya volume untuk masing-masing partisi) dan format partisi sesuai dengan sistem file yang disyaratkan oleh sistem operasi. Untuk Microsoft Windows, dapat menggunakan sistem file NTFS atau FAT32. Untuk linux dapat digunakan sistem file ext2, ext3, ReiserFS, dan XFS. Untuk Apple Mac OS X biasanya digunakan HFS+. Gambar 4.18 menunjukkan proses penentuan lokasi instalai pada proses instalasi Fedora Core 8.
Gambar 4.18. Proses penentuan target instalasi.
72
Sistem Operasi
•
Penentuan paket Sistem Operasi yang akan diinstal. Tahap ini kadang tidak diperlukan jika kita memilih instalasi secara default. Namun bila kita ingin menginstal sistem operasi agar sesuai dengan keinginan kita (custom installation) maka tahapan ini harus dilakukan. CD atau DVD instalasi, biasanya mempunyai paket-paket aplikasi yang dapat kita pilih ketika instalasi sistem operasi berjalan atau ketika proses instalasi telah selesai.
•
Proses copy ke hard disk. Setelah penentuan paket aplikasi dilakukan, maka proses copy file instalasi ke hard disk dapat segera dilakukan. Gambar 4.19. merupakan contoh proses copy file sistem operasi.
Gambar 4.19. Proses copy file pada Fedora. •
Setting peripheral lain. Tahapan ini bertujuan untuk menginstal driver bagi peripheral (kartu VGA, kartu suara, chipset motherboard dan lain-lain) pada suatu komputer agar dapat bekerja dengan optimal.
•
Penentuan user. User adalah pengguna dari sistem operasi yang telah diinstal. Data dari user yang biasanya ditanyakan adalah user name dan password. Secara umum ada dua level pengguna, yaitu administrator dan user biasa. Administrator mempunyai hak pada semua bagian dari sistem operasi sedangkan user biasa mempunyai hak yang ditentukan oleh administrator.
4.3.2. Booting
Booting adalah proses awal saat komputer dihidupkan. Proses awal booting dapat dijelaskan dengan menggunakan skema pada Gambar 4.20. Proses awal booting dimulai dari pembacaan dan eksekusi program yang tersimpan di ROM komputer dan data setup yang tersimpan dalam CMOS. Bagian ini disebut POST (Power On Self Test) apabila berhasil, maka perangkat lunak sistem BIOS yang berisi program BIOS dari ROM dan BIOS dari adapter (misalnya dari VGA) akan dimuat ke memori utama (RAM) dan dilanjutkan dengan pembacaan program start-up yang
Rekayasa Perangkat Lunak
73
tersimpan di dalam boot sector hard disk. Dari sini barulah sistem operasi dimuat dari hard disk.
Gambar 4.20. Proses awal booting. Pada sistem operasi seperti Microsoft Windows, kita tidak dapat melihat apa yang terjadi ketika sistem operasi dimuat (mulai dijalankan). Kita hanya disuguhi tampilan (biasanya logo) yang disebut sebagai boot-splash. Tetapi pada keluarga Linux, kita dapat memilih apakah proses jalannya sistem operasi ditampilkan atau tidak dengan mengkonfigurasi file boot-loader (biasanya menggunakan LILO atau Grub). Gambar 4.21 menunjukkan proses booting pada Linux Fedora.
74
Sistem Operasi
Gambar 4.21 Proses booting pada Linux Fedora 4.3.3. Perintah berbasis teks Bagi banyak orang bekerja dengan perintah berbasis teks (CLI) ketika berhadapan dengan sistem operasi mungkin sangat menyulitkan karena harus menghapal perintah dan mengetikkan perintah tersebut serta tampilan yang tidak menarik. Namun sesungguhnya bekerja dengan memiliki keuntungan tersendiri, antara lain: •
eksekusi perintah relative lebih cepat.
•
hemat dalam penggunaan sumberdaya (terutama CPU dan memori utama).
•
tidak bergantung pada perangkat keras dengan spesifikasi tinggi (terutama pada VGA dan monitor).
Pada sistem operasi Microsoft Windows dan Apple Mac OS X, mode CLI mungkin jarang digunakan, bahkan mungkin tidak pernah. Tetapi pada keluarga Linux dan Unix, mode CLI ini tetap merupakan bagian penting, terutama untuk administrasi sistem dan jaringan. Pada bagian ini kita akan membahas beberapa perintah yang sering digunakan pada mode CLI di sistem operasi Linux. Untuk menjalankan mode CLI ini dapat digunakan console atau terminal emulator yang tersedia di Linux, seperti Konsole, xterm, aterm dan lain-lain (Gambar 4.22).
Rekayasa Perangkat Lunak
75
Gambar 4.22. Terminal sedang menjalankan mode CLI. Ada dua kelompok utama dalam perintah-perintah mode CLI: -
Perintah yang berhubungan dengan administrasi sistem. Perintah-perintah yang termasuk dalam kelompok ini biasanya hanya dapat dilaksanakan oleh pengguna yang mempunyai hak sebagai administrator (root). Perintah-perintah yang termasuk kelompok ini biasanya tersimpan di direktori /sbin (Gambar 4.23) dan /usr/sbin (Gambar 4.24).
-
Perintah untuk penggunaan biasa. Perintah ini dapat diakses oleh pengguna biasa. Perintah-perintah yang termasuk kelompok ini biasanya tersimpan di direktori /bin (Gambar 4.25) dan /usr/bin (Gambar 4.26).
76
Sistem Operasi
Gambar 4.23. Perintah-perintah pada direktori sbin.
Gambar 4.24. Perintah-perintah pada direktori /usr/sbin.
Rekayasa Perangkat Lunak
77
Gambar 4.25. Perintah-perintah pada direktori bin.
Gambar 4.26. Perintah-perintah pada direktori /usr/bin.
78
Sistem Operasi
Berikut ini beberapa perintah-perintah penting dalam mode CLI. •
Menampilkan isi direktori Untuk menampilkan isi direktori dapat digunakan perintah ls diikuti dengan argument lain. Beberapa contoh penggunaan dapat dilihat pada gambar 4.27.
Gambar 4.27. Contoh penggunaan perintah ls.
•
Pindah direktori Berpindah direktori dapat dilakukan dengan perintah cd diikuti lokasi dimana kita mau berpindah. Beberapa contoh penggunaan dapat dilihat pada gambar 4.28.
Gambar 4.28. Contoh penggunaan perintah cd.
Rekayasa Perangkat Lunak
79
•
Mencari file Perintah find dapat digunakan untuk mencari file tertentu di lokasi yang ditentukan. Beberapa contoh penggunaan dapat dilihat pada gambar 4.29.
Gambar 4.29. Contoh penggunaan perintah find.
•
Menampilkan isi file Untuk menampilkan isi file dapat digunakan perintah more, less atau cat diikuti dengan nama filenya. Beberapa contoh penggunaan dapat dilihat pada gambar 4.30.
Gambar 4.30. Contoh penggunaan perintah cat dan more.
80
Sistem Operasi
•
Menyalin file dan directory Perintah cp bertujuan untuk menyalin file atau directory. penggunaan dapat dilihat pada gambar 4.31.
Beberapa contoh
Gambar 4.31. Contoh penggunaan perintah cp.
•
Memindahkan file Untuk memindahkan file dapat digunakan perintah mv. penggunaan dapat dilihat pada gambar 4.32.
Beberapa contoh
Gambar 4.32. Contoh penggunaan perintah mv untuk memindahkan file.
Rekayasa Perangkat Lunak
81
•
Mengganti nama file Perintah mv dapat juga digunakan untuk mengganti nama file. Beberapa contoh penggunaan dapat dilihat pada gambar 4.33.
Gambar 4.33. Contoh penggunaan perintah mv untuk mengganti nama file.
•
Menghapus file dan direktori Perintah untuk menghapus file dan directory adalah rm. penggunaan dapat dilihat pada gambar 4.34.
Beberapa contoh
Gambar 4.34. Contoh penggunaan perintah rm untuk menghapus file atau direktori.
•
Membuat direktori Perintah mkdir merupakan perintah untuk membuat directory baru. Beberapa contoh penggunaan dapat dilihat pada gambar 4.35.
82
Sistem Operasi
Gambar 4.35. Contoh penggunaan perintah mkdir.
•
Memahami hak akses file dan direktori Pada sistem operasi windows, file dan direktori tidak memiliki file proteksi yang cukup karena file dan direktori hanya mempunyai attribute yang terbatas (Gambar 4.36).
Gambar 4.36. Attribute file / folder pada Microsoft WIndows Pada gambar 4.36, tampak bahwa attribute file/direktori hanya memiliki attribute Read-only dan Hiden. Apabila kotak pilihan Read-only dipilih, maka file hanya akan dapat dibaca saja dan sebaliknya. Apabila kotak pilihan Hiden dipilih maka file/direktori akan disembunyikan sehingga tidak tampak ketika dicari dengan Windows Explorer.
Rekayasa Perangkat Lunak
83
Pada Unix dan keluarganya, termasuk linux, masalah attribute suatu file/direktori diatur dengan sangat ketat. Hal ini untuk meningkatkan keamanan dan memberi keleluasaan pada user untuk mengelola file dan direktori sesuai kebutuhannya. Ada 4 bagian penting dalam suatu file / direktori, yaitu attribute, user atau (owner) pemilik dari file tersebut, grup dimana user sebagai anggota dan nama file/direktori. Pada bagian attribute, ada penanda apakah itu direktori atau file biasa (ditandai dengan huruf d untuk direktori atau tanda – untuk file biasa). Selanjutnya ada sembilan kolom (karakter) yang menunjukkan hak akses terhadap file/direktori tersebut. Tiga kolom pertama menunjukkan hak akses owner, tiga kolom berikutnya hak akses grup dan tiga kolom terakhir adalah hak akser untuk other (user lain diluar owner dan anggota grup). Huruf r menunjukkan file/direktori bisa dibaca, w menunjukkan file/direktori bisa ditulis dan x menunjukkan file/direktori bisa dieksekusi. Perhatikan Gambar 4.37 berikut ini.
Gambar 4.37. Attribute file / direktori pada keluarga Unix Gambar 4.37 menunjukkan hal sebagai berikut:
84
o
Desktop dan xml adalah direktori karena mempunyai tanda d, sedangkan exports adalah file biasa karena bertanda -.
o
Desktop dan xml mempunyai attribute drwxr-xr-x yang berarti owner (yaitu one) mempunyai hak untuk membaca, menulis dan mengeksekusi direktori ini. Sedangkan grup (yaitu users) mempunyai hak untuk membaca dan mengeksekusi saja. Other (user lain) juga mempunyai hak membaca dan mengeksekusi pada direktori ini.
Sistem Operasi
o
exports mempunyai attribute -rw-r--r—yang berarti owner (yaitu one) mempunyai hak untuk membaca dan menulis. Sedangkan grup dan other hanya mempunyai hak untuk membaca saja.
Untuk merubah attribute file/direktori dapat digunakan perintah seperti pada table berikut ini. Tabel 4.1. Perintah yang berhubungan dengan pengelolaan file/direktori. Perintah chgrp [options] group file chmod [options] owner file chown [options] owner file
•
Fungsi Mengubah kepemilikan grup suatu file/direktori Mengubah hak akses suatu file/direktori Mengubah kepemilikan owner suatu file/direktori
Mengontrol proses Proses merupakan bagian yang sangat penting dalam Linux sehingga perintahperintah yang berhubungan dengan proses menjadi penting untuk diketahui. Untuk melihat proses yang sedang berjalan dapat digunakan perintah ps. Perhatikan gambar 4.38 berikut ini.
Gambar 4.38. Eksekusi perintah ps. Seperti terlihat pada gambar 4.38, perintah ps memiliki beberapa opsi (opsi selengkapnya dapat dilihat dengan mengetikkan perintah man ps pada terminal). Pada gambar tersebut ada dua proses yang sedang dijalankan oleh user one (lihat bagian UID) yaitu bash dengan nomor proses (PID) 3605 dan ps –f dengan PID 3676.
Rekayasa Perangkat Lunak
85
Untuk menghentikan proses kita dapat menggunakan perintah kill diikuti nomor prosesnya (PID). Misalnya : kill 3605 untuk menghentikan proses bash.
•
Mengetahui ruang kosong pada disk Kadang-kadang kita ingin mengetahui seberapa banyak sisa disk kita yang masih ada. Untuk mengetahui hal ini dapat digunakan perintah df seperti terlihat pada Gambar 4.39.
Gambar 4.39. Penggunaan perintah df. Masih banyak sekali perintah yang digunakan dalam CLI di Linux. Jika kalian ingin mengetahui arti suatu perintah coba ketikkan perintah man diikuti nama perintah (Gambar 4.40).
Gambar 4.40. Contoh hasil eksekusi perintah man untuk melihat manual suatu perintah.
86
Sistem Operasi
4.3.4. Bekerja dengan GUI Secara umum bekerja dengan GUI pada sistem operasi sangat memudahkan pengguna karena pengguna hanya membutuhkan kerja mouse untuk melakukan sejumlah perintah. Mouse memiliki beberapa penggunaan, antara lain : -
klik satu kali digunakan untuk menunjuk satu file sebelum dilakukan operasi lain.
-
Klik ganda (double-click) untuk mengeksekusi suatu perintah, misalnya membuka folder dan menjalankan file yang bisa dieksekusi.
-
Klik kanan untuk membuka konteks menu (Gambar 4.41)
-
Drag and drop untuk memindahkan file dari satu tempat ke tempat lain (Gambar 4.42).
Gambar 4.41. Membuka konteks menu dengan klik kanan.
Rekayasa Perangkat Lunak
87
Gambar 4.42. Drag and drop. 4.4.
BEKERJA DALAM KOMPUTER JARINGAN
Bekerja dalam komputer yang terhubung ke jaringan, saat ini bukanlah sesuatu yang aneh. Hampir semua tempat yang memiliki banyak komputer, selalu menggunakan jaringan sebagai sarana berkomunikasi. Oleh karena itu pengetahuan dasar bagaimana dapat bekerja dalam komputer yang terhubung ke jaringan menjadi sangat penting. 4.4.1. Persiapan Ada tiga hal penting yang harus dipersiapkan dalam koneksi ke jaringan komputer, yaitu perangkat keras, perangkat lunak dan akses ke jaringan. Perangkat keras
o
Gambar 4.43. Network Interface Card
88
Sistem Operasi
Kebutuhan perangkat keras sangat bergantung pada tipe koneksi jaringan yang akan digunakan. Untuk koneksi ke jaringan LAN maka kebutuhan utama adalah NIC (Network Interface Card) yang telah terpasang dengan baik dan telah terinstal driver yang sesuai dan kabel jaringan. Untuk koneksi ke jaringan dengan cara dialup, dibutuhkan modem dan kabel telepon analog.
Kita dapat melihat apakah perangkat keras jaringan (NIC, modem atau yang lainnya) sudah terinstall dengan benar dengan memeriksa pada daftar perangkat keras yang dikenali oleh komputer. Pada sistem operasi Windows kita dapat melihat dengan cara klik kanan pada icon My Computer di desktop kemudian pilih Properties pada menu yang muncul (Gambar 4.44). Pada jendela System Properties pilih tab Hardware kemudian klik pada Device Manager (Gambar 4.44), sehingga akan muncul jendela Device Manager (Gambar 4.45). Pada Gambar 4.45 terlihat bahwa network adapter yang digunakan oleh komputer sudah dikenali dengan baik. Apabila kita menemukan gambar tanda tanya pada suatu perangkat lunak berarti perangkat keras tersebut belum dikenali dengan baik (lihat Gambar 4.45). Pada sistem operasi Linux dan keluarganya kita dapat memeriksa apakah perangkat keras sudah dikenali atau tidak dengan cara mengetikkan perintah lspci (Gambar 4.46) dan ifconfig.
Gambar 4.44. Membuka system properties.
Rekayasa Perangkat Lunak
89
Gambar 4.45. Device manager.
Gambar 4.46. Output perintah lspci untuk memeriksa network adapter.. Perangkat lunak
o
Perangkat lunak utama, selain sistem operasi adalah apakah paket TCP/IP sudah terinstall dengan benar pada komputer. Pada sistem operasi windows dapat dilakukan dengan double klik pada tipe koneksi, kemudian setelah jendela properties muncul cek apakah sudah ada TCP/IP yang sudah terinstal (Gambar 4.47).
90
Sistem Operasi
Gambar 4.47. Memeriksa protocol TCP/IP.
o
Akses ke jaringan Akses jaringan ini berhubungan dengan hak atau kewenangan kita dalam jaringan komputer yang akan kita masuki, terutama pemberian alamat IP (IP Address) dan password untuk masuk ke jaringan. Pada jaringan yang menerapkan DHCP maka kita tidak perlu khawatir karena no IP akan diberikan langsung ketika komputer berhubungan ke jaringan. Apabila tidak menggunakan DHCP maka kita harus memberikan no IP static yang diberikan oleh administrator jaringan pada komputer.
4.4.2. Konfigurasi koneksi jaringan Pada sistem operasi modern sekarang ini koneksi ke jaringan bukan pekerjaan yang menyulitkan karena hampir semua koneksi telah dijalankan otomatis oleh sistem operasi. Pada jaringan LAN yang menggunakan DHCP, komputer yang menggunakan sistem operasi Windows (versi 2000 dan yang lebih baru) maupun Linux akan secara otomatis terkoneksi ke jaringan dan memperoleh no IP dynamic. Pada sistem operasi Windows, untuk memeriksa apakah komputer sudah tersambung ke jaringan kita bisa melihat pada systray (notification area) yang terletak di bagian kanan bawah desktop (Gambar 4.48).
Rekayasa Perangkat Lunak
91
Gambar 4.48. Kondisi koneksi jaringan. 4.4.3. Berbagi file, printer, dan sumber daya lain Kelebihan utama dari jaringan komputer adalah penggunaan secara bersama berbagai macam sumber daya, seperti: file, printer, media perekam (CD-RW atau DVD-RW), scanner dan lain-lain. Pada bagian berikut ini akan dijelaskan bagaimana berbagi file dan printer. Sumber daya yang lain dapat digunakan secara bersamasama dengan cara yang tidak jauh berbeda dengan file dan printer. Berbagi file
o
Direktori atau file yang ada pada komputer kita dapat diatur agar dapat digunakan oleh komputer lain di dalam jaringan. Demikian pula sebaliknya kita dapat menggunakan direktori atau file pada komputer lain di jaringan. Untuk membagi (share) direktori atau file kita dapat menempuh cara berikut. Buka Windows Explorer, kemudian klik kanan pada direktori atau file yang akan kita share dan pilih Sharing and Security. Setelah muncul jendela properties, pilih tab Sharing dan pada bagian Network sharing and security cek pada Share this folder on the network dan beri nama untuk direktori yang di-share (Gambar 4.49).
92
Sistem Operasi
Gambar 4.49. Mengatur file sharing. Untuk bisa mengakses direktori atau file di komputer lain, kita bisa membuka Windows Eksplorer kemudian klik pada My Network Places -> Entire Network -> Microsoft Windows Network. Kita akan mendapati tampilan seperti pada Gambar 4.50. Dari sini kita bisa melihat sumber daya apa yang dibagi pada masingmasing komputer yang terhubung ke jaringan dengan cara double klik pada nama komputer.
Rekayasa Perangkat Lunak
93
Gambar 4.50. Menjelajah komputer yang ada di jaringan. Berbagi printer
o
Untuk dapat berbagi printer yang ada di komputer, cara yang hampir sama dapat kita lakukan. Pertama kita buka jendela Printers and Faxes dengan cara Start -> Settings -> Printers and Faxes. Setelah jendela terbuka, klik kanan pada printer yang akan di share dan pilih Sharing …. Setelah jendela properties printer terbuka, pilih tab Sharing dan klik pada Share this printer serta beri nama (Gambar 4.51).
Gambar 4.51. Printer sharing.
94
Sistem Operasi
4.5.
4.6.
RINGKASAN •
Sistem Operasi adalah perangkat lunak yang bertugas mengelola penggunaan sumberdaya dalam komputer dan menyediakan antarmuka bagi pengguna untuk mengakses sumberdaya tersebut.
•
Fungsi-fungsi system operasi adalah sebagai antar muka pengguna, manajemen memori, manajemen file, manajemen proses dan manajemen input/output
•
Fungsi utama BIOS (Basic Input/Output System) adalah mengidentifikasi dan mengenali perangkat keras komputer.
•
Ada beberapa sistem operasi yang dikenal yaitu DOS, Windows, Mac OS, UNIX dan Linux.
•
Setiap sistem operasi yang akan dijalankan harus diinstal terlebih dahulu.
•
Sistem operasi dapat menggunakan perintah berbasis teks atau GUI tergantung pada konfigurasi dan fasilitas yang dipunyai oleh system operasi tersebut.
untuk
SOAL-SOAL LATIHAN
1. Sebutkan pengertian sistem operasi. 2. Jelaskan fungsi-fungsi sistem operasi. 3. Bagaimanakah tahapan-tahapan proses booting suatu computer? 4. Cobalah instalasi satu distro sistem operasi linux pada sebuah computer dan cermati jalannya instalasi. Kemudian bandingkan dengan proses instalasi pada sistem Windows. Menurut kalian apakah ada perbedaan penting dalam proses instalasi kedua sistem operasi tersebut? 5. Cobalah booting pada system operasi Linux, kemudian cermati jalannya proses booting dan bandingkan dengan proses booting pada Windows. Bagaimanakah menurut kalian perbedaannya?. 6. Jalankan system operasi Linux, kemudian bukalah jendela terminal terminal. Lakukan serangkaian perintah dengan menggunakan perintah ls, cd, find, cat, cp, mv, dan mkdir. Catatlah apa yang kalian temui ketika menjalankan perintah-perintah tersebut. 7. Sebuah file mempunyai atribut –rw-r--r-- dan dimiliki oleh user bernama rony. Apakah arti dari atribut tersebut. Bagaimanakah caranya jika ada user lain supaya bias mempunyai hak akses membaca dan menulis pada file tersebut?
Rekayasa Perangkat Lunak
95
96
Sistem Operasi
Perangko dari Rusia pada Gambar 5.1. di samping ini bergambar seorang pria dengan nama Muhammad ibn Mūsā alKhwārizmī. Bagi kalian yang sedang berkecimpung dalam dunia komputer maka seharusnya mengetahui siapa orang di samping ini. Dia adalah seorang ilmuwan Islam yang karya-karyanya dalam bidang matematika, astronomi, astrologi dan geografi banyak menjadi dasar perkembangan ilmu modern. Dan dari namanya istilah yang akan kita pelajari dalam bab ini muncul. Dari Al-Khawarizmi kemudian berubah menjadi algorithm dalam Bahasa Inggris dan diterjemahkan menjadi algoritma dalam Bahasa Indonesia. Standar kompetensi algoritma (Sumber: www.wikipedia.org) pemrograman dasar terdiri atas empat kompetensi dasar. Dalam penyajian pada Gambar 5.1. Perangko bergambar buku ini, setiap kompetensi dasar memuat Muhammad ibn Mūsā al-Khwārizmī. uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab. Kompetensi dasar pada bab ini adalah menjelaskan variabel, konstanta dan tipe data, membuat algoritma/logika alur pemrograman, menerapkan pengelolaan array, dan mengoperasikan file. Sebelum mempelajari kompetensi ini ingatlah kembali sistem operasi, prinsip pemecahan masalah, dan materi-materi pendukung dari mata pelajaran matematika. Pada akhir bab, tercantum soal-soal latihan yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Artinya setelah mempelajari kompetensi dasar ini secara mandiri dengan bimbingan guru sebagai fasilitator, ukurlah sendiri kemampuan dengan mengerjakan soal-soal latihan tersebut.
Rekayasa Perangkat Lunak
97
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Menjelaskan variabel, konstanta dan tipe data o Membuat algoritma/logika alur pemrograman o Menerapkan pengelolaan array o Mengoperasikan file 5.1. VARIABEL, KONSTANTA DAN TIPE DATA Variabel, konstanta dan tipe data merupakan tiga hal yang akan selalu kita jumpai ketika kita membuat program. Bahasa pemrograman apapun dari yang paling sederhana sampai yang paling kompleks, mengharuskan kita untuk mengerti ketiga hal tersebut. 5.1.1. Variabel Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai nama (identifier) dan nilai. Perhatikan contoh berikut. Contoh 5.1. Nama variabel dan nilai. username = “joni” Nama = “Al-Khawarizmi” Harga = 2500 HargaTotal = 34000 Pada contoh 5.1. di atas, username, Nama, harga dan HargaTotal adalah nama dari variabel sedangkan “joni”, “Al-Khawarizmi”, 2500 dan 34000 adalah nilai dari masing-masing variabel. Nilai-nilai ini akan tersimpan di dalam nama variabel masing-masing sepanjang tidak kita rubah. Pada sebagian besar bahasa pemrograman, variabel harus dideklarasikan lebih dulu untuk mempermudah compiler bekerja. Apabila variabel tidak dideklarasikan maka setiap kali compiler bertemu dengan variabel baru pada kode program akan Hal ini terjadi waktu tunda karena compiler harus membuat variabel baru. memperlambat proses kerja compiler. Bahkan pada beberapa bahasa pemrograman, compiler akan menolak untuk melanjutkan proses kompilasi. Pemberian nama variabel harus mengikuti aturan yang ditetapkan oleh bahasa pemrograman yang kita gunakan. Namun secara umum ada aturan yang berlaku untuk hampir semua bahasa pemrograman. Aturan-aturan tersebut yaitu: •
Nama variabel harus diawali dengan huruf.
•
Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa diganti dengan karakter underscore (_).
98
Algoritma Pemrograman Dasar
•
Nama variabel tidak boleh mengandung karakter-karakter khusus, seperti : .,+, -, *, /, <, >, &, (, ) dan lain-lain.
•
Nama variabel tidak boleh menggunakan kata-kata kunci d bahasa pemrograman
Contoh 5.2. Contoh penamaan variabel. Penamaan yang benar namasiswa XY12 harga_total JenisMotor alamatRumah
Penamaan yang salah nama siswa (salah karena menggunakan spasi) 12X (salah karena dimulai dengan angka) harga.total (salah karena menggunakan karakter .) Jenis Motor (salah karena menggunakan spasi) for (salah karena menggunakan kata kunci bahasa pemrograman)
5.1.2. Konstanta Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa diubah. Jadi konstanta adalah juga variabel bedanya adalah pada nilai yang disimpannya. Jika nilai datanya sepanjang program berjalan tidak berubah-ubah, maka sebuah varibel lebih baik diperlakukan sebagai konstanta. Pada sebuah kode program, biasanya nilai data dari konstanta diberikan langsung di bagian deklarasi konstanta. Sedangkan untuk variabel biasanya hanya ditentukan nama variabel dan tipe datanya tanpa isian nilai data. Aturan penamaan variabel juga berlaku untuk penamaan konstanta. Demikian juga aturan penetapan tipe data. Sebagai contoh, jika kita membuat program perhitungan matematik yang menggunakan nilai pi (3.14159) yang mungkin akan muncul dibanyak tempat pada kode program, kita dapat membuat pi sebagai konstanta. Penggunaan konstanta pi akan lebih memudahkan penulisan kode program dibanding harus mengetikkan nilai 3.14159 berulang-ulang. 5.1.3. Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer. Setiap variabel atau konstanta yang ada dalam kode program, sebaiknya kita tentukan dengan pasti tipe datanya. Ketepatan pemilihan tipe data pada variabel atau konstanta akan sangat menentukan pemakaian sumberdaya komputer (terutama memori komputer). Salah satu tugas penting seorang programmer adalah memilih tipe data yang sesuai untuk menghasilkan program yang efisien dan berkinerja tinggi. Ada banyak tipe data yang tersedia tergantung jenis bahasa pemrograman yang dipakai. Namun secara umum dapat dikelompokkan seperti pada Gambar 5.2.
Rekayasa Perangkat Lunak
99
Gambar 5.2. Pengelompokkan tipe data. Tipe data primitive adalah tipe data dasar yang tersedia secara langsung pada suatu bahasa pemrograman. Sedangkan tipe data composite adalah tipe data bentukan yang terdiri dari dua atau lebih tipe data primitive.
•
Tipe data numeric
Tipe data numeric digunakan pada variabel atau konstanta untuk menyimpan nilai dalam bentuk bilangan atau angka. Semua bahasa pemrograman menyediakan tipe data numeric, hanya berbeda dalam jenis numeric yang diakomodasi. Jenis yang termasuk dalam tipe data numeric antara lain integer (bilangan bulat), dan float (bilangan pecahan). Selain jenis, dalam bahasa pemrograman juga diterapkan presisi angka yang digunakan, misalnya tipe data Single adalah tipe data untuk bilangan pecahan dengan presisi yang terbatas, sedangkan tipe data Double adalah tipe data untuk bilangan pecahan dengan presisi yang lebih akurat. Pada babbab berikutnya yang membahas aplikasi bahasa pemrograman bagian ini akan diuraikan lebih lanjut.
100
Algoritma Pemrograman Dasar
Penentuan tipe data numeric untuk suatu variabel/konstanta harus sangat berhati-hati. Manual dan petunjuk pada masing-masing bahasa pemrograman pada bagian tipe data harus diperhatikan dengan seksama. Perhatikan contoh berikut. Contoh 5.3. Penggunaan tipe data numeric. Kode Program A #include
Hasil eksekusi Program A X =12 Y =2.15 Z =25
Kode Program B #include
Hasil eksekusi Program B X =12 Y =2.15 Z =25.8
Kode Program C #include
Hasil eksekusi Program C X =12 Y =2.15 Z =25.8
Rekayasa Perangkat Lunak
101
Ketiga kode program di atas (A, B dan C) ditulis dengan bahasa C++. Sekilas sama namun berbeda pada penggunaan tipe data dan pengisian nilai. Pada kode program A, variabel x dan z kita deklarasikan bertipe data int (Integer = bilangan bulat) dan y bertipe data float (pecahan). Hasil eksekusi program A menunjukkan hasil yang tidak kita inginkan. Nilai z yang merupakan perkalian x dengan y harusnya bernilai 25.8 (hasil dari 12 x 2.15). Namun karena z dideklarasikan bertipe data int maka hasilnya menjadi 25. Dari ketiga kode program di atas yang paling benar adalah kode program C. Mengapa kode program B salah? Cobalah cermati bagian kode yang dicetak tebal kemudian tentukan dimana terjadi kesalahan. •
Character
Bersama dengan tipe data numeric, character merupakan tipe data yang paling banyak digunakan. Tipe data character kadang disebut sebagai char atau string. Tipe data string hanya dapat digunakan menyimpan teks atau apapun sepanjang berada dalam tanda petik dua (“…”) atau petik tunggal (‘…’). Perhatikan contoh berikut. Contoh 5.4. Penggunaan tipe data character. Kode program #include
Hasil eksekusi program X = 5 Isi variabel huruf = A Isi variabel kata = Java
cout << "X = " << x << endl; cout << "Isi variabel huruf = " << huruf << endl; cout << "Isi variabel kata = " << kata << endl; return 0; } Pada contoh ini kita mendeklarasikan variabel x sebagai int (Integer), sedangkan variabel huruf dan kata bertipe data char (character). Perhatikan hasil eksekusi kode program di atas. •
Boolean
Tipe data Boolean digunakan untuk menyimpan nilai True/False (Benar/Salah). Pada sebagian besar bahasa pemrograman nilai selain 0 menunjukkan True dan 0 melambangkan False. Tipe data ini banyak digunakan untuk pengambilan keputusan pada struktur percabangan dengan IF … THEN atau IF … THEN … ELSE.
102
Algoritma Pemrograman Dasar
•
Array
Array atau sering disebut sebagai larik adalah tipe data yang sudah terstruktur dengan baik, meskipun masih sederhana. Array mampu menyimpan sejumlah data dengan tipe yang sama (homogen) dalam sebuah variabel. Setiap lokasi data array diberi nomor indeks yang berfungsi sebagai alamat dari data tersebut. Penjelasan tentang array akan disampaikan lebih detil pada bagian lain dari bab ini. •
Record atau Struct
Seperti halnya Array, Record atau Struct adalah termasuk tipe data komposit. Record dikenal dalam bahasa Pascal/Delphi sedangkan Struct dikenal dalam bahasa C++. Berbeda dengan array, tipe data record mampu menampung banyak data dengan tipe data berbeda-beda (heterogen). . Sebagai ilustrasi array mampu menampung banyak data namun dengan satu tipe data yang sama, misalnya integer saja. Sedangkan dalam record, kita bisa menggunakan untuk menampung banyak data dengan tipe data yang berbeda, satu bagian integer, satu bagian lagi character, dan bagian lainnya Boolean. Biasanya record digunakan untuk menampung data suatu obyek. Misalnya, siswa memiliki nama, alamat, usia, tempat lahir, dan tanggal lahir. Nama akan akan menggunakan tipe data string, alamat bertipe data string, usia bertipe data single (numeric), tempat lahir bertipe data string dan tanggal lahir bertipe data date. Berikut ini contoh pendeklarasian record dalam Delphi. Contoh 5.5. Deklarasi tipe data record pada Delphi. Type TRecord_Siswa = Record Nama_Siswa Alamat Usia EndRecord •
: String[30] : String[50] : Real
Image
Image atau gambar atau citra merupakan tipe data grafik. Misalnya grafik perkembangan jumlah siswa SMK, foto keluarga kita, video perjalanan dan lain-lain. Pada bahasa-bahasa pemrograman modern terutama yang berbasis visual tipe data ini telah didukung dengan sangat baik. •
Date Time
Nilai data untuk tanggal (Date) dan waktu (Time) secara internal disimpan dalam format yang spesifik. Variabel atau konstanta yang dideklarasikan dengan tipe data Date dapat digunakan untuk menyimpan baik tanggal maupun jam. Tipe data ini masuk dalam kelompok tipe data composite karena merupakan bentukan dari beberapa tipe data. Berikut ini contoh tipe data dalam Visual Basic.
Rekayasa Perangkat Lunak
103
Contoh 5.6. Penggunaan tipe data date time pada Visual Basic. Dim WaktuLahir As Date WaktuLahir = “01/01/1997” WaktuLahir = “13:03:05 AM” WaktuLahir = “02/23/1998 13:13:40 AM” WaktuLahir = #02/23/1998 13:13:40 AM# •
Tipe data lain o
Subrange Tipe data subrange merupakan tipe data bilangan yang mempunyai jangkauan nilai tertentu sesuai dengan yang ditetapkan programmer. Biasanya tipe data ini mempunyai nilai batas minimum dan nilai batas maksimum. Tipe data ini didukung dengan sangat baik dalam Delphi. Berikut ini contoh deklarasi tipe data subrange dalam Delphi. Contoh 5.7. Deklarasi tipe data subrange pada Delphi. Type Var
o
BatasIndeks = 1..20 RentangTahun = 1950..2030 Indeks Tahun
: BatasIndeks : RentangTahun
Enumerasi Tipe data ini merupakan tipe data yang mempunyai elemen-elemen yang harus disebut satu persatu dan bernilai konstanta integer sesuai dengan urutannya. Nilai konstanta integer elemen ini diwakili oleh suatu nama variable yang ditulis di dalam kurung. Tipe data ini juga dijumpai pada Delphi dan bahasa pemrograman deklaratif seperti SQL. Berikut ini contoh deklarasi tipe data enumerasi dalam Delphi. Contoh 5.8. Penggunaan tipe data enumerasi. Type
Var
Hari_dlm_Minggu = (Nol, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu) Nama_Bulan = (Nol, Januari, Pebruari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, Nopember, Desember) No_Hari No_Bulan
: Hari_dlm_Minggu : Nama_Bulan
Pada contoh di atas tipe data Hari_dlm_Minggu termasuk enumerasi dengan rentang nilai Nol, Senin sampai dengan Minggu dan nilai data dari 0, 1, sampai dengan 7. Sedangkan tipe data Nama_Bulan termasuk enumerasi
104
Algoritma Pemrograman Dasar
dengan rentang nilai Nol, Januari sampai dengan Desember dan nilai data dari 0, 1, sampai dengan 12. o
Object Tipe data object digunakan untuk menyimpan nilai yang berhubungan dengan obyek-obyek yang disediakan oleh Visual Basic, Delphi dan dan bahasa pemrograman lain yang berbasis GUI. Sebagai contoh, apabila kita mempunyai form yang memiliki control Command button yang kita beri nama Command1, kita dapat mendeklarasikan variabel sebagai berikut : Contoh 5.9. Penggunaan tipe data object. Dim A As CommandButton Set A = Command1 A.Caption = “HEY!!!” A.FontBold = True Pada contoh ini variabel A dideklarasikan bertipe data Object yaitu CommandButton. Kemudian kita set variabel A dengan control Command button yang ada pada form (Command1). Dengan cara ini kita dapat mengakses seluruh property, method dan event obyek Command1 dengan menggunakan variabel A.
o
Variant Tipe data hanya ada di Visual Basic. Tipe ini adalah tipe data yang paling fleksibel di antara tipe data yang lain, karena dapat mengakomodasi semua tipe data yang lain seperti telah dijelaskan.
5.2. STRUKTUR ALGORITMA PEMROGRAMAN 5.2.1. Pengertian Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Masalah dapat berupa apa saja, dengan catatan untuk setiap masalah, ada syarat kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Konsep algoritma sering kali disetarakan dengan sebuah resep. Sebuah resep biasanya memiliki daftar bahan atau bumbu yang akan digunakan, urutan pengerjaan dan bagaimana hasil dari urutan pengerjaan tersebut. Apabila bahan yang digunakan tidak tertera (tidak tersedia) maka resep tersebut tidak akan dapat dikerjakan. Demikian juga jika urutan pengerjaannya tidak beraturan, maka hasil yang diharapkan tidak akan dapat diperoleh. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan syarat yang sama. Tingkat kerumitan dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Umumnya, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki tingkat kerumitan yang rendah, sementara algoritma yang
Rekayasa Perangkat Lunak
105
membutuhkan waktu lama untuk menyelesaikan suatu masalah membutuhkan tingkat kerumitan yang tinggi. Perhatikan algoritma sederhana berikut. Contoh 5.10. Algoritma menghitung luas segitiga. 1. 2. 3. 4. 5.
Start Baca data alas dan tinggi. Luas adalah alas kali tinggi kali 0.5 Tampilkan Luas Stop
Algoritma di atas adalah algoritma yang sangat sederhana, hanya ada lima langkah. Pada algoritma ini tidak dijumpai perulangan ataupun pemilihan. Semua langkah dilakukan hanya satu kali. Sekilas algoritma di atas benar, namun apabila dicermati maka algoritma ini mengandung kesalahan yang mendasar, yaitu tidak ada pembatasan pada nilai data untuk alas dan tinggi. Bagaimana jika nilai data alas atau tinggi adalah bilangan 0 atau bilangan negatif ? Tentunya hasil yang keluar menjadi tidak sesuai dengan yang diharapkan. Dalam kasus seperti ini kita perlu menambahkan langkah untuk memastikan nilai alas dan tinggi memenuhi syarat, misalnya dengan melakukan pengecekan pada input yang masuk. Apabila input nilai alas dan tinggi kurang dari 0 maka program tidak akan dijalankan. Sehingga algoritma di atas dapat dirubah menjadi seperti contoh berikut. Contoh 5.11. Hasil perbaikan algoritma perhitungan luas segitiga. 1. Start 2. Baca data alas dan tinggi. 3. Periksa data alas dan tinggi, jika nilai data alas dan tinggi lebih besar dari nol maka lanjutkan ke langkah ke 4 jika tidak maka stop 4. Luas adalah alas kali tinggi kali 0.5 5. Tampilkan Luas 6. Stop Dari penjelasan di atas dapat diambil kesimpulan pokok tentang algoritma. Pertama, algoritma harus benar. Kedua algoritma harus berhenti, dan setelah berhenti, algoritma memberikan hasil yang benar. 5.2.2. Cara Penulisan Algoritma Ada tiga cara penulisan algoritma, yaitu : •
Structured English (SE)
SE merupakan alat yang cukup baik untuk menggambarkan suatu algoritma. Dasar dari SE adalah Bahasa Inggris, namun kita dapat memodifikasi dengan Bahasa Indonesia sehingga kita boleh menyebutnya sebagai Structured Indonesian (SI). Algoritma seperti pada Contoh 5.10 dan 5.11 merupakan algoritma yang
106
Algoritma Pemrograman Dasar
ditulis menggunakan SI. Karena dasarnya adalah bahasa sehari-hari, maka SE atau SI lebih tepat untuk menggambarkan suatu algoritma yang akan dikomunikasikan kepada pemakai perangkat lunak. •
Pseudocode
Pseudocode mirip dengan SE. Karena kemiripan ini kadang-kadang SE dan Pseudocode dianggap sama. Pseudo berarti imitasi atau tiruan atau menyerupai, sedangkan code menunjuk pada kode program. Sehingga pseudocode adalah Pseudocode kode yang mirip dengan instruksi kode program sebenarnya. didasarkan pada bahasa pemrograman yang sesungguhnya seperti BASIC, FORTRAN atau PASCAL. Pseudocode yang berbasis bahasa PASCAL merupakan pseudocode yang sering digunakan. Kadang-kadang orang menyebut pseudocode sebagai PASCAL-LIKE algoritma. Apabila Contoh 5.10 ditulis dalam pseudocode berbasis bahasa BASIC akan tampak seperti pada contoh 5.12. Contoh 5.12. Pseudocode. 1. 2. 3. 4. 5.
Start READ alas, tinggi Luas = 0.5 * alas * tinggi PRINT Luas Stop
Pada Contoh 5.12 tampak bahwa algoritma sudah sangat mirip dengan bahasa BASIC. Pernyataan seperti READ dan PRINT merupakan keyword yang ada pada bahasa BASIC yang masing-masing menggantikan kata “baca data” dan “tampilkan”. Dengan menggunakan pseudocode seperti di atas
maka proses penterjemahan dari algoritma ke kode program menjadi lebih mudah. •
Flowchart
Flowchart atau bagan alir adalah skema/bagan (chart) yang menunjukkan aliran (flow) di dalam suatu program secara logika. Flowchart merupakan alat yang banyak digunakan untuk menggambarkan algoritma dalam bentu notasinotasi tertentu. Secara lebih detil bagian ini akan dibahas pada bagian berikutnya.
Pada flowchart ada beberapa simbol penting yang digunakan untuk membuat algoritma sebagaimana tercantum pada Gambar 5.3.
Rekayasa Perangkat Lunak
107
Notasi ini disebut Terminator yang berarti digunakan untuk menunjukkan awal dan akhir suatu algoritma Notasi ini disebut Data yang digunakan untuk mewakili data input atau output atau menyatakan operasi pemasukan data dan pencetakan hasil. Notasi ini disebut Process yang digunakan untuk mewakili suatu proses. Notasi ini disebut Decision yang digunakan untuk suatu pemilihan, penyeleksian kondisi di dalam suatu program Notasi ini disebut Preparation yang digunakan untuk memberi nilai awal, nilai akhir, penambahan/pengurangan bagi suatu variable counter. Notasi ini disebut Predefined Process yang digunakan untuk menunjukkan suatu operasi yang rinciannya ditunjukkan ditempat lain (prosedur, sub-prosedur, fungsi) Notasi ini disebut Connector yang digunakan untuk menunjukkan sambungan dari flowchart yang terputus di halaman yang sama atau haraman berikutnya. Notasi ini disebut Arrow yang digunakan untuk menunjukkan arus data atau aliran data dari proses satu ke proses lainnya. Gambar 5.3. Simbol-simbol yang digunakan dalam flowchart. Program Flowchart dapat terdiri dari dua macam, yaitu bagan alir logika program (program logic flowchart) dan bagan alir program komputer terinci (detailed Bagan alir logika program digunakan untuk computer program flowchart). menggambarkan tiap-tiap langkah di dalam program komputer secara logika dan biasanya dipersiapkan oleh seorang analis system. Sedangkan bagan alir program komputer terinci digunakan untuk menggambarkan instruksi-instruksi program komputer secara terinci dan biasanya dipersiapkan oleh seorang programmer. Apabila Contoh 5.10 dibuat program flowchartnya maka akan tampak pada gambar 5.4.
108
Algoritma Pemrograman Dasar
Bagan alir logika program
Bagan alir program komputer terinci
Gambar 5.4. Program flowchart. 5.2.3. Struktur Algoritma Berurutan Ada tiga struktur dasar yang digunakan dalam membuat algoritma yaitu struktur struktur berurutan (sequencing), pemilihan/keputusan/percabangan (branching) Sebuah dan struktur pengulangan (looping). algoritma biasanya akan menggabungkan ketiga buah struktur ini untuk menyelesaikan masalah. Pada bagian ini kita akan bahas lebih dulu struktur algoritma berurutan. Struktur berurutan dapat kita samakan dengan mobil yang sedang berjalan pada jalur lurus yang tidak terdapat persimpangan seperti tampak pada Gambar 5.5. Mobil tersebut akan melewati kilometer demi kilometer jalan sampai tujuan tercapai. Gambar 5.5. Mobil sedang berjalan pada jalur lurus.
Struktur berurutan terdiri satu atau lebih instruksi. Tiap instruksi dikerjakan secara
Rekayasa Perangkat Lunak
109
berurutan sesuai dengan urutan penulisannya, yaitu sebuah instruksi dieksekusi setelah instruksi sebelumnya selesai dieksekusi. Urutan instruksi menentukan keadaan akhir dari algoritma. Bila urutannya diubah, maka hasil akhirnya mungkin juga berubah. Menurut Goldshlager dan Lister (1988) struktur berurutan mengikuti ketentuan-ketentuan sebagai berikut: •
tiap instruksi dikerjakan satu persatu
•
tiap instruksi dilaksanakan tepat sekali, tidak ada yang diulang
•
urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana yang tertulis di dalam algoritmanya
•
akhir dari instruksi terakhir merupakan akhir algoritma.
Contoh 5.13. Flowchart untuk menghitung luas bangun. Buatlah flowchart untuk menghitung: a. volume balok b. luas lingkaran
Penyelesaian: Soal ini merupakan permasalahan dengan algoritma struktur berurutan karena tidak ada proses pemilihan atau pengulangan. Untuk volume balok, kita harus menentukan variabel input dan output yang dibutuhkan. Untuk menghitung volume balok dibutuhkan variabel input panjang, lebar dan tinggi. Sedangkan variabel outputnya adalah volume. Pada luas lingkaran dibutuhkan variabel input radius dan variabel output luas. Untuk menghitung luas lingkaran ini kita juga membutuhkan konstanta phi. Flowchart untuk dua masalah ini dapat dilihat pada Gambar 5.6. Contoh 5.14. Flowchart untuk konversi suhu. Buat flowchart untuk mengubah temperatur dalam Fahrenheit menjadi temperatur dalam Celcius dengan rumus oC = 5/9 x (oF -32).
Penyelesaian: Soal ini juga masih menggunakan algoritma dengan struktur berurutan. Variabel input yang dibutuhkan adalah F dan variabel outputnya adalah C. Flowchart untuk dua masalah ini dapat dilihat pada Gambar 5.7.
110
Algoritma Pemrograman Dasar
a. flowchart menghitung volume balok
b. flowchart menghitung luas lingkaran
Gambar 5.6. Flowchart menghitung volume balok dan luas lingkaran.
Gambar 5.7. Flowchart untuk konversi suhu.
5.2.4. Struktur Algoritma Percabangan Sebuah program tidak selamanya akan berjalan dengan mengikuti struktur berurutan, kadang-kadang kita perlu merubah urutan pelaksanaan program dan menghendaki agar pelaksanaan program meloncat ke baris tertentu. Peristiwa ini kadang disebut sebagai percabangan/pemilihan atau keputusan. Hal ini seperti halnya ketika mobil berada dalam persimpangan seperti pada Gambar 5.7. Pengemudi harus memutuskan apakah harus menempuh jalur yang kanan atau yang kiri. Pada struktur percabangan, program akan berpindah urutan pelaksanaan jika suatu kondisi yang disyaratkan dipenuhi. Pada proses seperti ini simbol flowchart Decision harus digunakan.
Gambar 5.8. Mobil sedang dalam persimpangan.
Rekayasa Perangkat Lunak
111
Simbol decision akan berisi pernyataan yang akan diuji kebenarannya. pengujian akan menentukan cabang mana yang akan ditempuh.
Nilai hasil
Contoh 5.15. Struktur percabangan untuk masalah batasan umur. Sebuah aturan untuk menonton sebuah film tertentu adalah sebagai berikut, jika usia penonton lebih dari 17 tahun maka penonton diperbolehkan dan apabila kurang dari 17 tahun maka penonton tidak diperbolehkan nonton. Buatlah flowchart untuk permasalahan tersebut.
Penyelesaian: Permasalahan diatas merupakan ciri permasalahan yang menggunakan struktur percabangan. Hal ini ditandai dengan adanya pernyataan jika .. maka ...(atau If ... Then dalam Bahasa Inggris.
Flowchart penyelesaian masalah tampak pada Gambar 5.9.
Pada gambar tersebut, tampak penggunaan simbol Decision. Pada simbol ini terjadi pemeriksaan kondisi, yaitu apakah usia lebih dari 17 tahun atau tidak. Jika jawaban ya maka program akan menghasilkan keluaran teks “Silahkan Menonton”, sedangkan jika input usia kurang dari 17 tahun maka program akan menghasilkan keluaran teks “Anda Tidak Boleh Menonton”.
Gambar 5.9. Flowchart penyelesaian masalah nonton film.
112
Algoritma Pemrograman Dasar
Contoh 5.16. Struktur percabangan untuk perhitungan dua buah bilangan. Dalam suatu perhitungan nilai P = X + Y. Jika P positif, maka Q = X * Y, sedangkan jika negative maka nilai Q = X/Y. Buatlah flowchart untuk mencari nilai P dan Q
Penyelesaian: Pada contoh ini input yang dibutuhkan adalah nilai X dan Y, sedangkan proses pemeriksaan kondisi dilakukan pada nilai P apakah positif (termasuk 0) ataukah negative. Perhatikan flowchart penyelesaian masalah pada Gambar 5.10.
Gambar 5.10. Flowchart penyelesaian untuk perhitungan dua buah bilangan. Kedua contoh di atas (5.15 dan 5.16) merupakan contoh struktur percabangan sederhana yang melibatkan hanya satu percabangan. Pada masalah-masalah yang lebih rumit, kita akan menjumpai lebih banyak percabangan. Kita juga akan menjumpai suatu struktur percabangan berada di dalam struktur percabangan yang lain, atau yang biasa disebut nested (bersarang). Perhatikan contoh-contoh berikut.
Rekayasa Perangkat Lunak
113
Contoh 5.17. Struktur percabangan bersarang untuk masalah fotokopi. Sebuah usaha fotokopi mempunyai aturan sebagai berikut : -
jika yang fotokopi statusnya adalah langganan, maka berapa lembar pun dia fotokopi, harga perlembarnya Rp. 75,-
-
jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100 lembar harga perlembarnya Rp. 100,-. Sedangkan jika lebih atau sama dengan 100 lembar maka harga perlembarnya Rp. 85,-.
Buat flowchart untuk menghitung total harga yang harus dibayar jika seseorang memfotokopi sejumlah X lembar.
Penyelesaian: Pada contoh ini, masalah terlihat lebih rumit. Ada dua percabangan yang terjadi. Yang pertama adalah pemeriksaan apakah status seseorang pelanggan atau bukan. Kedua, apabila status seseorang bukan pelanggan, maka dilakukan pemeriksaan berapa jumlah lembar fotokopi, apakah lebih dari 100 lembar atau tidak. Pada soal ini kita juga menjumpai apa yang disebut sebagai nested. Perhatikan pernyataan pada syarat kedua dari persoalan di atas.
jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100 lembar harga perlembarnya Rp. 100 pernyataan jika yang kedua berada di dalam jika yang pertama. Input yang dibutuhkan untuk permasalahan ini adalah status orang yang fotokopi dan jumlah lembar yang difotokopi. Sehingga variable input yang digunakan adalah: -
Status untuk status orang yang fotokopi
-
JLF untuk jumlah lembar yang difotokopi
Selain itu terdapat variable dengan nama HPP yang digunakan untuk menyimpan harga per lembar dan TH untuk menyimpan nilai total harga. Perhatikan, variable Status bertipe data char, sehingga penulisannya harus menggunakan tanda “ “.
Flowchart penyelesaian masalah ini dapat dilihat pada Gambar 5.11.
114
Algoritma Pemrograman Dasar
Gambar 5.11. Flowchart penyelesaian untuk masalah fotokopi. Contoh 5.18. Struktur percabangan bersarang untuk masalah kelulusan siswa. Aturan kelulusan siswa pada mata pelajaran Pemrograman Web diterapkan sebagai berikut : •
Jika nilai ujian tengah semester (UTS) lebih besar dari 70 maka siswa dinyatakan lulus dan Nilai Akhir sama dengan nilai UTS.
•
Jika nilai UTS kurang atau sama dengan 70 maka siswa dinyatakan lulus jika Nilai Akhir lebih besar atau sama dengan 60 dimana Nilai Akhir = (nilai UTS x 40%) + (nilai UAS x 60%).
Buatlah flowchart penyelesaian masalah tersebut apabila output yang diinginkan adalah NIM, Nama Siswa, Nilai Akhir dan Status Kelulusan.
Rekayasa Perangkat Lunak
115
Penyelesaian: Pada contoh ini, ada dua percabangan. Yang pertama adalah pemeriksaan apakah nilai UTS siswa lebih dari 70. Kedua, apabila nilai UTS tidak lebih dari 70, maka dilakukan pemeriksaan apakah nilai akhir lebih dari 60. Input yang dibutuhkan untuk permasalahan ini adalah NIM, nama siswa, nilai UTS, dan nilai UAS. Sehingga variable input yang digunakan adalah: NIM untuk Nomor induk siswa, nama untuk nama siswa, NUTS untuk nilai ujian tengah semester, dan NUAS untuk nilai ujian akhir semester. Sedangkan variabel ouput terdiri dari NA yang digunakan untuk menyimpan nilai akhir dan Status untuk menyimpan status kelulusan.
Gambar 5.12. Flowchart penyelesaian untuk kelulusan siswa.
116
Algoritma Pemrograman Dasar
5.2.5. Struktur Algoritma Pengulangan Dalam banyak kasus seringkali kita dihadapkan pada sejumlah pekerjaan yang harus diulang berkali. Salah satu contoh yang gampang kita jumpai adalah balapan mobil seperti tampak pada gambar 5.13. Mobil-mobil peserta harus mengelilingi lintasan sirkuit berkali-kali sesuai yang ditetapkan dalam aturan lomba. Siapa yang mencapai garis akhir paling cepat, dialah yang menang.
Gambar 5.13. Lomba balap mobil di sirkuit.
Pada pembuatan program komputer, kita juga kadang-kadang harus mengulang satu atau sekelompok perintah berkali-kali agar memperoleh hasil yang diinginkan. Dengan menggunakan komputer, eksekusi pengulangan mudah dilakukan. Hal ini karena salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk mengerjakan tugas atau suatu instruksi berulangkali tanpa merasa lelah, bosan, atau malas. Bandingkan dengan pengendara mobil balap, suatu ketika pasti dia merasa lelah dan bosan untuk berputar-putar mengendarai mobil balapnya. Struktur pengulangan terdiri dari dua bagian : 1. Kondisi pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan pengulangan. Syarat ini biasanya dinyatakan dalam ekspresi Boolean yang harus diuji apakah bernilai benar (true) atau salah (false) 2. Badan pengulangan (loop body), yaitu satu atau lebih instruksi yang akan diulang Pada struktur pengulangan, biasanya juga disertai bagian inisialisasi dan bagian terminasi. Inisialisasi adalah instruksi yang dilakukan sebelum pengulangan dilakukan pertama kali. Bagian insialisasi umumnya digunakan untuk memberi nilai awal sebuah variable. Sedangkan terminasi adalah instruksi yang dilakukan setelah pengulangan selesai dilaksanakan. Ada beberapa bentuk pengulangan yang dapat digunakan, masing-masing dengan syarat dan karakteristik tersendiri. Beberapa bentuk dapat dipakai untuk kasus yang sama, namun ada bentuk yang hanya cocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan untuk masalah tertentu dapat mempengaruhi kebenaran algoritma. Pemilihan bentuk pengulangan yang tepat bergantung pada masalah yang akan diprogram.
Rekayasa Perangkat Lunak
117
•
Struktur pengulangan dengan For
Pengulangan dengan menggunakan For, merupakan salah teknik pengulangan yang paling tua dalam bahasa pemrograman. Hampir semua bahasa pemrograman menyediakan metode ini, meskipun sintaksnya mungkin berbeda. Pada struktur For kita harus tahu terlebih dahulu seberapa banyak badan loop akan diulang. Struktur ini menggunakan sebuah variable yang biasa disebut sebagai loop’s counter, yang nilainya akan naik atau turun selama proses pengulangan. Flowchart umum untuk struktur For tampak pada Gambar 5.14. Perhatikan penggunaan simbol preparation pada flowchart tersebut.
Gambar 5.14. Struktur algoritma pengulangan dengan For. Dalam mengeksekusi sebuah pengulangan dengan For, urutan langkahlangkah adalah sebagai berikut : 1.
Menetapkan nilai counter sama dengan awal.
2.
Memeriksa apakah nilai counter lebih besar daripada nilai akhir. Jika benar maka keluar dari proses pengulangan. Apabila kenaikan bernilai negatif, maka proses akan memeriksa apakah nilai counter lebih kecil daripada nilai akhir. Jika benar maka keluar dari proses pengulangan.
3.
Mengeksekusi pernyataan yang ada di badan loop
4.
Menaikkan/menurunkan nilai counter sesuai dengan jumlah yang ditentukan pada argument increment. Apabila argument increment tidak ditetapkan maka secara default nilai counter akan dinaikkan 1.
5.
Ulang kembali mulai langkah no 2.
118
Algoritma Pemrograman Dasar
Satu hal yang penting yang harus kita perhatikan adalah nilai counter selalu ditetapkan diawal dari pengulangan. Apabila kita mencoba merubah nilai akhir pada badan loop, maka tidak akan berdampak pada berapa banyak pengulangan akan dilakukan. Contoh 5.19. Algoritma untuk mencetak pernyataan sebanyak 100 kali Mungkin kalian pernah ketika masih di sekolah dasar melakukan perbuatan nakal yang membuat kalian disuruh menuliskan pernyataan tertentu sebanyak 100 kali sebagai hukuman atas kenakalan tersebut. Misalkan pernyataan yang harus ditulis adalah “Saya tidak akan mengulangi perbuatan itu lagi”. Bagaimanakah caranya algoritma untuk kasus ini?
Penyelesaian: Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama I. Nilai awalnya adalah 1 dan nilai akhirnya adalah 100. Sedangkan increment atau kenaikan tiap kali pengulangan dari I adalah satu. Perintah untuk mencetak pernyataan akan diulang satu persatu sampai nilai akhir dari counter terpenuhi (100). Flowchart penyelesaian untuk contoh ini dapat dilihat pada Gambar 5.15.
Gambar 5.15. Flowchart menulis pernyataan 100 kali. Perhatikan bagaimana mudahnya kita melakukan pengulangan. Pada Gambar 5.15 tersebut increment tidak dicantumkan, karena sesuai langkah-langkah yang dijelaskan sebelumnya, jika tidak dicantumkan maka otomatis nilai increment adalah satu.
Rekayasa Perangkat Lunak
119
Contoh 5.20. Flowchart untuk mencetak anggota suatu himpunan. Diketahui sebuah himpunan A yang beranggotakan bilangan 1, 3, 5, .., 19. Buatlah
flowchart untuk mencetak anggota himpunan tersebut. Penyelesaian:
Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama A (sesuai dengan nama himpunan). Nilai awalnya adalah 1 dan nilai akhirnya adalah 19. Dari pola himpunan kita tahu bahwa kenaikan bilangan adalah 2 (1 ke 3, 3 ke 5, dan seterusnya). Sehingga bisa kita nyatakan increment atau kenaikan tiap kali pengulangan dari A adalah 2. Flowchart penyelesaian untuk contoh ini dapat dilihat pada Gambar 5.16.
Gambar 5.16. Flowchart mencetak anggota himpunan. Pada Gambar 5.16 tersebut, perhatikan pada simbol preparation. Terdapat tambahan pernyataan step 2. Inilah yang disebut sebagai increment. Setiap kali pengulangan, maka nilai counter yaitu A akan bertambah 2 sehingga yang akan tercetak adalah 1, 3, 5, .., 19. Contoh 5.21. Menentukan hasil dari suatu flowchart pengulangan. Perhatikan flowchart pada Gambar 5.17. Tentukan hasil dari flowchart tersebut.
Penyelesaian: Pada contoh ini, kita mencoba menentukan hasil dari sebuah flowchart. Bagaimana menurut kalian jawabannya? Marilah kita uraikan jalannya fowchart tersebut. Pada flowchart, setelah Start, kita meletakkan satu proses yang berisi pernyataan A = 1. Bagian inilah yang disebut inisialisasi. Kita memberi nilai awal untuk A = 1. Variabel counter-nya adalah X dengan nilai awal 1 dan nilai
120
Algoritma Pemrograman Dasar
akhir 10, tanpa increment (atau secara default increment-nya adalah 1). Ketika masuk ke badan loop untuk pertama kali maka akan dicetak langsung nilai variabel A. Nilai variabel A masih sama dengan 1. Kemudian proses berikutnya adalah pernyataan A = A + 2. Pernyataan ini mungkin agak aneh, tapi ini adalah sesuatu yang pemrograman. Arti dari pernyataan ini adalah gantilah nilai A yang lama dengan hasil penjumlah nilai A lama ditambah 2. Sehingga A akan bernilai 3. Kemudian dilakukan pengulangan yang ke-dua. Pada kondisi ini nilai A adalah 3, sehingga yang tercetak oleh perintah print adalah 3. Baru kemudian nilai A kita ganti dengan penjumlahan A + 2. Nilai A baru adalah 5. Demikian seterusnya. Sehingga output dari flowchart ini adalah 1, 3, 5, 7, .., 19. Kita dapat melihat sekarang bahwa Gambar 5.16 dan 5.17 memberikan output yang sama. Dari kedua flowchart tersebut, Gambar 5.17 flowchart yang merupakan disarankan. Meskipun lebih panjang tetapi lebih terstruktur. Selain itu tidak semua bahasa pemrograman memberi fasilitas pengaturan increment.
Flowchart pada Gambar 5.17 harus kita perhatikan benar-benar, terutama posisi pernyataan Print A. Cobalah membalik posisinya sehingga letak pernyataan A = A + 2 berada di atas pernyataan Print A. Bagaimanakah hasilnya?
Gambar 5.17. Flowchart mencetak bilangan tertentu.
Seperti halnya struktur percabangan, kita juga akan menjumpai bentuk struktur pengulangan bersarang (nested). Artinya, ada suatu pengulangan yang berada di dalam pengulangan yang lain. Perhatikan Contoh 5.22 berikut ini.
Contoh 5.21. Menentukan hasil dari suatu flowchart pengulangan. Perhatikan flowchart pada Gambar 5.18. Tentukan hasil dari flowchart tersebut.
Penyelesaian: Pada contoh ini, kita mencoba menentukan hasil dari sebuah flowchart dengan pengulangan bersarang. Bagaimana menurut kalian jawabannya? Marilah kita uraikan jalannya flowchart tersebut.
Rekayasa Perangkat Lunak
121
Pada Gambar 5.18 tersebut, terlihat ada dua simbol preparation. Yang pertama dengan variabel counter X dan yang kedua dengan variabel counter Y. Dalam posisi, variabel counter Y terletak setelah variabel counter X. Hal ini berarti pengulangan dengan variabel counter Y terletak di dalam variabel counter X. Inilah yang disebut sebagai pengulangan bersarang. Pada bentuk pengulangan seperti ini, alur eksekusi program akan berjalan sebagai berikut:
122
•
Variabel X akan diisi dengan nilai awal counter-nya yaitu 1.
•
Variabel Y akan diisi dengan nilai awal counter-nya yaitu 0
•
Nilai Z dihitung dengan mengalikan X dengan Y. Nilai X = 1 dan nilai Y = 0 jadi nilai Z = 0
•
Nilai X, Y dan Z dicetak di layar.
•
Alur berputar, dan nilai Y dinaikkan menjadi 1 sedangkan nilai X masih satu (karena bagian X belum berputar).
•
Nilai Z = 1 hasil perkalian X = 1 dan Y = 1.
•
Nilai X, Y, dan Z akan dicetak lagi di layar.
•
Alur berputar kembali sehingga nilai Y menjadi 2, sehingga nilai Z akan menjadi 2.
•
Setelah ini perputaran akan keluar dari Y karena nilai akhir counter yaitu sudah tercapai.
•
Nilai X akan dinaikkan 1 menjadi 2, dan proses kembali melakukan pengulangan pada bagian Y seperti di atas.
•
Proses pengulangan diulang terus sampai nilai akhir dari counter X yaitu 3 tercapai. Sehingga hasil akhir dari flowchart tersebut adalah sebagai berikut:
Algoritma Pemrograman Dasar
Gambar 5.18. Flowchart dengan pengulangan bersarang.
X 1 1 1 2 2 2 3 3 3
Y 0 1 2 0 1 2 0 1 2
Z 0 1 2 0 2 4 0 3 6
Dari Contoh 5.21. di atas kita bisa melihat ada aturan-aturan yang harus dipenuhi dalam pengulangan bersarang, yaitu:
•
•
Masing-masing pengulangan (badan loop) mempunyai variabel counter sendiri-sendiri.
•
Pengulangan-pengulangan tersebut tidak boleh tumpang tindih. Struktur pengulangan dengan While
Pada pengulangan dengan For, banyaknya pengulangan diketahui dengan pasti karena nilai awal (start) dan nilai akhir (end) sudah ditentukan diawal pengulangan. Bagaimana jika kita tidak tahu pasti harus berapa kali mengulang? Pengulangan dengan While merupakan jawaban dari permasalahan ini. Seperti halnya For, struktur pengulangan dengan While juga merupakan struktur yang didukung oleh hampir semua bahasa pemrograman namun dengan sintaks yang berbeda. Struktur While akan mengulang pernyataan pada badan loop sepanjang kodisi pada While bernilai benar. Dalam artian kita tidak perlu tahu pasti berapa kali diulang. Yang penting sepanjang kondisi pada While dipenuhi maka pernyataan pada badan loop akan diulang. Flowchart umum untuk struktur While dapat dilihat pada Gambar 5.19.
Gambar 5.19. Flowchart umum While.
Pada Gambar 5.19., tampak bahwa simbol preparasi untuk pengulangan seperti pada For tidak digunakan lagi. Namun kita menggunakan simbol decision untuk mengendalikan pengulangan. Selain kondisi, biasanya pada pengulangan While harus dilakukan inisialisasi variabel terlebih dahulu.
Rekayasa Perangkat Lunak
123
Contoh 5.22. Pengulangan dengan While untuk mencetak nilai tertentu. Perhatikan flowchart pada Gambar 5.20. tersebut?
Bagaimanakah output dari flowchart
Penyelesaian: Perhatikan Gambar 5.20. bisakah kalian menentukan flowchart hasil dari tersebut? Perhatikan tahapan eksekusi flowchart berikut ini.
124
1.
Pada flowchart ini ada dua variabel yang kita gunakan yaitu A dan B. Kedua variabel tersebut kita inisialisasi nilai awalnya (A = 1 dan B = 0) sebelum proses loop terjadi. Variabel A adalah variabel counter.
2.
Pada simbol decision, nilai A akan diperiksa apakah memenuhi kondisi (< 10). Jika Ya maka perintah berikutnya dieksekusi, jika tidak maka program akan berhenti. Pada awal eksekusi ini kondisi akan terpenuhi karena nilai A = 1.
Gambar 5.20. Flowchart pengulangan dengan while untuk mencetak nilai tertentu.
3.
Jalankan perintah Print B.
4.
Nilai variabel A kemudian diganti dengan nilai A lama (1) ditambah 2. Sehingga nilai variabel A baru adalah 3. Sedangkan nilai variabel B = 9 (hasil perkalian A = 3).
5.
Program akan berputar kembali untuk memeriksa apakah nilai variabel A masih lebih kecil dari 10. Pada kondisi ini nilai A = 3, sehingga kondisi masih terpenuhi. Kemudian langkah berulang ke langkah ke 3. Begitu seterusnya sampai nilai variabel A tidak lagi memenuhi syarat kurang dari 10. Sehingga output dari flowchart ini adalah : 0, 9, 25, 49, 81.
Algoritma Pemrograman Dasar
Seperti halnya pengulangan dengan For, pengulangan dengan While juga memungkinkan terjadinya pengulangan bersarang. Aturan dan cara yang dilakukan sama dengan pengulangan dengan For. Pada beberapa bahasa pemrograman juga disediakan pengulangan dengan Kedua cara ini mirip dengan While, cara Do ... Loop dan Repeat .. Until. perbedaannya adalah letak dari kondisi. Pada While pemeriksaan kondisi diletakkan sebelum badan loop. Sedangkan Do ... Loop dan Repeat ... Until, pemeriksaan kondisi dilakukan setelah badan loop. 5.3. PENGELOLAAN ARRAY Variabel array telah kita singgung di bagian depan, namun masih sangat terbatas. Pada bagian ini kita akan pelajari lebih detil tentang array. 5.3.1. Pengertian Array Variabel-variabel yang kita gunakan selama ini adalah variable biasa yang memiliki sifat bahwa sebuah nama variable hanya dapat menyatakan sebuah nilai numeric atau string pada suatu saat. Apabila kita ingin memberi nilai yang baru pada variable tersebut maka nilai lama akan hilang tergantikan oleh nilai yang baru. Bagaimana apabila kita ingin menyimpan beberapa nilai/data dalam sebuah variable dengan nama yang sama, tetapi semua nilai tetap tersimpan? Solusi yang dapat dilakukan adalah dengan menggunakan indeks pada nama variable tersebut. Cara ini biasa disebut dengan array. Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui indeksnya. Indeks array haruslah tipe data yang menyatakan keterurutan, misalnya integer atau string. Array dapat dianalogikan sebagai sebuah lemari atau locker yang memiliki sederetan kotak penyimpanan yang diberi nomor berurutan (lihat Gambar 5.21). Untuk menyimpan atau mengambil sesuatu dari kotak tertentu kita hanya cukup mengetahui nomor kotaknya saja.
Gambar 5.21. Lemari dengan banyak kotak laci di dalamnya Pada variabel array, kita tidak hanya menentukan tipe datanya saja, tetapi juga jumlah elemen dari array tersebut atau dalam hal ini adalah batas atas indeksnya. Pada banyak bahasa pemrograman seperti C++, Visual Basic, dan beberapa yang lainnya, nilai indeks awal adalah 0 bukan 1. Cara menuliskan variabel array berbeda-
Rekayasa Perangkat Lunak
125
beda tergantung bahasa pemrograman apa yang dipakai. Tetapi yang pasti tipe data harus disebutkan dan batas atas indeks harus ditentukan. Untuk mengisi data pada array kita dapat langsung menentukan pada indeks berapa kita akan isikan demikian juga untuk memanggil atau menampilkan data dari array. Contoh deklarasi, pengisian dan pemanggilan array adalah sebagai berikut. Contoh 5.23. Penulisan array pada C++ dan Visual Basic. Array pada C++ #include
Array pada Visual Basic ‘Mendeklarasikan array A dengan 3 buah elemen bertipe integer
int main() {
Dim A (2) as Integer
// Mendeklarasikan array A dengan 3 buah elemen bertipe int int A[3]; // Mengisikan array A[0] = 5; A[1] = 10; A[2] = 20;
nilai
elemen
‘Mengisikan nilai elemen array A(0) = 5; A(1) = 10; A(2) = 20; ‘Menampilkan array Print A(0); Print A(1); Print A(2);
nilai
elemen
// Menampilkan nilai elemen array cout<<"Nilai elemen ke-1 = "<
return 0;
Perhatikan pada kedua kode di atas. Pada pendeklarasian variabel array nilai maksimal indeks adalah 2 tetapi jumlah elemennya ada 3 karena indeks dimulai dari 0 bukan dari 1. 5.3.2. Pencarian Data dalam Array Salah satu permasalahan yang sering dijumpai dalam array adalah bagaimana mencari elemen tertentu dari array. Misalnya pada kasus loker pada Gambar 5.21 di atas tersedia 100 kotak. Kemudian kita diminta untuk mencari nomor kotak keberapa yang dimiliki oleh seorang siswa bernama “Rudi”. Contoh yang lain, misalkan ada
126
Algoritma Pemrograman Dasar
banyak siswa dalam satu sekolah dan kita diminta mencari data seorang siswa dengan nama tertentu atau alamat tertentu. Perhatikan contoh berikut. Contoh 5.24. Pencarian pada array. A[0] A[1] A[2] A[3] A[4] A[5]
= = = = = =
23 22 45 12 10 34
Manakah elemen yang berisi 12
Pada contoh ini kita diminta mencari elemen yang berisi angka 12 dari sekumpulan elemen dalam array. Ada 6 elemen pada array tersebut. Menurut kalian bagaimanakah algoritma penyelesaiannya? Cara yang paling umum dan paling mudah dilakukan adalah dengan cara pencarian berurutan (linear search). Pada masa lalu cara ini dianggap tidak efisien karena membutuhkan waktu lama. Namun dengan perkembangan komputer yang sangat cepat, waktu eksekusi algoritma ini tidak terlalu dipermasalahkan. Cara ini dilakukan dengan cara membandingkan isi dari elemen dengan apa yang kita cari. Satu per satu dimulai dari elemen yang paling awal. Apabila kita terapkan pada Contoh 5.24, maka eksekusi program akan berlangsung berurutan sebagai berikut: •
Tetapkan bilangan yang ingin kita cari (yaitu 12)
•
Ambil elemen paling awal (yaitu A[0]), bandingkan isi elemen tersebut (yaitu 23) dengan bilangan yang kita cari. Jika sama maka stop.
•
Jika tidak maka lanjutkan dengan elemen berikutnya (yaitu A[1]), bandingkan isi elemen tersebut dengan bilangan yang kita cari. Jika sama maka stop.
•
Jika tidak maka lanjutkan dengan elemen berikutnya. Dan seterusnya sampai dijumpai elemen yang berisi sama dengan bilangan yang kita cari.
Contoh 5.24 akan memberikan hasil elemen A[3] yang memiliki isi 12. Apabila digambarkan dalam bentuk flowchart maka akan tampak seperti pada Gambar 5.22.
Rekayasa Perangkat Lunak
127
Flowchart
Keterangan - I adalah variabel counter sekaligus indeks -
N adalah batas atas dari indeks
-
Bil[I] adalah nama variabel array yang berisi bilangan
-
A adalah bilangan yang kita cari
Gambar 5.22. Flowchart untuk pencarian bilangan. Pada flowchart di Gambar 5.22, kita menggunakan pengulangan model While. Kondisi yang harus dipenuhi disini ada dua, yaitu I < N dan Bil[I] <> A. Arti dari kondisi ini adalah jika nilai indeks I kurang dari batas atas indeks dan isi dari Bil[I] tidak sama dengan bilangan yang kita cari, maka pencarian akan diteruskan pada indeks yang lebih tinggi. Selama kondisi ini dipenuhi maka pencarian akan terus dilakukan. Perhatikan bahwa di sini kita menggunakan “dan” yang artinya kedua kondisi harus dipenuhi agar dianggap benar. Pencarian akan hanya akan berhenti jika salah satu kondisi atau kedua kondisi tidak dipenuhi lagi. Sehingga misalnya Bil[I] mempunyai isi yang sama dengan A maka pencarian akan dihentikan karena kondisi pada While sudah tidak dipenuhi lagi. 5.3.3. Pengurutan Data pada Array Permasalahan lain dalam array yang juga banyak digunakan adalah bagaimana mengurutkan elemen-elemen dari variabel array tersebut. Perhatikan kembali Contoh 5.24. Pada contoh tersebut terlihat bahwa isi elemen-elemen dari array tidak dalam posisi berurutan. Bagaimanakah caranya agar isi elemen-elemen tersebut terurut dari besar ke kecil atau sebaliknya? Ada beberapa algoritma yang dapat digunakan untuk mengurutkan sekumpulan bilangan, antara lain bubble sort, selection sort, shell sort, quick sort, dan lain-lain. Pada buku ini kita akan membahas satu algoritma yaitu bubble sort. Meskipun kinerjanya tidak sebaik algoritma yang lain, algoritma ini mudah dimengerti dan banyak digunakan. Perhatikan contoh berikut.
128
Algoritma Pemrograman Dasar
Contoh 5.24. Pengurutan dengan bubble sort. Misalkan sebuah variabel array dengan nama Bil yang terdiri dari 5 elemen yang masing-masing berisi bilangan "5 1 4 2 8". Urutkan dari mulai nilai terkecil sampai ke yang paling besar.
Penyelesaian: Kita akan menggunakan metode bubble sort untuk mengurutkan array ini. Bubble sort dilakukan dengan cara membandingkan dua bilangan yang berurutan letaknya. Jika urutan letaknya benar maka dilanjutkan dengan membandingkan dua bilangan berikutnya. Jika tidak maka tukar letak dari dua bilangan tersebut. Marilah kita terapkan algoritma ini. Perhatikan tabel array berikut. Kondisi awal adalah pada posisi J = 0. Pertama kita bandingkan antara Bil[0] dengan Bil[1]. Bil[0] = 5 sedangkan Bil[1] = 1. Berdasarkan aturan bubble sort, isi dari Bil[0] tidak sesuai letaknya karena lebih besar dari isi Bil[1]. Sehingga kita perlu menukar isi dari dua elemen array ini. Sehingga Bil[0] = 1 dan Bil[1] = 5 (perhatikan baris pada J = 1). Langkah berikutnya kita membandingkan Bil[1] dengan Bil[2]. Bil[1] = 5 dan Bil[2] = 4, sehingga kembali kita harus menukar isi dari elemen ini (perhatikan baris J = 2). Hal ini terus dilakukan sampai pada perbandingan Bil[3] dengan Bil[4]. J 0 1 2 3 4
Bil[0] 5 1 1 1 1
Bil[1] 1 5 4 4 4
Bil[2] 4 4 5 2 2
Bil[3] 2 2 2 5 5
Bil[4] 8 8 8 8 8
Pada posisi akhir dari tabel di atas, kita lihat bahwa bilangan belum terurut sepenuhnya. Karena kita baru menggunakan satu kali putaran dengan Bil[0] sebagai patokan. Kita akan lakukan perbandingan lagi, namun dengan Bil[1] sebagai patokan. Hal ini karena Bil[0] pasti sudah berisi bilangan paling kecil. Sehingga tabel baru kita buat seperti berikut. J 1 2 3 4
Bil[0] 1 1 1 1
Bil[1] 4 2 2 2
Bil[2] 2 4 4 4
Bil[3] 5 5 5 5
Bil[4] 8 8 8 8
Pada posisi tabel di atas, sebenarnya urutan bilangan sudah benar, tapi algoritma belum berhenti karena algoritma belum memeriksa putaran yang berikutnya. Sehingga diperlukan dua putaran lagi dengan dengan dasar masing-masing pembanding adalah Bil[2] dan Bil[3]. Kedua tabel tersebut adalah sebagai berikut.
Rekayasa Perangkat Lunak
129
5.23.
J 2 3 4
Bil[0] 1 1 1
Bil[1] 2 2 2
Bil[2] 4 4 4
Bil[3] 5 5 5
Bil[4] 8 8 8
J 3 4
Bil[0] 1 1
Bil[1] 2 2
Bil[2] 4 4
Bil[3] 5 5
Bil[4] 8 8
Kalau digambarkan dalam bentuk flowchart akan tampak seperti pada Gambar
Gambar 5.23. Flowchart untuk pengurutan bilangan.
5.4. OPERASI FILE File seringkali digunakan untuk menyimpan data agar data tidak hilang. Data atau yang ada dan dihasilkan pada program akan hilang ketika program diakhiri, sehingga file digunakan untuk menyimpan data tersebut. Ada dua jenis file yaitu file program dan file data. File program berisi kode-kode program sedangkan file data hanya berisi data. File data terdiri dari dua jenis yaitu file data berurutan (sequential data file) dan file data acak (random-access data file). Perbedaan utama dari kedua jenis file data ini adalah dapat dilihat pada tabel berikut.
130
Algoritma Pemrograman Dasar
File data berurutan Record atau baris data harus dibaca berurutan mulai dari yang pertama Panjang field untuk setiap record tidak perlu sama Pengubahan serta penambahan record tertentu sukar dilakukan
File data acak Record tidak perlu dibaca berurutan Panjang field untuk setiap record harus sama Pengubahan serta penambahan record lebih mudah dilakukan
5.4.1. Algoritma Penulisan Data pada File Algoritma yang digunakan untuk penulisan data untuk file data berurutan maupun acak secara prinsip sama, hanya modusnya yang berbeda. Berikut ini adalah algoritma penulisan data dalam SE. Open “modus”,
Rekayasa Perangkat Lunak
131
untuk dimuat ke dalam program. mencetak data ke layar komputer.
Sedangkan pernyataan print digunakan untuk
Contoh 5.26. Contoh penerapan algoritma penulisan data. File data dengan nama “siswa.dat” seperti pada contoh 5.25 yang field-nya adalah nama siswa, alamat, nomor telepon. Maka untuk membaca data adalah sebagai berikut. Open “I”, #2, “siswa.dat” While not EOF: Input #2,
Ringkasan •
Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai nama (identifier) dan nilai.
•
Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa diubah.
•
Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer.
•
Tipe data dapat dikelompokkan menjadi tipe data primitive dan tipe data composite. Tipe data primitive terdiri dari numeric, character, dan bolean. Sedangkan tipe data composite terdiri dari array, record/struct, image, date time, subrange, enumerasi, obyek dan variant.
•
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Algoritma harus benar dan harus berhenti. Setelah berhenti, algoritma memberikan hasil yang benar.
•
132
Algoritma dapat ditulis dengan cara Structured English, Pseudocode dan
Flowchart.
•
Struktur berurutan terdiri satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya.
•
Pada struktur percabangan, program akan berpindah urutan pelaksanaan jika suatu kondisi yang disyaratkan dipenuhi.
•
Struktur pengulangan terdiri dari dari kondisi pengulangan dan badan pengulangan dan dapat dilakukan dengan For dan While.
•
Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui indeksnya.
Algoritma Pemrograman Dasar
Operasi pencarian pada array dapat dilakukan dengan cara linear search sedangkan pengurutan dengan metode bubble sort. •
5.6.
File data ada yang bersifat urut dan ada yang acak. Metode pembacaan dan penulisan dibedakan dari modusnya.
Soal-Soal Latihan
1. Tentukan salah atau benar pada nama-nama variabel berikut ini. Jika salah cobalah berikan alasan. a. b. c. d. e.
nama.guru NamaGuru 2x harga/buku hargaPerBuku
2. Tentukan tipe data yang cocok untuk hal-hal berikut ini (perhatikan ini bukan nama variabel) dan jelaskan alasannya. a. b. c. d. e. f.
Jumlah murid Berat badan Tinggi badan Nama siswa Tempat lahir Tanggal lahir
3. Lihat kembali Contoh 5.3. a. Jika pada kode program A semua variabel (x, y, z) dideklarasikan bertipe data int, berapakah nilai z? b. Jika pada kode program A semua variabel (x, y, z) dideklarasikan bertipe data float, berapakah nilai z? c.
Jika pada kode program B variabel x juga dideklarasikan bertipe data float, berapakah nilai z?
4. Ada dua gelas A dan B, gelas A berisi larutan berwarna merah, gelas B berisi larutan berwarna kuning. Pertukarkan isi dari kedua gelas itu sedemikian rupa sehingga gelas A berisi larutan kuning dan gelas B berisi larutan merah. Buatlah algoritma penyelesaiannya dengan menggunakan SI (Structured Indonesia). 5. Variabel A = 6, Variabel B = 10. Buatlah flowchart untuk menukar nilai variabel A dan B sehingga variabel A = 10 dan variabel B = 6. 6. PT. Sandang Nyaman bermaksud menggunakan komputer untuk menghitung upah mingguan pegawainya. Data yang diperlukan adalah nama pegawai dan jumlah jam kerja selama seminggu. Upah per jam ditetapkan Rp. 4500,-. Buatlah flowchart untuk masalah ini jika output yang diinginkan adalah nama pegawai, jam kerja dan upah yang diterima.
Rekayasa Perangkat Lunak
133
7. Sama seperti soal no 3, tetapi jika jam kerja melebihi 25 jam per minggu maka kelebihannya dianggap lembur. Upah perjam lembur adalah satu setengah kali dari upah per jam pada kondisi biasa. Bagaimanakah flowchartnya? 8. Seorang penjual buku pelajaran SD sedang berusaha menarik pembeli buku dengan ketentuan-ketentuan sebagai berikut : •
Jika jumlah buku yang dibeli lebih kecil atau sama dengan 100 eksemplar, maka pembeli tidak mendapat potongan,
•
Jika jumlah buku yang dibeli lebih besar dari 100 tetapi kurang atau sama dengan 200 eksemplar, maka untuk 100 eksemplar yang pertama mendapat diskon 5%, sedangkan sisanya mendapat diskon 15%,
•
Jika jumlah buku yang dibeli lebih besar dari 200 eksemplar, maka untuk 100 eksemplar yang pertama didiskon 7%, untuk 100 eksemplar yang kedua didiskon 17% dan sisanya didiskon 27%.
Apabila harga satu eksemplar buku Rp. 5000, buatlah flowchart untuk menyelesaikan aturan tersebut apabila output yang diinginkan adalah Jumlah eksemplar buku yang dibeli dan total harga yang harus dibayar. (Tentukan terlebih dahulu, semua variable, konstanta dan tipe data masing-masing). 9. Lihat kembali Contoh 5.16. Buatlah flowchart untuk menghasilkan output yang sama seperti Contoh 5.16, namun dengan menggunakan pengulangan While. 10. Diketahui 2 buah himpunan, A = {1, 3, 5, ..., 19) dan B = {2, 5, 8, ..., 29}. Buatlah flowchart untuk mencari irisan dari himpunan A dan B. (Petunjuk: irisan himpunan terjadi jika nilai anggota himpunan A = nilai anggota himpunan B). 11. Buatlah flowchart untuk mencetak tabel perkalian seperti berikut: 1 1 1 1 1
x x x x x
1 2 3 4 5
= = = = =
1 2 3 4 5
2 2 2 2 2
x x x x x
1 2 3 4 5
= = = = =
2 4 6 8 10
3 3 3 3 3
x x x x x
1 2 3 4 5
= = = = =
3 6 9 12 15
4 4 4 4 4
12. Urutkan bilangan berikut ini dengan algoritma bubble sort: a. 5 - 3 - 12 – 2 - 52 b. 4 - 33 – 4 – 3 -12 -2 c.
134
5 - 3 - 12 - 2 – 50 – 52 – 10
Algoritma Pemrograman Dasar
x x x x x
1 2 3 4 5
= = = = =
4 8 12 16 20
Gambar 6.1. di samping ini saya yakin kalian pernah melihatnya. Ya, inilah notasi umum dari salah satu teori matematika, yaitu matrik. Operasi matrik, merupakan operasi yang banyak digunakan dalam banyak aktifitas yang membutuhkan perhitungan dengan model banyak bilangan. Cobalah buka kembali buku matematika kalian yang membahas matrik kalian akan melihat banyak sekali yang bisa kita lakukan dengan matrik.
Gambar 6.1. Notasi matrik.
Pernahkan kalian mendengar perangkat lunak bernama MATLAB? Perangkat lunak yang didasarkan pada operasi matrik ini sangat populer dikalangan ilmuan, insinyur dan orang-orang yang banyak berkecimpung dengan perhitungan. Dengan menggunakan array kalian juga bisa membuat program yang dapat melakukan operasi matrik seperti halnya MATLAB. Standar kompetensi algoritma pemrograman lanjutan terdiri atas empat kompetensi dasar yaitu, menggunakan array multidimensi dan menggunakan prosedur dan fungsi. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab. Sebelum mempelajari kompetensi ini ingatlah kembali prinsip pemecahan masalah, algoritma pemrograman dasar dan materi-materi pendukung dari mata pelajaran matematika. Pada akhir bab, tercantum soal-soal latihan yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Artinya setelah mempelajari kompetensi dasar ini secara mandiri dengan bimbingan guru sebagai fasilitator, ukurlah sendiri kemampuan dengan mengerjakan soal-soal latihan tersebut.
Rekayasa Perangkat Lunak
135
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Menggunakan array multidimensi o Menggunakan prosedur dan fungsi 6.1. ARRAY MULTIDIMENSI 6.1.1. Pengertian Array Multidimensi Array satu dimensi seperti pada Bab 5 sangat baik untuk menyimpan data sejenis yang berurutan, namun bagaimana bila kita ingin menyimpan daftar kota dengan temperature rata-ratanya secara bersama-sama, atau menyimpan data nama Siswa dengan nilai ujiannya? Pada kasus seperti ini kita dapat menggunakan dua array satu dimensi, satu array untuk menyimpan nama dan satu array untuk menyimpan nilai. Namun ini bukanlah pilihan yang baik karena akan menyulitkan dan membuat kode program menjadi tidak efisien. Pilihan yang lebih baik adalah dengan menggunakan pendekatan Array Multidimensi. Kita dapat menyimpan dengan menggunakan array dua dimensi untuk kasus di atas. Perhatikan gambar berikut ini untuk melihat perbedaan dua array satu dimensi dengan array dua dimensi. Nama(4) Nilai(4) Joni 70 Rudi 80 Sari 45 Dono 56 Indro 77 Dua array satu dimensi
0 1 2 3 4
NilaiSiswa (4,1) Joni 70 Rudi 80 Sari 45 Dono 56 Indro 77 Array dua dimensi
Gambar 6.2. Perbedaan array satu dimensi dan dua dimensi Array dua dimensi mempunyai dua indeks. Indeks yang pertama menunjukkan baris sedangkan indeks yang kedua adalah kolom. Pada Gambar 6.2, variable array NilaiSiswa memiliki dua indeks yaitu indeks pertama 4 yang menyatakan nilai indeks maksimal untuk baris adalah 4 (atau ada 5 baris karena indeks baris pertama bernilai 0), sedangkan indeks kedua adalah 1 yang menunjukkan nilai indeks maksimal untuk kolom adalah 1 (atau ada 2 kolom karena indeks kolom pertama bernilai 0). Untuk mendeklarasikan array dua dimensi dapat digunakan cara sebagai berikut : Dim NilaiSiswa(4,1) Sedangkan untuk mengakses nilai pada array dua dimensi dapat digunakan sepeti contoh berikut.
136
Algoritma Pemrograman Lanjutan
Contoh 6.1. Membaca nilai array multidimensi Print NilaiSiswa(3,0) Print NilaiSiswa(3,1) Pernyataan pertama dari contoh 6.1, akan menghasilkan output “Dono” (Baris ke 4 dan kolom pertama) sedangkan pernyataan kedua menghasilkan output 56 (Baris ke 4 kolom kedua). Keuntungan menggunakan array multidimensi adalah secara konseptual, array ini lebih mudah dikelola. Sebagai contoh kita ingin membuat program permainan dan kita ingin mencari posisi dari suatu tempat pada sebuah papan permainan. Setiap bujursangkar dapat diidentifikasi dengan menggunakan dua angka, yaitu koordinat horizontal dan vertikalnya (atau baris dan kolomnya). Struktur seperti ini adalah tipikal penggunaan array dua dimensi. Koordinat horizontal adalah indeks barisnya sedangkan koordinat vertical adalah indeks kolomnya. Bentuk array multidimensi ini dapat dikembangkan menjadi lebih dari dua dimensi. Pernyataan Dim Matrix(9,9,9) akan membuat array multidimensi yang memiliki 1000 elemen (10x10x10). 6.1.2. Operasi Matriks dengan Array Multidimensi Seperti disinggung di awal bab ini, kita bisa menggunakan array untuk melakukan operasi matrik. Perhatikan Gambar 6.3 berikut ini. Gambar 6.3 ini menunjukkan matrik dua dimensi yang terdiri dari 4 baris dan 3 kolom. Atau biasa dinotasikan sebagai A4x3. Hal ini identik dengan array multidimensi dengan yang kita definisikan sebagai A(3, 2). Perhatikan kembali angka pada indeks array selalu lebih kecil satu dari jumlah sesungguhnya karena indeks selalu dimulai dengan 0. Gambar 6.3. Matrik 4 x 3. Sedangkan indeks pada matrik dimulai pada angka 1. Untuk membuat array atau matrik seperti pada Gambar 6.3, maka kita memerlukan struktur pengulangan. Bentuk for dapat kita gunakan karena kita telah tahu dengan pasti berapa baris dan berapa kolomnya. Gambar berikut menyajikan flowchart untuk membuat matrik pada Gambar 6.3. Pada Gambar 6.4. kita melihat dua buah variabel counter yaitu I dan J. I digunakan untuk membuat indeks pada baris yaitu 4 baris (1 to 4), sedangkan J digunakan untuk membuat indeks pada kolom yaitu 3 kolom (1 to 3). Pembacaan data akan berlangsung sebagai berikut: A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3)
= = = = = =
.... .... .... .... .... ....
dan seterusnya.
Rekayasa Perangkat Lunak
137
Gambar 6.4. Algoritma untuk membuat matrik 4 x 3. Contoh 6.2. Operasi penjumlahan pada matrik. Perhatikan matrik berikut ini:
Operasi matriks di atas adalah operasi penjumlahan dua buah matrik dengan dimensi yang sama yaitu 3x3. Bagaimanakah algoritma penyelesaiannya?
Penyelesaian: Pada contoh soal di atas ada dua buah matriks misalkan A matriks pertama dan B adalah matriks kedua. Selain itu juga dibutuhkan matrik ke tiga yaitu C sebagai hasil penjumlahan matriks A dan B. Gambar 6.5. menunjukkan algoritma penjumlahan dua buah matriks.
138
Algoritma Pemrograman Lanjutan
Gambar 6.5. Algoritma penjumlahan dua buah matrik
Rekayasa Perangkat Lunak
139
6.2. PROSEDUR DAN FUNGSI Setiap bahasa pemrograman selalu menyediakan fungsi-fungsi yang sudah didefinisikan oleh bahasa pemrograman tersebut (built-in function). Namun ada kalanya kita memerlukan suatu prosedur tertentu yang kita gunakan berulang kali dan tidak tersedia dalam built-in function. Prosedur adalah sekumpulan perintah yang merupakan bagian dari program yang lebih besar yang berfungsi mengerjakan suatu tugas tertentu. Prosedur atau kadang disebut subrutin / subprogram biasanya relative independent terhadap bagian kode program yang lain. Atau sebenarnya prosedur dapat berdiri sendiri. Keuntungan menggunakan prosedur adalah : o
mengurangi duplikasi kode program.
o
memberikan kemungkinan penggunaan kembali kode untuk program yang lain.
o
memecah masalah yang rumit dalam masalah-masalah yang lebih kecil dan lebih mudah diselesaikan (lihat prinsip problem reduction pada Bab 2).
o
membuat kode program lebih mudah dibaca.
o
dapat digunakan untuk menyembunyikan detil program.
Pada flowchart untuk menuliskan prosedur digunakan notasi Predefined Process (lihat Bab 5 untuk notasi flowchart). Secara skematis penggunaan prosedur dapat dilihat pada Gambar 6.6.
Gambar 6.6. Skema penggunaan prosedur. Gambar 6.6. menunjukkan ada proses utama yang terjadi dan ada prosedur yang sebenarnya merupakan bagian dari proses utama ini. Ketika proses utama membutuhkan suatu tugas tertentu maka proses utama akan memanggil prosedur tertentu menyelesaikan tugas tersebut. Perhatikan contoh berikut:
140
Algoritma Pemrograman Lanjutan
Contoh 6.3. Prosedur Buatlah algoritma menghitung luas segitiga, segiempat, dan lingkaran. Penyelesaian: Untuk membuat algoritma ini kita dapat memandang proses perhitungan luas segitiga, luas segiempat dan luas lingkaran sebagai bagian program yang berdiri sendiri. Kita dapat membuat prosedur untuk masing-masing proses. Dan kita akan memanggil prosedur tersebut dari proses utama (Gambar 6.7).
Gambar 6.7. Penyelesaian contoh 6.3. Urutan proses pada Gambar 6.7 adalah sebagai berikut. o
Pembacaan data
o
Pada proses utama akan terjadi pengecekan pada data yang dibaca,
Rekayasa Perangkat Lunak
141
o
Apabila data yang dibaca adalah untuk segitiga, maka proses utama akan memanggil prosedur hitung luas segitiga dengan membawa nilai variable yang diperlukan oleh prosedur luas hitung segitga.
o
Proses perhitungan luas segitiga hanya dilakukan pada prosedur tersebut.
o
Setelah proses perhitungan maka hasil perhitungan akan dibawa kembali ke proses utama untuk dicetak hasilnya.
Urutan proses yang sama juga terjadi jika data yang dibaca adalah untuk segiempat atau lingkaran. Prosedur yang baik memiliki ciri-ciri sebagai berikut : o
Hanya memiliki satu fungsi tujuan (logical inherent). Sebuah prosedur sebaiknya hanya memiliki satu fungsi tujuan dan tidak bercampur dengan tujuan-tujuan lain. Hal ini untuk membuat prosedur lebih focus sehingga tujuan akan dapat tercapai dengan baik.
o
Tidak tergantung pada prosedur lain (independent). Sebuah prosedur harusnya bersifat mandiri, artinya prosedur ini dapat berjalan dan diuji tanpa menunggu bagian lainnya selesai. Selain itu variable-variabel yang digunakan dalam prosedur tersebut tidak mempengaruhi variable-variabel yang digunakan pada bagian lain di keseluruhan program.
o
Berukuran kecil (small size). Yang dimaksud ukuran disini adalah panjang algoritma atau panjang kode program pada suatu prosedur. Ukuran kecil akan mudah dibaca dan diperbaiki. Apabila sebuah modul sudah terlalu besar maka sebaiknya dipertimbangkan untuk dipecah-pecah menjadi beberapa modul yang lebih kecil.
6.3.
142
Ringkasan •
Array dua dimensi mempunyai dua indeks. Indeks yang pertama menunjukkan baris sedangkan indeks yang kedua adalah kolom.
•
Pembacaan data dan penulisan data pada array multidimensi dilakukan dengan langsung menunjuk pada nomor indeksnya
•
Prosedur adalah sekumpulan perintah yang merupakan bagian dari program yang lebih besar yang berfungsi mengerjakan suatu tugas tertentu.
Algoritma Pemrograman Lanjutan
6.4.
Soal-Soal Latihan
1. Perhatikan contoh 6.1 di atas. Buatlah algoritma untuk operasi pengurangan dua buah matriks. 2. Buatlah juga algoritma untuk operasi perkalian dua buah matriks. 3. Dengan menggunakan prosedur buatlah sebuah algoritma yang membaca data matrik kemudian memilih melakukan operasi penjumlahan, pengurangan dan perkalian dua buah matrik.
Rekayasa Perangkat Lunak
143
4.
144
Algoritma Pemrograman Lanjutan
Gambar 7.1. Aplikasi yang dibangun dengan Visual Basic. Perhatikan Gambar 7.1. di atas. Tampilan pada gambar tersebut menunjukkan sebuah aplikasi yang menampilkan sekumpulan data pada tabel. Suatu ketika kalian akan menjumpai aplikasi yang serupa. Aplikasi di atas dapat dibangun dengan menggunakan Visual Basic secara cepat, tanpa harus dipusingkan dengan masalah pembuatan tabel, menu, tombol atau yang lainnya. Tinggal klik, seret, letakkan, atur posisi kemudian buat kodenya, aplikasi sudah langsung bisa dijalankan. Standar kompetensi pemrograman dengan VB dan VB.Net dasar terdiri atas tiga kompetensi dasar. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab kemudian dilanjutkan dengan soal-soal latihan. Kompetensi dasar pada bab ini adalah menjelaskan dasar-dasar Visual Basic, mengakses dan memanipulasi data dengan Visual Basic, dan menerapkan teknologi COM. Sebelum mempelajari kompetensi ini ingatlah kembali sistem operasi, prinsip pemecahan masalah, algoritma pemrograman dasar dan lanjutan dan materi-materi pendukung dari mata pelajaran matematika.
Rekayasa Perangkat Lunak
145
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Menjelaskan dasar-dasar Visual Basic o Mengakses dan memanipulasi data dengan Visual Basic o Menerapkan teknologi COM 7.1.
Dasar-dasar Visual Basic
Visual Basic (VB) adalah salah satu bahasa pemrograman komputer. Bahasa pemrograman VB, yang dikembangkan oleh Microsoft sejak tahun 1991, merupakan pengembangan dari pendahulunya yaitu bahasa pemrograman BASIC (Beginner’s Allpurpose Symbolic Instruction Code) yang dikembangkan pada era 1950-an. VB adalah salah suatu developement tools untuk membangun aplikasi dalam lingkungan Windows. Dalam pengembangan aplikasi, Visual Basic menggunakan pendekatan Visual untuk merancang user interface dalam bentuk form, sedangkan untuk codingnya menggunakan dialek bahasa Basic yang cenderung mudah dipelajari. Visual Basic telah menjadi tools yang terkenal bagi para pemula maupun para developer. Namun ada kelemahan dari VB yaitu pada kinerja yang relative terasa lebih lambat dibanding dengan bahasa pemrograman lain. Namun dengan perkembangan processor dan main memory yang semakin cepat permasalahan ini menjadi tidak begitu penting. Visual Basic adalah perangkat lunak yang berjalan di atas platform sistem operasi Microsoft Windows. Untuk memulai Visual Basic dapat dilakukan dengan mengklik Start -> Programs -> Microsoft Visual Studio 6 -> Microsoft Visual Basic. Tampilan awal Visual Basic akan tampak seperti Gambar 7.2.
Gambar 7.2. Tampilan awal Visual Basic.
146
Pemrograman Aplikasi dengan VB dan VB.Net
Pada Gambar 7.2 kita diminta untuk memilih jenis proyek yang akan kita buat. Untuk tahap awal proyek Standar.EXE merupakan pilihan yang biasa dilakukan. Setelah kita memilih Standar.EXE maka kita akan dibawa pada tampilan berikut.
Gambar 7.3. Tampilan awal untuk pilihan Standard.EXE. Sebelum kita bekerja dengan Visual Basic, maka ada baiknya kita mengenali lebih dulur lingkungan kerja (IDE) Visual Basic. IDE (Integrated Developement Environment) Visual Basic merupakan Lingkungan Pengembangan Terpadu bagi programmer dalam mengembangkan aplikasinya. Dengan menggunakan IDE programmer dapat membuat user interface, melakukan coding, melakukan testing dan debuging serta menkompilasi program menjadi executable. Penguasaan yang baik akan IDE akan sangat membantu programmer dalam mengefektifkan tugastugasnya sehingga dapat bekerja dengan efisien. Tampilan IDE VB dapat dilihat pada Gambar 7.4.
Rekayasa Perangkat Lunak
147
Gambar 7.4. IDE Visual Basic •
Menu Bar, digunakan untuk memilih tugas-tugas tertentu seperti menyimpan
project, membuka project, dll
•
Main Toolbar, digunakan untuk melakukan tugas-tugas tertentu dengan cepat.
•
Jendela Project, jendela ini berisi gambaran dari semua modul yang terdapat dalam aplikasi anda. Anda dapat menggunakan icon Toggle Folders untuk menampilkan modul-modul dalam jendela tersebut secara di group atau berurut berdasarkan nama. Anda dapat menggunakan Ctrl+R untuk menampilkan jendela project, ataupun menggunakan icon Project Explorer.
•
Jendela Form Designer, jendela ini merupakan tempat anda untuk merancang user interface dari aplikasi anda. Jadi jendela ini menyerupai kanvas bagi seorang pelukis.
148
Pemrograman Aplikasi dengan VB dan VB.Net
•
Jendela Toolbox, jendela ini berisi komponen-komponen yang dapat anda gunakan untuk mengembangkan user interface.
•
Jendela Code, merupakan tempat bagi anda untuk menulis kode. Anda dapat menampilkan jendela ini dengan menggunakan kombinasi Shift-F7.
•
Jendela Properties, merupakan daftar properti-properti object yang sedang terpilih. Sebagai contohnya anda dapat mengubah warna tulisan (foreground) dan warna latarbelakang (background). Anda dapat menggunakan F4 untuk
menampilkan jendela properti. •
Jendela Color Palette, adalah fasilitas cepat untuk mengubah warna suatu object.
•
Jendela Form Layout, akan menunjukan bagaimana form bersangkutan ditampilkan ketika run-time.
Jendela Toolbox merupakan jendela yang sangat penting bagi anda. Dari jendela ini anda dapat mengambil komponen-komponen (object) yang akan ditanamkan pada form untuk membentuk user interface.
Gambar 7.5. Toolbox VB 6.
•
Pointer
•
PictureBox
adalah kontrol yang digunakan untuk menampilkan image dengan format: BMP, DIB (bitmap), ICO (icon), CUR (cursor), WMF (metafile), EMF (enhanced metafile), GIF, dan JPEG.
•
Label adalah kontrol yang digunakan
•
TextBox adalah kontrol mengandung string yang diperbaiki oleh pemakai, berupa satu baris tunggal, banyak baris.
•
Frame adalah kontrol yang digunakan sebagai kontainer bagi kontrol lainnya.
•
CommandButton merupakan kontrol hampir ditemukan pada setiap form, dan digunakan untuk event proses membangkitkan tertentu ketika pemakai melakukan klik padanya.
bukan merupakan suatu kontrol; gunakan icon ini ketika anda ingin memilih kontrol yang sudah berada pada form.
untuk menampilkan teks yang tidak dapat diperbaiki oleh pemakai.
Rekayasa Perangkat Lunak
yang dapat dapat atau
149
•
CheckBox digunakan untuk pilihan yang isinya bernilai yes/no, true/false.
•
OptionButton sering digunakan lebih dari satu sebagai pilihan terhadap beberapa
•
ListBox mengandung sejumlah item, dan user dapat memilih lebih dari satu (bergantung pada property MultiSelect).
•
ComboBox merupakan konbinasi dari TextBox dan suatu ListBox dimana pemasukkan data dapat dilakukan dengan pengetikkan maupun pemilihan.
•
HScrollBar dan VScrollBar digunakan untuk membentuk scrollbar berdiri sendiri.
•
Timer digunakan untuk proses background yang diaktifkan berdasarkan interval waktu tertentu. Merupakan kontrol non-visual.
•
DriveListBox, DirListBox, dan FileListBox sering digunakan untuk membentuk
•
Shape dan Line digunakan untuk menampilkan bentuk seperti garis, persegi,
•
Image berfungsi menyerupai image box, tetapi tidak dapat digunakan sebagai kontainer bagi kontrol lainnya. Sesuatu yang perlu diketahui bahwa kontrol image menggunakan resource yang lebih kecil dibandingkan dengan PictureBox
•
Data digunakan untuk data binding
•
OLE dapat digunakan sebagai tempat bagi program eksternal seperti Microsoft
option yang hanya dapat dipilih satu.
dialog box yang berkaitan dengan file. bulatan, oval.
Excel, Word, dll.
7.1.1. Prinsip Pokok Pemrograman Berbasis GUI Secara prinsip ada dua bagian pokok dalam pengembangan aplikasi dengan menggunakan VB, yaitu: visual design dan event-driven programming. •
Visual Design
Dalam lingkungan Windows, User-interface sangat memegang peranan penting, karena dalam pemakaian aplikasi yang kita buat, pemakai senantiasa berinteraksi dengan User-interface tanpa menyadari bahwa dibelakangnya berjalan instruksi-instruksi program yang mendukung tampilan dan proses yang dilakukan. Pada pemrograman Visual, pengembangan aplikasi selalu dimulai dengan pembentukkan user interface. Untuk mendisain user interface, pengetahuan yang paling dibutuhkan hanyalah pemahaman dasar tentang jenis dan kegunaan dari control dan dasar-dasar bagaimana menggambar sebuah object.
Form dan control merupakan elemen-elemen dasar dalam user interface pada aplikasi-aplikasi berbasis Windows. Dalam VB, elemen-elemen ini disebut obyek karena dapat dimanipulasi seperti sebuah obyek. Obyek merupakan suatu kombinasi dari kode dan data yang dapat diperlakukan sebagai satu kesatuan.
150
Pemrograman Aplikasi dengan VB dan VB.Net
Sebuah obyek memiliki sejumlah property dan sejumlah method, dan akan bereaksi terhadap sejumlah event eksternal seperti halnya obyek fisik. Sebagai ilustrasi (gambar 7.6), sebuah mobil adalah sebuah obyek fisik yang memiliki property, method dan event. Salah satu property adalah warna. Biasanya property warna dari mobil ditetapkan ketika sebuah mobil dibuat. Tetapi kalau kita tidak suka dengan warna mobil yang kita beli, kita masih dapat merubahnya, misalnya dengan mengecat ulang. Demikian juga dalam VB, property dari sebuah control biasanya ditentukan ketika object dibuat (pada saat ditempatkan pada sebuah form), tetapi kita dapat merubah property ini dengan memberikan nilai baru. Kita dapat merubah nilai property pada saat disain (dengan menggunakan jendela Properties) atau pada saat runtime (melalui kode program). Beberapa property hanya tersedia pada saat disain, dan beberapa property hanya tersedia pada saat runtime.
Gambar 7.6. Obyek, Property, Method dan Event •
Event-Driven Programming
Pemrograman suatu aplikasi bukanlah sesuatu yang mudah, namun ada sebuah metodologi yang tidak boleh kita tinggalkan. Aplikasi yang dibuat dengan VB bukanlah sebuah program yang monolithic (hanya ada satu urutan jalannya program aplikasi). Ketika kita membuat program dengan VB, pertama kita harus menentukan bagaimana aplikasi akan berinteraksi dengan pengguna. Atau dengan
Rekayasa Perangkat Lunak
151
kata lain, kita harus menentukan bagaimana setiap control bereaksi terhadap aksi yang dilakukan pengguna (misalnya: click mouse, double-click mouse, penekanan salah satu tombol pada keyboard, dan lain-lain). Konsep ini biasa disebut sebagai Event-Driven Programming, karena bukan aplikasi yang menentukan alur namun kejadian (event) yang disebabkan oleh pengguna yang menentukan alur dari aplikasi. Program aplikasi yang kita buat bereaksi terhadap kondisi eksternal (event), dan aksi dari pengguna yang menentukan bagaimana alur dari aplikasi. 7.1.2. Tipe Data, Variabel dan Konstanta Secara umum tipe data, variabel dan konstanta dalam Visual Basic tidak banyak berbeda dengan apa yang disampaikan pada Bab 5. Coba buka kembali Bab tersebut untuk mengingat kembali bagian ini. Yang berbeda adalah bentuk pendeklarasian variabel dan konstanta. Perhatikan contoh berikut. Contoh 7.1. Contoh pendeklarasian variabel, konstanta dan tipe data. Dim speed As Double Dim timeElapsed As Double Dim NumberStudent as Integer = 10 Dim velocity as Single Dim Nama as String Const phi as Single = 3.14 Pada contoh 7.1 kita bisa mendeklarasikan variabel dengan kata kunci Dim sedangkan untuk konstanta menggunakan kata kunci Const. Kita juga bisa langsung mengisikan nilai awal setelah definisi tipe data dari suatu variabel. Salah satu keuntungan menggunakan pemrograman berbasis GUI seperti Visual Basic adalah tersedianya obyek-obyek yang dapat diperlakukan sebagai tipe data. Perhatikan contoh berikut ini. Contoh 7.2. Contoh penggunaan tipe data obyek. Dim Dim Dim Dim Dim Dim Dim
frm As Form midfrm As MDIForm ctrl As Control obj As Object inv As frmInvoice txtSalary As TextBox wrk As Excel.Worksheet
Pada contoh 7.2 di atas, pernyataan Form, MDIForm, Control dan Object adalah kontrol-kontrol yang dimiliki oleh Visual Basic. Sedangkan frmInvoice adalah form yang telah kita beri nama frmInvoice. Visual Basic juga memungkinkan kita untuk menggunakan obyek dari luar Visual Basic. Perhatikan pada baris terakhir di atas. Kita menggunakan worksheet dari Excel untuk kita gunakan dalam program kita.
152
Pemrograman Aplikasi dengan VB dan VB.Net
7.1.3. Operator Operator adalah simbol yang digunakan dalam bahasa pemrograman untuk melakukan suatu operasi terhadap nilai data. Simbol operator bisa berupa karakter ataupun kata khusus. Pada Visual Basic ada tiga kelompok operator utama, yaitu operator aritmatika, operator perbandingan dan operator logika. •
Operator aritmatika
Operator aritmatika digunakan untuk operasi matematis terhadap nilai data. Notasi-notasi yang digunakan tampak pada tabel berikut ini : Tabel 7.1. Operator Aritmatika.
Notasi/simbol untuk operator ini memiliki hirarki kekuatan, artinya apabila ada dua atau lebih operator digunakan bersama-sama, maka operator dengan hirarki yang lebih tinggi akan dieksekusi lebih dulu. Hirarki kekuatan operator secara berturut-turut adalah ^, * dan /, \, mod, + dan -. Operator * dan / adalah setara. Demikian juga operator + dan -. Perhatikan contoh berikut ini. Contoh 7.3. Contoh penggunaan hirarki operator aritmatika. 5 * 2 + 3 = 13 4 ^ 2 - 5 = 11 Pada contoh pertama, tanda * (kali) memiliki kekuatan yang lebih tinggi dari tanda + (tambah) sehingga operasi perkalian dilakukan terlebih dahulu daripada penjumlahan. Hasil yang diperoleh adalah 10 ditambah 3 bukan 5 dikali 5. Sedangkan pada contoh kedua, tanda ^ (pangkat) mempunyai urutan kekuatan lebih tinggi dari – (kurang) sehingga hasil akhirnya adalah 11 (yaitu dari 16 dikurangi 5). Untuk merubah urutan proses aritmatika dapat diatur dengan menggunakan tanda kurung. Perhatikan contoh berikut : Contoh 7.4. Contoh penggunaan kurung untuk mengatur hirarki operator. 5 * (2 + 3) = 25 4 ^ (2 – 5) = 0.015625 Pada contoh ini kita menggunakan angka dan operator yang sama seperti contoh sebelumnya, namun dengan menggunakan tanda kurung untuk merubah
Rekayasa Perangkat Lunak
153
urutan proses. Pada contoh pertama proses yang pertama dilakukan adalah penjumlahan 2 dan 3, kemudian baru dikalikan 5. Hasil akhirnya adalah 25 (bandingkan dengan contoh sebelumnya, yaitu 13). Sedangkan pada contoh kedua proses pertama adalah 2 dikurangi 5 kemudian baru hasilnya digunakan sebagai angka pangkat untuk 4 (menjadi 4^-3). Hasil yang diperoleh adalah 0.015625, berbeda jauh dengan contoh sebelumnya yaitu 11. Dari kedua contoh ini dapat dilihat bahwa tanda kurung memiliki kekuatan lebih tinggi dari operator lainnya. Apabila ada lebih dari satu tanda kurung berjajar maka tanda kurung paling dalam yang akan diproses terlebih dahulu. Perhatikan contoh berikut : 5 * ((2 + 2) / 8) = 2.5 •
Operator perbandingan
Operator perbandingan digunakan untuk operasi yang membandingkan nilai data. Simbol-simbol yang digunakan : Tabel 7.2. Operator perbandingan.
•
Operator logika
Operator logika digunakan untuk operasi yang membandingkan suatu perbandingan. Simbol-simbol yang digunakan : Tabel 7.3. Operator logika.
7.1.4. Struktur Kontrol Program
Struktur kontrol program atau kadang disebut sebagai struktur kendali merupakan penerapan dari algoritma struktur percabangan dan struktur pengulangan. Buka kembali Bab 5 untuk memperjelas kembali tentang struktur algoritma.
154
Pemrograman Aplikasi dengan VB dan VB.Net
•
Struktur percabangan.
Struktur percabangan dalam Visual Basic dapat dilakukan dengan menggunakan If ... Then dan Select ... Case. If ... then digunakan jika percabangan tidak terlalu banyak. Sedangkan Select ... Case digunakan jika ada banyak percabangan. Perhatikan contoh penulisan If ... Then ini. Contoh 7.5. Contoh penulisan If .. Then. ' Percabangan/pemilihan satu baris tanpa Else If x > 0 Then y = x ' Percabangan/pemilihan satu baris dengan Else If x > 0 Then y = x Else y = 0 ' Percabangan/pemilihan satu baris dengan Else dan titik dua If x > 0 Then y = x: x = 0 Else y = 0 ' Percabangan ditulis dengan cara lebih dari satu baris If x > 0 Then y = x x = 0 Else y = 0 End If ' Penggunaan blok if If x > 0 Then y = x ElseIf x < 0 Then y = x * x Else x = -1 End If Contoh 7.6. Contoh penulisan Select ... Case. Dim position As Integer 'Pilihan position = CInt(txtPosition.Text) Select Case position Case 1 txtOutcome.Text = "Menang" Case 2 txtOutcome.Text = "Kalah" Case 3 txtOutcome.Text = "Seri" Case Else txtOutcome.Text = "Tidak bertanding." End Select
Rekayasa Perangkat Lunak
155
Coba perhatikan contoh aplikasi dengan menggunakan If ... Then dan Select ... Case berikut ini. Contoh 7.7. Program aplikasi dengan if ... then. Aktifkan VB 6 kemudian buatlah form sebagai berikut :
Atur property untuk masing-masing obyek sebagai berikut :
Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai berikut : Private Sub Command1_Click() If Text1.Text = "nusantara" Then Image1.Visible = True End Sub Klik menu Project > Project1 Properties lalu klik tab General. Gantilah Startup Object-nya menjadi Form5. Coba jalankan Project1 :
156
o
Ketikkan sembarang teks pada TextBox lalu klik tombol OK atau tekan Enter, tidak terjadi apa-apa.
o
Ketikkan “nusantara” pada TextBox lalu klik tombol OK atau tekan Enter, gambar computer akan muncul.
Pemrograman Aplikasi dengan VB dan VB.Net
Penjelasan kode program :
Modifikasi kode programnya menjadi sebagai berikut : Private Sub Command1_Click() If Text1.Text = "nusantara" Then Image1.Visible = True Text1.Enabled = False Command1.Enabled = False Else MsgBox "Passwordnya Salah !" Text1.Text = "" Text1.SetFocus End If End Sub Coba jalankan kembali Project1 : • Ketikkan sembarang teks pada TextBox lalu klik tombol OK atau tekan Enter, muncul kotak pesan “Passwordnya Salah !”. Klik tombol OK pada kotak pesan tersebut. • Ketikkan “nusantara” pada TextBox lalu klik tombol OK atau tekan Enter, gambar computer akan muncul. TextBox dan tombol OK menjadi disable (tidak bisa digunakan). Penjelasan kode program :
Rekayasa Perangkat Lunak
157
Catatan tambahan : o
Teks “nusantara” harus diketik huruf kecil semua. Ingat : data string bersifat case sensitive !
o
Agar password-nya tidak bersifat case sensitive, modifikasi pernyataan kondisinya menjadi : If LCase(Text1.Text) = "nusantara" Then Fungsi LCase adalah untuk mengkonversi semua string yang diinput ke Text1.Text menjadi huruf kecil, walaupun user menginputnya dengan huruf kapital.
Contoh 7.8. Program aplikasi dengan Select ... Case. Aktifkan VB 6 melalui tombol Start, kemudian buat form sebagai berikut :
Atur property untuk masing-masing obyek sebagai berikut :
158
Pemrograman Aplikasi dengan VB dan VB.Net
Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai berikut : Private Sub Form_Load() List1.AddItem "Disket" List1.AddItem "Buku" List1.AddItem "Kertas" List1.AddItem "Pulpen" End Sub Private Sub Command1_Click() Dim harga As Currency, total As Currency Dim jumlah As Integer Dim diskon As Single Dim satuan As String If List1.Text = "" Then MsgBox "Anda belum memilih barang !!" List1.ListIndex = 0 Exit Sub End If If Text1.Text = "" Then MsgBox "Anda belum mengisi jumlah barang !!" Text1.SetFocus Exit Sub End If Select Case List1.Text Case "Disket" harga = 35000 satuan = "Box" Case "Buku" harga = 20000 satuan = "Lusin" Case "Kertas" harga = 25000 satuan = "Rim" Case "Pulpen" harga = 10000 satuan = "Pak" End Select lblBarang.Caption = "Barang : " & List1.Text lblHarga.Caption = "Harga : " & Format(harga, "Currency") & "/" & satuan lblJumlah.Caption = "Jumlah : " & Text1.Text & " " & satuan jumlah = Text1.Text Select Case jumlah Case Is < 10 diskon = 0 Case 10 To 20
Rekayasa Perangkat Lunak
159
diskon = 0.15 Case Else diskon = 0.2 End Select total = jumlah * (harga * (1 - diskon)) lblDiskon.Caption = "Diskon : " & Format(diskon, "0 %") lblTotal.Caption = "Total Bayar : " & Format(total, "Currency") End Sub Klik menu Project > Project1 Properties lalu klik tab General. Gantilah Startup Object-nya menjadi Form6. Coba jalankan Project1 : o
List1 akan terisi nama-nama barang.
o
Klik tombol OK, akan muncul kotak pesan "Anda belum memilih barang !!".
o
Klik OK, nama barang pertama akan terpilih secara otomatis. Anda boleh memilih nama barang yang lainnya.
o
Klik tombol OK, akan muncul kotak pesan "Anda belum mengisi jumlah barang !!".
o
Klik OK, text1 akan menjadi focus. Isi jumlah barangnya, misalnya : 10.
o
Klik tombol OKm akan tampil : nama barang, harga barang (per-satuannya), jumlah barang (dengan satuannya), diskon dan total bayar.
o
Coba ganti pilihan nama barang (pada List1) dan jumlah barang (pada Text1) lalu klik lagi tombol OK.
160
Pemrograman Aplikasi dengan VB dan VB.Net
Penjelasan kode program :
Catatan : o
Bila jumlah barang diisi dengan selain angka akan muncul pesan error.
o
Untuk mengecek isi Text1 angka atau bukan, tambahkan kode berikut : If Not IsNumeric(Text1.Text) Then MsgBox "Isi jumlah barang harus angka !!" Text1.SetFocus Exit Sub End If
Rekayasa Perangkat Lunak
161
•
Struktur pengulangan.
Struktur pengulangan yang mungkin paling banyak digunakan dalam Visual Basic adalah For. Dalam Visual Basic, struktur for ini dikenal sebagai For ... Next. Cara penulisan umum For ... Next adalah sebagai berikut: For counter = nilaiAwal To nilaiAkhir [Step increment] ' pernyataan yang akan diulang... Next Pernyataan Step dan increment sudah disinggung di Bab 5 sehingga tidak akan dibahas lagi di sini. Perhatikan contoh penggunaan For ... Next dalam aplikasi berikut ini. Coba perhatikan contoh pengulangan dengan For ... Next berikut ini. Contoh 7.9. Pengulangan dengan For ... Next. Dim d As Single, count As Long For d = 0 To 10 Step 2 count = count + 1 Next Print count Pada Contoh 7.9, d adalah counter dan kita deklarasikan sebagai single. Kita juga menggunakan increment dengan nilai 2. Nilai increment dapat berupa bilangan bulat atau pecahan. Namun nilai pecahan terkadang memberikan hasil yang tidak kita inginkan. Bagaimanakah output dari program di atas? Pada akhir program maka nilai count akan sama dengan 5. Struktur pengulangan yang lebih fleksibel dari For ... Next adalah Do ... Loop. Do ... Loop dapat berbentuk berbeda-beda. Perhatikan contoh berikut. Contoh 7.10. Pengulangan dengan For ... Next. Do While x > 0 y = y + 1 x = x \ 2 Loop Do
y = y + 1 x = x \ 2 Loop Until x <= 0 Pada bagian pertama dari Contoh 7.10 kita menggunakan Do While ... Loop. Cara ini sama persis dengan struktur pengulangan dengan While yang telah kalian pelajari pada Bab 5. Pernyataan di bawah Do While, akan dikerjakan jika kondisi pada Do While bernilai benar. Jika tidak maka tidak akan dieksekusi. Bagian kedua dari Contoh 7.10, kita menggunakan Do ... Loop Until untuk melakukan pengulangan. Pada bentuk seperti ini, pengulangan dilakukan sampai
162
Pemrograman Aplikasi dengan VB dan VB.Net
kondisi pada Loop Until bernilai benar. Jadi selama kondisi di depan Loop until masih bernilai salah maka pengulangan akan terus dilakukan. Atau Do ... Loop ini merupakan kebalikan dari Do While. Melihat kedua bagian tersebut, apabila kita inisialisasi x = -4 dan Y = 5, bagaimanakah hasilnya? Pada pengulangan dengan Do While, tidak akan memberikan hasil karena nilai X kurang dari 0 sehingga pengulangan tidak dilakukan. Sedangkan pada Do ... Loop Until, pernyataan di bawah Do masih dikerjakan, karena kondisi baru diperiksa di akhir pengulangan. Sehingga nilai X akan bernilai -2 dan Y bernilai 6. Berikut ini adalah contoh progam aplikasi dengan menggunakan struktur pengulangan. Contoh 7.11. Program aplikasi dengan struktur pengulangan. Buka VB dan buatlah form sebagai berikut :
Atur property seperti tabel berikut :
Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai berikut : Dim i As Integer Private Sub Command1_Click() List1.Clear For i = 1 To 100
Rekayasa Perangkat Lunak
163
List1.AddItem "Angka " & i Next i End Sub Private Sub Command2_Click() List1.Clear For i = 100 To 1 Step -2 List1.AddItem "Angka " & i Next i End Sub Private Sub Command3_Click() List1.Clear i = Asc("A") Do Until i > Asc("Z") List1.AddItem "Huruf " & Chr(i) i = i + 1 Loop End Sub Private Sub Command4_Click() List1.Clear i = Asc("Z") Do While i >= Asc("A") List1.AddItem "Huruf " & Chr(i) i = i - 1 Loop End Sub Coba jalankan program. Tekan keempat tombol yang ada pada form bergantian. Cobalah cermati output apa yang keluar dari eksekusi program di atas. 7.1.5. Prosedur dan Fungsi Ada beberapa jenis procedure yang digunakan dalam Visual Basic : •
Sub procedure yang tidak menggembalikan nilai
•
Function procedure yang mengembalikan nilai
•
Property procedure yang dapat mengembalikan nilai dan diisi nilai yang mengacu pada suatu objek.
•
Sub procedure Syntax penulisan Sub procedure: [Private|Public][Static]Sub argumen)
164
namaprosedur
Pemrograman Aplikasi dengan VB dan VB.Net
(argumen-
pernyataan-pernyataan End Sub Setiap kali procedure dipanggil, maka pernyataan-pernyataan yang berada di antara Sub dan End Sub akan dijalankan. Argumen pada procedure adalah nilai yang akan dilewatkan saat pemanggilan procedure. Di Visual Basic Sub Procedure dapat dibagi atas dua yaitu : o
General Procedure, procedure yang diaktifkan oleh aplikasi.
o
Event Procedure, Procedure yang diaktifkan oleh system sebagai respon terhadap event.
Contoh 7.12. Contoh sub procedure. Pada contoh ini kita akan membuat sub procedure dengan nama CenterForm yang dapat digunakan untuk menampilkan form ketengah Layar, dimana x adalah parameter yang merupakan form yang akan dibuat ketengah layar. Sub CenterForm(x As Form) x.Top = (Screen.Height - x.Height) \ 2 x.Left = (Screen.Width - x.Width) \ 2 End Sub ‘memanggil sub prosedur CenterForm Private Sub Form_Load() Call CenterForm(Me) End Sub Pada contoh 7.12, sub procedure CenterForm membutuhkan argumen form. Sehingga ketika dipanggil argumen juga harus dicantumkan. Perhatikan pada baris Call CenterForm(Me). Me di sini adalah argumen dari sub procedure. Pada Visual Basic, Me merujuk pada form dimana kode program ini dibuat. •
Function procedure
Ada dua jenis function dalam Visual Basic, yaitu Built-in Function dan Function Procedure. Pada Visual Basic telah disediakan banyak Built-in Function yang dapat
digunakan untuk berbagai tujuan seperti fungsi-fungsi untuk perhitungan matematika, manipulasi string, manipulasi tipe data dan lain-lain. Pada bab ini tidak akan dibahas detil fungsi-fungsi built-in tersebut. Namun pada lampiran, dapat dilihat beberapa fungsi built-in yang sering digunakan. Meskipun sudah tersedia sangat banyak, tetapi fungsi-fungsi yang tersedia tersebut bersifat umum dan kandang-kadang tidak memenuhi kebutuhan programer, untuk keperluan tersebut anda dapat menciptakan fungsi-fungsi sendiri yang dikenal dengan Function procedure. Atau kita bisa mengatakan sebagai fungsi buatan sendiri. Sintaks penulisan function procedure :
Rekayasa Perangkat Lunak
165
[Private|Public][Static]Function (argumen-argumen) [As type] statements End Function
namaprocedure
Ada tiga perbedaan antara function dan procedure : o
Umumnya anda dapat memanggil suatu function dengan mengikutkan nama function sisi kanan dari statement atau ekspresi. (returnvalue = function()).
o
Function memiliki type data seperti suatu variabel. Ini menentukan type yang dari nilai yang dikembalikan.
o
Nilai kembali dimasukkan ke namafunction itu sendirinya, dan suatu function dapat menjadi bagian dari suatu ekspresi yang panjang.
Perhatikan contoh fungsi berikut ini. Contoh 7.13. Contoh Fungsi. Fungsi ini adalah fungsi yang bekerja untuk menampilkan nama bulan dalam bahasa Indonesia dari data tanggal yang dimasukkan. Argumen yang dibutuhkan dalam fungsi ini adalah x dan bertipe data date. Function Bulan(x As Date) Dim sRet As String Select Case Case Case Case Case Case Case Case Case Case Case Case Case
Case Month(x) 1: sRet = "Januari" 2: sRet = "Februari" 3: sRet = "Maret" 4: sRet = "April" 5: sRet = "Mei" 6: sRet = "Juni" 7: sRet = "Juli" 8: sRet = "Agustus" 9: sRet = "September" 10: sRet = "Oktober" 11: sRet = "Nopember" 12: sRet = "Desember" Else sRet = "tidak sah" End Select
Bulan = sRet End Function
166
Pemrograman Aplikasi dengan VB dan VB.Net
7.2.
Akses dan Manipulasi Basis Data dengan Visual Basic
Salah satu keunggulan Visual Basic dibandingkan dengan Bahasa pemrograman yang lain, adalah kemampuan dalam akse dan manipulasi data. Hal ini karena Visual Basic dikembangkan oleh Microsoft yang juga membuat sistem operasi Windows. Sehingga fungsi-fungsi basis data mendapat dukungan yang sangat lengkap. Visual Basic menyediakan beragam cara untuk mengakses dan memanipulasi data. Perhatikan diagram pada gambar berikut ini.
Gambar 7.7. Berbagai cara akse basis data dari Visual Basic. •
ODBC
ODBC singkatan dari Open Data Base Connectivity. Merupakan sekumpulan fungsi yang membolehkan kita untuk koneksi pada basis data lokal atau yang berada di jaringan. Biasanya ODBC digunakan untuk mengakses berbagai tipe basis data antara lain, MS FoxPro, MS Access, MS SQL Serve, Oracle atau bahka data yang tersimpan dalam bentuk file data. •
DAO
DAO atau Data Access Object adalah antarmuka dari Microsoft Jet, perangkat utama penggerak MS Access. Kita dapat membuat basis data dengan MS Access kemudian kita manipulasi dengan Visual Basic melalui DAO dengan mudah. Karena
Rekayasa Perangkat Lunak
167
DAO langsung berhubungan dengan MS Access, maka kita dapat menggunakan fungsi-fungsi DBMS dari Visual Basic. •
OLE DB
OLE DB adlah teknologi untuk mengakses basis data level dasar yang sebenarnya dimaksudkan untuk menggantikan fungsi ODBC. Namun dalam perkembangannya ODBC dan OLE DB memiliki perbedaan, yaitu OLE DB berbasis pada teknologi COM dan dapat digunakan untuk mengakses basis data yang bukan bersifat relasional. •
ADO
ADO (ActiveX Data Object) adalah antarmuka level atas dari OLE DB. ADO dikembangkan di atas OLE DB untuk melengkapi fungsi-fungsi yang tidak dimiliki oleh OLE DB sehingga memudahkan programmer dalam membuat aplikasi. 7.2.1. Membuat dan Manipulasi Basis Data dengan ADO Secara prinsip, apapun metode akses yang digunakan, cara bekerja dengan basis data dari Visual Basic adalah sama. Dibutuhkan beberapa tahapan untuk dapat bekerja dengan basis data. Pada bagian ini kita akan menggunakan ADO sebagai teknologi yang lebih fleksibel dari teknologi yang lain. Tapi ini dapat dikembangkan dengan teknologi yang lain. •
Koneksi dengan basis data.
Koneksi dengan basis data berarti kita menghubungi basis data supaya terbuka dan bisa kita akses data yang ada didalamnya. Berikut contoh pernyataan untuk koneksi ke basis data biblio.mdb Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _ & "Data Source=C:\Microsoft Visual Studio\Vb98\Biblio.mdb" •
Mengakses record data pada basis data..
Kumpulan dari record-record data dalam basis data, pada ADO disebut sebagai recordset. Untuk bekerja dengan recordset ini kita membutuhkan tabel atau view/query yang ada dalam basis data. Perhatikan contoh berikut ini. Const DBPATH = "C:\Program Files\Microsoft Visual Studio\Vb98\NWind.mdb" Dim cn As New ADODB.Connection, rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & DBPATH rs.Source = "Employees" rs.Open , cn
168
Pemrograman Aplikasi dengan VB dan VB.Net
Pada kode di atas kita menggunakan basis data Nwind.mdb sebagai Data source. Kemudian sebagai sumber recordset, kita memanggil tabel “Employees”. Variabel rs adalah recordset. Setelah kita tentukan sumber tabelnya, kita dapat membuka tabel tersebut dengan pernyataan open. Setelah terbuka tabel sumbernya, kita dapat mengakses data yang ada di dalamnya. Berikut ini contoh kode untuk mengakses data pada suatu tabel. Dim i As Integer For i = 0 To rs.Fields.Count Print rs.Fields(i).Name & " = " & rs.Fields(i).Value Next Perintah di atas akan mencetak seluruh baris dan kolom Name yang ada pada tabel Employees yang telah terbuka sebelumnya. Cara yang paling cepat adalah dengan menggunakan perintah For Each seperti kode berikut. Dim fld As ADODB.Field For Each fld In rs.Fields Print fld.Name & " = " & fld Next •
Manipulasi data dalam recordset
Untuk mengupdate data pada suatu recordset dapat dilakukan dengan cara sebagai berikut: rs.Update Array("FirstName", "LastName", "BirthDate", "HireDate"), _ Array("John", "Smith", #1/1/1961#, #12/3/1994#) Sedangkan untuk menambah recordset perintah yang digunakan adalah sebagai berikut: rs.AddNew rs("FirstName") = "Robert" rs("LastName") = "Doe rs("BirthDate") = #2/5/1955# rs.Update Menghapus record tertentu dapat dilakukan dengan perintah seperti berikut. rs.Delete rs.MoveNext If rs.EOF Then rs.MoveLast 7.3.
Teknologi COM
7.3.1. Pengertian dan Konsep COM COM atau Component Object Model adalah infrastruktur yang disediakan oleh Visual Basic untuk mengakses obyek-obyek atau kontrol-kontrol lain sepanjang punya antar muka yang dapat diakses oleh Visual Basic.
Rekayasa Perangkat Lunak
169
Untuk dapat menggunakan COM pada Visual Basic, kita dapat membuka Reference Dialog dengan cara: dari menu Project pilih add Reference. Jendela seperti pada Gambar 7.8 akan terbuka.
Gambar 7.8. Jendela Reference. Pada Gambar 7.8 kita memilih COM atau obyek yang ingin kita gunakan. Pada contoh ini kita memilih “Microsoft Word 8.0 Object Library”. Setelah kita klik OK maka kita dapat menggunakan obyek yang kita pilih ini dalam kode program kita. Berikut contoh penggunaan obyek tersebut. Contoh 7.14. Contoh penggunaan COM. Private Dim Dim Dim
Sub cmdCheck_Click() text As String suggestion As Word.SpellingSuggestion colSuggestions As Word.SpellingSuggestions
' menambahkan dokumen bila belum ada dokumen yang terbuka. If MSWord.Documents.Count = 0 Then MSWord.Documents.Add text = Trim$(txtWord.text) lstSuggestions.Clear If MSWord.CheckSpelling(text) Then lstSuggestions.AddItem "(correct)"
170
Pemrograman Aplikasi dengan VB dan VB.Net
Else Set colSuggestions = MSWord.GetSpellingSuggestions(text) If colSuggestions.Count = 0 Then lstSuggestions.AddItem "(no suggestions)" Else For Each suggestion In colSuggestions lstSuggestions.AddItem suggestion.Name Next End If End If End Sub Pada kode di atas kita menggunaka salah satu metode dari obyek yang kita buka sebelumnya (“Microsoft Word 8.0 Object Library”). Metode yang ingin kita gunakan adalah SpellingSuggestion (lihat kode pada bagian pendeklarasian variabel). Dengan cara yang sama kita dapat menggunakan metode atau fungsifungsi yang kita inginkan dari obyek COM yang telah kita muat. Pada jendela Reference di Gambar 7.8, tersedia banyak sekali COM yang dapat kita gunakan. Cobalah untuk membuka satu persatu dan lihat apa fungsinya. 7.4.
Ringkasan
Pada bab ini kalian telah mempelajari pemrograman dengan Visual Basic. Dimulai dengan penerapan variabel, konstanta, tipe data dan operator. Kemudian dilanjutkan dengan strukturkendali pemrograman baik percabangan maupun pengulangan. Penggunaan procedure dan function juga disampaikan untuk melengkapi dasar pemrograman dengan Visual Basic. Pada bagian selanjutnya kalian juga telah mempelajari teknik akses dan manipulasi data dengan menggunakan ADO. Bagian akhir ditutup dengan bagaimana membuka dan menggunakan teknologi COM yang disediakan oleh Visual Basic. 7.5. 1.
Soal-Soal Latihan Berapakah hasil dari ekspresi Visual Basic berikut ini: a. b. c. d. e. f.
2.
3*4 7^2 1/(2^3) 3 + (4*5) (5 - 3)*4 3*((-2)^5)
Berapakah hasil dari operasi menggunakan mod berikut ini: a. 6 Mod 2 b. 14 Mod 4
Rekayasa Perangkat Lunak
171
c. 7 Mod 3 d. 5 Mod 5 3. Periksalah penamaan variabel dalam Visual Basic ini. Tentukan mana yang diperbolehkan dan yang tidak. a. b. c. d. e. f.
sales.2006 room&Board fOrM_1040 1040B expenses? INCOME 2006
4. Jika a = 2, b = 3, dan c = 4, berapakah hasil dari ekspresi berikut ini. a. b. c. d. e. f.
(a*b) + c a*(b + c) (1 + b)*c a^c b^(c - a) (c - a)^b
5. Buatlah program untuk menghitung ekspresi berikut ini. a. b. c. d. e. f.
7•8 + 5 (1 + 2•9)3 5.5% of 20 15 - 3(2 + 34) 17(3 + 162) 4 1/2 - 3 5/8
6. Bukalah Gambar 5.6 dan 5.7 pada Bab 5. Buatlah program dalam Visual Basic. Gunakan kontrol TextBox dan CommandButton pada soal ini. 7. Bukalah Gambar 5.9 dan 5.10 pada Bab 5. Buatlah program dalam Visual Basic. 8. Bukalah Gambar 5.15 dan 5.17 pada Bab 5. Buatlah program dalam Visual Basic.
172
Pemrograman Aplikasi dengan VB dan VB.Net
Gambar cangkir dengan uap mengepul di atasnya serta tulisan Java seperti Gambar 8.1 ini mungkin pernah kalian lihat. Ya, ini adalah logo dari bahasa pemrograman Java yang popularitasnya meningkat beberapa tahun belakangan ini. Banyak game dan aplikasi yang digunakan pada perangkat mobile seperti telepon selular dan PDA dibuat dengan bahasa ini. Bahasa ini dikenal karena portabilitas dan dukungan pada konsep pemrograman berorientasi obyek. Bab ini meliputi dua standar kompetensi, yaitu membuat program dalam bahasa pemrograman berorientasi obyek dan membuat program aplikasi menggunakan Java. Hal ini karena kedekatan konsep antara Java dan pemrograman berorientasi obyek. Standar kompetensi membuat program dalam bahasa pemrograman berorientasi obyek terdiri dari empat kompetensi dasar yaitu tipe data dan kontrol program, Gambar 8.1. Logo Java. pembuatan kelas, penggunaan inheritance, polymorphism, dan overloading, dan penggunaan interface dan paket. Sedangkan standar kompetensi membuat program aplikasi menggunakan Java terdiri dari lima kompetensi dasar, yaitu menjelaskan file I/O, tipe data dan variabel, menerapkan operator, menjelaskan exception handling, menerapkan multi-threading dan menjelaskan network programming. Dalam penyajian pada buku ini, satu sub bab tidak langsung merujuk pada satu kompetensi dasar. Ringkasan diletakkan pada setiap akhir bab kemudian dilanjutkan dengan soal-soal latihan. Sebelum mempelajari kompetensi ini ingatlah kembali sistem operasi, prinsip pemecahan masalah, algoritma pemrograman dasar dan lanjutan, pemrograman dengan VB dan VB.Net dan materi-materi pendukung dari mata pelajaran lain.
Rekayasa Perangkat Lunak
173
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Memahami konsep pemrograman berorientasi obyek o Menjelaskan File I/O, tipe data dan variabel pada Java o Menggunakan operator o Menerapkan kontrol program o Menjelaskan Exception Handling o Menerapkan Multi-Threading o Menjelaskan Network Programming o Membuat program berorientasi obyek dengan class o Menggunakan prinsip inheritance, polymorphism dan overloading o Membuat program berorientasi obyek dengan interface dan paket 8.1. KONSEP PEMROGRAMAN BERORIENTASI OBYEK Pemrograman Berorientasi Obyek (Object Oriented Programming – OOP) adalah programming paradigm yang menggunakan obyek dan interaksinya untuk merancang aplikasi dan program komputer. OOP tidak banyak digunakan sebelum awal tahun 1990an. Tapi sekarang menjadi sesuatu yang sudah lumrah digunakan. Bahasa-bahasa pemrograman seperti keluarga dotNet dari Microsoft (Visual Basic.Net, Visual C#, dan Visual J), Borland Delphi, Java, Phyton, PHP versi 5 ke atas, C++ dan banyak lainnya merupakan bahasa pemrograman yang mendukung konsep OOP. Apakah obyek itu? Semua benda yang ada didunia ini dapat kita sebut sebagai obyek. Guru mata pelajaran RPL kalian adalah suatu obyek. Buku yang kalian pegang ini juga suatu obyek. Bahkan mata pelajaran RPL adalah juga sebuah obyek. Setiap obyek akan mempunyai karakteristik dan tingkah laku tertentu. Karakteristik disebut attribute dan tingkah laku disebut sebagai behavior atau method. Dalam difinisi pemrograman berorientasi obyek dikenal adanya kelas dan obyek. Class atau kelas mendefinisikan karakteristik abstrak dari sesuatu termasuk atribut atau sifat-sifat dari sesuatu dan apa yang dapat dikerjakan oleh sesuatu (method). Sebagai contoh, mobil adalah sebuah kelas yang memiliki attribut warna, merek, tipe dan lain-lain. Mobil juga punya method antara lain, maju, mundur dan berhenti (lihat Gambar 8.2).
Gambar 8.2. Kelas, atribut dan method.
174
Pemrograman Berorientasi Obyek dengan Java
Obyek adalah contoh dari kelas yang sudah didefinisikan. Atribut dan method dari kelas secara otomatis akan menurun pada obyek namun dengan kekhususan. Sebagai ilustrasi kita perhatikan Gambar 8.2. Pada gambar tersebut, kita bisa identifikasi kelasnya adalah mobil dengan atribut dan methodnya. Obyeknya adalah sebuah mobil sedan dengan merk Toyota, dan warnanya adalah merah. Sedan itu juga memiliki method maju, mundur dan berhenti. Pada kasus ini mobil sedan disebut sebagai instance atau turunan dari kelas mobil. Ada beberapa konsep penting yang kalian harus pahami dalam pemrograman berorientasi yaitu, abstraksi, enkapsulasi, inheritance dan polymorphism. 8.1.1. Abstraksi
Abstraction atau disebut juga composition merupakan prinsip penyederhanaan dari sesuatu yang kompleks dengan cara memodelkan kelas sesuai dengan masalahnya. Untuk lebih memperjelas pengertian coba perhatikan Gambar 8.3. Pada gambar tersebut terlihat sebuah mobil jika dipecah-pecah bagian-bagiannya kita akan dapatkan seperti ban, mesin, rangka mobil, kaca, dan lain-lain dan hal in berlaku sebaliknya. Jika kita gabungkan bagian-bagian tersebut maka kita akan mendapatkan sebuah kelas mobil. Pada pemrograman berorientasi obyek biasanya kalau kita menjumpai beberapa kelas atau obyek yang kalau diidentifikasi memiliki banyak kesamaan atribut dan method maka kita akan menggabungkan kelas-kelas tersebut menjadi satu super class.
Gambar 8.3. Contoh abstraction. 8.1.2. Enkapsulasi Prinsip encapsulation adalah prinsip penyembunyian detil dari sebuah kelas terhadap obyek yang berinteraksi terhadapnya. Sebagai contoh ketika kita menjalankan mobil, sebenarnya kita sedang berinteraksi dan kita meminta kepada mobil untuk menjalankan methodnya seperti maju, mundur atau berhenti. Kita berinteraksi hanya dengan beberapa bagian dari mobil (interface) seperti persneling, setir, pijakan gas, pijakan rem dan bagian lain. Tapi detil proses yang terjadi didalam mobil bagaimana bisa maju, mundur atau berhenti kita tidak perlu tahu.
Rekayasa Perangkat Lunak
175
8.1.3. Inheritance
Inheritance atau pewarisan adalah prinsip pewarisan sifat dari orang tua ke anak atau turunannya yang diterapkan pada kelas. Orang tua memiliki atribut dan method yang lebih umum dibandingkan dengan anak atau turunannya. Pada Gambar 8.4. kita bisa tahu bahwa mobil memiliki atribut dan method yang lebih umum dibandingkan dengan sedan , truk atau bus. Mobil sebagai kelas yang mewarisi disebut sebagai super class, sedangkan sedan, truk dan bus sebagai kelas yang diwarisi disebut sub class.
Gambar 8.4. Pewarisan. 8.1.4. Polymorphism
Polymorphism mungkin merupakan konsep pemrograman beroerientasi obyek yang paling sulit dimengerti. Arti dari polymorphism adalah kemampuan dari suatu obyek untuk mempunyai lebih dari satu bentuk. Atau dalam pengertian lain adalah kita dapat menerapkan sesuatu hal yang berbeda melalui suatu cara yang sama. Sebagai contoh kalau ada empat ekor hewan berbeda yaitu burung, ular, katak, dan singa kemudian kita minta untuk bergerak, maka burung akan terbang, ular akan melata, katak melompat, singa mungkin akan berlari. Jadi suatu method yang sama mungkin bisa diterapkan secara lain jika obyek yang menerapkan adalah berlainan. 8.2. PENGENALAN PADA JAVA Bahasa pemrograman Java pertama lahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut menggunakan versi yang dinamakan Oak. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk). Saat ini Java berada dibawah lisensi Sun Microsystems Menurut definisi dari Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat luinak pada komputer standalone ataupun pada lingkungan jaringan. Orang orang yang berkecimpung dalam dunia pemrograman lebih suka menyebut Java sebagai sebuah teknologi dibanding hanya sebuah bahasa pemrograman, karena Java lebih lengkap dibanding sebuah bahasa pemrograman konvensional.
176
Pemrograman Berorientasi Obyek dengan Java
8.2.1. Kebutuhan Perangkat Lunak yaitu: •
Untuk membuat program Java paling tidak harus tersedia dua buah software Java 2 SDK Standard Edition (J2SE).
Perangkat lunak ini merupakan yang akan kita gunakan untuk mengkompilasi kode program Java yang kita buat. Selain itu pada perangkat lunak ini tersedia kelas-kelas yang dapat kita gunakan untuk membangun aplikasi desktop, grafis, keamanan, konektivitas basis data dan jaringan. Perangkat lunak ini dapat didownload gratis di situs Sun Microsystem. Setelah itu perangkat lunak ini harus diinstal pada system operasi yang kita pakai. •
Text Editor.
Perangkat lunak ini berfungsi untuk menuliskan kode-kode program. Notepad, Vi, Gedit, merupakan contoh-contoh teks editor yang dapat digunakan. Namun menggunakan teks editor agak menyulitkan karena tidak tersedia fasilitas bantu yang memudahkan dalam menuliskan kode program. Saat ini beberapa IDE tersedia gratis di internet. IDE tersebut telah menyediakan banyak fasilitas seperti syntax coloring, auto completion, dan template untuk memudahkan membuat aplikasi berbasis Java. NetBeans (www.netbeans.org) dan Eclipse (www.eclipse.org) merupakan dua buah IDE yang sangat terkenal dan sangat kuat. Gambar 8.5. menunjukkan tampilan NetBeans IDE.
Gambar 8.5. NetBeans IDE.
Rekayasa Perangkat Lunak
177
8.2.2. Kompilasi Kode Program Sebelum kita membuat program dan mengkompilasinya kita harus mengatur ClassPath. ClassPath adalah suatu sistem variabel yang digunakan untuk mengatakan pada program yang ditulis dengan bahasa Java tempat lokasi-lokasi yang akan digunakan. Misalkan kita meletakkan kode program kita di direktori d:\TestCode\Java, maka kita perlu mengatur path agar kita bisa menggunakan compiler java dari direktori ini. Berikut ini langkah-langkah membuat classpath: •
Buka command-prompt di Windows kemudian setelah terbuka ketikkan : Set PATH=C:\progra~1\java\jdk1.5.0\bin;%PATH% Set CLASSPATH=.;D:\TestCode\Java
Path di atas adalah jika kita menggunakan JDK versi 1.5, jika versi yang lain maka tinggal menyesuaikan.
•
Periksa apakah setting sudah benar dengan mengetikkan perintah java pada direktori manapun dari command prompt.
Setelah classpath terbentuk, coba buka Notepad kemudian ketikkan kode berikut ini. public class Main { //isi blok public static void main(String[] args) { System.out.println("Hallo ini Java lho"); } } Kemudian simpan file kode tersebut dengan nama yang sama dengan class yang ada pada kode tersebut yaitu Main dan diakhiri dengan ekstensi .java. Simpan di lokasi yang telah kita tetapkan di atas (lihat Gambar 8.6). Aturan penulisan nama file di Java sangat ketat, sehingga jika kalian member nama file tidak sama dengan nama kelasnya, maka program akan menolak untuk dieksekusi. Pada kode program di atas, baris pertama menunjukkan nama class yaitu Main. Pada Java semua kode seharusnya ditempatkan didalam deklarasi class. Kita melakukannya dengan menggunakan kata kunci class. Sebagai tambahan, class menggunakan akses khusus public, yang menunjukkan bahwa class kita mempunyai akses bebas ke class yang lain dari package yang lain pula (package merupakan kumpulan class-class). Setelah deklarasi class kemudian diikuti tanda { yang menunjukkan awal blok kode. Tanda ini harus ditutup dengan tanda } sebagai akhir blok. Baris yang dimulai dengan tanda // adalah komentar. Kemudian baris berikutnya adalah deklarasi nama method. Dalam hal ini nama method-nya adalah main (method utama). Kita dapat membuat method-method lainnya diluar main ini. Setelah deklarasi ini diikuti juga dengan blok kode. Pada blok kode berisi pernyataan
178
Pemrograman Berorientasi Obyek dengan Java
System.out.println("Hallo ini Java lho");. Perintah System.out.println(), menampilkan teks yang diapit oleh tanda petik ganda (“ ”) pada layar.
Gambar 8.6. Nama file dan lokasi penyimpanan. Sekarang buka command prompt dan arahkan ke direktori tempat file java kalian simpan dan ketikkan seperti pada Gambar 8.7. Perhatikan cara penulisan dan hasil yang diperoleh.
Gambar 8.7. Cara eksekusi program dalam Java. Sebelum dapat dieksekusi, maka kode program (Main.java) harus dikompilasi dengan menggunakan perintah javac seperti terlihat di Gambar 8.7. Setelah kompilasi berhasil, maka program dapat kita eksekusi dengan menggunakan perintah
Rekayasa Perangkat Lunak
179
java. Proses kompilasi akan menghasilkan file dengan nama Main.class (periksa direktori kalian dengan perintah dir, dan cari file dengan akhiran .class). Yang kita panggil pada perintah java adalah file dengan akhiran class ini dan bukan lagi kode sumber yang berakhiran .java. 8.3. TIPE DATA, VARIABEL, DAN PERNYATAAN INPUT/OUTPUT (I/O) 8.3.1. Tipe Data Ada 8 tipe data dasar pada Java yaitu boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long (integral), double and float (floating point). Tabel 8.1 berikut menunjukkan penjelasan tentang tipe data tersebut. Tabel 8.1. Tipe data pada Java. Tipe Data logika (boolean) tekstual (char)
Integral (byte, short, int & long)
Floating Point dan double)
(float
Penjelasan diwakili oleh dua pernyataan : true dan false harus memiliki ciri berada dalam tanda single quotes(’ ’) Tipe data bilangan bulat, default tipe data yaitu int. byte = 8 bits dengan range -27 s/d 27-1 short = 16 bits dengan range -215 s/d 215-1 int = 32 bits dengan range -231 s/d 231-1 long = 64 bits dengan range -263 s/d 263-1 Tipe data bilangan asli (boleh ada pecahan). Default tipe datanya adalah double. float = 32 bits dengan range -231 s/d 231-1 double= 64 bits dengan range -263 s/d 263-1
Pada Java, String bukan merupakan tipe data primitif (namun merupakan suatu Class). String mewakili tipe data yang terdiri atas beberapa karakter. String ditulis dengan menggunakan tanda petik ganda (“”).
Contoh-contoh berikut menunjukkan bagaimana menggunakan tipe-tipe data di atas. Ketikkan kode pada contoh-contoh berikut kemudian kompilasi dan jalankan. Perhatikan output dari program. Contoh 8.1. Penggunaan tipe data integral. public class ContohPerhitungan { public static void main(String[] args) { byte a = 1; short b = 12; int c = 300, d, e; d = a + b + c; e = a * b * c; System.out.println("Hasil penjumlahan = " + d); System.out.println("Hasil perkalian = " + e);
180
Pemrograman Berorientasi Obyek dengan Java
}
}
Contoh 8.2. Penggunaan tipe data float. public class LuasLingkaran { public static void main(String[] args) { double pi = 3.1416; double r = 2.12; double luas; luas = pi * r * r; System.out.println("Luas Lingkaran = " + luas); } } Contoh 8.3. Penggunaan tipe data char. public class tipeChar { public static void main(String[] args) { char ch = 'A'; System.out.println("ch = " + ch); ch++; System.out.println("ch = " + ch); } } 8.3.2. Variabel dan Konstanta Aturan penamaan (identifier) variabel dan konstanta seperti terdapat pada Bab 5 juga berlaku pada Java. Selain itu penulisan identifier pada Java bersifat casesensitive. Artinya huruf besar dan huruf kecil dianggap suatu yang berbeda. Tidak seperti pada VB, Java mensyaratkan kita mendeklarasikan variabel dan konstanta lebih dulu. Kalau tidak maka kode program tidak akan dapat dikompilasi. Cara pendeklarasian variabel adalah sebagai berikut:
Rekayasa Perangkat Lunak
181
mendapatkan input. Berikut ini kita akan pelajari bagaimana menggunakan pernyataan input dan output pada Java. Untuk dapat menangkap input dari keyboard, maka kita harus menggunakan kelas BufferedReader yang berada di java.io package. Sehingga di awal program kita harus mencantumkan kelas tersebut pada kode program. Perhatikan contoh berikut. Contoh 8.4. Pernyataan input pada Java. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class InputKeyboard { public static void main( String[] args ){ BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) ); String name = ""; System.out.print("Ketikkan nama anda:"); try{
}
}
name = dataIn.readLine(); }catch( IOException e ){ System.out.println("Error!");
} System.out.println("Hai " + name +"!");
Tiga baris yang diawali dengan perintah import menunjukkan bahwa kita akan menggunakan kelas BufferedReader, InputStreamReader dan IOException yang berada di java.io package. Penjelasan tentang package akan kita bahas pada bagian lain dari bab ini. Pada statement, BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) ); kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe kelas BufferedReader. Kemudian, kita mendeklarasikan variabel String dengan identifier name. Pernyataan ini digunakan untuk menunjukkan tempat menyimpan input dari pengguna. Variabel name diinisialisasi sebagai String kosong "". Baris berikutnya adalah memberikan output string seperti yang telah kita pelajari dengan menggunakan pernyataan System.out.print; Sekarang, blok di bawah ini merupakan try-catch blok (kita akan bahas tentang ini di sub bab exception)
182
Pemrograman Berorientasi Obyek dengan Java
try{ name = dataIn.readLine(); }catch( IOException e ){ System.out.println("Error!"); } Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada statement name = dataIn.readLine(); akan ditangkap. Jika ada kesalahan maka tulisan “Error” akan disampaikan. Jika tidak ada kesalahan maka variabel name akan diisi dengan apa yang dimasukkan oleh pengguna melalui keyboard. Dan akan ditampilkan pada pernyataan terakhir. Untuk menampilkan output yang kita inginkan, dapat menggunakan perintah sebagai berikut : System.out.println() System.out.print() System.out.println()akan membuat baris System.out.print() tidak akan membuat baris baru.
baru
sedangkan
8.4. OPERATOR 8.4.1. Operator Aritmatika Operator aritmatika yang digunakan pada Java hampir sama dengan yang digunakan pada VB. Hanya pada penggunaan operator modulus yang berbeda notasinya. VB menggunakan mod sedangkan Java menggunakan tanda %. Tabel 8.2 menunjukkan operator aritmatika yang ada di Java. Tabel 8.2. Operator aritmatika pada Java Operator + * / % ++ --
Fungsi Penjumlahan Pengurangan Perkalian Pembagian Sisa hasil bagi (modulus) Menambahkan nilai 1 ke variabel (increment) Mengurangi nilai 1 ke variabel
Contoh 3+5=8 7–2=5 5 * 2 = 10 6/3=2 5/2=1 C++ = C + 1 C-- = C - 1
Contoh berikut menunjukkan bagaimana menggunakan operator aritmatika. Ketikkan kode pada contoh berikut kemudian kompilasi dan jalankan. Perhatikan output dari program.
Rekayasa Perangkat Lunak
183
Contoh 8.4. Penggunaan operator aritmatika. public class DemoAritmatika { public static void main(String[] args) { int i = 21; int j = 38; double x = 9.123; double y = 12.78; //Cetak nilai variabel System.out.println("Nilai Variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); //penjumlahan System.out.println("Penjumlahan..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //pengurangan System.out.println("Pengurangan..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //perkalian System.out.println("Perkalian..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //pembagian System.out.println("Pembagian..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //modulus System.out.println("Sisa Hasil Bagi..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //increment System.out.println("Increment..."); System.out.println(" i++ = " + (i++)); System.out.println(" ++i = " + (++i)); System.out.println(" j++ + i = " + (j++ + i)); System.out.println(" ++j + i = " + (++j + i)); } } 8.4.2. Operator Relasional Operator relasional atau perbandingan pada Java juga mirip dengan VB. Hanya berbeda pada perbandingan symbol sama dan tidak sama. Pada VB untuk membandingkan dua buah operand apakah sama atau tidak menggunakan operator =
184
Pemrograman Berorientasi Obyek dengan Java
untuk sama dengan dan <> untuk tidak sama dengan. Sedangkan pada java digunakan == untuk sama dengan dan != untuk tidak sama dengan. Ketikkan kode pada contoh berikut kemudian kompilasi dan jalankan. Perhatikan output dari program. Contoh 8.5. Penggunaan operator relasional. public class DemoRelasional { public static void main(String[] args) { int i = 20; int j = 16; int k = 16; //Cetak nilai variabel System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); //lebih besar dari System.out.println("Lebih besar dari..."); System.out.println(" i > j = " + (i > j)); System.out.println(" j > i = " + (j > i)); System.out.println(" k > j = " + (k > j)); //lebih besar atau sama dengan System.out.println("Lebih besar atau sama dengan..."); System.out.println(" i >= j = " + (i >= j)); System.out.println(" j >= i = " + (j >= i)); System.out.println(" k >= j = " + (k >= j)); //lebih kecil dari System.out.println("Lebih kecil dari..."); System.out.println(" i < j = " + (i < j)); System.out.println(" j < i = " + (j < i)); System.out.println(" k < j = " + (k < j)); //lebih kecil atau sama dengan System.out.println("Lebih kecil atau sama dengan..."); System.out.println(" i <= j = " + (i <= j)); System.out.println(" j <= i = " + (j <= i)); System.out.println(" k <= j = " + (k <= j)); //sama dengan System.out.println("Sama dengan..."); System.out.println(" i == j = " + (i == j)); System.out.println(" k == j = " + (k == j)); //tidak sama dengan System.out.println("Tidak sama dengan..."); System.out.println(" i != j = " + (i != j)); System.out.println(" k != j = " + (k != j)); } }
Rekayasa Perangkat Lunak
185
8.4.3. Operator Logika .Ada 3 operator logika yang disediakan Java yaitu: && (AND), || (logika OR), | dan ! (logika NOT). Penggunaan operator ini sama persis dengan yang ada pada VB. Hanya notasinya saja yang berbeda. 8.5. STRUKTUR KONTROL PROGRAM Seperti halnya pada VB, pada Java juga menyediakan struktur kontrol program untuk pemilihan maupun pengulangan. Perintah yang digunakan dalam struktur kontrol ini juga hampir mirip. 8.5.1. Struktur Pemilihan Struktur pemilihan dapat menggunakan if, if … else, dan if …else … if. Hal ini tidak berbeda jauh dengan apa yang telah kalian pelajari pada Bab 5 dan Bab 7. Perhatikan potongan kode-kode program berikut. Contoh 8.6. Penggunaan if. int nilai = 68; if( nilai > 60 ) System.out.println("Selamat anda lulus!"); Contoh 8.6 ini hanya menggunakan if untuk membuat struktur pemilihan. Jika nilai lebih dari 60 maka program akan menampilkan output “Selamat anda lulus!” Contoh 8.7. Penggunaan if … else. int nilai = 68; if( nilai > 60 ) System.out.println("Selamat anda lulus!"); else System.out.println("Anda tidak lulus!"); Pada contoh 8.7, kita menggunakan struktur if … else. Jika nilai lebih dari 60 maka akan menampilkan output “Selamat anda lulus!” tetapi jika tidak (else) maka program akan menampilkan output “Anda tidak lulus!”. Contoh 8.8. Penggunaan if … else … if. int nilai = 68; if( nilai > 90 ){ System.out.println("Nilai anda sangat baik!"); } else if( nilai > 60 ){ System.out.println("Nilai anda baik!"); } else{
186
Pemrograman Berorientasi Obyek dengan Java
}
System.out.println("Anda tidak lulus");
Contoh 8.8 merupakan pengembangan dari contoh 8.7. Jika nilai lebih dari 90 maka program akan menampilkan output “Nilai anda sangat baik!”, tetapi jika kurang dari 90 dan lebih dari 60 (else if) maka program akan menampilkan output “Nilai anda baik!” dan jika tidak kedua-duanya (else) maka program akan menampilkan output “Anda tidak lulus” Struktur pemilihan juga memungkinkan kita untuk memilih banyak alternatif. Namun jika menggunakan if akan sangat kompleks. Java menyediakan perintah switch. Perintah ini sama fungsinya dengan Select .. case pada VB. Perhatikan contoh berikut. Contoh 8.9. Penggunaan switch. public class SwitchControl { public static void main(String[] args) { int a=2; int b; switch(a) { case 1: b = a + 1; break; case 2: b = a + 2; break; case 3: b = a + 3; break; case 4: b = a + 4; break; default: b = 0; } System.out.println("Nilai b: " + b); } } Berapakah hasil dari kode program pada contoh 8.9 di atas. Kalau jawaban kalian 4 berarti kalian telah memahami bagaimana cara kerja perintah switch. Switch akan memeriksa apakah ada case yang memiliki nilai sama dengan a yaitu 2. Pemeriksaan dimulai dari case pertama yaitu 1. Pernyataan break harus dituliskan untuk menghentikan pencarian pada case berikutnya. Cobalah hilangkan pernyataan break dan jalankan kode program di atas. Bagaimanakah hasilnya? 8.5.2. Struktur Pengulangan Ada tiga bentuk struktur pengulangan pada Java yaitu for, while dan do-while. Secara prinsip bentuk pengulangan ini sama dengan apa yang telah kalian pelajari pada Bab 5 dan 7. Berikut ini contoh-contoh bentuk pengulangan.
Rekayasa Perangkat Lunak
187
Contoh 8.10. Penggunaan for pada Java. public class ForLoop { public static void main(String[] args) { int j=4; for (int x=0; x < 5; x++) { System.out.println("Nilai x: " + x); System.out.println("Nilai j: " + j); System.out.println(); j--; } } } Sintaks umum for adalah : for (nilai awal; kondisi; increment) kemudian dilanjutkan dengan bagian yang akan diulang. Perhatikan baik-baik bagaimana menggunakan struktur for pada contoh 8.10 di atas. Nilai x=0 adalah nilai awal. Sedangkan x < 5 adalah kondisi yang harus dipenuhi agar pengulangan bisa dilakukan. Nilai x++ merupakan increment. Ingat bahwa penulisan x++ sama artinya dengan x = x + 1. Cobalah jalankan kode program di atas. Menurut kalian bagaimanakah keluaran dari program tersebut? Contoh 8.11. Penggunaan while pada Java. public class WhileLoop { public static void main(String[] args) { int y = 4; while ( y > 0 ){ System.out.print(y); y--; } } } Pada contoh 8.11 ini kita menggunakan while untuk membuat pengulangan. Pada while kita perlu menginisialisasi variabel sebelum masuk ke bagian while. Variabel y kita inisialisasi dengan nilai 4. Kondisi yang harus dipenuhi pada while adalah y>0. Pada contoh ini counternya bersifat menurun (perhatikan bagian y--). Sehingga yang akan tercetak dilayar adalah 4321. Bagaimanakah jika baris counter (y--) kita hilangkan? Berapa kalikah pengulangan akan terjadi? Contoh 8.12. Penggunaan do-while pada Java. public class ContohDoWhile { public static void main(String[] args) { int z=3; do { System.out.println("Java"); z++; } while (z < 6); } }
188
Pemrograman Berorientasi Obyek dengan Java
Contoh 8.12 menunjukkan bagaimana kita dapat menggunakan do-while untuk mengulang pencetakan kata “Java”. Perhatikan dengan baik sintaks penulisan dowhile pada contoh ini. Do-while juga membutuhkan inisialisasi dan counter agar pengulangan dapat dilakukan. Cobalah jalankan program di atas. Berapa kalikah tulisan “Java” akan tampil? Sekarang gantilah kondisi pada while dengan z < 1. Apakah kode program masih mencetak tulisan “Java”? Mengapa? Bacalah kembali Bab 7 pada bagian struktur kontrol pengulangan untuk memahami hal ini. 8.5.3. Menggunakan Break dan Continue Pernyataan break memiliki tiga fungsi yaitu: •
Menghentikan pemilihan pada pernyataan switch.
•
Menghentikan proses pengulangan atau keluar dari badan loop.
•
Keluar dari blok label tertentu.
Pemakaian break pada pernyataan switch sudah kita pelajari pada struktur pemilihan. Kita akan pelajari sekarang bagaimana menggunakan break pada pengulangan. Perhatikan contoh berikut. Contoh 8.13. Penggunaan break pada pengulangan. class BreakPengulangan { public static void main(String[] args) { for (int i=0; i<10; i++) { if (i == 5) { break; } System.out.println("baris ke-" + i); } System.out.println("Ini setelah break pengulangan”); } } Pada contoh 8.13 seharusnya pengulangan akan terjadi sebanyak 10 kali (dimulai dari 0 sampai dengan 9). Tetapi, karena ada pernyataan if (1 == 5) {break;} maka pengulangan akan berhenti ketika nilai i =5. Kemudian alur program akan keluar dari badan dan menjalankan perintah setelah tanda akhir pengulangan. Pernyataan continue digunakan untuk memaksa program untuk melanjutkan proses pengulangan. Perhatikan contoh berikut. Contoh 8.14. Penggunaan continue. String nama[] = {"Joni", "Riko", "Denis", "Riko"}; int hitung = 0; for( int i=0; i
Rekayasa Perangkat Lunak
189
} hitung++;
} System.out.println("Ada " + hitung + " Riko dalam daftar"); Contoh 8.14 adalah potongan program untuk mencari jumlah nama Riko di dalam kumpulan nama. Pernyataan if(!names[i].equals(“Riko”) mempunyai arti jika isi pada variabel nama bukan “Riko” maka jalankan perintah continue. Peletakkan pernyataan continue ini memaksa program untuk mengulang langsung tanpa harus menjalankan perintah di bawah continue. Artinya baris hitung++ tidak akan dijalankan. Sehingga kalau kita eksekusi kode program di atas hasilnya adalah 2.
8.6. EXCEPTION HANDLING 8.6.1. Pengertian Exception Handling Kesalahan dalam sebuah program sering kali muncul, meskipun program Untuk menghindari tersebut dibuat oleh programmer berkemampuan tinggi. pemborosan waktu pada proses pencarian kesalahan, Java menyediakan mekanisme penanganan exception. Exception adalah singkatan dari Exceptional Events. Menurut definisi umum, exception adalah kondisi abnormal yang terjadi saat runtime. Runtime error atau kesalahan-kesalahan yang terjadi pada saat program berjalan diwujudkan dan exception. Exception dapat dibangkitkan secara otomatis oleh sistem Java runtime maupun sengaja kita buat melalui pernyataan tertentu untuk tujuan tertentu. Perhatikan kode program berikut: public class DivByZero { public static void main(String args[]) { int a = 5, b = 0, c; c = a/b;
}
}
System.out.println("c = " + c);
Kode program di atas, secara sintaks tidak salah. Namun ada kesalahan yang fatal yaitu ada pembagian dengan 0. Yaitu a = 5 dibagi b = 0. Kesalahan seperti ini sering terjadi karena memang tidak kentara bila kita tidak cermat. Apabila kita kompilasi kode program tersebut maka kompilasi akan berlangsung sukses. Namun bila kita jalankan kita tidak akan mendapatkan hasil tetapi program akan menampilkan pesan terjadinya exception atau kondisi tidak normal (Gambar 8.8) dan program akan berhenti.
190
Pemrograman Berorientasi Obyek dengan Java
Gambar 8.8. Peringatan terjadinya kesalahan. Pesan pada Gambar 8.8 tersebut menginformasikan tipe exception yang terjadi pada baris dimana exception itu berasal. Inilah aksi default yang terjadi bila terjadi exception yang tidak tertangani. Jika tidak terdapat kode yang menangani exception yang terjadi, aksi default akan bekerja otomatis. Beberapa tipe exception yang umum antara lain: •
ArithmeticException. Exception karena kesalahan yang ada hubungannya dengan perhitungan, misalnya pembagian dengan 0.
•
ArrayIndexOutOfBoundException.
•
NullPointerException. Kesalahan karena pointer yang tidak berisi (null)
•
Dan lain-lain
diluar batas yang ditetapkan.
Exception karena membaca indeks array
8.6.2. Try dan Catch
Try digunakan untuk membuat blok yang berisi pernyataan-pernyataan yang Apabila dalam proses eksekusi pernyataanmungkin menimbulkan exception. pernyataan pada blok tersebut terjadi exception maka exception akan dilempar ke bagian blok penangkap exception yang dibuat dengan kata kunci catch. Perhatikan contoh berikut in. Contoh 8.15. Exception dengan try-catch. public class DivByZero { public static void main(String args[]) { int a = 5, b = 0, c; try {
}
}
c = a/b; } catch (ArithmeticException exc) { //Reaksi jika terjadi exception System.out.println(exc); } System.out.println("Setelah exception");
Rekayasa Perangkat Lunak
191
Kode program pada contoh 8.15 ini adalah pengembangan dari kode program sebelumnya. Pernyataan c = a/b merupakan pernyataan yang kita uji apakah mengandung exception atau tidak. Jika terjadi exception maka exception akan dilempar ke bagian catch. Exception yang kita periksa adalah ArithmeticException. Reaksi yang muncul jika terjadi exception adalah menjalankan pernyataan System.out.println(exc);. Dengan mekanisme seperti ini maka program tidak akan dipaksa berhenti dan perintah setelah blok try-catch tetap bisa dijalankan. Gambar 8.9. menunjukkan hasil eksekusi kode program di atas. Bandingkan dengan Gambar 8.8.
Gambar 8.9. Output dari try-catch. Umumnya exception pada satu masalah tidak hanya satu. Pada contoh 8.16 berikut ini, kita menggunakan beberapa tipe exception untuk memeriksa kemungkinan terjadi exception. Ketik kode program berikut kemudian jalankan dan amati apa yang terjadi. Contoh 8.16. Exception dengan try-catch. class BanyakEksepsi { public static void test(int a, int b) { try { int c = a / b; System.out.println("Hasil bagi: " + c);
}
int[] Arr = {1,2,3,4,5}; // array dengan 5 elemen Arr[10] = 11; // mengakses indeks ke-10 } catch (ArithmeticException ae) { System.out.println("Terdapat pembagian dengan 0"); System.out.println(ae); } catch (ArrayIndexOutOfBoundsException oobe) { System.out.println("Indeks di luar rentang"); System.out.println(oobe); }
public static void main(String[] args) { test(4, 0); // menimbulkan ArithmeticException System.out.println();
192
Pemrograman Berorientasi Obyek dengan Java
}
}
test(12, 4); // menimbulkan ArrayIndexOutOfBoundsException
8.6.3. Throw Disamping menangkap exception, Java juga mengijinkan seorang user untuk melempar (throw) sebuah exception. Perhatikan contoh 8.17 berikut ini. Contoh 8.17. Exception dengan try-catch dan throw. class ThrowDemo { public static void main(String args[]){ String input = "Salah input"; try { if (input.equals("Salah input")) { throw new RuntimeException("Demonstrasi Throw"); } else { System.out.println(input); } System.out.println("Setelah throw"); } catch (RuntimeException e) { System.out.println("Exception ditangkap di sini."); System.out.println(e); } } } Perhatikan pada pernyataan yang dimulai dari perintah if. Kalau diartikan pernyataan tersebut adalah jika nilai variabel input sama dengan “Salah input” maka lemparkan exception dengan menampilkan “Demonstrasi Throw”. Output dari kode program ini akan tampak seperti pada Gambar 8.10.
Gambar 8.10. Output program dengan throw. 8.6.4. Finally Blok finally mengandung kode penanganan setelah penggunaan try dan catch. Blok kode ini selalu tereksekusi apapun yang terjadi pada blok try. Blok kode tersebut
Rekayasa Perangkat Lunak
193
juga akan menghasilkan nilai true meskipun return, continue ataupun break tereksekusi. Perhatikan kode program berikut. Contoh 8.18. Exception dengan try-catch-finally. class DemoFinally { private static int i = 0;
}
public static void main(String[] args) { while (true) { try { System.out.print("Pada saat i = " + i + ": "); if (i++ == 0) { throw new Exception(); // melempar exception } System.out.println("Tidak terjadi exception"); } catch (Exception e) { System.out.println("Terdapat exception"); } finally { System.out.println("Pernyataan dalam blok finally\n"); if (i == 2) { break; // pada saat i==2, pengulangan akan berhenti } } } }
Bila kode program dijalankan maka akan tampak seperti pada Gambar 8.11. Perhatikan bahwa apa yang ada pada blok kode finally akan selalu dijalankan.
Gambar 8.11. Output kode program try-catch-finally.
194
Pemrograman Berorientasi Obyek dengan Java
8.7. MULTI-THREADING 8.7.1. Pengertian Thread Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi di dalam sebuah program tertentu. Thread adalah suatu bagian program yang tidak tergantung pada bagian lain dan dapat dijalankan secara bersama-sama. Hal ini berarti suatu thread dapat diberhentikan atau diistirahatkan tanpa harus menghentikan yang lainnya. Pada Java setiap thread dikontrol oleh suatu obyek unik turunan Thread, yang didefinisikan di dalam paket java.lang. Pada saat sebuah program Java dijalankan, sebenarnya terdapat satu thread yang secara otomatis dibuat. Thread ini biasa disebut sebagai thread utama. Thread ini merupakan induk dari dari thread-thread yang lain. Meskipun thread utama ini otomatis dijalankan tetapi kita dapat mengendalikannya melalui obyek Thread dengan memanggil method currentThread(). Perhatikan contoh berikut. Contoh 8.19. Thread utama. class ThreadUtama { public static void main(String[] args) throws InterruptedException { // mendapatkan thread yang sedang aktif Thread tUtama = Thread.currentThread(); // menampilkan informasi tentang thread System.out.print("Informasi thread: "); System.out.println(tUtama.toString());
}
}
for (int i=0; i<5; i++) { System.out.println("Detik ke-" + (i+1)); Thread.sleep(1000); // membuat delay selama 1 detik }
Pada contoh di atas, kita mendefinisikan thread dengan nama tUtama. Variabel ini kita gunakan untuk menangkap thread utama yang sedang berjalan pada program dengan perintah Thread.currentThread(). Kemudian informasi tentang thread ini kita tampilkan di layar. Pada baris yang dimulai dengan for, kita akan menggunakan perintah untuk mengontrol thread yang sedang berjalan. Kita menggunakan method sleep untuk mengontrol thread agar menunda pekerjaan selama 1 detik tiap kali pengulangan. Cobalah ketik kode di atas, kemudian jalankan. Kemudian coba hapus baris Thread.sleep(1000);. Jalankan lagi program. Apa yang berbeda?
Rekayasa Perangkat Lunak
195
8.7.2. Pembuatan dan Penggunaan Thread
Thread dapat dibuat dengan dua cara yaitu dengan membuat kelas baru yang menerapkan interface Runnable dan membuat kelas baru dengan menurunkan dari kelas Thread. Kedua cara tersebut membutuhkan paket java.lang. Secara default paket ini telah otomatis diimpor pada saat kita membuat program dengan Java. Pada bagian ini kita hanya akan membahas cara pertama. Sedangkan cara kedua akan kita pelajari secara bersamaan pada bagian multi-thread. Perhatikan contoh berikut. Contoh 8.20. Membuat thread dengan interface Runnable. class TestRunnable implements Runnable { // mengimplementasikan method run() yang dideklarasikan // di dalam interface Runnable public void run() { System.out.println("Thread anak dieksekusi"); } } class PenerapanRunnable { public static void main(String[] args) { // (LANGKAH KE-1): membuat objek Runnable TestRunnable obj = new TestRunnable(); // (LANGKAH KE-2): membuat objek Thread dengan melewatkan objek Runnable Thread t = new Thread(obj); // (LANGKAH KE-3) : menjalankan thread t.start();
}
}
System.out.println("Thread utama dieksekusi");
Pada contoh di atas kita membuat lebih dulu kelas TestRunnable yang menerapkan Runnable (perhatikan baris class TestRunnable implements Runnable dan blok kode dibawahnya). Kemudian kita membuat obyek TestRunnable dari kelas tersebut (lihat pada baris TestRunnable obj = new TestRunnable() ). Obyek ini kita gunakan untuk membuat thread baru dengan cara menggunakan constructor kelas thread (lihat baris Thread t = new Thread(obj) ). Setelah terbentuk maka kita dapat menjalankan thread tersebut (lihat baris t.start() ).
196
Pemrograman Berorientasi Obyek dengan Java
8.7.3. Multi-Thread Pada contoh 8.19 dan 8.20, kita hanya berhubungan dengan satu dan dua thread. Namun sesungguhnya Java member kemungkinan untuk membuat lebih dari dua thread. Kondisi ini dinamakan sebagai Multi-thread. Coba kalian perhatikan contoh berikut ini. Contoh 8.21. Membuat multi-thread. class MyThread1 extends Thread { public void run() { try { for (int i=0; i<10; i++) { System.out.println("Thread pertama: detik ke-" + (i+1)); if (i != 9) { sleep(1000); } else { System.out.println("Thread pertama selesai...\n"); } } } catch (InterruptedException ie) { System.out.println(ie.getMessage()); } } } class MyThread2 extends Thread { public void run() { try { for (int i=0; i<5; i++) { System.out.println("Thread kedua: detik ke-" + (i+1)); if (i != 4) { System.out.println(); sleep(1000); } else { System.out.println("Thread kedua selesai...\n"); } } } catch (InterruptedException ie) { System.out.println(ie.getMessage()); } } } class DemoMultipleThread { public static void main(String[] args) { MyThread1 t1 = new MyThread1(); t1.start();
Rekayasa Perangkat Lunak
197
}
}
MyThread2 t2 = new MyThread2(); t2.start();
Kode program di atas menunjukkan bagaimana membentuk dua buah thread. Thread yang pertama kita buat melalui pembuatan kelas MyThread1 dengan cara
menurunkan kelas Thread. Cara ini adalah cara kedua membuat thread yang kita singgung di bagian sebelumnya. Thread kedua dengan nama kelas MyThread2 juga kita buat dengan cara yang sama. Kemudian pada class DemoMultipleThread kita membuat obyek t1 dari kelas MyThread1 dan obyek t2 dari kelas MyThread2. Apabila dijalankan, kode program di atas akan tampak seperti pada Gambar 8.12.
Gambar 8.12. Hasil eksekusi multi-thread. 8.8. APLIKASI PEMROGRAMAN BERORIENTASI OBYEK DENGAN JAVA Pada contoh-contoh sebelumnya dan beberapa penjelasannya kita telah menyinggung beberapa kali tentang class (kelas) dan object (obyek). Namun kita belum mempelajari dengan jelas apa sebenarnya kelas dan obyek dalam Java. Kelas dan obyek dalam Java adalah penerapan dari prinsip-prinsip pemrograman berorientasi obyek yang telah kita pelajari di awal bab ini. Kelas dapat didefinisikan sebagai kerangka yang mendefinisikan variabelvariabel, method umum dari sebuah obyek tertentu. Pada pemrograman berorientasi obyek, kelas tidak jauh berbeda dengan tipe data primitive. Perbedaannya, tipe data digunakan untuk mendeklarasikan variabel normal, sedangkan kelas digunakan untuk mendeklarasikan variabel yang berupa obyek. Kelas masih bersifat abstrak.
198
Pemrograman Berorientasi Obyek dengan Java
8.8.1. Pembuatan Kelas Pada Java kelas didefinisikan dengan kata kunci class. Bentuk umum untuk mendefinisikan kelas adalah sebagai berikut: class NamaKelas tipe data1; tipe data2; … tipe dataN;
}
tipe method1 //blok } tipe method2 //blok } … tipe methodN //blok }
(daftar parameter) { kode untuk method1 (daftar parameter) { kode untuk method2 (daftar parameter) { kode untuk methodN
Data atau variabel yang didefinisikan di dalam kelas sering disebut sebagai
instance variable. Nilai-nilai variabel ini akan dibaca melalui method-method yang
tersedia. Dengan demikian method digunakan sebagai antarmuka (interface) antara pemakai kelas dengan data yang ada di dalam kelas tersebut. Ingat kembali prinsip encapsulation di awal bab. Perhatikan contoh kelas berikut. Contoh 8.22. Membuat kelas sederhana. class Siswa { String name; String alamat; int usia; } Pada kode di atas kita membuat class dengan nama Siswa. Ada tiga data yang ada pada class tersebut yaitu nama, alamat dan usia. Kita belum menambahkan method di sini. Melalui kode di atas sebenarnya kita telah mendefinisikan tipe data baru yaitu Siswa. Kode program di atas hanyalah sebuah template. Artinya kalau jalankan program di atas tidak akan menghasilkan apa-apa. Kita perlu membuat obyek aktual berdasarkan kelas di atas. Dengan cara sebagai berikut. Contoh 8.23. Menggunakan kelas. class Siswa { String nama; String alamat; int usia;
Rekayasa Perangkat Lunak
199
} public class DataSiswa { public static void main(String[] args) { Siswa siswa1 = new Siswa(); siswa1.nama = "Roni"; siswa1.alamat = "Mergosono Gg. 1 No. 34"; siswa1.usia = 23; System.out.println("Nama :" + siswa1.nama); System.out.println("Alamat :" + siswa1.alamat); System.out.println("Usia :" + siswa1.usia); } } Kode program di atas harus kita simpan dengan nama file DataSiswa.java, buka Siswa.java. Hal ini karena method main berada pada class DataSiswa. Pada kode di atas kelas Siswa kita gunakan pada kelas DataSiswa. Kita membuat obyek aktual dari kelas Siswa dengan cara mengetikkan Siswa siswa1 = new Siswa();. Siswa1 adalah nama obyek aktual dari kelas Siswa. Setelah itu baru kita dapat menggunakan variabel atau data yang ada pada kelas siswa. Kalau dijalankan, kode program di atas akan menghasilkan output seperti pada Gambar 8.13.
Gambar 8.13. Hasil eksekusi terhadap class DataSiswa. Sekarang kita akan buat kelas menjadi sedikit lebih kompleks dengan mengikutkan method pada kelas tersebut. Perhatikan contoh berikut. Contoh 8.23. Pembuatan kelas yang mempunyai method. class Siswa { String nama; String alamat; int usia; double nilaiMatematika; double nilaiBhsInggris; double nilaiBhsIndonesia; double rerata; // Menghasilkan nama dari Siswa public String getNama(){ return nama;
200
Pemrograman Berorientasi Obyek dengan Java
} // Mengubah nama siswa public void setNama( String temp ){ nama = temp; } // Menghitung rata – rata nilai public double getRerata(){ rerata = ( nilaiMatematika+nilaiBhsInggris+nilaiBhsIndonesia )/3; return rerata; } } public class DataSiswa { public static void main(String[] args) { Siswa siswa1 = new Siswa(); siswa1.setNama("Rony"); siswa1.nilaiMatematika = 67; siswa1.nilaiBhsInggris = 87; siswa1.nilaiBhsIndonesia = 59; System.out.println("Nama :" + siswa1.getNama()); System.out.println("Nilai Matematika :" + siswa1.nilaiMatematika); System.out.println("Nilai Bahasa Inggris :" + siswa1.nilaiBhsInggris); System.out.println("Nilai Bahasa Indonesia :" + siswa1.nilaiBhsIndonesia); System.out.println("Rerata :" + siswa1.getRerata()); } } Pada kode di atas kita memperluas kelas Siswa dengan menambahkan empat variabel yaitu nilaiMatematika, nilaiBhsInggris, nilaiBhsIndonesia dan rerata. Kita juga menambahkan tiga buah method yaitu getNama, setNama dan getRerata. getNama merupakan method untuk menampilkan isi dari variabel nama. setNama adalah method untuk memberi nilai pada variabel nama. getRerata adalah method untuk menghitung rata-rata nilai dari tiga pelajaran dan menampilkan isi dari hasil perhitungan. Perhatikan bagaimana method ini digunakan pada kelas DataSiswa. Apabila dijalankan maka kita akan memperoleh output seperti pada Gambar 8.14.
Rekayasa Perangkat Lunak
201
Gambar 8.14. Eksekusi pada class yang mempunyai method. Ada beberapa tipe method di dalam class, yaitu method yang tidak mengembalikan nilai, method yang mengembalikan nilai dan method khusus yaitu constructor. Secara umum method ini boleh kita samakan dengan prosedur atau fungsi (lihat kembali Bab 6 dan 7). Perhatikan contoh-contoh berikut ini. Contoh 8.24. Pembuatan method tanpa pengembalian nilai. Class Bangun { double panjang; double lebar;
}
// Mendefinisikan method void (tidak mengembalikan nilai) void cetakLuas() { System.out.println(“Luas bangun = “ + (panjang * lebar)); }
class pakaiBangun { public static void main(String[] args) { Bangun b1, b2; // instansiasi objek b1 = new Bangun(); b2 = new Bangun(); // mengisi data untuk objek b1 b1.panjang = 4; b1.lebar = 3; // mengisi data untuk objek b2 b2.panjang = 6; b2.lebar = 5;
}
}
202
// memanggil method cetakLuas() untuk masing-masing objek b1.cetakLuas(); b2.cetakLuas();
Pemrograman Berorientasi Obyek dengan Java
Pada kode di atas, class Bangun mempunyai satu method yaitu cetakLuas. Method ini tidak mengembalikan nilai. Hasil akhir dari method ini akan tersimpan pada method tersebut. Bandingkan dengan contoh berikut. Contoh 8.25. Pembuatan method dengan pengembalian nilai. Class Bangun { double panjang; double lebar;
}
// Mendefinisikan method yang mengembalikan nilai double hitungLuas() { double luas = panjang * lebar; return luas; }
class pakaiBangun { public static void main(String[] args) { Bangun b1, b2; // instansiasi objek b1 = new Bangun(); b2 = new Bangun(); // mengisi data untuk objek b1 b1.panjang = 4; b1.lebar = 3; // mengisi data untuk objek b2 b2.panjang = 6; b2.lebar = 5;
}
}
// memanggil method hitungLuas() untuk masing-masing objek System.out.println(“Luas b1 = “ + b1.hitungLuas()); System.out.println(“Luas b2 = “ + b2.hitungLuas());
Pada contoh 8.25 ini kita membuat metode hitungLuas yang mengembalikan nilai. Perhatikan deklarasi method tidak lagi menggunakan void tetapi menggunakan double yang merupakan tipe data nilai yang dikembalikan. Untuk mengembalikan nilai digunakan kata kunci return. Perhatikan cara pemanggilan method dari contoh 8.24 dan 8.25, apa yang berbeda?
Method dapat juga memiliki argumen seperti halnya pada fungsi atau prosedur. Perhatikan contoh berikut.
Rekayasa Perangkat Lunak
203
Contoh 8.26. Pembuatan method dengan argumen. class Bangun { double panjang; double lebar; // method dengan argumen void isiData(double p, double l) { panjang = p; lebar = l; }
}
// method yang mengembalikan nilai double hitungLuas() { double luas = panjang * lebar; return luas; }
class pakaiBangun { public static void main(String[] args) { Bangun b; // instansiasi obyek b = new Bangun(); // memanggil method isiData dan mengisi argumennya b.isiData(6,8);
}
}
// memanggil method hitungLuas() untuk objek b System.out.println("Luas b = " + b.hitungLuas());
Pada contoh 8.26 ini kita menambahkan satu method lagi pada class Bangun yaitu isiData. Karena tidak mengembalikan nilai maka kita menggunakan void. Method ini mempunyai dua buah argument yaitu p dan l yang digunakan untuk menampung nilai yang akan kita masukkan. Perhatikan bagaimana kita menggunakan method ini (lihat bagian b.isiData(6, 8) ).
Constructor yang merupakan method khusus, merupakan method yang didefiniskan di dalam kela dan akan dipanggil secara otomatis setiap kali terjadi pendefinisian (instansiasi) obyek. Biasanya constructor berfungsi untuk melakukan inisialisasi nilai terhadap data-data yang terdapat pada kelas yang bersangkutan. Nama method constructor harus sama dengan nama kelas itu sendiri. Constructor tidak memiliki kembalian nilai dan tidak void. Perhatikan contoh berikut ini.
204
Pemrograman Berorientasi Obyek dengan Java
Contoh 8.27. Pembuatan class dengan constructor. class Bangun { double panjang; double lebar; // constructor dengan argumen Bangun(double p, double l) { panjang = p; lebar = l; }
}
// method yang mengembalikan nilai double hitungLuas() { double luas = panjang * lebar; return luas; }
class pakaiBangun { public static void main(String[] args) { Bangun b; // instansiasi obyek b = new Bangun(); // memanggil method isiData dan mengisi argumennya b.isiData(6,8);
}
}
// memanggil method hitungLuas() untuk objek b System.out.println("Luas b = " + b.hitungLuas());
Kode di atas sekilas sama dengan contoh 8.26, namun sebenarnya berbeda. Pada kode ini terdapat constructor dengan nama yang sama dengan kelasnya yaitu Bangun. Constructor seperti halnya method yang lain boleh mempunyai argumen dan boleh tidak. Pada contoh di atas kita constructor Bangun mempunyai argumen p dan l. 8.8.2. Penerapan Inheritance Prinsip inheritance atau pewarisan, secara umum telah kalian pelajari di awal bab. Pewarisan adalah keuntungan besar dalam pemrograman beorientasi obyek karena suatu sifat atau method yang telah didefinisikan dalam superclass, secara otomatis diwariskan dari pada semua subclasses. Jadi kita mungkin hanya perlu mendefinisikan method satu kali di superclass kemudian dapat kita gunakan pada subclass. Perhatikan contoh berikut.
Rekayasa Perangkat Lunak
205
Contoh 8.28. Penerapan inheritance. class SuperA { private int a;
}
public void setSuperA(int nilai) { a = nilai; } public int getSuperA() { return a; }
// membuat kelas turunan (subclass) dari kelas A class SubB extends SuperA { private int b;
}
public void setSubB(int nilai) { b = nilai; } public int getSubB() { return b; }
class DemoKelasTurunan1 { public static void main(String[] args) { // melakukan instansiasi terhadap kelas B SubB ObyekB = new SubB(); // mengeset nilai objek dari kelas B ObyekB.setSuperA(50); ObyekB.setSubB(200);
}
}
// mendapatkan nilai yang terdapat dalam objek dari kelas B System.out.println("Nilai a : " + Obyek.getSuperA()); System.out.println("Nilai b : " + Obyek.getSubB());
Pada kode di atas, class SuperA adalah super class yang memiliki satu data yaitu a dan dan dua method yaitu setSuperA dan getSuperA. Class SubB adalah turunan dari kelas SuperA (perhatikan deklarasi class SubB extends SuperA). Data dan method yang ada pada class SuperA secara otomatis akan dibawa ke class SubB. Sehingga class SubB akan mempunyai dua data yaitu a dan b. Data a adalah hasil warisan dari class SuperA sedang data b adalah milik class SubB sendiri. Method pada class SubB akan terdiri dari empat method, yaitu setSuperA dan getSuperA yang merupakan warisan dari class SuperA serta class setSubB dan getSubB yang milik
206
Pemrograman Berorientasi Obyek dengan Java
class SubB sendiri. Cobalah ketik program di atas kemudian jalankan dan cermati hasil yang diperoleh. Perhatikan contoh yang lain berikut ini. Contoh 8.29. Penerapan inheritance untuk menghitung luas dan volume. class Bangun { protected double panjang; protected double lebar; // constructor default Bangun() { panjang = lebar = 0; } Bangun(double p, double l) { panjang = p; lebar = l; }
}
// method yang mengembalikan nilai public double hitungLuas() { double luas = panjang * lebar; return luas; }
class Box extends Bangun { private double tinggi; // constructor class Box Box (int p, int l, int t) { panjang = p; lebar = l; tinggi = t; } public double getTinggi() { return tinggi; }
}
public double hitungVolume() { double volume = panjang * lebar * tinggi; return volume; }
class inheritBangun { public static void main(String[] args) { Box kotak;
Rekayasa Perangkat Lunak
207
// instansiasi obyek kotak = new Box(6, 8, 3); // memanggil method hitungLuas(), getTinggi() dan hitung volume() System.out.println("Luas salah satu sisi = " + kotak.hitungLuas()); System.out.println("Tinggi kotak = " + kotak.getTinggi()); System.out.println("Volume kotak = " + kotak.hitungVolume()); } } Kelas Bangun di atas adalah superclass sedangkan Box adalah subclass. Pada default constructor Bangun, nilai panjang dan lebar diinisialisasi dengan nilai 0. Perhatikan didepan deklarasi variabel panjang dan lebar pada kelas Bangun dicantumkan kata kunci protected yang berarti kelas turunan dari Bangun tetap dapat mengakses nilai dari variabel tersebut namun yang tidak memiliki hubungan turunan tidak dapat mengaksesnya. Pada Box yang merupakan subclass ditambahkan satu variabel yaitu tinggi dengan tambahan kata kunci private diikuti tipe datanya. Private menunjukkan bahwa variabel tinggi hanya bisa diakses didalam kelas Box. Lawan dari private adalah public, yang berarti dapat diakses oleh siapapun dan dari manapun. Pada kelas Box juga kita tambahkan satu method yaitu hitungVolume(). Pada contoh 8.29 di atas obyek yang kita buat yaitu kotak, merupakan hasil instansiasi dari kelas Box. Oleh karena kelas Box adalah turunan dari kelas Bangun, maka kita dapat mengakses method hitungLuas() yang merupakan warisan dari kelas Bangun. Tentu saja kita bisa mengakses method getTinggi() dan hitungVolume() yang merupakan method pada kelas Box. Kalau kita eksekusi program di atas, maka akan tampak seperti berikut.
Gambar 8.15. Hasil eksekusi program kelas Bangun dan Box. 8.8.3. Penerapan Overriding dan Overloading Kadang-kadang, ketika kita membuat method di dalam subclass, kita ingin membuat method dengan nama yang sama dengan method pada superclass namun dengan penerapan yang berbeda. Sebagai contoh pada kelas Bangun pada contoh
208
Pemrograman Berorientasi Obyek dengan Java
8.29, tersedia method hitungLuas(). Misalnya kita ingin membuat subclass Segitiga yang merupakan turunan dari kelas Bangun. Kemudian kita ingin membuat method hitungLuas() yang penerapannya tidak lagi luas = panjang x lebar tetapi dengan penerapan luas = 0.5 x alas x tinggi. Pada kondisi ini method hitungLuas() dari superclass akan tertutupi oleh method pada subclass. Hal seperti ini biasa disebut sebagai overriding. Perhatikan contoh berikut. Contoh 8.30. Penerapan overriding. class Bangun { // method umum public double hitungLuas() { System.out.println("Method belum terdefinisi"); Return 0; } } class Segitiga extends Bangun { private double alas; private double tinggi; Segitiga (int a, int t) { alas = a; tinggi = t; } // overriding method hitungLuas() public double hitungLuas() { double luas = 0.5 * alas * tinggi; return luas; }
}
class overridingBangun { public static void main(String[] args) { Segitiga s; // instansiasi obyek s = new Segitiga(6, 8);
}
}
// memanggil method hitungLuas() dari subclass Segitiga System.out.println("Luas segitiga = " + s.hitungLuas());
Pada contoh di atas, kelas Bangun sebagai superclass mempunyai method hitungLuas(), tetapi belum kita definisikan isi methodnya. Pada kelas Segitiga, method hitungLuas() ini kita overriding untuk mendapatkan nilai luas segitiga. Pada eksekusi program di atas, yang dijalankan adalah method hitungLuas() yang ada pada
Rekayasa Perangkat Lunak
209
subclass Segitiga. Hasil dari eksekusi program akan tampak seperti pada Gambar
8.16. Apabila kita ingin tetap menjalankan method hitungLuas() yang ada pada kelas Rubahlah method Bangun kita dapat memanggil dengan kata kunci super. hitungLuas() pada kelas Segitiga dengan kode berikut. public double hitungLuas() { super.hitungLuas(); System.out.println(); double luas = 0.5 * alas * tinggi; return luas; }
Jalankan program, maka kalian akan mendapatkan hasil seperti Gambar 8.17. Bandingkan dengan hasil eksekusi sebelumnya (Gambar 8.16)
Gambar 8.16. Hasil eksekusi overriding pada method hitungLuas().
Gambar 8.17. Hasil eksekusi overriding dan pernyataan super. Overloading memiliki kesamaan dengan overriding dalam hal menyembunyikan method dari superclass. Tetapi memiliki perbedaan yaitu, pada overloading methodnya memiliki nama yang sama dengan method pada kelas induk, tetapi memiliki daftar argument dan implementasi yang berbeda. Sedangkan overriding, method mempunyai nama dan daftar argumen yang sama dengan kelas induk dan hanya implementasinya yang berbeda. Perhatikan contoh berikut. Contoh 8.31. Contoh overloading. class Bangun { // method umum public double hitungLuas() { System.out.println("Method belum terdefinisi"); return 0; }
210
Pemrograman Berorientasi Obyek dengan Java
} class BujurSangkar extends Bangun { private double sisi;
}
// overload method hitungLuas() public double hitungLuas(double sisi) { double luas = sisi * sisi; return luas; }
class overloadBangun { public static void main(String[] args) { BujurSangkar b; // instansiasi obyek b = new BujurSangkar(); // memanggil method hitungLuas() dari subclass BujurSangkar System.out.println("Luas BujurSangkar = " + b.hitungLuas(6)); } } Perhatikan pada kode di atas, method hitungLuas() pada kelas bangun tidak mempunyai argumen sedangkan pada kelas BujurSangkar mempunyai argumen yaitu sisi. Inilah yang disebut sebagai overloading. Bandingkan dengan contoh overriding pada contoh 8.29 dan 8.30. 8.8.4. Penerapan Polymorphism Seperti telah dijelaskan di awal bab, polymorphism adalah kemampuan sebuah untuk menerjemahkan suatu method menjadi berbagai macam aksi. Sebenarnya ketika kalian mempelajari overriding dan overloading di atas secara tidak langsung kalian telah mempelajari dasar-dasar penyusun teori polymorphism. Polymorphism membolehkan kelas induk (superclass) untuk mendefinisikan method umum untuk semua turunannya. Kelas-kelas turunannya dapat mengimplementasikan method tersebut sesuai dengan karakteristik masin-masing kelas. Pada contoh 8.30 dan 8.31 kita telah membuat kelas Bangun yang merupakan kelas induk yang mempunyai method hitungLuas(). Method ini bersifat umum. Pada contoh 8.30, method ini kita implementasikan dengan untuk mencari nilai luas segitiga pada kelas Segitiga. Sedangkan pada contoh 8.31, method ini kita implementasikan untuk mencari luas BujurSangkar pada kelas BujurSangkar. Perhatikan contoh berikut ini.
Rekayasa Perangkat Lunak
211
Contoh 8.32. Penerapan polymorphism. class Bangun { public double hitungLuas() { System.out.println("Method umum"); return 0; } } class BujurSangkar extends Bangun { private double sisi; BujurSangkar(int s) { sisi = s; }
}
//overriding method hitungLuas() public double hitungLuas() { double luas = sisi * sisi; return luas; }
class Segitiga extends Bangun { private double alas; private double tinggi; Segitiga (int a, int t) { alas = a; tinggi = t; } // overriding method hitungLuas() public double hitungLuas() { double luas = 0.5 * alas * tinggi; return luas; }
}
class Lingkaran extends Bangun { private double jarijari; private final double PI = 3.1416; Lingkaran(int r) { jarijari = r; } //overriding method hitungLuas() public double hitungLuas() { double luas = PI * jarijari * jarijari;
212
Pemrograman Berorientasi Obyek dengan Java
}
}
return luas;
class DemoPolimorfisme2 { public static void main(String[] args) { Bentuk obyek; BujurSangkar b = new BujurSangkar(12); Segitiga s = new Segitiga(5, 6); Lingkaran l = new Lingkaran(4); // obyek mengacu pada objek BujurSangkar obyek = b; // akan memanggil method yang terdapat pada BujurSangkar System.out.println(“Luas bujursangkar : “ + obyek.hitungLuas()); System.out.println(); // obyek mengacu pada objek Segitiga obyek = s; // akan memanggil method yang terdapat pada Segitiga System.out.println(“Luas segitiga : “ + obyek.hitungLuas()); System.out.println(); // obyek mengacu pada objek Lingkaran obyek = l; // akan memanggil method yang terdapat pada Lingkaran System.out.println(“Luas lingkaran: “ + obyek.hitungLuas()); System.out.println(); } } Pada contoh 8.32 ini kita menggabungkan contoh-contoh sebelumnya untuk menunjukkan bagaimana polymorphism terbentuk. Kelas induk adalah Bangun dan mempunyai subclass yaitu BujurSangkar, Segitiga dan Lingkaran. Semuanya subclass mempunyai method hitungLuas() yang diturunkan dari kelas Bangun. Perhatikan bahwa meskipun nama method hitungLuas() ada pada semua subclass, ternyata penerapannya berbeda-beda tergantung pada subclass masing-masing. 8.8.5. Menggunakan Paket dan Interface Pada beberapa bagian di atas telah disinggung tentang package atau paket. Packages dalam JAVA berarti pengelompokan beberapa class dan interface dalam satu unit. Fitur ini menyediakan cara untuk mengatur class dan interface dalam jumlah banyak dan menghindari kekacauan pada penamaan class dan file.
Rekayasa Perangkat Lunak
213
Kalau kalian cermati contoh 8.4 pada sub bab terdahulu, sebenarnya kalian telah menggunakan konsep package ini secara tidak langsung. Pada contoh tersebut kita menggunaka pernyataan import untuk menggunakan kelas-kelas yang ada pada paket Java.IO. Java menyediakan banyak paket yang telah dibuat oleh tim pengembang java. Paket-paket ini dapat kita gunakan untuk mempermudah pemrograman Cara membuat paket cukup mudah, kita tinggal menggunakan kata kunci package diikuti dengan nama paket yang kita inginkan seperti berikut: package NamaPaket; NamaPaket adalah nama paket yang kita akan gunakan untuk menyimpan file kode program dan file hasil kompilasi. Java menggunakan sistem direktori untuk menyimpan paket yang dibuat. Apabila kita membuat paket dengan nama PaketBangun, maka kita harus membuat direktori dengan nama yang sama persis yaitu PaketBangun. Dan file paket dan kelas-kelas dalam satu paket tersebut harus kita simpan pada direktori tersebut. Perhatikan contoh berikut. Contoh 8.33. Pembuatan paket. Pada bagian ini kita akan membuat paket yang merupakan modifikasi dari contoh 8.32. Nama paket yang ingin kita buat adalah PaketBangun yang mempunyai tiga anggota kelas yaitu kelas BujurSangkar, Segitiga dan Lingkaran. Untuk tahap awal, buatlah direktori dengan nama PaketBangun (pada contoh ini, direktori ini kita letakkan di D:\TestCode\Java\PaketBangun ). Kemudian secara berturut-turut buatlah kode program berikut dan simpan dengan nama sesuai nama kelasnya pada direktori PaketBangun. Perhatikan pada awal kode kelas selalu diawali pernyataan package PaketBangun;. Hal ini menunjukkan bahwa kelas tersebut merupakan anggota dari PaketBangun. File : BujurSangkar.java package PaketBangun; class BujurSangkar extends Bangun { private double sisi;
}
public BujurSangkar(int s) { sisi = s; } public double hitungLuas() { double luas = sisi * sisi; return luas; }
File : Segitiga.java package PaketBangun; class Segitiga extends Bangun { private double alas; private double tinggi;
214
Pemrograman Berorientasi Obyek dengan Java
}
public Segitiga (int a, int t) { alas = a; tinggi = t; } public double hitungLuas() { double luas = 0.5 * alas * tinggi; return luas; }
File : Lingkaran.java package PaketBangun; class Lingkaran extends Bangun { private double jarijari; private final double PI = 3.1416;
}
public Lingkaran(int r) { jarijari = r; } public double hitungLuas() { double luas = PI * jarijari * jarijari; return luas; }
Setelah itu lakukan pengaturan classpath seperti terlihat pada sub bab awal. Dan lakukan kompilasi pada ketiga file tersebut di atas sehingga akan diperoleh hasil file seperti Gambar 8.18.
Gambar 8.18. Kompilasi pada tiga file anggota paket.
Rekayasa Perangkat Lunak
215
Setelah kompilasi berhasil, buatlah file baru di direktori D:\TestCode\Java, misalnya dengan nama PakaiPaketBangun.java. Kemudian ketikkan kode berikut ini pada file tersebut. Kompilasi dan jalankan kode program tersebut. //import seluruh kelas pada PaketBangun import PaketBangun.*; class PakaiPaketBangun { public static void main(String[] args) { BujurSangkar b = new BujurSangkar(12); Segitiga s = new Segitiga(5, 6); Lingkaran l = new Lingkaran(4); System.out.println("Luas bujursangkar : " + b.hitungLuas()); System.out.println(); System.out.println("Luas segitiga : " + s.hitungLuas()); System.out.println();
}
}
System.out.println("Luas lingkaran: " + l.hitungLuas()); System.out.println();
Perhatikan cara penulisan untuk memanggil paket. Jika kita hanya membutuhkan kelas Lingkaran saja, maka perlu menuliskan import PaketBangun.Lingkaran;. tetapi jika kita butuh semua kelas maka kita menuliskan dengan cara import PaketBangun.*;. Jika kita jalankan perintah ini maka hasilnya akan sama persis dengan contoh 8.33. Perbedaannya adalah pada contoh 8.32 kelas-kelas berada pada satu file. Sedangkan pada contoh 8.33 kelas-kelas berada pada filenya masingmasing dan baru dikelompokkan dengan menggunakan package.
Interface atau antar muka pada bahasa pemrograman Java sangat mirip dengan kelas, tapi tanpa atribut kelas dan memiliki metode yang dideklarasikan tanpa isi. Deklarasi metode pada sebuah interface dapat diimplementasikan oleh kelas lain. Sebuah kelas dapat mengimplementasikan lebih dari satu interface. Metode pada interface yang diimplementasikan pada suatu kelas harus sama persis dengan yang ada pada interface. Interface digunakan jika kita ingin kelas yang tidak berhubungan mengimplementasikan method yang sama. Perhatikan contoh berikut ini. Contoh 8.34. Pembuatan interface. interface Bentuk { public double luas(); public double volume(); }
216
Pemrograman Berorientasi Obyek dengan Java
Pada contoh ini kita membuat sebuah interface dengan nama Bentuk yang mempunyai dua method yaitu luas() dan volume(). Perhatikan penulisan interface. Kedua method yang ada dideklarasikan tanpa isi. Kita dapat menggunakan interface ini untuk membuat kelas baru dan mengimplementasikan interface ini dalam kelas tersebut. Perhatikan contoh berikut ini. Contoh 8.34. Penggunaan interface. class Kubus implements Bentuk { int x = 10; public double luas( ) { return (6 * x * x); } public double volume() { return (x * x * x); } } class Lingkaran implements Bentuk { int radius = 10; public double luas() { return (Math.PI * radius * radius); } public double volume() { return 0; }
} 8.9.
RINGKASAN
•
Konsep penting harus pahami dalam pemrograman berorientasi yaitu, kelas, obyek, abstraksi, enkapsulasi, inheritance dan polymorphism.
•
Ada 8 tipe data dasar pada Java yaitu boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long (integral), double and float (floating point).
•
Operator yang tersedia pada Java adalah operator aritmatika, relasional, logika dan bitwise.
•
Struktur kontrol program untuk percabangan dapat dilakukan dengan pernyataan if, if … else, dan if …else … if, sedangkan pengulangan dapat dilakukan dengan for, while dan do-while.
•
Exception adalah kondisi abnormal yang terjadi saat runtime.
Java menyediakan mekanisme try, throw, catch dan finally untuk menangani exception.
Rekayasa Perangkat Lunak
217
•
Thread adalah suatu bagian program yang tidak tergantung pada bagian lain dan dapat dijalankan secara bersama-sama. Java membolehkan kita untuk mengatur thread sesuai dengan kebutuhan.
•
Java mendukung penuh konsep kelas, inheritance, overriding, overloading, dan polymorphism.
•
Paket adalah kumpulan dari kelas-kelas. Sedangkan interface adalah kelas tanpa atribut dan mempunyai method yang dideklarasikan tanpa isi.
8.10.
SOAL-SOAL LATIHAN
1. Buatlah program untuk menampilkan nilai dari beberapa variabel yang mempunyai tipe data dan nilai awal sebagai berikut: a. Tipe data float, nilai awal = 3.45. b. Tipe data char, nilai awal = B c. Tipe data int, nilai awal = 23 2. Buatlah program untuk menghitung nilai rata-rata dari tiga variabel berikut : number1 = 56.3, number2 = 12 dan number3 = 2.78. 3. Dengan menggunakan variabel pada no 2, buatlah program untuk mencari nilai terkecil dari ketiga variabel tersebut. 4. Ambil tiga nilai ujian dari user dan hitung nilai rata-rata dari nilai tersebut. Berikan pernyataan “Selamat” pada output jika nilai rata-rata lebih besar atau sama dengan 60, selain itu beri output. Gunakan BufferedReader untuk mendapat input dari user, dan System.out untuk output hasilnya. 5. Buat sebuah program yang mencetak nama kalian selama seratus kali. Buat tiga versi program ini menggunakan while loop, do while dan for-loop. 6. Dengan menggunakan kelas, buatlah program tentang kelas staf sekolah. Kelas ini adalah superclass yang mempunyai subclass guru dan tenaga administrasi.
218
-
Kelas staf sekolah mempunyai variabel nama, alamat, jumlah anak, tanggal awal bekerja dan pangkat. Selain itu juga punya method lama bekerja (diperoleh dari tanggal saat ini dikurangi tanggal awal bekerja) dan method hitung gaji pokok. Gaji pokok diperoleh dari nilai gaji dasar ditambah tunjangan lama, tunjangan pangkat bekerja dan tunjangan anak. Selain itu mempunyai method hitung gaji total yang belum didefinisikan.
-
Kelas guru, selain variabel dan method pada superclassnya, juga mempunyai variabel bidang keahlian dan method hitung tunjangan mengajar yang diperoleh dari banyaknya jam mengajar dikali upah per jam mengajar. Definisikan method hitung gaji total sebagai penjumlahan gaji pokok dengan tunjangan mengajar.
Pemrograman Berorientasi Obyek dengan Java
-
Kelas tenaga administrasi, selain variabel dan method pada superclassnya, juga mempunyai variabel jam kerja seminggu dan method hitung upah lembur. Upah lembur dihitung jika seorang tenaga administrasi bekerja lebih dari 40 jam perminggu. Kelebihannya adalah jam lembur. Upah lembur = jumlah jam lembur dikali dengan upah per jam lembur. Definisikan method hitung gaji total sebagai penjumlahan gaji pokok dengan upah lembur.
Rekayasa Perangkat Lunak
219
220
Pemrograman Berorientasi Obyek dengan Java
Gambar 9.1 di samping ini mungkin menimbulkan pertanyaan. Apa hubungannya dengan judul bab di atas? Tapi tahukah anda bahwa pesawat luar angkasa seperti pada Gambar 9.1 dikendalikan oleh seperangkat komputer canggih yang sebagian aplikasi pengendalinya ditulis dengan bahasa pemrograman C++. Standar kompetensi program aplikasi menggunakan C++ terdiri atas lima kompetensi dasar. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat tujuan, uraian materi, dan latihan. Rangkuman diletakkan pada akhir bab. Kompetensi dasar pada bab ini adalah dasar-dasar pemrograman C++, menerapkan fungsi, menerapkan pointer, menerapkan konsep Class, dan merancang (Sumber: Clip Art Microsoft Office 2007) aplikasi berorientasi Obyek. Sebelum Gambar 9.1. Pesawat Luar Angkasa. mempelajari kompetensi ini ingatlah kembali sistem operasi, algoritma pemrograman dasar, algoritma pemrograman lanjutan dan konsep-konsep pemrograman berorientasi obyek pada bab-bab sebelumnya. Pada bagian akhir, tercantum soal-soal latihan yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur kemampuan terhadap kompetensi dasar yang ada pada bab ini. Untuk melancarkan kemampuan agar lebih baik dalam mengerjakan soal, disarankan semua soal dalam latihan ini dapat dikerjakan di sekolah dengan bimbingan guru maupun di rumah.
Rekayasa Perangkat Lunak
221
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Menjelaskan dasar-dasar pemrograman C++ o Menerapkan fungsi o Menerapkan pointer o Menerapkan konsep kelas o Merancang aplikasi berorientasi obyek 9.1
DASAR-DASAR PEMROGRAMAN C++
Bahasa C++ merupakan bahasa yang sangat populer di dunia pengembangan perangkat lunak. Seperti halnya pendahulunya yaitu Bahasa C, C++ juga dimasukkan dalam kelompok bahasa tingkat menengah (middle level language). Tujuan utama pembuatan C++ adalah untuk meningkatkan produktivitas pemrogram dalam membuat aplikasi. Keistimewaan C++ adalah karena bahasa ini telah mendukung OOP (Object Oriented Programming). Selain itu juga tersedia banyak pustaka (library) yang dapat kita gunakan untuk mempercepat pembuatan aplikasi. Pustaka ini sebagian tersedia gratis di beberapa situs internet. Kode program dalam bahasa C++ yang kita buat tidak dapat langsung dieksekusi namun harus dikompilasi lebih dahulu dengan compiler C++ yang sesuai. Konsep kompilasi dan eksekusi program pada C++ dapat digambarkan seperti pada Gambar 9.2. Kode program yang kita buat disebut sebagai kode sumber dan merupakan file teks biasa dengan nama file yang berekstensi .cpp. Kode program ini kemudian dimasukkan ke PreProcessor. Keluaran dari PreProcessor ini adalah file yang akan dimasukkan ke dalam Compiler. Compiler akan menerjemahkan kode program dalam file tersebut menjadi bahasa assembly. Kode program program ini kemudian diproses oleh Assembler menjadi kode obyek. Jika tidak ada file pustaka (library) yang terlibat, maka kode obyek ini akan langsung dieksekusi menjadi file. Jika ada pustaka lain yang terlibat maka Link Editor akan mengkombinasikan kode obyek dan pustaka untuk membentuk file EXE. Kita dapat mengetikkan kode-kode C++ dengan sebarang teks editor, seperti Notepad, Vi, atau yang lainnya. Namun akan lebih mudah jika kita menggunakan perangkat IDE (Integrated Development Environment) yang menyediakan secara terintegrasi teks editor dan compiler C++. Beberapa IDE yang cukup terkenal antara lain Microsoft Visual Studio, Borland C++, MingGW Developer Studio, dan lain-lain. Pada buku ini sebagian besar code ditulis dan dijalankan dengan menggunakan MingGW Developer Studio (Gambar 9.3). Lisensi IDE ini free, artinya kita bisa menggunakan tanpa diributkan dengan masalah lisensi dari perangkat lunak. Kalian dapat mendownload IDE ini dari alamat internet http://www.parinya.ca/.
222
Pemrograman Aplikasi dengan C++
Gambar 9.2. Proses kompilasi pada C++
Gambar 9.3. MingGW Developer Studio
Rekayasa Perangkat Lunak
223
9.1.1. Kerangka Program C++ #include
Perhatikan kode program di samping ini. Kode program terdiri dari beberapa bagian seperti berikut: -
Bagian untuk mendaftarkan file atau kondisi tertentu. Bagian ini selalu diawali dengan tanda #.
-
Bagian pendefinisian fungsi. Diawali dengan kata kunci void diikuti nama fungsi. Bagian ini boleh tidak ada jika kita tidak membuat fungsi.
-
Bagian main(). Pada kode program biasanya dimulai dengan int main(). Bagian ini harus ada pada setiap program karena merupakan fungsi utama.
// Fungsi utama int main() { // kode bagian main/utama .....; }
return 0;
-
Bagian yang dimulai dengan tanda { dan diakhiri dengan tanda }, baik pada bagian void maupun main, disebut blok kode.
9.1.2. Header File (.h) File header yaitu file dengan ekstensi .h merupakan file yang berisi fungsifungsi dan telah dikompilasi sebelumnya. File ini biasanya berisi fungsi-fungsi tertentu yang nantinya akan kita gunakan dalam kode program yang kita buat. Sebagai contoh file iostream.h mempunyai sejumlah fungsi untuk menampilkan output dan menangkap input seperti cout dan cin. Ada dua model penulisan file header, yaitu dengan dituliskan lengkap dengan ekstensinya dan tidak. Bentuk pertama adalah model penulisan untuk compiler C++ lama (Contoh 9.1). Bentuk kedua merupakan bentuk yang didukung oleh Compiler C++ standar (Contoh 9.2). Contoh 9.1. Penulisan file header pada Compiler C++ lama. #include
224
Pemrograman Aplikasi dengan C++
return 0;
}
9.1.3. Komentar, Identifier dan Tipe Data •
Komentar
Komentar pada C++ dapat dilakukan dengan dua cara, yaitu pertama, dengan tanda // dan diletakkan sebelum komentar dan kedua dengan tanda /* yang ditutup dengan */. Cara pertama digunakan jika komentar hanya terdiri dari satu baris, sedangkan cara kedua jika komentar lebih dari satu baris. Contoh 9.3. Komentar dengan tanda //. // program pertama #include
Identifier
Identifier atau nama dari variabel atau konstanta pada C++ secara umum sama mengikuti aturan umum penamaan yang telah dijelaskan pada Bab 5. Ada satu tambahan yang cukup penting dalam pembuatan identifier pada C++ yaitu, bersifat case sensitif. Variabel dengan nama namaguru berbeda dengan variabel NamaGuru. Ada dua cara untuk mendeklarasikan konstanta. Pertama, dengan menggunakan preprocessor directive #define. Kedua, dengan menggunakan kata kunci const. Ketiklah program berikut ini, kemudian periksalah hasil dari eksekusinya. Contoh 9.5. Pendeklarasian konstanta. #include
Rekayasa Perangkat Lunak
225
}
float hargaTotal, hargaDiskon, diskon; cout << "Masukkan jumlah unit pembelian : "; cin >> jumlahUnit; hargaTotal = jumlahUnit * hargaPerUnit; diskon = hargaTotal * potongan; hargaDiskon = hargaTotal - diskon; cout << "Total harga pembelian = " << hargaTotal << endl; cout << "Diskon = " << diskon << endl; cout << "Harga Diskon = " << hargaDiskon; return 0;
Pada contoh di atas, terdapat dua konstanta yaitu potongan dan hargaPerUnit yang masing-masing dideklarasikan dengan cara berbeda. Deklarasi variabel dilakukan dengan cara menyebutkan lebih dahulu tipe datanya kemudian diikuti dengan nama variabelnya seperti pada contoh 9.5. Pada contoh tersebut ada beberapa variabel yang telah didefinisikan lebih dahulu yaitu jumlahUnit, hargaTotal, hargaDiskon dan diskon. Masing-masing dengan tipe datanya sendiri. Untuk beberapa variabel yang tipe datanya sama, kita dapat menggabungkan dalam satu baris dengan tanda pemisah koma. Perhatikan pada contoh di atas. hargaTotal, hargaDiskon dan diskon sama-sama mempunyai tipe data float sehingga penulisannya digabung. Kalian harus mendeklarasikan dengan lengkap seluruh variabel atau konstanta yang akan dipakai lebih dahulu sebelum menggunakan. Kalau tidak maka program tidak akan dapat dieksekusi. •
Tipe data
Seperti telah dijelaskan pada Bab 5, tipe data tergantung dari yang disediakan oleh bahasa pemrograman. Pada C++ tipe data dasar yang disediakan dapat dilihat pada tabel berikut. Kalau kalian perhatikan tipe-tipe ini sama persis dengan Java. Hal ini karena Java sebenarnya banyak mengambil elemen-elemen bahasa pemrograman dari C++. Tabel 9.1. Tipe data pada C++. Tipe Data int long float double char bool short
226
Keterangan Tipe data bilangan bulat dengan ukuran 4 bytes Tipe data bilangan bulat namun lebih besar dari int. Tipe data bilangan pecahan Tipe data bilangan pecahan namun lebih besar dari float Tipe data karakter yang berisi huruf, angka atau simbol-simbol (alphanumeric) sepanjang berada pada tanda “ “ atau ‘ ‘. Tipe data boolean Tipe data bilangan bulat dengan ukuran 2 bytes
Pemrograman Aplikasi dengan C++
Tipe data bentukan yang tersedia pada C++ adalah array, struct dan enum. Array akan kita bahas pada bagian lain di bab ini. Sedangkan struct dan enum telah kita singgung di Bab 5. Namun begitu cara penulisannya belum kita ulas. Cobalah ketikkan kode-kode program pada contoh berikut ini kemudian eksekusi untuk melihat hasilnya. Contoh 9.6. Penggunaan tipe data struct. #include
return 0;
Contoh 9.6. Penggunaan tipe data enum. #include
Rekayasa Perangkat Lunak
227
cout<<"NIP : "<
return 0;
9.1.4. Operator Seperti halnya pada VB dan Java yang telah anda pelajari, C++ juga menyediakan banyak operator yang dapat kita gunakan untuk membantu memecahkan masalah tertentu. Secara umum banyak kemiripan antara Java dengan C++ dalam penyediaan operator. Operator-operator yang tersedia pada C++ dapat dilihat pada Tabel 9.2. Tabel 9.2. Operator pada C++. Jenis Operator Fungsi Operator assignment = Memasukkan (assign) nilai ke dalam suatu variabel Operator unary + Membuat nilai positif Membuat nilai negatif ++ Menaikkan nilai variabel satu nilai --
Menurunkan nilai variabel satu nilai
Operator Binary + Penjumlahan Pengurangan * Perkalian / Pembagian % Sisa hasil bagi (modulus) Operator Logika && AND || OR ! NOT Operator Relasional > Lebih besar < Lebih kecil >= Lebih besar atau sama dengan <= Lebih kecil atau sama dengan == Sama dengan != Tidak sama dengan
228
Pemrograman Aplikasi dengan C++
Contoh C=5
X = +10 Y = -12 ++C (pre-increment) C++ (post-increment) --C (pre-increment) C-- (post-increment) 3 7 5 6 5
+5=8 –2=5 * 2 = 10 /3=2 /2=1
1 && 1 = 1 1 || 0 = 1 !0 = 1 (5 (5 (4 (5 (5 (5
> 4) = 1 < 4) = 0 >= 4) = 1 <= 4) = 0 ==4) = 0 != 4) = 1
Operator Bitwise & | ^ ~ Operator Ternary ?:
AND OR XOR NOT Digunakan operand
1&0=0 1|0=1 1^1=0 ~0 = 1 jika
melibatkan
tiga
9.1.5. Struktur Kontrol Program Struktur kontrol program pada C++ secara umum sama dengan VB dan Java yang telah kalian pelajari. Yang berbeda adalah sintaks penulisannya. Untuk percabangan, C++ menyediakan perintah if (tanpa then) dan switch ... case. Sedangkan untuk pengulangan, C++ menyediakan perintah for, while, dan do-while. Selain itu, pada pengulangan juga menyediakan fasilitas break dan continue. Secara berurutan berikut ini akan disampaikan kode-kode program untuk menerapkan struktur kendali. Ketikkan kode-kode tersebut, kemudian jalankan dan amati apa yang terjadi. Contoh 9.7. Penggunaan struktur percabangan if sederhana. #include
return 0;
Pada contoh di atas kita menggunakan if untuk memeriksa apakah suatu bilangan genap atau ganjil. Operator yang kita gunakan adalah modulus (%). Perhatikan cara penulisan struktur if dan else. Contoh 9.8. Penggunaan struktur percabangan if tiga kondisi. #include
Rekayasa Perangkat Lunak
229
int main() { int bil; cout<<"Masukkan sebuah bilangan bulat : "; cin>>bil; if (bil > 0) { cout<
return 0;
Contoh 9.8. merupakan pengembangan dari Contoh 9.7. Struktur pemilihan dikembangkan menjadi tiga kondisi dengan menambahkan else. Apabila pemilihan lebih dari tiga kondisi atau banyak, C++ menyediakan perintah switch … case untuk memudahkan proses pemilihan. Perhatikan contoh berikut. Contoh 9.9. Penggunaan struktur percabangan dengan switch ... case. #include
return 0;
230
Pemrograman Aplikasi dengan C++
Contoh 9.9. adalah contoh percabangan dengan switch untuk konversi dari bilangan angka ke teks. Perhatikan bagaimana penulisan switch dan case. Seperti juga pada Java, pengulangan dengan for digunakan jika kita mengetahui dengan pasti berapa banyak pengulangan akan dilakukan. Berikut contoh penggunaan pengulangan dengan for. Contoh 9.10. Penggunaan struktur pengulangan dengan for. #include
return 0;
Contoh 9.10. merupakan contoh penggunaan for untuk kasus sederhana. Ada dua pengulangan for di atas, yaitu mencetak angka dari 1 sampai dengan 10 dan dari 10 sampai dengan 1. Perhatikan penggunaan increment ++ dan --. Cara penulisan di atas sangat mirip dengan penulisan pada Java yang telah kalian pelajari sebelumnya. Pada contoh 9.11 berikut ini, pengulangan for dikembangkan menjadi sedikit lebih rumit dengan menerapkan for bersarang. Contoh 9.11. Penggunaan struktur pengulangan dengan for bersarang. #include
return 0;
Rekayasa Perangkat Lunak
231
Ada dua pengulangan pada contoh 9.11. Yang pertama dengan menggunakan j sebagai variabel counter. Sedangkan yang kedua dengan variabel counter k yang bersarang di dalam pengulangan j. Menurut kalian, bagaimanakah output dari kode program di atas? Penggunaan while pada pengulangan, tidak berbeda jauh dengan apa yang telah kalian pelajari pada Java maupun VB. Perhatikan contoh 9.12 dan 9.13 berikut ini. Contoh 9.12. Penggunaan struktur pengulangan dengan while sederhana. #include
// inisialisasi nilai C
while (C<10) { cout<<"Saya tidak nakal lagi"<<endl; C++; // increment } }
return 0;
Contoh 9.13. Penggunaan struktur pengulangan dengan while bersarang. #include
//inisialisasi variabel x
while (x<=4){ y = 1; //inisialisasi variabel y while (y<=3){ cout<
return 0;
Perhatikan contoh 9.12 di atas, bagaimanakah menurut kalian output dari kode program tersebut. Coba bandingkan dengan contoh 9.11. Cobalah memindahkan
232
Pemrograman Aplikasi dengan C++
inisialisasi untuk variabel y. Letakkan setelah inisialisasi variabel x. Bagaimanakah hasilnya? Bentuk berikutnya dari pengulangan pada C++ adalah dengan menggunakan do-while. Agak sedikit berbeda dengan while, kondisi pemeriksaan pada do-while diletakkan di akhir badan loop. Contoh 9.14 memberikan gambaran bagaimana dowhile digunakan dalam C++. Contoh 9.14. Penggunaan struktur pengulangan dengan do-while. #include
return 0;
Contoh 9.14 terlihat menampilkan kode program yang cukup rumit. Namun bila kita cermati, ini adalah kode program dengan pengulangan do while yang bersarang. Perhatikan cara penulisan dan alur logika programnya. Do-while yang luar menggunakan variabel counter J dan ini adalah pengulangan dari besar ke kecil (perhatikan J diinisialisasi dengan nilai 10 dan syarat kondisi pada while J >=1). Sedangkan do-while yang dalam variabel counter nya adalah K dengan pengulangan dari kecil ke besar. Bagaimanakah hasil dari eksekusi kode program di atas? Perhatikan output di bawah ini. Cobalah untuk menelusuri kode program sehingga kalian benar-benar mengerti mengapa output program bisa menjadi seperti ini. 5 4 3 2 1
10 15 20 25 8 12 16 6 9 4
9.1.6. Input/Output Sampai dengan bagian ini, kalian telah cukup banyak latihan kode pemrograman C++. Namun kita belum sekalipun mempelajari statement input /
Rekayasa Perangkat Lunak
233
output pada C++. Sebenarnya kalau kalian jeli, kalian telah secara tidak langsung mempelajari pernyataan input dan output. Perintah cout dan cin yang telah kalian gunakan adalah pernyataan input / output yang paling sering digunakan. Baik perintah cout dan cin digolongkan sebagai stream yang termasuk dalam kelas iostream. Karena itulah setiap kali kita ingin menggunakan dua perintah tersebut kita harus memanggil file header iostream di awal program. Stream adalah peralatan logika yang berguna untuk mendapatkan atau memberikan informasi. Stream berhubungan dengan perangkat keras seperti keyboard, layar monitor, printer melalui sistem I/O. Perintah cin merupakan stream untuk input standar. Perintah ini akan merekam apa yang kita ketikkan dari keyboard. Perhatikan cara penulisannya pada contoh 9.15. Contoh 9.15. Penggunaan cin dan cout. #include
return 0;
Perintah cin dapat digunakan untuk memasukkan data satu per satu seperti pada contoh 9.15 (lihat bagian di bawah //cin bagian satu) atau memasukkan data secara langsung berurutan (lihat bagian di bawah //cin bagian dua). Perintah cin harus diikuti operator >>. Perintah cout adalah perintah melakukan output standar yaitu pada layar monitor. Perintah cout harus diikuti operator <<. Perhatikan contoh 9.15 di atas. cout dapat digunakan untuk mencetak langsung karakter (ditandai dengan “ dan diakhiri dengan “) atau isi variabel. Seperti halnya cin, cout dapat digunakan untuk output satu persatu atau berurutan sekaligus. Pada contoh di atas pernyataan endl adalah pernyataan untuk mencetak baris baru.
234
Pemrograman Aplikasi dengan C++
9.2
FUNGSI DALAM C++
Fungsi dalam C++ memegang peranan sangat penting. Hal ini karena sebenarnya program dalam C++ adalah kumpulan dari fungsi-fungsi. Fungsi-fungsi yang telah tersedia maupun yang kita buat sendiri ini akan dipanggil dalam fungsi utama yaitu main(). Seperti semua bahasa pemrograman, C++ menyediakan built-in function yang dapat diakses dengan lebih dulu memanggil file headernya di awal program yang kita buat. C++ juga menyediakan fasilitas untuk membuat fungsi sendiri (user-defined function). Pada sub bab ini kita akan mempelajari bagaimana membuat fungsi sendiri. 9.2.1. Tipe-tipe Fungsi Ada dua jenis fungsi, yaitu fungsi yang tidak mengembalikan nilai dan fungsi yang mengembalikan nilai. •
Fungsi yang tidak mengembalikan nilai
Fungsi ini dibuat dengan tipe void. Dalam VB atau Pascal, fungsi ini dikenal sebagai prosedur. Perhatikan contoh 9.16 berikut. Contoh 9.16. Fungsi tanpa pengembalian nilai. #include
return 0;
Pada contoh ini kita membuat fungsi dengan nama CetakAngka dengan tipe Perhatikan bagaimana mendeklarasikan fungsi. Fungsi akan berjalan sampai akhir kode pada fungsi tersebut.
void sehingga tidak mengembalikan nilai (return value).
Rekayasa Perangkat Lunak
235
•
Fungsi yang mengembalikan nilai
Fungsi ini akan mengembalikan sebuah nilai untuk digunakan pada bagian program yang lain. Untuk mendefinisikan fungsi tipe ini, kita tidak menggunakan void, tetapi langsung tipe data dari nilai yang akan dikembalikan oleh fungsi tersebut. Perhatikan contoh 9.17 berikut. Contoh 9.17. Fungsi dengan pengembalian nilai. #include
return 0;
Pada tipe fungsi ini, kita membutuhkan pernyataan return untuk menunjukkan bagian yang akan dikembalikan nilainya. Pada contoh di atas, tipe data dari nilai yang akan dikembalikan adalah char. Bentuk char dengan tanda * menunjukkan variabel NilaiChar boleh berisi lebih dari satu huruf dan akan disimpan/dicetak sebagaimana ketika kita memasukkan isinya. 9.2.2. Penggunaan Parameter dalam Fungsi Seperti halnya pada VB dan Java, fungsi pada C++ juga membolehkan digunakan parameter atau argumen untuk melewatkan input atau menampung output dari fungsi tersebut. Perhatikan contoh-contoh berikut. Contoh 9.18. Fungsi dengan parameter input. #include
236
Pemrograman Aplikasi dengan C++
int Bil, HASIL; cout<<"Masukkan sebuah bilangan bulat : "; cin>>Bil; HASIL = Kuadrat(Bil); //memanggil fungsi kuadrat cout<<"Kuadrat dari bilangan “<
return 0;
Fungsi pada contoh 9.18 adalah Kuadrat. Fungsi ini membutuhkan satu variabel input (pada contoh dinamakan X). Pada fungsi main(), variabel Bil adalah variabel yang digunakan untuk menyimpan nilai yang digunakan sebagai parameter pada fungsi Kuadrat ketika dipanggil. Contoh 9.19. Fungsi dengan parameter input dan output. #include
return 0;
Contoh 9.19 merupakan pengembangan dari Contoh 9.18. Pada fungsi Kuadrat kita tambahkan parameter output yaitu hasil. Parameter keluaran, harus dilewatkan berdasarkan alamat memorinya (yaitu hasil), sehingga harus menggunakan pointer (lihat tanda * sebelum variabel hasil. Demikian juga cara pemanggilan fungsinya, parameter input dan outputnya harus disebutkan. Parameter output yang menyimpan hasil perhitungan harus kita beri awalan &. 9.3
POINTER DAN ARRAY
Bahasa C++ membolehkan kita untuk memanipulasi memori dengan cara penggunaan pointer. Hal ini merupakan fitur yang tidak disediakan oleh bahasa pemrograman yang lain. Apabila digunakan secara benar maka akan sangat menguntungkan, tetapi bila salah dalam penggunaan bisa berakibat pada kerusakan (crash atau hang) pada sistem operasi.
Rekayasa Perangkat Lunak
237
9.3.1. Konsep dan Pengertian Pointer
Pointer adalah variabel. Namun berbeda dengan variabel normal, pointer menyimpan alamat pada memori, bukan nilai yang kita masukkan. Perhatikan contoh berikut. Contoh 9.20. Mendeklarasikan pointer. #include
X : "<<X<<endl; *Alamat : "<<*Alamat<<endl; Alamat : "<
*Alamat = 20; cout<<"Nilai cout<<"Nilai cout<<"Nilai cout<<"Nilai }
// Mengisikan nilai 20 ke dalam *Alamat
X : "<<X<<endl; *Alamat : "<<*Alamat<<endl; Alamat : "<
return 0;
Pada contoh di atas, kita deklarasikan variabel alamat sebagai pointer dengan menambahkan tanda * di depan nama variabel. Jika kita tidak menggunakan tanda * berarti variabel tersebut akan berfungsi seperti variabel normal. Variabel X kita deklarasikan sebagai variabel normal dengan tipe data long. Perhatikan pada baris Alamat = &X. Baris ini menyatakan bahwa variabel Alamat (bukan pointer) akan diisi dengan nilai dari alamat dari X. Tanda & di depan nama variabel berarti kita menginginkan nilai alamat memorinya yang kita gunakan dan bukan nilainya. Apabila kita eksekusi programnya maka tampilannya akan tampak seperti pada Gambar 9.4.
238
Pemrograman Aplikasi dengan C++
Gambar 9.4. Hasil eksekusi deklarasi pointer. Perhatikan nilai-nilai output pada Gambar 9.4. Nilai seperti 0x22ff88 adalah angka hexadesimal dari alamat variabel. Kalau kalian amati, ketika kita memasukkan nilai 5 pada variabel X maka variabel *Alamat akan berisi juga nilai 5. Demikian juga ketika kita memasukkan nilai 20 pada variabel *Alamat , nilai X juga berubah menjadi 20. Hal ini karena variabel *Alamat dan X menempati alamat memori yang sama. Setiap kali kita mendeklarasikan sebuah pointer, maka otomatis pointer akan menunjuk alamat acak pada memori. Oleh karena itu kita harus mengeset variabel pointer tersebut agar tidak menunjuk alamat tertentu dengan cara memberi nilai NULL. Perhatikan contoh kode berikut dan hasil eksekusinya (Gambar 9.5). Contoh 9.21. Mendeklarasikan pointer dengan NULL. #include
return 0;
Rekayasa Perangkat Lunak
239
Gambar 9.5. Hasil eksekusi pointer NULL. 9.3.2. Penggunaan New dan Delete pada Pointer Kata kunci New dapat digunakan untuk mengalokasikan memori pada ruang yang masih kosong. Kata kunci ini diikuti oleh tipe data yang akan dialokasikan sehingga compiler akan mengetahui seberapa besar memori yang akan dialokasikan. Sedangkan delete merupakan kebalikan dari new. Delete akan membebaskan memori dari variabel yang kita gunakan. Perintah delete ini sangat penting, karena apabila kita tidak membebaskan memori dari penggunaan maka akan sangat memboroskan pemakaian memori dan pada akhirnya akan membuat sistem berjalan tidak semestinya. Perhatikan contoh penggunaan new dan delete berikut ini. Contoh 9.22. Penggunaan new dan delete. #include
return 0;
9.3.3. Array Seperti telah dijelaskan pada bab-bab sebelumnya, array dapat digunakan untuk menyimpan banyak data yang tipenya sama pada satu nama variabel.
240
Pemrograman Aplikasi dengan C++
Pendefinisian array pada C++ hamper mirip dengan VB atau Java. Hanya sintaks penulisannya yang berbeda. Perhatikan contoh array sederhana berikut ini. Contoh 9.23. Array sederhana. #include
}
cout<<"A[C]"<<" "<<"B"<<endl; // Memasukkan nilai ke dalam elemen array for (int C=0; C<5; C++) { double B = 5; A[C] = C; B = A[C]/B; cout<
Pada contoh di atas kita mendeklarasikan array dengan nama A dan tipe datanya adalah int. C pada kode di atas adalah variabel counter. Untuk memasukkan nilai pada array, perhatikan pada baris A[C] = C. C di sini adalah indeks dari variabel A. Sama seperti halnya pada VB ataupun Java, nilai default awal dari indeks array adalah 0. Apabila contoh di atas dijalankan, maka output akan tampak seperti pada Gambar 9.6.
Gambar 9.6. Output hasil eksekusi program array sederhana. Pada contoh 9.23 di atas kita mendeklarasikan array tanpa inisialisasi nilai. Tapi sebenarnya kita dapat langsung member nilai bersamaan dengan pendeklarasian variabel array. Kemudian kita dapat merubah nilainya ketika program sedang berjalan atau dibagian lain dari program. Perhatikan contoh 9.24 berikut.
Rekayasa Perangkat Lunak
241
Contoh 9.24. Deklarasi dan inisialisasi array. #include
return 0;
Jika kita jalankan kode program di atas, maka hasilnya akan tampak seperti pada Gambar 9.7.
Gambar 9.7. Hasil eksekusi deklarasi dan inisialisasi array. C++ juga menyediakan fitur untuk membuat array multidimensi. array multidimensi dapat dilakukan dengan cara seperti pada contoh 9.25.
242
Pemrograman Aplikasi dengan C++
Deklarasi
Contoh 9.25. Deklarasi array multidimensi. #include
return 0;
Pada contoh di atas, ada dua buah array multidimensi yaitu Matrik_A dan Matrik_B. Keduanya merupakan matriks dua dimensi. Matrik_A memiliki 3 baris dan 2 kolom sedangkan Matrik_B memiliki 2 baris dan 3 kolom. Pengisian nilai elemen array dilakukan pada saat deklarasi. Namun kalian dapat mengisi dengan menggunakan masukkan dari keyboard melalui perintah cin. Hasil eksekusi dari program di atas akan tampak seperti pada Gambar 9.8.
Rekayasa Perangkat Lunak
243
Gambar 9.8. Hasil eksekusi array multidimensi. 9.4
KELAS
Konsep kelas pada C++ sama persis dengan apa yang telah kalian pelajari pada bab 8. Konsep ini diturunkan dari paradigm pemrograman berorientasi obyek yang telah disampaikan pada bab tersebut. Apabila kalian telah mengerti dengan baik konsep pemrograman berorientasi obyek dan pemrograman kelas pada Java, maka konsep kelas pada C++ bukanlah perkara yang sulit. Perlu kalian ketahui, Java mengambil sebagian besar konsep pemrograman C++ (termasuk kelas) untuk diterapkan. Perbedaan utama mungkin hanya pada sintaks penulisannya. Pada bab ini konsep pemrograman berorientasi obyek tidak akan dibahas ulang, namun akan langsung pada penerapannya pada C++. 9.4.1. Deklarasi Kelas Sama seperti pada Java, pembuatan kelas dalam C++ menggunakan kata kunci class. Di dalam kelas tersebut terdapat data dan method yang akan digunakan oleh obyek yang akan dibuat (instance) dari kelas tersebut. Data dan method ini biasan disebut sebagai anggota kelas (class member). Method dalam C++ sama bentuknya dengan fungsi yang telah kalian pelajari di sub bab sebelumnya. Perhatikan contoh berikut. Contoh 9.26. Deklarasi dan penggunaan kelas. #include
244
Pemrograman Aplikasi dengan C++
class PersegiPanjang { int x, y; public: void set_nilai (int,int); int luas() {return (x*y);} }; void PersegiPanjang::set_nilai (int a, int b) { x = a; y = b; } int main () { PersegiPanjang pp1, pp2; pp1.set_nilai (3,4); pp2.set_nilai (7,12); cout << “Luas pp1 : “ << pp1.luas()<<endl; cout << “Luas pp2 : “ << pp2.luas()<<endl; return 0; } Pada contoh di atas, kelas yang kita deklarasikan bernama PersegiPanjang dan mempunyai anggota kelas dua data yaitu x dan y dan dua method yaitu set_nilai dan luas(). Dua buah method tersebut ditetapkan mempunyai akses public. Seperti halnya java, ada 3 hak akses terhadap data atau method dalam kelas, yaitu public, private dan protected. Public berarti anggota kelas tersebut dapat diakses dari luar kelas. Private berarti anggota kelas tersebut hanya dapat diakses di dalam kelas tersebut. Sedangkan protected berarti anggota kelas tersebut dapat diakses oleh turunan (subclass) dari kelas tersebut, tetapi tidak oleh bagian di luar kelas.
Method set_nilai mempunyai dua argument/parameter yang semuanya bertipe data int namun tidak memiliki pengembalian nilai, sehingga kita menggunakan kata kunci void. Method luas() tidak memiliki argumen namun memiliki pengembalian nilai. Untuk method yang memiliki pengembalian nilai maka kita menggunakan tipe data di depan nama method. Bukalah kembali bab 8 untuk mengingat kembali tentang argumen dalam method. Pada C++ kita dapat mengimplementasikan method di dalam kelas atau di luar Umumnya kita kelas, tetapi deklarasi method harus berada di dalam kelas. meletakkan implementasi method di luar kelas (di luar tanda { }). Perhatikan pada contoh di atas. Deklarasi method set_nilai terletak di dalam kelas PersegiPanjang namun implementasinya berada di luar kelas. Sedangkan method luas(), baik deklarasi maupun implementasi berada di dalam kelas. Pada implementasi method di luar kelas kita menggunakan tanda :: untuk mendefinisikan anggota kelas di luar kelasnya (perhatikan pada baris void PersegiPanjang::set_nilai (int a, int b)). Setelah kelas terbentuk kita dapat menggunakan dengan membuat obyek yang merupakan instance dari kelas tersebut. Perhatikan pada bagian yang diawali dengan int main(). Pada bagian ini kita membentuk dua obyek dengan nama pp1 dan
Rekayasa Perangkat Lunak
245
pp2 sebagai instance dari kelas PersegiPanjang. Kemudian kita menggunakan obyekobyek ini untuk memanggil method set_nilai dan luas() dari kelas PersegiPanjang. Ketikkan program di atas kemudian jalankan. Bagaimanakah hasilnya? Seperti pada Java, umumnya suatu kelas akan mempunyai constructor yang digunakan untuk menginisialisasi variabel atau mengalokasikan memori. Constructor ini mempunyai nama yang sama dengan kelasnya. Di dalam suatu kelas sebaiknya juga dibentuk method destructor. Destructor adalah kebalikan dari constructor. Tujuan utamanya adalah mengembalikan nilai variabel ke bentuk awal dan membebaskan memori dari penggunaan variabel. Method destructor mempunyai nama yang sama dengan nama kelasnya, tetapi dengan ditambah awalan tanda ~. Perhatikan contoh penggunaan constructor dan destructor berikut. Contoh 9.27. Constructor dan destructor. #include
246
Pemrograman Aplikasi dengan C++
kemungkinan pewarisan dengan pertimbangan hak akses. Ada dua hak akses dalam pewarisan superclass ke subclass, yaitu public dan private. Apabila suatu kelas diturunkan sebagai public dari superclassnya maka ketentuannya adalah sebagai berikut: -
Bagian public yang ada pada superclass akan tetap menjadi public pada subclass.
-
Bagian protected yang ada pada superclass akan tetap menjadi protected pada subclassnya.
-
Bagian private yang ada pada superclass tidak akan dapat diakses oleh subclass.
Apabila suatu kelas diturunkan sebagai private dari superclassnya maka ketentuannya adalah sebagai berikut: -
Bagian public yang ada pada superclass akan menjadi private pada subclass.
-
Bagian protected yang ada pada superclass akan menjadi private pada subclassnya.
-
Bagian private yang ada pada superclass tidak akan dapat diakses oleh subclass. Perhatikan contoh berikut.
Contoh 9.28. Pewarisan. #include
Rekayasa Perangkat Lunak
247
}
CRectangle rect; CTriangle trgl; rect.set_values (4,5); trgl.set_values (4,5); cout << rect.area() << endl; cout << trgl.area() << endl; return 0;
Pada kode program di atas, CPolygon adalah superclass, sedangkan CRectangle dan CTriangle adalah subclass. Pada kelas CPolygon, variabel width dan height dideklarasikan sebagai protected, karena ditujukan untuk bisa diakses oleh subclassnya saja. Selain itu kelas ini juga mempunyai method set_values. Kedua variabel dan method ini akan diwariskan pada subclassnya yaitu CRectangle dan CTriangle. Perhatikan bagaimana CRectangle dan CTriangle dideklarasikan sebagai kelas turunan dari CPolygon dengan menggunakan kata kunci public. Sekarang coba ganti kata public pada deklarasi kelas CTriangle sehingga menjadi class CTriangle: private CPolygon. Apabila kalian kompilasi maka kalian akan menjumpai pesan kesalahan sebagai berikut: Compiling source file(s)... oo-test.cpp oo-test.cpp: In function `int main()': oo-test.cpp:9: error: `void CPolygon::set_values(int, int)' is inaccessible oo-test.cpp:28: error: within this context oo-test.cpp:28: error: `CPolygon' is not an accessible base of `CTriangle' Mengapa kesalahan kompilasi bisa terjadi? Hal ini karena berlakunya aturan di atas. Method set_values pada kelas CPolygon dideklarasikan dengan public, tetapi diturunkan ke kelas CTriangle dengan private. Hal ini akan merubah method yang semula public menjadi private ketika berada pada kelas CTriangle. Tentunya kalian ingat bila anggota kelas diberi hak akses private maka dia tidak dapat diakses dari luar. 9.4.3. Polimorfisme Pada C++, untuk dapat menerapkan polimorfisme maka kita perlu menggunakan fungsi khusus yang dikenal sebagai fungsi virtual. Fungsi ini kita letakkan pada superclass, kemudian fungsi tersebut dapat kita definisikan ulang pada subclass. Perhatikan contoh berikut. Contoh 9.29. Penggunaan fungsi virtual. #include
248
Pemrograman Aplikasi dengan C++
char* nama; char* alamat; public: void SetNama(char* N) { nama = N; } void SetAlamat(char* A) { alamat = A; } char* GetNama() { return nama; } char* GetAlamat() { return alamat; } // Membuat fungsi virtual virtual void Bekerja() { cout<<"Bekerja"<<endl; } virtual void Berpakaian() { cout<<"Berpakaian"<<endl; } }; class Siswa: public AnggotaSekolah { char* Jurusan; char* Program; int semester; public: void SetJurusan(char* J) { Jurusan = J; } void SetProgram(char* P) { Program = P; } void SetSemester(int smt) { semester = smt; } char* GetJurusan() { return Jurusan; } char* GetProgram() { return Program; } int GetSemester() { return semester; } // override pada fungsi Bekerja void Bekerja() { cout<<"Bekerja menuntut ilmu"<<endl;
Rekayasa Perangkat Lunak
249
} // override pada fungsi Berpakaian void Berpakaian() { cout<<"Berpakaian seragam putih abu-abu"<<endl; } }; class Guru: public AnggotaSekolah { char* jabatan; char* keahlian; public: void SetJabatan(char* jbt) { jabatan = jbt; } void SetKeahlian(char* khl) { keahlian = khl; } char* GetJabatan() { return jabatan; } char* GetKeahlian() { return keahlian; } // override pada fungsi Bekerja void Bekerja() { cout<<"Bekerja mengajarkan ilmu"<<endl; } // override pada fungsi Berpakaian void Berpakaian() { cout<<"Berpakaian baju seragam dinas resmi"<<endl; } }; // Fungsi utama int main() { // instansiasi pada kelas AnggotaSekolah, Siswa dan Guru AnggotaSekolah As; Siswa Sw; Guru Gr; // Memanggil fungsi Bekerja dari masing-masing kelas cout<<"Anggota sekolah sedang "; As.Bekerja(); cout<<"Siswa sedang "; Sw.Bekerja(); cout<<"Guru sedang "; Gr.Bekerja(); cout<<'\n';
250
Pemrograman Aplikasi dengan C++
// Memanggil fungsi Berpakaian dari masing-masing kelas cout<<"Anggota sekolah harus "; As.Berpakaian(); cout<<"Siswa harus "; Sw.Berpakaian(); cout<<"Guru harus "; Gr.Berpakaian(); }
return 0;
Pada kode program di atas, ada dua fungsi/method virtual yaitu Bekerja dan Berpakaian. Method inilah yang akan kita gunakan pada subclass namun dengan penerapan yang lain. Perhatikan isi dari masing-masing method tersebut pada masing-masing subclass. Cara ini biasa disebut sebagai overriding. Coba kembali bab 8 untuk memperjelas pengertian overriding. Bandingkan juga bagaimana overriding dilakukan pada Java dan C++. Jika program di atas dijalankan, maka hasilnya akan tampak seperti pada Gambar 9.9. Overloading juga dapat dilakukan pada fungsi virtual. Kalian tentu masih ingat perbedaan overriding dan overloading yang sudah dijelaskan di bab 8.
Gambar 9.9. Hasil eksekusi fungsi virtual dan overriding. Pada contoh 9.29 di atas, fungsi virtual dibuat lengkap dengan isi dari fungsi tersebut. Namun sebenarnya C++ juga menyediakan fungsi virtual murni (pure virtual function) yang hanya ada deklarasi fungsinya tapi tidak ada isinya. Konsep ini mirip dengan ketika kalian pelajari tentang interface pada Java. Fungsi virtual murni ini kemudian akan diterjemahkan isinya pada kelas-kelas yang merupakan turunan dari kelas tersebut. Keuntungan dari penggunaan fungsi virtual murni ini adalah keleluasaan kita untuk mendefinisikan fungsi-fungsi tersebut pada kelas turunannya. Fungsi virtual murni biasanya digunakan pada kelas abstrak. Kelas abstrak adalah kelas yang mempunyai paling tidak satu fungsi virtual murni. Karena masih abstrak kita tidak diperbolehkan untuk membuat obyek langsung dari kelas abstrak.
Rekayasa Perangkat Lunak
251
Konsep polimorfisme pada C++ disusun dengan berdasarkan pengertian pada fungsi virtual, fungsi virtual murni, overriding, overloading, dan kelas abstrak. Perhatikan contoh polimofisme berikut ini. Contoh 9.30. Penerapan polimorfisme. #include
// mendefinisikan obyek pointer // mendefinisikan obyek pointer
Pada contoh di atas, kela CPolygon adalah kelas abstrak yang memiliki fungsi virtual murni yaitu area. Perhatikan cara mendeklarasikan fungsi virtual murni pada baris yang diawali dengan pernyataan virtual. Fungsi ini tidak dibuat isinya tapi dibuat dengan tanda = 0. Kita tidak dapat membuat obyek langsung dari kelas CPolygon ini. Tetapi kita dapat membuat obyek pointer untuk mengalokasikan memori berdasarkan
252
Pemrograman Aplikasi dengan C++
kelas ini. Pada kelas CPolygon juga digunakan kata kunci this. Kata kunci ini berfungsi untuk menunjuk pada kelas itu sediri. Pernyataan this->area() pada kode di atas sama artinya dengan CPolygon->area(). Jadi pernyataan ini sama artinya dengan memanggil fungsi virtual area di dalam kelas itu. Pada kode diatas dibuat dua variabel pointer *ppoly1 dan *ppoly2 yang nilainya sama dengan nilai dari alamat variabel rect dan trgl. Perhatikan dengan baik penggunaan tanda * dan & untuk merujuk pada alamat memori. Jalankan program di atas dan perhatikan hasilnya. 9.5
MERANCANG APLIKASI BERORIENTASI OBYEK
Konsep dasar tentang pemrograman berorientasi obyek telah kalian pelajari pada Bab 8. Sedangkan penerapannya dalam bahasa pemroraman juga telah kalian pelajari dengan menggunakan Java pada bab 8 dan C++ di bab ini. Pada bagian ini kita akan mencoba untuk membuat rancangan aplikasi berorientasi obyek. Kasus yang kita angkat adalah salah satu bagian dari aplikasi penjualan pada toko buku, yaitu persediaan barang. Jika kalian cermati ada banyak jenis barang yang dijual pada sebuah toko buku, antara lain buku-buku bacaan, majalah, alat tulis kantor, dan lain-lain. Masing-masing barang mempunyai nama merek, harga, dan karakteristik yang lain. Selain itu masing-masing barang juga mempunyai ketentuanketentuan lain yang berhubungan dengan penetapan harga, potongan, jumlah pembelian dan tempat penyimpanan. Persediaan barang pada took buku ditentukan oleh barang yang masuk dari hasil pemesanan dan barang yang keluar karena terjual. Setiap barang keluar maka secara otomatis barang di dalam persediaan akan berkurang. Langkah awal dalam aplikasi berorientasi obyek adalah dengan melakukan abstraksi pada permasalahan. Kalau kita perhatikan dengan seksama pada kasus di atas, kita bisa membuat kelas induk dari semua jenis barang yang ada. Hal ini karena selain karakteristik khusus dari masing-masing jenis barang, juga ada karakteristik umum yang dipunyai oleh semua barang. Seperti contoh harga adalah karakteristik umum yang dipunyai oleh semua barang. Tetapi merek adalah khusus pada jenis item barang tertentu, terutama pada alat tulis. Demikian juga dengan karakteristi judul hanya dimiliki oleh buku bacaan. Dengan melihat kondisi tersebut kita dapat membuat abstraksi permasalahan sebagai berikut.
Rekayasa Perangkat Lunak
253
Gambar 9.10. Abstraksi kasus persediaan barang di toko buku. Pada Gambar 9.10, kita membentuk 6 kelas untuk mempermudah kasus di atas. Ada dua macam hubungan yang terbentuk pada gambar di atas, yaitu hubungan pewarisan (inheritance) yang ditandai dengan tanda panah dan asosiasi (hubungan antara dua atau lebih kelas) yang ditandai garis tanpa tanda panah. Barang adalah superclass dan bisa kita nyatakan sebagai kelas abstrak. BahanBacaan dan AlatTulis adalah subclass dari Barang, sedangkan Buku dan Majalah adalah subclass dari BahanBacaan. Sedangkan Lokasi merupakan kelas yang menunjukkan tempat menyimpan barang. Pada kasus di atas kita dapat menerapkan konsep inheritance dan polimorfisme serta menggunakan fungsi virtual murni pada kelas Barang. Kemudian fungsi-fungsi ini dapat kita turunkan untuk diimplementasikan pada subclass-subclassnya. Rancangan kode program akan tampak seperti pada table 9.3. Dengan melihat diagram dan tabel 9.3, kita dapat menerapkan dalam kode program. Akan ada 6 kelas yang kita buat kodenya. Masing-masing kelas bisa dalam satu file sendiri-sendiri atau semua kelas bisa kita letakkan dalam satu file. Kemudian implementasi dari class-class tersebut kita buat dalam satu file tersendiri. Untuk menghubungkan antar file dan memanggil class pada file lain kita menggunakan preprocessor #include diikuti dengan nama filenya.
254
Pemrograman Aplikasi dengan C++
Tabel 9.3. Kelas, fungsi, dan parameter pada aplikasi persediaan toko buku.
Nama Kelas
Variabel
Fungsi
Parameter
Keterangan
Barang
KodeBrg
- SisaBarang - Simpan
Kelas Abstrak
BahanBacaan
Harga SediaanAwal BrgKeluar BrgMasuk Penerbit
pAwal, bKeluar, bMasuk kodeLok
ISBN Judul Pengarang Tahun JumlahHalaman Diskon Nama NoEdisi TglTerbit
- setDiskon - getDiskon - HrgDiskon
Buku
Majalah
AlatTulis
Supplier Nama Merek
Lokasi
KodeLokasi Deskripsi
9.6
setKodeLok getKodeLok
Hrg, Potongan
Subclass dan mewarisi anggota kelas Barang Subclass dari BahanBacaan dan mewarisi anggota kelas tersebut Subclass dari BahanBacaan dan mewarisi anggota kelas tersebut Subclass dari BahanBacaan dan mewarisi anggota kelas tersebut Kelas yang berasosiasi dengan kelas Barang
RINGKASAN
•
Struktur umum program dalam C++ meliputi bagian pendaftaran file, pendefinisian fungsi, bagian main(), dan blok kode.
•
Tipe data primitive pada C++ terdiri dari int, long, float, double, char, bool, dan short. Tipe data composite yang disediakan adalah struct, enum dan array.
Rekayasa Perangkat Lunak
255
•
Tipe-tipe operator yang dapat digunakan adalah operator assignment, operator unary, operator binary, operator relasional, operator bitwise dan operator ternary.
•
Struktur control pemilihan dapat dilakukan dengan if (tanpa then) dan switch ... case. Sedangkan untuk pengulangan, C++ menyediakan perintah for, while, dan do-while.
•
Pernyataan input dan output dapat dilakukan dengan perintah cout dan cin sebagai stream yang termasuk dalam kelas iostream.
•
Fungsi dapat tidak mengembalikan nilai tetapi juga dapat mengembalikan nilai. Parameter pada fungsi dapat berupa parameter input, parameter output atau dua-duanya.
•
Pointer adalah variabel. Namun berbeda dengan variabel normal, pointer menyimpan alamat pada memori, bukan nilai yang kita masukkan.
•
C++ mendukung konsep pemrograman berorientasi obyek melalui pembuatan kelas, inheritance, fungsi virtual, overriding, overloading dan polimorfisme.
9.7
SOAL-SOAL LATIHAN
1.
Buatlah program C++ untuk mencari rata-rata 5 buah bilangan 34, 56, 91,11, 22.
2.
Buatlah program menggunakan C++ untuk menentukan harga barang setelah di diskon dengan tampilan sbb: Masukkan harga barang/unit : Rp. 20000 Jumlah barang yang dibeli : 5 ---------------------------------------------Total Harga sebelum diskon : Rp. 100000 Diskon (10%) : Rp. 10000 ------------------ Harga bersih : Rp. 90000
3.
Seseorang punya rekening tabungan di bank sebesar Rp. 10.000,- (saldo awal). Selanjutnya ia dapat menyetor atau mengambil tabungannya. Buatlah program dengan C++ untuk keperluan transaksi di bank tsb. Tampilan menu utamanya sbb: -------------------------------------PT. BANK ABC -------------------------------------Saldo : .... Menu Transaksi 1. Setor Tabungan 2. Ambil Tabungan 3. Exit Pilihan menu (1/2/3) ? ...
256
Pemrograman Aplikasi dengan C++
Ketentuan: Bank membuat kebijakan bahwa saldo minimum yang harus disisakan di rekening adalah Rp. 10.000,Jika nasabah memasukkan angka 1 maka dia akan diminta memasukkan jumlah rupiah yang akan disetor. Jika nasabah memilih angka 2 maka nasabah diminta memasukkan jumlah rupiah yang akan ditarik. Jika jumlah penarikkan mengakibatkan saldo kurang dari Rp. 10000 maka program akan menolak. (Petunjuk: gunakan pernyataan cin untuk mendapatkan input dari keyboard) 4.
Buatlah program menggunakan function untuk menentukan nilai akhir suatu pelajaran. Terdapat 2 argumen function yaitu nilai ujian tengah semester dan nilai ujian akhir semester. Output yang diinginkan adalah jika nilai rata-rata lebih besar atau sama dengan 80 maka nilai akhirnya adalah A, jika nilai ratarata kurang dari 80 dan lebih besar sama dengan 70 maka nilainya B, jika kurang dari 70 maka nilainya C.
5.
Perhatikan contoh soal pada Bab 8 no 6. Buatlah diagram abstraksi sistemnya kemudian buatlah kode programnya dengan menggunakan bahasa C++.
Rekayasa Perangkat Lunak
257
258
Pemrograman Aplikasi dengan C++
Gambar di samping ini adalah gambar sebuah pesawat telepon seluler atau lebih dikenal sebagai handphone yang sedang menjalankan salah satu aplikasi yaitu Contact List. Mungkin aplikasi seperti pada gambar ini tidak asing bagi kalian yang pernah menggunakan handphone. Aplikasi ini menyimpan nama teman, orang tua atau yang lainnya lengkap dengan nama dan nomor teleponnya. Bahkan kadang-kadang dilengkapi dengan alamat email, alamat kantor, nomor fax dan data-data lainnya.
Gambar 10.1. Fasilitas contact list pada pesawat telepon seluler.
Perhatikan aplikasi Contact List ini. Ketika kalian memasukkan nama dan nomor telepon seseorang maka nama dan nomor telepon tersebut tidak akan tertukar dengan nama atau nomor telepon orang lain. Semuanya teratur rapi. Kalian juga bisa mencari nama orang tertentu hanya dengan mengetikkan beberapa huruf yang ada hubungannya dengan nama. Perhatikan juga bahwa nama yang tersimpan selalu urut abjad, meskipun anda memasukkannya tidak berdasarkan urutan.
Data nama, nomor telepon dan data-data lainnya pada aplikasi Contact List disusun berdasarkan konsep pengaturan data yang lebih dikenal sebagai basis data. Pada bab ini kita akan mempelajari konsep-konsep dasar basis data. Kompetensi dasar sistem manajemen basis data (DBMS) merupakan bagian dari standar kompetensi membuat aplikasi berbasis Microsoft Access yang akan dibahas detil pada Bab 11. Bagian akhir dari bab ini akan ditutup dengan ringkasan dan latihan soal.
Rekayasa Perangkat Lunak
259
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Menjelaskan pengertian data, basis data dan sistem manajemen basis data (DBMS) o Menjelaskan Entity-Relationship Diagram o Menjelaskan basis data relasional 10.1.
DATA, BASIS DATA DAN SISTEM MANAJEMEN BASIS DATA
10.1.1. Basis Data Basis data (database) merupakan kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan dalam perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya. Basis data merupakan salah satu komponen utama dalam sistem informasi, karena merupakan basis dalam penyediaan informasi bagi para pemakai (Fathansyah, 1999; Post, 1999). Jika dibayangkan, basis data mirip dengan lemari di ruang administrasi sekolah yang menyimpan berbagai arsip. Masing-masing jenis arsip dikelompokkan, diatur dan disimpan pada tempat yang telah ditentukan. Sehingga akan ada kelompok arsip siswa, arsip guru, arsip mata pelajaran, arsip keuangan, dan lain-lain. Perbedaannya hanya pada media penyimpanannya. Kalau lemari arsip menggunakan lemari dari kayu, besi atau plastik, sedangkan basis data menggunakan media penyimpan elektronis seperti disk (hard disc, CD, atau tape). Gambar 10.2 memberikan ilustrasi tentang kesamaan lemari arsip dan basis data. Satu hal penting yang harus diperhatikan, basis data bukan hanya sekedar penyimpanan data secara elektronis. Tidak semua penyimpanan data elektronis bisa disebut basis data. Apabila penyimpanan itu tidak menggunakan prinsip pengaturan, pemisahan atau pengorganisasian maka kita tidak dapat menyebut penyimpanan data tersebut sebagai basis data. Pada Gambar 10.2 terlihat penerapan prinsip pengaturan, pengorganisasian atau pemisahan, baik pada lemari arsip atau pada basis data.
260
Dasar-dasar Sistem Basis Data
Arsip Siswa
Arsip Guru
Arsip Keuangan
Data Guru
Basis Data Dalam Media Penyimpanan
Data Siswa
Data Keuangan
Gambar 10.2. Lemari arsip dan basis data. Prinsip utama dalam basis data adalah konsep independensi data yaitu pemisahan data dari program aplikasinya (Lewis et al., 2002; Post, 1999). Sedangkan tujuan utama dalam basis data adalah membantu pengguna dalam abstraksi suatu sistem. Ada tiga level abstraksi yang biasanya digunakan yaitu physical level, conceptual level dan view level (Gambar 10.3). Physical level menunjukkan bagaimana data akan disimpan. Conceptual level berkaitan dengan data apa yang akan disimpan dan bagaimana hubungan antar data tersebut. View level merupakan level tertinggi yang menjelaskan bagian-bagian basis data pada pengguna tertentu (Ramakrishnan and Gehrke, 2000).
Rekayasa Perangkat Lunak
261
User 1
User 2
User 3
View 1
View 2
View 3
Conceptual Level
Physical Level
Gambar 10.3. Tingkatan dalam abstaksi data (Lewis et al., 2002). Basis data mempunyai beberapa kriteria penting, yaitu : 1. Bersifat data oriented dan bukan program oriented. 2. Dapat digunakan oleh beberapa program aplikasi tanpa perlu mengubah basis datanya. 3. Dapat dikembangkan dengan mudah, baik volume maupun strukturnya. 4. Dapat memenuhi kebutuhan sistem-sistem baru secara mudah 5. Dapat digunakan dengan cara-cara yang berbeda. Secara bertingkat, operasi dasar basis data dapat digambarkan dalam skema pada Gambar 10.4. Operasi-operasi tersebut meliputi: -
Pembuatan basis data baru (create database). Operasi ini sama dengan pembuatan atau pembelian lemari arsip yang baru.
-
Penghapusan basis data (drop database). pengrusakan atau penghancuran lemari arsip.
-
Pembuatan tabel baru (create table). Operasi ini sama dengan penambahan kelompok arsip baru. Operasi ini baru bisa dijalankan jika basis data telah dibuat.
-
Penghapusan tabel (drop table). Operasi ini sama dengan pengrusakan kelompok arsip lama. Operasi ini baru bisa dijalankan jika tabel telah ada pada suatu basis data.
262
Dasar-dasar Sistem Basis Data
Operasi ini sama dengan
Gambar 10. 4. Operasi-operasi dasar pada basis data. -
Pengisian atau penambahan data baru (insert data) pada suatu tabel. Operasi ini mirip dengan penambahan lembaran arsip baru pada kelompok arsip. Operasi ini baru bias dijalankan jika tabel telah dibuat.
-
Pengambilan data dari suatu tabel (retrieve data). Operasi ini mirip dengan pencarian lembaran arsip yang tersimpan dalam kelompok arsip.
-
Pengubahan data dari suatu tabel (update data). Operasi ini mirip dengan perbaikan isi lembaran arsip dari suatu kelompok arsip
-
Operasi ini mirip dengan Penghapusan data dari suatu tabel (delete). penghapusan sebuah lembaran arsip dari suatu kelompok arsip.
Basis data dibangun untuk memenuhi tujuan dalam pengorganisasian data, yang antara lain sebagai berikut : 1. Efisiensi meliputi kecepatan (speed), ruang simpan (space) dan keakuratan (accuracy). 2. Menangani data dalam jumlah besar. 3. Kebersamaan pemakaian (Shareability). 4. Meniadakan duplikasi dan inkonsistensi data. 10.1.2. Sistem Manajemen Basis Data Pengelolaan basis data secara fisik tidak dilakukan oleh pemakai secara langsung, tetapi ditangani oleh sebuah Perangkat Lunak yang khusus/spesifik. Perangkat lunak inilah disebut DBMS yang akan menentukan bagaimana data
Rekayasa Perangkat Lunak
263
diorganisasi, disimpan, diubah dan diambil kembali. Ia juga menerapkan mekanisme pengaman data, pemakaian data secara bersama, pemaksaan keakuratan/konsistensi data, sebagainya. Secara ringkas struktur suatu DBMS dapat dilihat pada Gambar 10.5.
Gambar 10.5. Struktur umum DBMS. Aplikasi-aplikasi tambahan bersifat opsional (bisa ada dan bisa tidak) dan biasanya terdapat pada DBMS sebagai fungsi tambahan. Sebagai contoh, aplikasi pembuat report (laporan), aplikasi untuk mendisain form, aplikasi untuk membuat diagram atau chart, aplikasi untuk monitoring sistem, dan aplikasi-aplikasi lainnya. Ada puluhan bahkan mungkin ratusan perangkat lunak DBMS yang tersedia. Masing-masing dengan spesifikasinya sendiri-sendiri. Mulai dari yang sangat sederhana sampai yang paling kompleks. Pada bagian ini kita akan membahas 5 buah DBMS yang cukup familiar dikalangan pengguna DBMS, yaitu Microsoft Access, MySQL, Microsoft SQL Server, PosgreSQL, dan Oracle. •
Microsoft Access
Gambar 10.6. Logo MS Access
264
Microsoft Access atau kadang disebut juga Microsoft Office Access adalah DBMS relational keluaran dari Microsoft yang termasuk dalam paket Microsoft Office. Microsoft Access mengkombinasikan engine relational Microsoft Jet Database, Graphical User Interface (GUI) dan perangkat pengembang perangkat lunak. Microsoft Access dapat menggunakan data yang disimpan dalam Microsoft Jet Database, Microsoft SQL Server, Oracle atau tipe lain asal kompatibel dengan ODBC (Open Database Connectivity).
Dasar-dasar Sistem Basis Data
Microsoft Access seringkali digunakan dalam pengembangan aplikasi secara cepat (Rapid Application Development), terutama untuk membangun prototipe dan aplikasi stand-alone. Microsoft Access juga dapat digunakan sebagai basis data untuk aplikasi berbasis web sederhana. Namun pada aplikasi yang lebih kompleks, baik berdasarkan web atau tidak, Microsoft Access bukanlah pilihan yang baik. Terutama karena kekurangannya dalam menangani penggunaan oleh banyak pengguna (multi-user). Hal ini karena sebenarnya Microsoft Access adalah sebuah basis data personal yang lebih Microsoft Access juga tidak ditujukan untuk single-user. dilengkapi dengan database triggers dan stored procedurs.
Gambar 10.7. Tampilan Microsoft Access. Salah satu keuntungan dari Microsoft Access bagi
programmer adalah kompatibilitasnya terhadap SQL (structured query language) relatif tinggi. Pada Microsoft Access kita dapat membuat query berbasis teks atau berbasis GUI kemudian dapat langsung dieksekusi dengan mudah untuk mendapatkan hasil.
•
MyQSL MySQL adalah SQL-DBMS yang bersifat multi-user dan multi-threaded. MySQL berjalan sebagai server yang melayani
Gambar 10.8. Logo MySQL
banyak pengguna untuk mengakses sejumlah basis data. DBMS ini sangat populer di dunia aplikasi berbasis web sebagai komponen basis data. Selain karena tersedia dalam versi gratis, popularitas MySQL juga sangat dipengaruhi oleh populernya web server Apache dan bahasa pemrograman PHP. Istilah-istilah seperti LAMP (Linux-Apache-MySQL-PHP/Perl/Python), MAMP (Mac-Apache-MySQL-PHP/Perl/Python dan WAMP (WindowsApache-MySQL-PHP/Perl/Python menjadi sangat terkenal. Banyak sekali aplikasi berbasis web yang dibangun dengan
Rekayasa Perangkat Lunak
265
menggunakan kombinasi perangkat lunak tersebut. WordPress, Drupal, Mambo, Wikipedia, PHP-Nuke, merupakan beberapa contoh aplikasi berbasis web yang menggunakan kombinasi ini. Tidak seperti Microsoft Access, default instalasi MySQL tidak menyediakan GUI bagi pengguna untuk berinteraksi dengan basis data. Pengguna dapat berinteraksi dengan client yang menggunakan perintah-perintah berbasis teks. Namun saat ini telah banyak GUI yang dikembangkan untuk mempermudah interaksi dengan basis data, baik itu berupa aplikasi stand-alone (misalnya MySQL-Front, MySQL-GUI, dan lain-lain) atau yang berbasis web (misalnya, phpMyAdmin). Bahkan dengan menggunakan komponen MyODBC, MySQL dapat diakses dengan GUI dari Microsoft Access seperti halnya basis data yang kompatibel dengan ODBC lainnya.
Gambar 10.9. Tampilan awal phpMyAdmin. •
Microsoft SQL Server
Gambar 10.10. Logo Microsoft SQL Server
266
Microsoft SQL Server adalah DBMS relational keluaran dari Microsoft seperti halnya Microsoft Access. Bahasa query utama yang digunakan adalah varian dari ANSI SQL yang disebut sebagai T-SQL (Transact-SQL). Bahasa ini membolehkan pengguna untuk membuat stored procedure sehingga meningkatkan efisiensi akses ke basis data. DBMS ini juga dilengkapi dengan fasilitas clustering dan mirroring. Cluster adalah kumpulan dari server-server yang konfigurasinya identik sehingga memungkinkan pembagian kerja antar server. Sedangkan fasilitas mirroring membolehkan suatu DBMS untuk membuat tiruan (replika) dari isi basis data secara lengkap untuk
Dasar-dasar Sistem Basis Data
digunakan pada server yang lain. Microsoft SQL Server tersedia dalam beberapa versi distribusi. Pada Microsoft SQL Server yang didistribusikan bersama Microsoft Office atau Microsoft Visual Studio, biasa disebut MSDE (Microsoft SQL Server Database Engine), tidak dilengkapi dengan perangkat GUI. Pengguna dapat melakukan interaksi dengan menggunakan client berbasis perintah teks seperti halnya MySQL. Sedangkan pada versi yang lebih tinggi seperti versi personal atau profesional telah tersedia fasilitas GUI (Gambar 10.11).
Gambar 10.11. GUI pada Microsoft SQL Server •
PostgreSQL
Gambar 10.12. Logo PostgreSQL
PostgreSQL atau sering disebut Postgres termasuk dalam kategori Object-Relational Database Management System (ORDBMS). ORDBMS adalah DBMS yang selain menggunakan prinsip-prinsip basis data relational juga menggunakan pendekatan berorientasi obyek dalam model basis datanya. Postgres dikembangkan sebagai free-software dan bersifat terbuka (open-source) sehingga tidak dikendalikan oleh satu atau dua perusahaan. Kelebihan Postgres dibandingkan DBMS lainnya adalah, sifatnya yang free dan open-source, dukungan dokumentasinya
Rekayasa Perangkat Lunak
267
yang luar biasa, fleksibilitasnya dan fitur-fiturnya yang tidak kalah dengan DBMS komersial. Selain mendukung model data object-relational, Postgres juga mendukung penggunaan basis data spasial (biasanya untuk penggunaan Sistem Informasi Geografis). Postgres juga mendukung operasi multi-user dan multi-threaded, bahkan mungkin lebih bagus dari MySQL dari sisi keamanan. Seperti halnya MySQL dan Microsoft SQL Server, kita dapat berinteraksi dengan basis data pada Postgres menggunakan perintah-perintah disisi klien dengan tool yang disebut psql. Antar muka yang bersifat GUI juga telah banyak dikembangkan, diantaranya phpPgAdmin, PgAdmin, dan lainlain. •
Oracle Database Gambar 10.13. Logo Oracle
Nama Oracle Database atau Oracle RDBMS adalah nama yang sangat diperhitungkan dalam dunia DBMS. Oracle dikembangkan oleh Oracle Corporation. Oracle menyimpan data secara logika dalam bentuk
tablespaces dan secara fisik dalam bentuk file-file data. Tablespaces dapat berisi berbagai macam bagian memori,
misalnya bagian data, bagian index dan lain sebagainya. Bagian-bagian ini berisi satu atau lebih area. Area-area ini berisi kumpulan blok data yang berdekatan. Oracle dapat menyimpan dan store procedure dan fungsi secara mandiri. 10.2.
ENTITY-RELATIONSHIP DIAGRAM
Model E-R biasa digambarkan dalam bentuk diagram yang disebut EntityRelationship Diagram (ERD). ERD merupakan notasi grafis dalam pemodelan data
konseptual yang digunakan untuk memodelkan struktur data dan hubungan antar data. Dengan ERD kita dapat menguji model dengan mengabaikan proses yang harus dilakukan. Dan dengan ERD kita mencoba menjawab pertanyaan seperti; data apa yang kita perlukan? bagaimana data yang satu berhubungan dengan yang lain? ERD menggunakan sejumlah notasi dan simbol untuk menggambarkan struktur dan hubungan antar data, pada dasarnya ada 3 macam simbol yang digunakan yaitu : 1. Entitas : Entitas digambarkan dalam bentuk persegi empat.
Gambar 10.14. Notasi entitas pada ER-Diagram
268
Dasar-dasar Sistem Basis Data
2. Atribut : Atribut digambarkan dalam bentuk ellips dan dihubungkan dengan entitas dimana atribut tersebut berada.
Gambar 10.15. Penggunaan notasi atribut pada ER-Diagram. 3. Relationship: Relationship digambarkan dalam bentuk intan/diamonds.
Gambar 10.16. Penggunaan notasi relationship pada ER-Diagram. 10.2.1. Entitas Entitas adalah individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain. Dapat berupa suatu elemen dari suatu lingkungan, suatu sumber daya atau sebuah transaksi yang memiliki arti penting bagi suatu model yang akan dibangun. Contoh Entitas set : o
Semua Guru atau Guru saja. Himpunan ini memiliki anggota : Bapak Fahri, Ibu Fitri, Bapak Joko dan guru-guru yang lain.
o
Semua Siswa atau Siswa saja. Himpunan ini memiliki anggota : Joni, Ridho, Fanny, Donny dan siswasiswa yang lain.
Rekayasa Perangkat Lunak
269
o
Semua Mobil atau Mobil saja. Himpunan ini memiliki anggota : mobil Daihatsu, mobil Toyota, mobil Suzuki, dan mobil-mobil yang lain.
Mengidentifikasi ada atau tidaknya entitas dalam suatu masalah memang tidak mudah. Tapi biasanya apabila kita menjumpai kata benda dalam permasalahan tersebut maka kata tersebut biasanya merupakan kandidat entitas. Sebagai contoh bila kita akan membangun basis data perpustakaan sekolah, maka kita akan menjumpai buku, siswa, guru, petugas perpustakaan sebagai calon kuat entitas. 10.2.2. Atribut Setiap entitas mempunyai atribut. Atribut adalah karakteristik atau ciri yang membedakan antara entitas satu dengan entitas yang lainnya. Contoh Atribut : o
Entitas Siswa. Memiliki atribut antara lain: nis (nomor induk siswa), nama, alamat, nomor telepon, tempat lahir, tanggal lahir dan lain-lain.
Gambar 10.17. Entitas siswa dan atributnya.
o
Entitas Guru. Memiliki atribut antara lain: NIP, nama, alamat, pangkat, nomor telepon, tempat lahir, tanggal lahir, bidang keahlian, dan lain-lain.
270
Dasar-dasar Sistem Basis Data
Gambar 10.18. Entitas guru dan atributnya.
o
Entitas Mobil. Memiliki atribut antara lain: Nomor mesin, nomor rangka, warna, tahun keluar, tipe mesin, bahan baker, dan lain-lain.
Gambar 10.19. Entitas mobil dan atributnya. Tidak semua karakteristik dari entitas penting bagi suatu ruang lingkup masalah. Sebagai contoh pada masalah basis data perpustakaan, karakteristik nomor sepatu siswa bukanlah karakteristik yang penting yang dapat dijadikan sebagai
Rekayasa Perangkat Lunak
271
atribut. Tetapi apabila ruang lingkup masalahnya adalah basis data pemesanan seragam sepatu siswa, maka nomor sepatu adalah atribut yang penting. Selain memilih mana yang benar-benar penting bagi sebuah entitas, kita juga harus menentukan mana yang akan menjadi atribut kunci (Primary Key). Pada contoh di atas (contoh atribut) kita dapat dengan mudah menentukan
primary key dari entitas yang ada.
Contoh Atribut kunci (Primary key). : o
Entitas Siswa. Misalkan atribut yang dimiliki adalah : NIS (nomor induk siswa), nama, alamat, nomor telepon, tempat lahir, dan tanggal lahir. Dari keenam atribut ini, maka yang paling cocok menjadi primary key adalah NIS karena atribut ini yang paling unik. Tidak ada siswa yang memiliki NIS yang sama. Nama masih mungkin sama, tapi NIS tidak.
o
Entitas Guru. Misalkan atribut yang dimiliki adalah: NIP, nama, alamat, pangkat, nomor telepon, tempat lahir, tanggal lahir, dan bidang keahlian. Atribut yang paling cocok menjadi primary key adalah NIP karena atribut ini yang paling unik. Tidak ada guru yang memiliki NIP yang sama. Sehingga NIP dapat dijadikan pengidentifikasi entitas guru.
o
Entitas Mobil. Misalkan atribut yang dimiliki adalah: Nomor mesin, nomor rangka, warna, tahun keluar, tipe mesin, dan bahan baker. Di sini ada dua atribut yang unik yaitu nomor mesin dan nomor rangka. Pada kasus ini kita dapat memilih salah satu dari kedua atribut tersebut sebagai primary key.
Sebagai panduan, berikut ini merupakan cirri-ciri dari atribut yang dapat dipertimbangkan sebagai identifier (candidate key) : o
Niliainya tidak berubah-ubah
o
Tidak mungkin berisi nilai null (kosong bukan nol)
o
Tidak berisi data nama atau lokasi yang mungkin berubah-ubah.
10.2.3. Relationship
Relationship atau relasi adalah hubungan yang terjadi antara sejumlah entitas. Misalkan dari entitas siswa ada seorang siswa yang memiliki NIS = “GHI007” dan nama_siswa = “Donny” mempunyai relasi dengan entitas program keahlian dengan kode_program = “RPL” dan nama_program = “Rekayasa Perangkat Lunak”. Relasi di antara kedua entitas mengandung arti siswa tersebut sedang mengambil program keahlian tersebut pada sekolah tertentu.
272
Dasar-dasar Sistem Basis Data
Gambar 10.20. Relationship. Ramakrishnan and Gehrke (2000) menyebutkan bahwa konsep relationship pada model E-R berbeda dengan konsep relation di dalam model data relasional. Relationship adalah mekanisme yang menghubungkan antara entitas. Dalam implementasi ke dalam DBMS baik entitas maupun relationship akan direpresentasikan dalam bentuk tabel (relation). Setiap relationship selalu mempunyai kardinalitas. Kardinalitas atau Derajat Relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas lain pada himpunan entitas yang lain. Pada gambar 10.20 kita sebenarnya dapat melihat sebuah kardinalitas antara himpunan entitas siswa dengan himpunan entitas program keahlian. Siswa dapat berelasi hanya dengan satu entitas pada himpunan entitas program keahlian. Sebaliknya satu entitas pada program keahlian dapat berelasi dengan banyak siswa. Pada gambar tersebut terlihat Donny hanya dapat berhubungan dengan Rekayasa Perangkat Lunak, sedangkan Rekayasa Perangkat Lunak dapat berhubungan dengan Donny dan Joni. Ada beberapa jenis tingkat hubungan (kardinalitas) antara entitas satu dengan entitas lainnya. Kardinalitas menunjukkan jumlah maksimum entitas pada suatu himpunan entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Secara umum ada tiga bentuk kardinalitas antar himpunan entitas, yaitu : o
satu ke satu (one to one). Hubungan dengan kardinalitas one-to-one artinya satu anggota suatu entitas set hanya boleh berhubungan dengan satu anggota entitas set yang lain. Hubungan antara entitas set suami dengan istri dapat dikelompokkan dalam hubungan one-to-one.’
Rekayasa Perangkat Lunak
273
Gambar 10.21. Hubungan one-to-one suami dan istri.
o
satu ke banyak / banyak ke satu (one to many / many to one). Kardinalitas satu ke banyak dan banyak ke satu dapat dianggap sama karena tinjauan kardinalitas selalu dilihat dari dua sisi. Contohnya adalah pada suatu sekolah mempunyai aturan satu kelas terdiri dari banyak siswa tetapi tidak sebaliknya, yaitu satu siswa tidak dapat belajar pada kelas yang berbeda.
Gambar 10.22. Hubungan one-to-many kelas dengan siswa.
o
banyak ke banyak (many to many). Kardinalitas ini cukup rumit untuk dijelaskan namun seringkali kita jumpai. Misalnya hubungan siswa dengan mata pelajaran memiliki kardinalitas many-to-many. Siswa berhak mengambil (mempelajari) lebih dari satu matapelajaran dan setiap mata pelajaran boleh diambil (dipelajari) lebih dari satu siswa.
10.3.
BASIS DATA RELASIONAL
10.3.1. Model Basis Data Relasional Model basis data relasional diperkenalkan pertama kali oleh E.F. Codd pada tahun 1970. Model data ini didasarkan pada struktur matematis yang mudah dan alami, yaitu relation (tabel). Operasi-operasi manipulasi data semuanya berakar pada logika matematika. Hal ini menjadikan ekspresi-ekspresi pada tabel dapat dianalisis dan dioptimasi (Lewis et al., 2002). Pembentuk utama dalam model data relasional adalan relation (tabel). Relation terdiri dari dua hal penting yaitu schema dan instance. Relation instance tidak lebih dari sebuah tabel dua dimensi dengan baris dan kolom. Baris (row) biasa disebut sebagai tuple, yang memiliki arti sama dengan record dalam suatu file. Tetapi berbeda dengan file record, semua tuple memiliki jumlah kolom yang sama dan tidak ada tuple dalam relation instance yang sama. Kolom dalam relation instance juga dikenal sebagai attribute atau column (Ramakrishnan and Gehrke, 2000; Lewis et al., 2002). Gambar 10.23. menunjukkan bagaimana hubungan tabel/file/relation,
274
Dasar-dasar Sistem Basis Data
row/record/tuple dan column/field/attribute. Gambar ini juga menunjukkan susunan dari hubungan tersebut.
Gambar 10.23. Hubungan tabel/file/relation, row/record/tuple dan column/field/attribute.
Relation schema terdiri dari nama dari relation, nama dari attribute yang ada pada suatu relation beserta nama domainnya, dan integrity constrains. Nama dari relation haruslah unik dalam suatu basis data, atau tidak boleh ada nama relation yang sama. Nama attribute adalah nama kolom dari relation dan tidak ada nama attribute yang sama pada suatu relation. Nama domain dari suatu attribute berhubungan dengan tipe data yang digunakan oleh attribute tersebut. Integrity constraints adalah batasan pada relational instances pada suatu schema (Ramakrishnan and Gehrke, 2000; Lewis et al., 2002)
Rekayasa Perangkat Lunak
275
10.3.2. Struktur Basis Data Relasional Seperti telah dijelaskan di atas sebuah tabel terdiri dari baris dan kolom. •
Row/Baris/Tuple
Row/Baris/Tuple adalah sekumpulan atribut yang saling berhubungan dalam satu baris (lihat Gambar 10.23). Row ini akan selalu berulang dengan struktur yang sama namun dengan isi data yang berbeda. Sebagai contoh, pada Gambar 10.23, row pertama memiliki struktur yang sama dengan row yang ke 2 dan ke 3. Namun data pada masing-masing row berbeda. Kita dapat mengidentifikasi untuk pembeli dengan id_pembeli = 1 pasti memiliki nama = Cristiano Ronaldo dan untuk id_pembeli = 2 pasti memiliki nama = Ryan Giggs, demikian seterusnya. •
Field/Kolom/Attributes
Field/Kolom/Attributes menunjukkan struktur dari data dari baris-baris yang
berulang. Pada Gambar 10.23, terdapat 4 kolom, yaitu id_pembeli, nama, alamat, dan telepon. Data pada kolom id_pembeli misalnya, akan memiliki struktur yang sama, yaitu dalam bentuk angka dan merupakan urutan id pembeli . Demikian juga pada kolom nama yang hanya berisi nama pembeli saja, tidak bercampur dengan data lain. Sebuah kolom harus memiliki nama kolom dan tipe data untuk data yang berada dalam kolom tersebut (Gambar 10.24). Selain itu, kadang-kadang juga ada pembatas (constraint) dan domain untuk data yang termasuk dalam kolom tersebut. Tipe data akan sangat bergantung pada atribut yang digunakan dan operasi-operasi yang akan dilakukan pada basis data ini. Domain data memiliki banyak kesamaaan pengertian dengan fungsi tipe data yang digunakan. Namun, tipe data lebih merujuk pada kemampuan penyimpanan data yang mungkin bagi suatu atribut secara fisik, tanpa melihat layak tidaknya data tersebut bila dilihat dari pemakaian di dunia nyata. Sementara domain data lebih ditekankan pada batas-batas nilai yang diperbolehkan bagi suatu atribut, dilihat dari kenyataan pemakaiannya.
276
Dasar-dasar Sistem Basis Data
Gambar 10.24. Kolom, constrain dan tipe data (Powell, 2006). Pada Gambar 10.24 terlihat nama-nama kolom pada sebuah tabel lengkap dengan tipe data dan constrainnya. Kolom ISBN misalnya bertipe data integer, artinya kolom ini hanya boleh diisi dengan bilangan integer. Selain itu kolom ini memiliki constrain no null, yang berarti ketika mengisikan data, kolom ini harus selalu terisi tidak boleh dikosongkan. Pada kolom Pages, tipe datanya adalah date, artinya hanya boleh berisi data berbentuk tanggal. Kolom Pages tidak memiliki constrain null, artinya kolom ini boleh diisi atau tidak diisi. Jenis-jenis tipe data tergantung pada DBMS yang digunakan. Sebagai contoh MySQL memberikan jenis-jenis tipe data yang lebih luas dari pada Microsoft Access. Pada MySQL misalnya, kita akan menjumpai tipe data set, enum yang tidak dijumpai dalam Microsoft Access. Pemilihan tipe data yang tepat sangat penting karena mempengaruhi konsistensi data dan kinerja basis data. Contoh domain adalah, apabila kita berhadapan dengan atribut / kolom tentang kelas pada Sekolah Dasar (SD). Kolom kelas ini hanya boleh diisi data angka 1 sampai dengan 6, karena tidak ada kelas 7 atau 4.5 di SD. Artinya domain kolom kelas adalah bilangan integer (bulat dan tidak ada pecahan) antara 1 sampai dengan 6 saja. Contoh lainnya adalah kolom nilai ujian, kolom ini domainnya adalah bilangan asli (real dan boleh pecahan) antara 0 sampai dengan 100. Ada beberapa tipe atribut, yaitu: o
Atribut sederhana (Simple Attribute), yaitu atribut atomic yang tidak dapat dipecah lagi.
Rekayasa Perangkat Lunak
277
Gambar 10.25. Contoh atribut sederhana
o
Atribut komposit (Composit Attribute), yaitu atribut yang masih dapat dipecah lagi menjadi sub-sub atribut yang masing-masing memiliki makna.
Gambar 10.26. Contoh atribut komposit.
278
o
Atribut bernilai tunggal (Single-Valued Attribute), yaitu atribut yang memiliki paling banyak satu nilai untuk setiap baris data.
o
Atribut bernilai banyak (Multi-Valued Attribute), yaitu atribut yang dapat berisi lebih dari satu nilai tetapi dengan jenis yang sama.
Dasar-dasar Sistem Basis Data
Gambar 10.27. Contoh atribut bernilai tunggal dan atribut bernilai banyak.
o
Atribut turunan (Derived Attribute), yaitu atribut yang nilai-nilainya diperoleh dari hasil pengolahan atau dapat diturunkan dari atribut atau tabel lain yang berhubungan.
10.3.3. Relasi Antar Tabel Keistimewaan utama basis data relasional dibandingkan model basis data lainnya adalah kemudahan dalam membangun hubungan antar tabel dalam bentuk yang masuk akal dapat dimengerti. Relasi antar tabel dapat kita turunkan langsung ataupun tak langsung dari ER-Diagram yang telah dibahas sebelumnya. Entitas yang ada pada ER-Diagram biasanya merupakan kandidat dari suatu tabel pada basis data relasional. Relasi antar tabel biasanya dapat diidentifikasi dari relationship antar entitas pada ER-Diagram. Untuk memperjelas bagaimana basis data relasional menangani hubungan antar tabel kita akan menggunakan tabel-tabel berikut ini. Tabel pertama adalah Pengarang. Tabel ini terdiri dari 3 kolom yaitu id_pengarang, pengarang dan tahun_lahir (Gambar 10.28). Pada tabel ini id_pengarang merupakan primary key.
Gambar 10.28. Tabel Pengarang.
Rekayasa Perangkat Lunak
279
Tabel kedua adalah Penerbit. Tabel ini mempunyai 6 kolom yaitu, id_penerbit, nama, nama_perusahaan, alamat, kota dan telepon (Gambar 10.29). Primary key pada tabel ini adalah id_penerbit.
Gambar 10.29. Tabel Penerbit. Tabel ketiga adalah Buku. Tabel ini mempunyai 6 kolom yaitu, judul, tahun_terbit, ISBN, id_penerbit, deskripsi, dan kelompok (Gambar 10.30). Primary key pada tabel ini adalah ISBN. Ada yang sedikit aneh pada tabel ini, yaitu kolom id_penerbit yang merupakan salah satu kolom pada tabel Penerbit, dimasukkan dalam tabel ini. Sebenarnya ini bukan keanehan atau kesalahan, tetapi memang beginilah salah satu cara basis data relasional menangani hubungan antar tabel.
Gambar 10.30 Tabel buku. Dalam dunia nyata, kita akan menjumpai bahwa satu penerbit tidak hanya menghasilkan satu judul buku saja, tetapi ratusan bahkan mungkin jutaan judul buku. Sehingga secara formal hubungan antara penerbit dengan buku dapat dinyatakan sebagai hubungan dengan kardinalitas one-to-many. Jika digambarkan dalam bentuk ER-Diagram akan tampak seperti Gambar 10.31. Satu penerbit dapat menerbitkan banyak judul buku dan satu judul buku hanya diterbitkan oleh satu penerbit. Untuk
280
Dasar-dasar Sistem Basis Data
lebih memperjelas perhatikan Gambar 10.31. Penerbit dengan id_penerbit = 13 (McGraw Hill) menerbitkan 6 buah buku. Sebaliknya buku dengan ISBN = 0-07020631-7 (Guide To Oracle) hanya diterbitkan oleh penerbit dengan id_penerbit = 13 (McGraw Hill). Sehingga penempatan kolom id_penerbit pada tabel buku dimaksudkan untuk merepresentasikan hubungan Penerbit dengan Buku. Kolom id_penerbit pada tabel buku biasa disebut sebagai foreign key.
Gambar 10.31. ER-Diagram untuk Penerbit dan Buku
Gambar 10.32. Hubungan tabel Penerbit dan Buku.
Rekayasa Perangkat Lunak
281
Pada tabel-tabel yang telah dibuat di atas kita belum melihat tabel yang menunjukkan seorang pengarang tertentu mengarang buku apa. Untuk membuat tabel yang berisi pengarang dan buku karangannya, kita dapat menggunakan hubungan antara tabel pengarang dengan tabel buku. Namun sebelum itu kita harus melihat bagaimana hubungan antara pengarang dengan buku di dunia nyata. Seorang pengarang mungkin hanya mengarang satu judul buku, tetapi mungkin juga lebih. Sedangkan satu buku, mungkin ditulis hanya oleh satu orang pengarang, tetapi mungkin juga ditulis oleh dua, tiga atau lebih pengarang. Sehingga kita bisa mengatakan kardinalitas hubungan pengarang dengan buku adalah many-to-many. Kita dapat menggambarkan ER-Diagram untuk kasus ini seperti pada gambar 10.33.
Gambar 10.33. ER-Diagram untuk Pengarang – Buku. Pada kasus dengan kardinalitas many-to-many kita tidak dapat langsung menyisipkan satu foreign key pada tabel lain. Kita harus membuat tabel baru agar kardinalitas antar tabel yang terlibat dapat diubah menjadi one-to-many. Tabel Pengarang_Buku merupakan tabel yang dibentuk untuk menangani hubungan tabel Buku dengan tabel Pengarang. Tabel ini hanya berisi dua atribut (kolom) yaitu ISBN yang berasal dari tabel Buku dan id_pengarang yang berasal dari tabel Pengarang. Pada Gambar 10.34, terlihat pada tabel Pengarang_Buku ada beberapa buku yang dikarang lebih dari satu pengarang.
282
Dasar-dasar Sistem Basis Data
Gambar 10.34. Hubungan tabel Pengarang dan Buku.
Gambar 10.35. Relasi antar tabel. 10.4. •
RINGKASAN Basis data (database) merupakan kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan dalam perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya.
Rekayasa Perangkat Lunak
283
•
Operasi dasar basis data meliputi pembuatan basis data baru, penghapusan basis data, pembuatan tabel baru, penghapusan tabel, pengisian atau penambahan data baru, pengambilan data, pengubahan data, penghapusan data.
•
Sistem Manajemen Basis Data merupakan perangkat lunak yang bekerja khusus untuk menangani basis data.
•
Entity-Relationship Diagram merupakan notasi grafis dalam pemodelan data konseptual yang digunakan untuk memodelkan struktur data dan hubungan antar data. Elemen dari ERD adalah entitas, atribut, relationship dan kardinalitas.
•
Pembentuk utama dalam model data relasional adalan relation (tabel). Relation instance adalah sebuah tabel dua dimensi dengan baris (row/record/tuple) dan
kolom (column/field/attribute). •
10.5.
Pada basis data relasional, identifikasi yang tepat pada hubungan antar atribut di dalam satu tabel dan hubungan antar tabel merupakan kunci membuat basis data yang baik. SOAL-SOAL LATIHAN
1.
Berkunjunglah ke perpustakaan sekolah, kemudian buatlah pengamatan singkat. Buatlah catatan untuk menentukan siapa dan apa yang terlibat dalam kegiatan perpustakaan sekolah. Cermatilah mana yang bisa digolongkan sebagai entitas, atribut. Dan bagaimana hubungan antar entitas.
2.
Dari hasil kegiatan no. 1 kemudian buatlah tabel-tabel yang menunjukkan entitas dan hubungannya. Tentukan pula atribut dari masing-masing tabel.
3.
Cermati pula tipe-tipe atribut yang telah kalian tentukan.
284
Dasar-dasar Sistem Basis Data
Gambar 11.1. Microsoft Access 2007. Gambar di atas adalah tampilan awal dari Microsoft Access terbaru yaitu versi 2007. Perangkat lunak yang termasuk dalam Micosoft Office Suite ini mungkin perangkat lunak yang jarang digunakan orang meskipun telah tersedia pada paket Micosoft Office. Padahal perangkat lunak ini sangat bermanfaat banyak bila digunakan. Bab ini membahas dua standar kompetensi yaitu mengoperasikan aplikasi basis data dan membuat aplikasi berbasis Microsoft Access. Standar kompetensi mengoperasikan aplikasi basis data terdiri dari tiga kompetensi dasar, yaitu menjelaskan menu aplikasi basis data, membuat tabel dan membuat view atau query. Sedangkan standar kompetensi membuat aplikasi berbasis Microsoft Access terdiri dari empat kompetensi dasar, yaitu menjelaskan Database Management System, menjelaskan Data Definition Language, menerapkan query dan menerapkan reporting. Database Management System telah kita bahas pada Bab 10, sedangkan Data Definition Language akan kita bahas pada Bab 12. Sebelum mempelajari kompetensi ini ingatlah kembali tentang prinsip pemecahan masalah, sistem operasi, dan dasardasar basis data pada bab-bab sebelumnya.
Rekayasa Perangkat Lunak
285
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Menjelaskan menu-menu umum aplikasi basis data o Membuat Tabel o Membuat dan menerapkan View / Query o Membuat Form o Membuat Report 11.1.
MENU-MENU UMUM APLIKASI BASIS DATA
Seperti telah disebutkan pada bab sebelumnya, Microsoft Access adalah DBMS keluaran dari Microsoft. Versi terbaru dari Access adalah versi 2007 yang termasuk dalam aplikasi Microsoft Office 2007. Format data default untuk versi terbaru ini berbeda dengan versi sebelumnya. Ekstension file sebelumnya adalah .mdb, namun sekarang berganti dengan .accdb. File basis data yang dibuat oleh versi terbaru ini tidak dapat dibaca oleh versi sebelumnya. Namun versi terbaru ini dapat membaca file basis data versi sebelumnya. Untuk memulai Microsoft Access, kita dapat melakukan klik Start pada Windows pilih Programs lalu pilih Microsoft Access. Tampilan awal Microsoft Access akan tampak seperti Gambar 11.2. Microsoft Access memberikan beberapa opsi dalam pembuatan basis data seperti tampak pada Gambar 11.2. Namun opsi yang paling sering kita gunakan adalah Blank database. Apabila kita klik pada bagian ini maka akan muncul permintaan untuk mendefinisikan basis data seperti terlihat pada Gambar 11.3. Nama dan lokasi penyimpanan basis data harus ditentukan.
Gambar 11.2. Tampilan awal Microsoft Access.
286
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.3. Penentuan nama dan lokasi basis data. Setelah kita tekan tombol Create berarti kita telah mempunyai sebuah basis data, namun masih belum terisi tabel atau data apapun (Gambar 11.4). Pada gambar tersebut dapat kita lihat nama file basis data adalah latihan01 dan format file basis data menggunakan Access 2000. Pada gambar tersebut juga tampat bagian bagian (object) basis data tersebut.
Gambar 11.4. Bagian-bagian sebuah basis data pada Microsoft Access.
Rekayasa Perangkat Lunak
287
Ada enam obyek penting Access yang menjadi fitur utama dari DBMS ini, yaitu: •
Table. Tabel adalah tempat dimana kita menyimpan data. Semua tabel di dalam Access mengikuti aturan basis data relasional yang terdiri dari baris dan kolom. Setiap basis data bisa berisi lebih dari satu tabel.
•
Queries. Fitur queries disediakan untuk memilih data yang akan kita tampilkan.
•
Forms. Fitur form disediakan untuk membuat tampilan dari basis data yang dibuat menjadi lebih menarik. Baik ketika mengedit data maupun tampilan output data di layar monitor.
•
Reports. Fitur ini disediakan untuk membuat format pencetakan pada media
•
Macros. Fitur macro merupakan fitur yang digunakan untuk menyimpan perintah-perintah otomatis tertentu yang berhubungan dengan basis data yang dibuat. Dibutuhkan kemampuan pemrograman untuk menggunakan fasilitas ini.
•
Modules. Fitur ini lebih luas dari macro karena kita dapat melakukan pemrograman pada banyak aspek dalam Microsoft Access.
Queries pada Access disediakan baik dalam bentuk GUI maupun dalam bentuk bahasa SQL.
kertas melalui printer.
Selain obyek-obyek utama di atas Microsoft Access juga menyediakan seperangkat alat untuk mendukung kemudahan dalam membuat basis data dan aplikasinya. Berikut ini gambar-gambar toolbar pada Microsoft Access beserta kegunaannya.
Gambar 11.5. Toolbar pada menu Create.
288
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.6. Toolbar pada menu External Data.
Gambar 11.7. Toolbar pada menu Database Tool. Pada buku ini kita akan mempelajari empat buah obyek yaitu, tabel, query, Namun, sebelum kita memulai dengan pembahasan tentang bagaimana menggunakan obyek-obyek dalam Microsoft Access tersebut, kita akan sekilas membahas tentang contoh kasus basis data yang akan kita buat. Kasus yang akan kita buat adalah Basis Data Penjualan Buku. Pada kasus ini setiap pembeli akan melakukan pembelian terhadap buku yang diinginkan dan membayar sejumlah uang sesuai buku yang dibeli. Data pembeli akan dicatat. Demikian juga setiap data pesanan, baik itu pemesanan ringkasan maupun item-item pemesanannya. Data pesanan berisi pembeli yang melakukan pemesanan, total pembelian dan tanggal pembelian. Sedangkan data item pemesanan berisi data buku yang dipesan dan jumlahnya untuk tiap pemesanan.
form dan report.
Dengan membaca kasus di atas, maka apabila kita akan membuat ER Diagramnya maka langkah pertama adalah identifikasi kandidat entitas yang terlibat. Dari teks di atas kita dapat mengidentifikasi ada minimal 4 kandidat entitas yaitu pembeli, buku, pesanan dan item pemesanan. Sedangkan relasinya dapat kita identifikasi sebagai berikut : o
pembeli melakukan pemesanan
o
pada setiap pesanan terdapat item-item pesanan
Rekayasa Perangkat Lunak
289
o
pada item-item pesanan terdapat daftar buku-buku yang dipesan.
Atribut-atribut untuk masing-masing kandidat entitas dapat kita tentukan sebagai berikut: o
Entitas Pembeli dengan atribut id_pembeli, nama, alamat, dan telepon.
o
Entitas Buku dengan atribut nomor ISBN, pengarang, dan judul
o
Entitas Pesanan dengan atribut id_pesanan, jumlah pembelian, tanggal pembelian.
o
Entitas Item Pemesanan dengan atribut jumlah masing-masing buku yang
dipesan.
Setelah semua informasi lengkap maka kita dapat menggambarkan ER Diagram untuk kasus di atas seperti pada Gambar 11.8.
Gambar 11.8. ER Diagram untuk kasus Basis Data Penjualan Buku. Berdasarkan ER Diagram di atas kita dapat menentukan tabel-tabel apa yang dibutuhkan pada basis data penjualan buku. Ada empat tabel yaitu: tabel pembeli, buku, pesanan, dan item pesanan. Untuk mengakomodasi relasi yang ada pada ER Diagram, maka akan dibuat atribut-atribut yang berperan sebagai perwujudan relasi. Tabel 11.1 menunjukkan tabel dan atribut yang ada pada basis data penjualan buku.
290
Aplikasi Basis Data berbasis Microsoft Access.
Tabel 11.1. Tabel dan atribut pada Basis Data Penjualan Buku. Tabel Pembeli
Buku Pesanan
Item_Pesanan
Atribut o id_pembeli o nama o alamat o telepon o isbn o pengarang o judul o id_pesanan o id_pembeli o jumlah_pembelian o tanggal_pembelian o o o
id_pesanan isbn jumlah
Keterangan Id_pesanan adalah atribut kunci (primary key) karena bersifat unik. Isbn adalah primary key karena bersifat unik Id_pesanan adalah primary key karena bersifat unik. Sedangkan id_pembeli adalah atribut penghubung (foreign key) entitas Pembeli dengan Pesanan. Hal ini merupakan perwujudan dari relasi Pembeli melakukan Pesanan. Id_pesanan dan isbn secara bersama-sama adalah primary key untuk tabel ini. Id_pesanan sendiri adalah foreign key sebagai perwujudan relasi Pesanan terdiri dari Item_Pesanan. Sedangkan isbn adalah perwujudan relasi Buku berada dalam Item_Pesanan.
Tabel 11.1 dapat kita lengkapi dengan tipe data dan constraint/domain seperti pada Tabel 11.2. Hal ini untuk mempermudah pembuatan tabel pada DBMS. Apabila kita memeriksa apakah tabel-tabel yang terbentuk sudah dalam bentuk normal atau belum, maka kita akan menjumpai semua tabel sudah dalam bentuk normal bentuk ketiga (3NF). Tabel 11.2. Tabel, atribut, tipe data dan constraint/domain pada Basis Data Penjualan Buku. Tabel Pembeli
Buku
Pesanan
Item_Pesanan
Atribut o id_pembeli o nama o alamat o telepon o isbn o pengarang o judul o harga o id_pesanan o id_pembeli o jumlah_pembelian o tanggal_pembelian o id_pesanan o isbn o jumlah
Tipe Data Integer Char/Text (30) Char/Text (60) Char/Text (15) Char/Text (15) Char/Text (30) Char/Text (50) Real/Float (10,2) Integer Integer Real/Float (10,2) Date Integer Char/Text (30) Integer
Constraint/Domain Not Null
Not Null
Not Null Not Null Not Null Not Null Not Null dan > 0
Rekayasa Perangkat Lunak
291
11.2.
TABEL
Ketika kalian selesai membuat file basis data (lihat Gambar 11.3 dan 11.4, kita sudah punya sebuah basis data namun belum berisi apa-apa karena kita belum membuat tabel-tabel dalam basis data tersebut. Seperti telah dijelaskan pada Bab 10, tabel akan berisi kolom dan baris. Kolom di sebut field dan baris disebut record dalam Microsoft Access.
11.2.1 Pendefinisian Field dan Tipe Data. Tahap pertama dalam membuat tabel adalah mendefinisikan field-field yang dibutuhkan baru kemudian mengisi baris-baris data. Langkah-langkah pembuatan tabel adalah sebagai berikut: 1.
Pada jendela Database click pada Table (Gambar 11.9).
2.
Double click pada Create table in Design View (Gambar 11.9). Kemudian akan muncul jendela untuk mendefinisikan field-field yang dibutuhkan (Gambar 11.9)
Gambar 11.9. Tahap awal pembuatan tabel. 3.
Kita dapat mulai memasukkan field-field yang dibutuhkan. Untuk contoh awal kita akan memasukkan field-field untuk tabel Pembeli seperti yang sudah didefinisikan pada Tabel 11.2. Perhatikan Gambar 11.10 berikut ini.
292
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.10. Pendefinisian field, tipe data, constraint dan domain. Microsoft Access menyediakan fasilitas yang sangat baik untuk mendefinisikan field-field suatu tabel. Pada Gambar 11.10 tampak proses pendefinisian field. Bagian atas adalah untuk menentukan nama field, tipe data dan keterangan. Sedangkan bagian bawah merupakan tempat menentukan lebar data, format, domain atau constraint dari suatu tipe data. Pada gambar tersebut terlihat bahwa field nama didefinisikan bertipe data teks, dengan lebar data 30 (lihat bagian bawah gambar). 4.
Setelah semua field untuk tabel pembeli selesai didefinisikan maka kita harus menentukan field mana yang berperan sebagai primary key. Pada penjelasan kasus di atas kita sudah menetapkan bahwa id_pembeli akan menjadi primary key. Pilih / sorot baris id_pembeli, kemudian click tombol bergambar kunci (Gambar 11.11) pada toolbar Microsoft Access.
Gambar 11.11. Toolbar Microsoft Access. 5.
Kita dapat menyimpan tabel yang sudah kita definisikan dan memberi nama tabel tersebut dengan cara menekan tombol bergambar disket (lihat Gambar 11.11).
Rekayasa Perangkat Lunak
293
Kemudian kita dapat menutup jendela Design View tersebut. Dengan cara yang sama, tabel-tabel lainnya yaitu tabel buku, tabel pesanan, dan tabel item_pesanan dapat kita definisikan. Gambar-gambar berikut menunjukkan hasil pendefinisian keseluruhan tabel.
Gambar 11.12. Struktur tabel pembeli.
Gambar 11.13. Struktur tabel buku.
Gambar 11.14. Struktur tabel pesanan.
Gambar 11.15. Struktur tabel item_pesanan.
294
Aplikasi Basis Data berbasis Microsoft Access.
11.2.2. Pengisian Data Pada Tabel. Tabel-tabel yang telah kita buat di atas, belum mempunyai isi data apa-apa. Hanya strukturnya yang telah kita buat. Untuk mengisikan data pada tabel, caranya cukup mudah, yaitu: double click pada nama tabel yang kita ingin isikan datanya. Setelah terbuka jendela seperti pada Gambar 11.16, kita dapat segera mengisikan datanya. Cara pengisian datanya sama seperti kalau kita bekerja dengan Microsoft Excell atau software spreadsheet lainnya. Kemudian kita dapat menyimpan hasil pengisian data dengan menekan tombol bergambar disket pada toolbar.
Gambar 11.16. Hasil pengisian data pada tabel pembeli. Gambar 11.16 menunjukkan isi data pada tabel pembeli. Dengan cara yang sama kita dapat mengisikan data pada tabel-tabel lain. Perhatikan hasil pengisian data pada gambar-gambar berikut.
Gambar 11.17. Hasil pengisian data pada tabel buku.
Gambar 11.18. Hasil pengisian data pada tabel pesanan.
Rekayasa Perangkat Lunak
295
Gambar 11.19. Hasil pengisian data pada tabel item_pesanan. 11.3.
QUERY
Pada bagian ini kita akan menerapkan teori-teori query yang telah kita telah singgung sebelumnyanya. Seperti telah dijelaskan, query adalah 'permintaan data'. Dengan query kita dapat menampilkan data-data tertentu dari satu atau lebih tabel, atau melakukan perhitungan pada data di dalam tabel. Namun sebelum mempelajari bagaimana membuat query, kita akan pelajari dulu bagaimana membuat relasi antar tabel agar ketika membuat query menjadi lebih mudah.
11.3.1. Membuat Relasi Antar Tabel. Pada Gambar 11.8, kita telah mendefinisikan hubungan antar entitas dalam ER Diagram. Gambar ini merupakan dasa dalam membuat relasi antar tabel. Untuk membuat relasi antar tabel, pilih menu Tools kemudian Relationship sehingga akan muncul jendela seperti pada Gambar 11.20. Pada jendela relationships tersebut klik kanan sehingga muncul menu pilihan dan pilih Show Tabel. Setelah muncul jendela seperti Gambar 11.21, kita dapat mulai menentukan tabel mana saja yang akan kita relasikan.
Gambar 11.20. Jendela Relationships.
296
Gambar 11.21. Jendela Show Table.
Aplikasi Basis Data berbasis Microsoft Access.
Pada Gambar 11.21, pilih tabel yang akan direlasikan kemudian click tombol Add. Setelah selesai proses pemilihan click tombol Close. Pada kasus yang akan kita terapkan ini keempat tabel itu berhubungan langsung maupun tidak langsung. Sehingga kita memilih seluruh tabel untuk direlasikan. Gambar 11.22 menunjukkan hasil pemilihan tabel pada jendela Relationships. Pada gambar ini yang diperlihatkan adalah struktur dari masing-masing tabel, bukan isinya. Nama kolom yang dicetak tebal menunjukkan kolom tersebut adalah primary key. Kita dapat mengatur posisi tabel dengan cara drag & drop.
Gambar 11.22. Tabel-tabel yang akan direlasikan. Untuk membuat relasi antar tabel, dapat dilakukan dengan memilih primary key pada suatu tabel kemudian seret mouse menuju key dengan nama yang sama pada tabel lainnya (foreign key pada tabel lain). Sebagai contoh pada tabel pembeli, primary key – nya id_pembeli dan pada tabel pesanan, id_pembeli adalah foreign key. Click id_pembeli pada tabel pembeli kemudian seret mouse menuju id_pembeli pada tabel pesanan. Apabila prosedur ini benar dilakukan, maka akan muncul jendela seperti Gambar 11.23. Click pada bagian Enforce Referential Integrity dan click tombol Create. Kita dapat melakukan prosedur ini pada relasi-relasi yang lain. Sehingga pada jendela Relationships akan tampak seperti pada Gambar 11.24.
Gambar 11.23. Jendela untuk edit relationships
Rekayasa Perangkat Lunak
297
Gambar 11.24. Relasi untuk keseluruhan tabel. Gambar 11.24 menunjukkan relasi antar tabel yang dapat kita bandingkan dengan ER Diagram pada Gambar 11.8. Pada relasi antar tabel ini, kita juga menentukan kardinalitas antar tabel. Perhatikan pada garis yang menghubungkan tabel pembeli dengan pesanan. Di ujung yang berada pada tabel pembeli ditandai dengan angka 1 dan di ujung yang ada pada tabel pesanan ditandai dengan notasi ∞. Hal ini menunjukkan adanya hubungan one-to-many antara tabel pembeli dengan tabel pesanan. Demikian juga dengan relasi antar tabel yang lain.
11.3.2. Membuat Query Microsoft Access menyediakan fasilitas query yang sangat baik dan memudahkan pengguna. Selain karena berbasis GUI juga prosedurnya tidak terlalu rumit. Berikut contoh-contoh membuat query di Microsoft Access. o
Query pada satu tabel Query pada satu tabel hanya akan melibatkan satu tabel saja. Misalkan kita akan melakukan query pada tabel buku. Prosedur yang ditempuh adalah sebagai
berikut:
1. Pada jendela Database pilih Query lalu klik dua kali Create Query In Design View. Sehingga akan muncul jendela seperti pada Gambar 11.25. Pilih tabel buku pada jendela Show Tabel, kemudian click Add dan kemudian Close. Jendela Show Table akan tertutup dan kita dapat mulai melakukan query.
298
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.25. Jendela query pada mode design view. 2. Pada jendela Query bagian bawah (lihat Gambar 11.25), ada beberapa hal penting yang harus diketahui dan berguna dalam query yaitu Field Tabel Sort Show Criteria
: : : : :
Nama Field yang ingn ditampilkan Nama Tabel dari Filed tersebut Mengurutkan Data hasil query Mengatur Field ditampikan atau tidak Syarat dari data yang ingin ditampilkan
3. Contoh query yang pertama adalah bagaimana menampilkan semua data, misalnya:
Tampilkan semua data yang ada di tabel buku. Untuk menampilkan seluruh data pada tabel buku, pada Field, click tombol panah ke bawah pilih buku.* (lihat Gambar 11.26). Kita dapat mengeksekusi query dengan memilih menu Query kemudian click Run, atau
click langsung tombol tanda seru ( ) yang ada di toolbar. Hasil query dapat dilihat pada Gambar 11.26. Simpan query dengan nama yang diinginkan (misalnya: query_buku_semua_data) kemudian tutup jendela Query.
Rekayasa Perangkat Lunak
299
Gambar 11.26. Prosedur dan hasil query tabel buku. 4. Contoh query yang kedua adalah memilih kolom mana saja yang akan ditampilkan, misalnya :
Tampilkan semua nama pengarang dan judul buku yang dikarangnya Query ini tidak menampilkan seluruh data tetapi hanya data dari kolom pengarang dan judul buku saja. Pada Gambar 11.27 terlihat bagaimana query dilakukan. Tabel buku tetap dipilih dari jendela Show Table, kemudian di jendela Query, pada bagian Field dipilih field pengarang dan judul. Hasil eksekusi query adalah daftar nama seluruh pengarang dan buku yang dikarangnya.
300
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.27. Query nama pengarang dan bukunya. 5. Contoh query yang ketiga adalah bagaimana membuat tampilan data urut sesuai yang dikehendaki, misalnya:
Tampilkan semua judul buku dan harganya dengan urutan harga yang paling mahal lebih dahulu Query ini juga tidak menampilkan seluruh data tetapi hanya data dari judul buku dan harga saja. Namun urutan tampilan dirubah. Pada Gambar 11.28 terlihat bagaimana query dilakukan. Tabel buku tetap dipilih dari jendela Show Tabel, kemudian di jendela Query, pada bagian Field dipilih field judul dan harga. Pada bagian Sort, pada kolom yang sama dengan harga, kita gunakan opsi Descending untuk mengurutkan dari besar ke kecil. Hasil eksekusi query adalah daftar seluruh judul buku dan harganya dengan urutan judul buku yang berharga paling mahal di atas.. Bandingkan urutan baris pada hasil dengan hasil query pada Gambar 11.26.
Rekayasa Perangkat Lunak
301
Gambar 11.28. Query judul buku dan harga dengan urutan. 6. Contoh query yang ketiga adalah bagaimana memilih baris-baris mana saja yang akan ditampilkan, misalnya:
Tampilkan semua judul buku yang pengarangnya adalah Harry Redknapp. Query ini juga hanya berhubungan dengan data dari field judul buku dan pengarang saja. Namun tidak seluruh judul, tetapi hanya judul buku yang ditulis ‘Harry Redknapp’. Pada Gambar 11.28 terlihat bagaimana query dilakukan. Tabel buku tetap dipilih dari jendela Show Tabel, kemudian di jendela Query, pada bagian Field dipilih field nama pengarang dan judul. Pada bagian criteria, kita masukkan criteria yang kita maksudkan, yaitu = ‘Harry Redknapp’. Hasil eksekusi query adalah daftar seluruh judul buku yang ditulis ‘Harry Redknapp’.
Gambar 11.29. Query dengan criteria tertentu.
302
Aplikasi Basis Data berbasis Microsoft Access.
7. Contoh query yang ketiga adalah bagaimana kita menggunakan operator pada kriteria, misalnya:
Tampilkan semua judul buku yang pengarangnya adalah Harry Redknapp dan Arsene Wenger. Seperti pada no 6, query ini juga hanya berhubungan dengan data dari field judul dan pengarang saja. Namun tidak seluruh judul, tetapi hanya judul buku yang ditulis secara bersama oleh ‘Harry Redknapp dan Arsene Wenger’. Pada Gambar 11.30 terlihat bagaimana query dilakukan. Gunakan cara yang sama seperti pada no 6, hanya pada bagian criteria, kita masukkan criteria yang kita maksudkan, yaitu = ‘Harry Redknapp’ and ‘Arsene Wenger’. Hasil eksekusi menunjukkan tidak ada satu recordpun yang memenuhi. Hal ini karena memang tidak ada buku yang ditulis secara bersama oleh ‘Harry Redknapp’ dan ‘Arsene Wenger’. Bagaimana kalau kita ganti and dengan or? Perhatikan pada Gambar 11.31. Ada 3 record yang sesuai.
Gambar 11.30. Query dengan menggunakan operator and.
Rekayasa Perangkat Lunak
303
Gambar 11.31. Query dengan menggunakan operator or.
o
Query pada lebih dari satu tabel Query pada lebih dari satu tabel, relasi antar tabel yang telah kita buat
sebelumnya akan menjadi sangat penting. Karena relasi ini akan menentukan bagaimana hasil dari query. Prosedur untuk membuat query sama seperti membuat query satu tabel, namun tabel yang dipilih pada jendela Show Tabel tidak lagi satu, tetapi mungkin dua, tiga atau lebih, sesuai dengan kebutuhan. Berikut ini beberapa contoh query dengan lebih dari satu tabel. 1. Contoh query yang pertama adalah query yang melibatkan dua tabel, misalnya:
Tampilkan nama dan alamat pembeli yang jumlah pembeliannya lebih dari 100000. Pada query ini kita membutuhkan tabel pembeli karena kolom nama dan alamat pembeli ada pada tabel pembeli. Kita juga membutuhkan tabel pesanan karena kolom jumlah pembelian ada pada tabel ini. Dari relasi antar tabel pada Gambar 11.24, kita tahu bahwa ada relasi antara tabel pembeli dan tabel pesanan dengan kardinalitas one-to-many. Prosedur membuat query akan seperti berikut: Pada jendela Database pilih Query lalu klik dua kali Create Query In Design View. Sehingga akan muncul jendela Show Tabel. Pilih tabel pembeli dan pesanan pada jendela Show Table (Gambar 11.32), kemudian click Add dan kemudian Close. Jendela Show Table akan tertutup dan kita dapat mulai melakukan query.
304
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.32. Pemilihan tabel untuk query dua tabel. Ketika kita memilih tabel pembeli dan pesanan seperti tampak pada Gambar 11.33, secara otomatis Microsoft Access akan menampilkan garis relasi antara kedua tabel tersebut. Apabila kita belum membuat relasi, maka garis relasi tidak akan muncul. Pada Gambar 11.33 terlihat pada bagian Field untuk kolom nama dan alamat, Tabel nya adalah pembeli. Sedangkan pada jumlah_pembelian, tabelnya adalah pesanan. Selain itu pada kolom jumlah_pembelian, kita juga membuat criteria, yaitu yang lebih besar dari 100000. Hasil eksekusi query menunjukkan ada dua orang pembeli yang jumlah_pembeliannya lebih dari 100000.
Rekayasa Perangkat Lunak
305
Gambar 11.33. Query dua tabel 2. Contoh query yang kedua adalah query yang melibatkan tiga tabel, misalnya: Tampilkan judul buku dan pengarangnya yang dibeli pada tanggal 22 Juli 2007 atau 25 Juli 2007. Pada query ini kita membutuhkan tabel buku karena kolom judul dan pengarang ada pada tabel buku. Kita juga membutuhkan tabel pesanan karena kolom tanggal pembelian ada pada tabel ini. Namun dari relasi antar tabel pada Gambar 11.24, kita tahu bahwa tabel pesanan dan tabel buku tidak ada relasi langsung. Tabel pesanan berhubungan langsung dengan tabel item_pesanan dan tabel item_pesanan berhubungan langsung dengan tabel buku. Semua relasinya berkardinalitas one-to-many. Sehingga pembuatan query akan seperti berikut: Pilih tabel buku, item_pesanan dan pesanan pada jendela Show Tabel. Kemudian click Add dan kemudian Close. Seperti tampak pada Gambar 11.34 terlihat relasi antara ketiga tabel tersebut. Hasil eksekusi query ini menghasilkan tiga record seperti terlihat pada gambar.
306
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.34. Query tiga tabel. 3. Contoh query yang ketiga adalah query yang melibatkan semua tabel pada basis data penjualan buku, misalnya: Tampilkan nama dan alamat pembeli yang membeli buku dengan judul Teori Sepakbola Modern. Pada query ini kita membutuhkan tabel pembeli karena kolom nama dan alamat ada pada tabel pembeli. Kita juga membutuhkan tabel buku karena kolom judul hanya ada pada tabel ini. Dari relasi antar tabel pada Gambar 11.24, kita tahu bahwa tabel pembeli dan tabel buku tidak ada relasi langsung, namun harus melalui tabel pesanan dan tabel item_pesanan. Oleh karena itu kita membutuhkan keempat tabel tersebut dalam query ini. Pada Gambar 11.35 terlihat bagaimana query ini harus dibuat. Hasil eksekusi query ini menghasilkan tiga record seperti terlihat
Rekayasa Perangkat Lunak
307
Gambar 11.35. Query empat tabel. 11.4. FORM Form adalah salah satu obyek basis data dalam Microsoft Access yang digunakan sebagai antar muka bagi pengguna untuk memasukkan data atau menampilkan data. Bagi pengguna awam, memasukkan data seperti pada Gambar 11.16 sampai dengan 11.19 agak menyulitkan. Jauh lebih mudah menggunakan form. Pada Microsoft Access, dikenal ada tiga model form, yaitu: form data entry (Gambar 11.36 no 1), form switchboard (no 2) dan form custom dialog (no. 3). Ada dua cara pembuatan form pada Micosoft Access, yaitu dengan menggunakan Wizard dan dengan menggunakan Design View. Wizard merupakan cara yang paling mudah, karena kita Microsoft Access akan melakukan pembuatan form secara otomatis. Sedangkan pada Design View kita melakukan rancangan form secara manual. Kita dapat memodifikasi hasil dari Wizard dengan Design View.
308
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.36. Jenis-jenis form.
11.4.1. Membuat Form Pada bagian ini kita akan membuat form dengan mode Wizard. pertama yang akan kita buat adalah form untuk input data Pembeli.
Form
1. Pada jendela Database, click pada object Form, kemudian double click pada Create form by using Wizard. Jendela Form Wizard akan terbuka (Gambar 11.37)
Gambar 11.37. Membuka jendela Form Wizard.
Rekayasa Perangkat Lunak
309
2. Pada jendela Form Wizard, click pada combo box Tabel/Queries dan pilih tabel pembeli (Gambar 11.38), kemudian click tombol >> sehingga semua field yang ada pada bagian Available Fields berpindah ke Selected Fields (lihat Gambar 11.39). Kemudian click Next untuk memunculkan jendela untuk memilih model tampilan form (Gambar 11.40)
Gambar 11.38. Pemilihan tabel yang akan dibuat formnya.
Gambar 11.39. Pemilihan field untuk form.
310
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.40. Jendela untuk memilih model tampilan form. 3. Pada Gambar 11.40, tersedia beberapa opsi model tampilan form. Kita akan mencoba membuat dengan model Columnar. Namun pembaca dapat mencoba membuat dengan model tampilan lain yang tersaji pada pilihan. Click tombol Next maka akan muncul jendela untuk memilih style (Gambar 11.41). Pada jendela ini kita dapat memilih sesuai keinginan kita dan setelah selesai kita click Next sehingga muncul jendela untuk member Title atau judul form yang telah kita buat. Isikan nama form pada Textbox yang telah disediakan (Gambar 11.42).
Gambar 11.41. Jendela untuk memilih style form.
Rekayasa Perangkat Lunak
311
Gambar 11.42. Jendela untuk memberi nama form. 4. Click tombol Finish pada Gambar 11.42. Form pembeli telah selesai kita buat dan hasilnya tampak pada Gambar 11.43. Ada bagian yang sangat penting pada Form telah kita buat. Yaitu tombol navigasi dan tombol menambah record baru. Tombol navigasi berfungsi untuk melihat data yang telah kita buat secara urut berdasarkan id_pembeli. Sedangkan apabila tombol menambah form di-click, maka teks yang ada pada seluruh textbox akan dikosongkan dan kita dapat mulai mengisi data baru.
Gambar 11.43. Form Pembeli.
312
Aplikasi Basis Data berbasis Microsoft Access.
Dengan cara yang sama kita dapat membuat form-form yang lain. Sebagai contoh berikut ini tampilan akhir untuk Form Buku.
Gambar 11.44. Form Buku.
11.4.2. Memodifikasi Form Membuat form dengan menggunakan mode wizard memiliki keuntungan yaitu, kemudahan dan kecepatan dalam pembuatan. Namun disisi lain juga memiliki kerugian karena semua format telah ditentukan secara otomatis. Sebagai contoh baik pada Gambar 11.43 dan 11.44, kita melihat nama-nama fields pada form dibuat sama persis seperti pada nama fields pada tabelnya. Untungnya pada Microsoft Access menyediakan fasilitas untuk memodifikasi form. Berikut ini langkah-langkah untuk memodifikasi form. 1. Pada jendela Database, pilih Form. Kemudian click kanan pada nama form yang ingin kita modifikasi. Pilih Design View pada pop menu yang muncul, sehingga jendela form yang akan kita modifikasi muncul seperti pada Gambar 11.45.
Gambar 11.45. Jendela Form Pembeli pada mode Design View.
Rekayasa Perangkat Lunak
313
2. Pada Gambar 11.45, yang akan kita akan modifikasi adalah Form Pembeli. Sebelum kita modifikasi kita perlu tahu bagian-bagian dari suatu form. Gambar 11.46. menunjukkan bagian-bagian utama dari suatu form. Secara umum ada tiga bagian pada form, yaitu Form Header, Detail dan Form Footer. Form Header biasanya berisi judul form dan logo tertentu. Bagian Detail merupakan bagian utama karena disinilah tempat kita meletakkan field-field yang akan diisi datanya. Bagian Form Footer bersifat opsional (boleh dipakai boleh tidak). Biasanya Form Footer akan berisi keterangan-keterangan lain misalnya nama pembuat, nama pengisi data dan lain-lain.
Gambar 11.46. Bagian-bagian suatu form. 3. Microsoft Access menggunakan control-control yang sama seperti pada bahasa pemrograman berbasis GUI (lihat kembali Bab 13). Pada form kita akan menjumpai control Label, Text Box, Combo Box, Command Button dan lain-lain. 4. Modifikasi pertama yang kita lakukan adalah memperbaiki tampilan pada nama-nama fields. Caranya dengan click pada Label yang ingin kita perbaiki. Kemudian ganti atau ubah dengan cara mengetikkan nama yang baru. Setelah semua selesai tampilan Form Pembeli akan tampak seperti pada Gambar 11.47. Perhatikan perbedaan Label fields pada Gambar 11.45 dan Gambar 11.47.
314
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.47. Perubahan pada Label fields pada Form Pembeli. 5. Modifikasi berikutnya yang akan kita lakukan adalah menambahkan tomboltombol untuk memudahkan pengguna dalam mengisi data. Untuk melakukan ini kita harus mengatur form menjadi seperti pada Gambar 11.48. Kemudian kita tambahkan tombol dengan cara click pada icon Command Button pada Toolbar, lalu letakan pada Form. Jendela Command Buttom Wizards akan muncul seperti pada Gambar 11.49. Pada Categories pilih Record Operations dan pada Actions pilih Add New Record. Click Next untuk melanjutkan. Pada jendela berikutnya (Gambar 11.50) pilih Text dan ketikkan Tambah lalu klik Next. Pada jendela berikutnya (Gambar 11.51) ketikkan nama untuk command button ini, kita berikan nama misalnya cmdTambah lalu klik Finish.
Gambar 11.48. Modifikasi tampilan form.
Rekayasa Perangkat Lunak
315
Gambar 11.49. Mendefinisikan aksi untuk suatu Command Button.
Gambar 11.50. Mendefinisikan teks pada Command Button.
316
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.51. Mendefinisikan nama Command Button. 6. Kita tambahkan tombol yang berfungsi menghapus data. Cara pembuatannya persis seperti di atas hanya saja pada jendela Command Buttom Wizards, Categories dipilih Record Operations dan Actions yang dipilih adalah Delete Record (Gambar 11.52). Tentukan teks dan nama command button yang sesuai.
Rekayasa Perangkat Lunak
317
Gambar 11.52. Mendefinisikan nama Command Button. 7. Tampilan akhir dari form setelah dimodifikasi akan tampak seperti pada Gambar 11.53.
318
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.53. Hasil modifikasi Form Pembelian. Kita dapat menambahkan tombol-tombol lain atau control-control lain dengan cara yang kurang lebih sama. 11.5. REPORT
Report, seperti halnya form, digunakan untuk merepresentasikan hasil olahan data menjadi informasi yang siap di cetak di lembaran kertas. Kita dapat saja mencetak langsung dari tabel database namun hasil cetakannya tidak seperti laporan yang diinginkan. Cara yang terbaik adalah dengan membuat model laporan dengan fasilitas Report. Report dapat dibuat dengan dua cara yaitu manual dan wizards. Seperti halnya pada form, wizard memberikan kemudahan dalam pembuatan report, karena semuanya sudah diatur otomatis. Berikut ini kita akan membuat laporan penjualan harian. Laporan ini berisi tanggal transaksi, ISBN dan judul buku yang terjual, harga masing-masing buku dan total nilai penjualan per hari/tanggal. 1. Untuk membuat report ini kita tidak bias langsung dari tabel, karena report ini berisi gabungan dari beberapa tabel yang ada. Sehingga kita harus membuat query sebagai sumber data untuk laporan. Cara membuat query sama dengan yang kita lakukan sebelumnya. Perhatikan Gambar 11.54 berikut ini. Pada Gambar tersebut kita memilih tabel pesanan, item_pesanan dan buku. Kemudian kita memilih tanggal_pembelian, isbn, judul, dan harga pada bagian Field. Kemudian kita simpan dengan nama query_rpt_penjualan_harian (atau dengan nama yang lain).
Rekayasa Perangkat Lunak
319
Gambar 11.54. Jendela query untuk sumber report. 2. Pada jendela Database pilih object Report dan double click pada Create Report by using Wizard. Jendela Report Wizard akan terbuka dan pada bagian Tabels/Queries pilih query yang telah kita buat pada bagian 1 (lihat Gambar 11.55). Kemudian click tombol >> sehingga semua field yang ada pada bagian Available Fields berpindah ke Selected Fields (lihat Gambar 11.56)
Gambar 11.55. Pemilihan query sebagai sumber data laporan.
320
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.56. Pemilihan fields yang terlibat. 3. Click Next untuk membuka jendela berikutnya (Gambar 11.57). Pada jendela ini kita menentukan dasar tampilan laporan, apakah berdasarkan buku atau pesanan. Karena kita akan membuat laporan harian maka tampilan berdasarkan pesanan yang kita pilih (ingat, field tanggal_pembelian ada pada tabel pesanan). 4. Click Next untuk melanjutkan dengan jendela berikutnya (Gambar 11.58). Jendela ini digunakan untuk mengelompokkan (grouping) data pada field yang sama. Pada contoh kali ini kita tidak melakukan grouping sehingga kita tidak perlu mengatur apa-apa pada jendela ini. Kita dapat langsung click Next untuk melanjutkan pada jendela berikutnya.
Rekayasa Perangkat Lunak
321
Gambar 11.57. Jendela untuk menentukan dasar tampilan report.
Gambar 11.58. Jendela untuk menentukan grouping data. 5. Pada Gambar 11.59, kita dapat memilih melakukan pengurutan data atau tidak. Pada bagian ini kita akan mengurutkan berdasarkan nomor ISBN dan kemudian berdasarkan judul buku. Pada Combo Box no 1 kita pilih isbn dan pada Combo Box no 2 kita pilih judul. Selain itu pada bagian ini kita juga mengatur apakah kita membuat ringkasan laporan atau tidak. Click pada Summary Options untuk membuka jendela pengaturan ringkasan (Gambar
322
Aplikasi Basis Data berbasis Microsoft Access.
11.60). Pada field harga kita check pada kotak di bawah Sum. Maksud dari bagian ini adalah kita akan menampilkan jumlah pembelian atau transaksi tiap harinya dan total transaksi. Jika sudah selesai kita dapat menutup jendela Summary Option dengan meng-click tombol OK. Kemudian kita click Next untuk melanjutkan dengan jendela berikutnya.
Gambar 11.59. Jendela untuk menentukan urutan data.
Gambar 11.60. Jendela untuk mengatur tampilan ringkasan.
Rekayasa Perangkat Lunak
323
6. Gambar 11.61 menunjukkan jendela untuk mengatur lay-out dari laporan. Kita dapat mencoba-coba lay-out mana yang sesuai. Pada contoh ini kita akan mencoba dengan lay-out Block dan Orientation Landscape. Click Next jika sudah selesai dan jendela untuk mengatur style dari laporan (Gambar 11.62). Pada bagian ini kita dapat memilih sesuai keinginan kita. Setelah selesai click Next untuk membuka jendela terakhir dari Report Wizard. Pada bagian Text Box yang tersedia kita tentukan judul dari laporan yang telah kita buat. Click tombol Finish untuk mengakhiri proses pembuatan laporan. Hasil pembuatan laporan akan ditampilkan seperti pada Gambar 11.61.
Gambar 11.61. Jendela untuk mengatur lay-out dan orientation.
Gambar 11.62. Jendela untuk mengatur style laporan.
324
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.63. Hasil pembuatan laporan menggunakan Wizard. 7. Pada Gambar 11.63, kita melihat laporan yang tidak terlalu bagus bila dicetak. Judul kolom masih menggunakan nama field pada tabel. Selain itu kata-kata Summary for tanggal pembelian dan seterusnya, agak mengganggu tampilan laporan. Untuk memperbaiki tampilan laporan, click kanan pada nama report di jendela object Report kemudian pilih Design View. Jendela seperti pada Gambar 11.64 akan terbuka.
Gambar 11.64. Laporan dalam mode Design View.
Rekayasa Perangkat Lunak
325
8. Perbaikan pertama yang akan kita lakukan adalah pada judul kolom. Kita akan ganti menjadi seperti pada Gambar 11.65. Untuk mengganti judul kolom, double-click pada judul kolom yang ingin diganti kemudian ketikan nama yang baru. Kita juga dapat mengatur lebar kolom dengan cara click pada bagian paling atas kolom untuk memilih seluruh kolom kemudian letakkan kursor pada samping kanan kolom dan geser untuk memperlebar kolom (sama persis dengan mengatur lebar tabel pada Microsoft Word). 9. Perbaikan yang kedua adalah kita menghilangkan kata-kata Summary for tanggal pembelian dan seterusnya yang tampak pada Gambar 11.64. Caranya dengan click pada bagian tersebut kemudian tekan tombol Del pada keyboard. Selain itu kita hilangkan kata Sum dan kita ganti kata Grand Total dengan Total Penjualan. Penambahan garis juga dapat dilakukan dengan memilih control line pada Toolbar Report, kemudian diletakkan pada posisi yang diinginkan. Tampilan akhir pada Design View akan tampak seperti pada Gambar 11.65. Sedangkan hasil Print Preview dari laporan akan tampak seperti pada Gambar 11.66.
Gambar 11.65. Design laporan setelah dilakukan perbaikan.
326
Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.66. Print Preview laporan setelah perbaikan. 11.6.
RINGKASAN
•
Ada enam obyek penting Microsoft Access, yaitu Table, Queries, Forms, Reports, Macros dan Modules.
•
Tabel dalam Microsoft Access terdiri dari record (baris) dan field (kolom). Tabel dapat dibuat dengan mendefinisikan field-field yang dibutuhkan dilengkapi dengan tipe data, domain dan penentuan primary key nya.
•
Query atau permintaan data dapat menampilkan data dari satu tabel atau beberapa tabel yang saling berhubungan. Query dalam Microsoft Acces dapat dilakukan dengan menggunakan fasilitas GUI.
•
Form adalah salah satu obyek basis data dalam Microsoft Access yang digunakan sebagai antar muka bagi pengguna untuk memasukkan data atau menampilkan data. Form dapat dibuat melalui metode Wizard maupun manual dengan menggunakan Design View.
•
Report
digunakan untuk merepresentasikan hasil olahan data menjadi informasi yang siap di cetak di lembaran kertas. Report juga dapat dibuat dengan cara manual maupun dengan fasilitas Wizard.
Rekayasa Perangkat Lunak
327
11.7.
SOAL-SOAL LATIHAN
1. Perhatikan tabel-tabel yang ada pada contoh di atas. Tambahkan satu buah tabel dengan nama penerbit. Atribut-atributnya adalah ID Penerbit, nama penerbit, alamat, kota dan contact person. Tentukan sendiri tipe data dan lebar data untuk tabel tersebut. Isilah tabel buku tersebut dengan penerbitpenerbit yang anda ketahui (coba lihat buku-buku diperpustakaan kalian dan cermati informasi tentang penerbit). 2. Pada kondisi nyata, penerbit akan berhubungan dengan buku. Sebuah penerbit dapat menerbitkan lebih dari satu buku. Tetapi satu buku hanya bisa diterbitkan oleh satu penerbit. Buatlah hubungan antar tabel baru antara tabel buku dengan penerbit. Jika perlu lakukan perubahan pada tabel buku. 3. Buatlah query-query berikut ini dan cermati hasil yang dperoleh. a. Tampilkan semua data penerbit. b. Tampilkan data penerbit yang berasal dari kota Bandung. c.
Tampilkan data penerbit yang mempunyai buku berharga di atas Rp. 150.000,-.
d. Tampilkan nama penerbit yang bukunya dibeli oleh Cristiano Ronaldo. e. Tampilkan buku yang dibeli oleh Cristiano Ronaldo dan Wayne Rooney. 4. Buatlah form untuk memasukkan data-data penerbit. 5. Buatlah report diterbitkannya.
328
untuk menampilkan
daftar
penerbit
Aplikasi Basis Data berbasis Microsoft Access.
dan
buku
yang
Gambar 12.1 di samping ini adalah gambar sekumpulan komputer server yang biasanya ada pada perusahaan penyedia jasa internet atau pada bagian teknologi informasi perusahaanperusahaan besar. Salah satu fungsi peralatan ini adalah sebagai pusat data yang dibutuhkan penggunanya. Peran sebagai pusat data ini membutuhkan DBMS dan aplikasi basis data yang kuat. Perangkat DBMS seperti Microsoft SQL Server, Oracle, MySQL, PostgreSQL biasanya menjadi pilihan. Fungsi-fungsi lanjut yang disediakan oleh DBMS tersebut sangat membantu kecepatan kerja, keamanan, dan keakuratan data yang disampaikan. Bab ini membahas tiga standar kompetensi yaitu melakukan pemrograman data deskripsi Gambar 12.1. Perangkat (SQL) tingkat dasar, mengoperasikan bahasa komputer server. pemrograman data deskripsi (SQL) tingkat lanjut dan membuat program basis data dengan Microsoft SQL Server. Kedua standar kompetensi ini disatukan karena kedekatan materi bahasan. Susunan sub bab tidak langsung mengacu pada kompetensi dasar, tapi lebih pada kecocokan materi. Ringkasan akan disampaikan di akhir bab kemudian dilanjutkan dengan soal-soal latihan. Sebelum kalian mempelajari bab ini buka kembali bab-bab tentang pemecahan masalah, sistem operasi, algoritma lanjutan, dasar-dasar basis data, dan aplikasi basis data berbasis Microsoft Access pada bab-bab sebelumnya.
Rekayasa Perangkat Lunak
329
TUJUAN Setelah mempelajari bab ini diharapkan pembaca akan mampu : o Mempersiapkan dan mengoperasikan perangkat lunak SQL o Mengenali menu aplikasi SQL o Membuat dan mengisi tabel o Mengoperasikan tabel dan view o Menggunakan T-SQL o Menggunakan fitur-fitur lanjutan Microsoft SQL Server seperti procedures, fungsi, trigger dan XML support o Menerapkan administrasi Microsoft SQL Server 12.1.
SEKILAS TENTANG SQL
Dalam DBMS biasanya tersedia paket bahasa yang digunakan untuk mengorganisasi basis data yang ada, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). 12.1.1. Data Definition Language (DDL)
Data Definition Language (DDL) adalah satu paket bahasa DBMS yang berguna untuk melakukan spesifikasi terhadap skema basis data. Hasil kompilasi dari DDL adalah satu set tabel yang disimpan dalam file khusus yang disebut Data Directory/Dictionary. Secara umum perintah perintah dalam DDL berhubungan dengan operasi-operasi dasar seperti membuat basis data baru, menghapus basis data, membuat tabel baru, menghapus tabel, membuat indeks, mengubah struktur tabel. Contoh perintah DDL misalnya, Create Table, Create Index, Alter, dan Drop Database. 12.1.2. Data Manipulation Language
Data Manipulation Language (DML) adalah satu paket DBMS yang memperbolehkan pemakai untuk mengakses atau memanipulasi data sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang tepat. Dengan DML dapat dilakukan kegiatan :
Mengambil informasi yang tersimpan dalam basis data.
Menyisipkan informasi baru dalam basis data.
Menghapus informasi dari tabel.
Terdapat dua tipe DML yaitu prosedural dan non prosedural. Prosedural DML membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan dan bagaimana cara mendapatkannya, sedang non prosedural DML membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan tanpa tahu bagaimana cara mendapatkannya.
330
Basis Data Berbasis SQL
SQL merupakan kependekan dari Structured Query Language (Bahasa Query Terstruktur). SQL lebih dekat dengan DML dari pada DDL. Namun tidak berarti SQL tidak menyediakan perintah DDL. SQL lebih menekankan pada aspek pencarian dari dalam tabel. Aspek pencarian ini sedemikian penting karena di sinilah sebenarnya inti dari segala upaya kita melakukan pengelolaan data. Data dalam basis data diorganisasi sedemikian rupa dengan tujuan untuk memudahkan pencarian di kemudian hari. Sebagai sebuah bahasa, SQL telah distandarisasi dan mengalami beberapa perubahan atau penyempurnaan. SQL muncul pertama kali pada tahun 1970 dengan nama Sequel (nama yang masih sering digunakan hingga saat ini). Standarisasi yang pertama dibuat pada tahun 1986 oleh ANSI (American National Standards Institute) dan ISO (International Standard Organization), yang disebut SQL-86. Pada tahun 1989 SQL-86 diperbaharui menjadi SQL-89. Standar terakhir yang dibuat adalah SQL92. Pernyataan-pernyataan SQL digunakan untuk melakukan beberapa tugas seperti : update data pada basis data, atau menampilkan data dari basis data. Beberapa software RDBMS yang dapat menggunakan SQL, seperti : Oracle, Sybase, Microsoft SQL Server, MySQL, Microsoft Access, Ingres, dsb. Setiap software basis data mempunyai mungkin bahasa perintah / sintaks yang berbeda, namun pada prinsipnya mempunyai arti dan fungsi yang sama. Perintah utama dalam SQL adalah select. sebagai berikut:
Struktur utama perintah adalah
Select Where
. Tag ini memiliki beberapa bagian penting, seperti dapat dilihat pada Tabel berikut ini. Tabel 13.2. Bagian-bagian pada tag Table Tag
MEMPERSIAPKAN PERANGKAT LUNAK BERBASIS SQL
Seperti disebutkan di bagian awal bab, perangkat lunak yang akan kita gunakan adalan Microsoft SQL Server. Pada kesempatan ini versi yang dipakai adalah versi 2005 Developer Edition. Penjelasan sekilas tentang Microsoft SQL Server dapat dilihat pada bab 10. 12.2.1. Kebutuhan Operasi Microsoft SQL Server adalah perangkat lunak yang berjalan pada platform Microsoft Windows, sehingga kebutuhan utama dari perangkat lunak ini adalah tersedianya komputer yang telah terinstal sistem operasi Windows, terutama versi Server. Hal ini karena Windows versi Server memberikan integrasi yang lebih baik. Selain itu dari sisi keamanan dan alokasi kerja model client-server, versi server memberikan unjuk kerja yang lebih baik.
Rekayasa Perangkat Lunak
331
Microsoft SQL Server adalah perangkat lunak yang harus diaktifkan sebagai
service pada Windows. Jika belum dijalankan maka kita tidak akan dapat menggunakannya. Default-nya, ketika Microsoft SQL Server diinstal maka secara otomatis, service ini akan dibuat dan dijalankan setiap kali Windows dihidupkan. Namun untuk memastikan kalian dapat memeriksanya dengan membuka Control Panel, kemudian pilih Administrative Tool. Pada jendela Administrative Tool (Gambar 12.2) klik ganda pada ikon Service sehingga terbuka jendela seperti pada Gambar 12.3.
Gambar 12.2. Jendela Administrative Tool.
Gambar 12.3. Jendela Services.
332
Basis Data Berbasis SQL
Pada jendela Service carilah nama service SQL Server kemudian periksalah di kolom status, apakah sudah started atau belum. Jika belum jalankan (start) service ini. 12.2.2. Menjalankan Perangkat Lunak Basis Data Berbasis SQL Setelah terinstal maka kita dapat menggunakan Microsoft SQL Server dengan memanggil GUI client dari Microsoft SQL Server yang disebut sebagai SQL Server Management Studio. Ketika pertama kali dipanggil maka tampilan akan tampak seperti pada Gambar 12.4.
Gambar 12.4. Tampilan autentikasi SQL Server Management Studio Setiap kali kita membuka SQL Server Management Studio, kita akan diperiksa apakah kita berhak menggunakan SQL Server atau tidak. Jika SQL Server dijalankan pada mesin lokal dan menggunakan Windows Authentication maka kita dapat langsung menekan tombol Connect untuk masuk ke lingkungan SQL Server. Tetapi
Rekayasa Perangkat Lunak
333
bila SQL Server dijalankan dari komputer lain (server) kita akan diminta memasukkan user name dan password yang telah didaftarkan. Ada informasi penting dari Gambar 12.4 di atas yang kalian perlu ketahui. Pada gambar tersebut terlihat bahwa kita akan mengakses tipe server Database Engine, yaitu server yang berhubungan dengan masalah aplikasi basis data. SQL Server menyediakan beberapa tipe server yang dapat diakses. Namun tidak dijelaskan pada buku ini. Selain itu nama server yang akan diakses adalah ARM-BLACKMATE. Hal ini karena SQL Server diinstal pada komputer dengan nama ARM-BLACKMATE sehingga kita perlu nama server sama dengan nama dimana SQL Server berjalan. 12.3.
MENU / FITUR UTAMA
Setelah kita berhasil masuk ke dalam lingkungan SQL Server maka kita akan disuguhi tampilan awal dari SQL Server Management Studio seperti pada Gambar 12.5.
Gambar 12.5. Tampilan awal SQL Server Management Studio. Ada dua bagian penting yang ada pada bagian awal ini yaitu Object Explorer dan Summary Panel. Object Explorer adalah tempat kita melihat obyek-obyek apa saja yang ada di dalam SQL Server. Pada gambar di atas kalian bisa melihat obyekobyek yang tersedia. Untuk sementara yang paling penting adalah Databases. Sedangkan Summary panel merupakan tempat keterangan atau ringkasan yang ada pada Object Explorer. Coba klik pada salah satu obyek di Object Explorer, maka isi Summary panel juga akan berubah sesuai dengan obyek yang kita pilih.
334
Basis Data Berbasis SQL
Kita akan fokus pada obyek Databases. Coba klik tanda + (atau tanda node) di depan obyek Databases, sehingga akan tampak tampilan seperti pada Gambar 12.6 di samping ini. Pada Gambar tersebut tampak ada empat basis data yang sudah ada pada SQL Server, yaitu AdventureWorks, AdventureWorksDW, latihan01SQL dan Northwind2007SQL. Keempat basis data ini termasuk user object karena merupakan buatan pengguna. SQL Server juga membuat sendiri basis data ketika proses instalasi berlangsung. Basis data ini biasa disebut Biasanya ada sebagai system object. beberapa system object yang tersedia yaitu Master, Model, MSDB, Resource, TempDB, Gambar 12.6. Obyek Databases. dan Distribution. Basis data ini tidak boleh dihapus karena akan membuat sistem menjadi tidak bekerja normal. Untuk memeriksanya, coba klik node di depan System Databases. Sementara ini kita tidak akan berhubungan dengan System Databases. Kita akan melihat pada user object. Klik pada salah satu basis data maka tampilan pada Summary Panel akan berubah. Perhatikan Gambar 12.7. Pada gambar tersebut tampak bahwa basis data AdventureWorks berisi berbagai komponen antara lain Database Diagrams, Tables, Views dan yang lainnya. Setiap basis data yang kita buat di SQL server akan punya komponen-komponen ini secara default. Meskipun kita tidak membuat Database Diagrams misalnya, komponen Database Diagrams tetap disediakan.
Gambar 12.7. Isi dari basis data pada SQL Server.
Rekayasa Perangkat Lunak
335
12.4.
PEMBUATAN DAN PENGISIAN TABEL
12.4.1. Pembuatan Basis Data Sebelum kita membuat tabel, kita harus membuat lebih dahulu basis datanya. Untuk membuat basis data baru, klik kanan pada Databases dan pilih New Database. Jendela untuk membuat basis data baru akan terbuka (Gambar 12.8). Pada textbox di depan Database name, ketikkan nama basis data yang akan dibuat. Pada contoh ini namanya adalah Lat-01. Kemudian klik OK. Perhatikan pada Object Explorer, basis data baru sudah terbentuk dan memiliki komponen-komponen yang sama dengan basis data lainnya.
Gambar 12.8. Mendefinisikan basis data baru. 12.4.2. Pembuatan Tabel Setelah basis data terbentuk kita baru bisa membuat tabel. Klik kanan pada komponen Tables di basis data Lat-01 dan pilih New Table… Bagian Summary panel
336
Basis Data Berbasis SQL
akan berubah menjadi seperti pada Gambar 12.9. Kalian bisa mulai memasukkan atribut atau kolom dari tabel yang akan dibuat. Pembuatan tabel ini sama persis dengan apa yang telah kalian lakukan dengan Microsoft Access. Penentuan tipe data, lebar data dan primary key juga tidak jauh berbeda. Yang agak berbeda adalah SQL Server menyediakan tipe data yang lebih banyak daripada Microsoft Access. Untuk menentukan primary key, pilih atribut kemudian tekan tanda kunci pada toolbar.
Gambar 12.9. Pembuatan tabel. Pada gambar di atas, kita membuat tabel dengan 5 kolom yaitu NoInduk, Nama, Alamat, Kota, NoTelepon. Masing-masing bertipe nchar dengan lebar data yang bervariasi. Untuk menentukan lebar data, lihatlah pada bagian property dari kolom. Setelah selesai simpan tabel dengan nama tertentu. Pada contoh di atas tabel disimpan dengan nama siswa. SQL server akan memberikan awalan nama (prefix) dbo secara default. Tetapi ini bisa kita rubah. Jadi nama tabel yang kita buat di atas akan menjadi dbo.siswa. Hapuslah tabel dbo.siswa dengan cara klik kanan lalu pilih Delete. Sekarang buatlah tabel-tabel berikut ini dengan cara seperti di atas.
Rekayasa Perangkat Lunak
337
Tabel 12.1. Tabel, kolom, tipe data yang akan dibuat. Nama Tabel Siswa
Guru
Program Bidang Guru_Program
Guru_Bidang
Kolom - NoInduk - NamaSiswa - Alamat - Kota - Telepon - IdProgram - NIP - NamaGuru - Alamat - Kota - Telepon - IdProgram - NamaProgram - Deskripsi - IdBidang - NamaBidang - Deskrips - NIP - IdProgram
-
NIP IdBidang
Tipe dan lebar Data Nchar (10) Nchar (20) Nchar (30) Nchar (20) Nchar (15) Smallint Nchar (15) Nchar (20) Nchar (30) Nchar (20) Nchar (15) Smallint Nchar (20) Nchar (100) Smallint Nchar (20)
Keterangan
Nchar (15) Smallint
Kedua atribut ini bersama-sama sebagai primary key Kedua atribut ini bersama-sama sebagai primary key
Nchar (15) Smallint
NIP sebagai primary key
IdProgam sebagai primary key IdBidang sebagai primary key
12.4.3. Pengisian Data pada Tabel Setelah semua tabel terbentuk, kita dapat mengisi tabel dengan data-data yang kita inginkan. Dengan menggunakan GUI SQL Server Management Studio kita dapat mengisi data seperti halnya pada Access. Klik kanan pada nama tabel kemudian pilih Open Table. Jendela baru pada Summary panel akan terbuka dan siap untuk diisi datanya. Gambar 12.10 menunjukkan bagaimana kita mengisi data pada sebuah tabel. Setiap kali kalian mengisi untuk satu baris harus diikuti dengan menekan Enter. Jika tidak maka data tidak tersimpan. Cobalah isi tabel-tabel yang lain.
338
Basis Data Berbasis SQL
Gambar 12.10. Pengisian tabel. 12.5.
OPERASI PADA TABEL DAN VIEW
12.5.1. Relasi Antar Tabel Tabel-tabel yang telah kalian buat dan isi di atas masih merupakan tabel yang berdiri sendiri tidak ada hubungan antar tabel. Padahal kalau dilihat dari tabel-tabel yang ada kita bisa membuat model hubungannya (lihat bab 10 dan 11 tentang relasi antar tabel). Tabel siswa berhubungan dengan tabel program, tabel guru berhubungan dengan tabel bidang dan tabel program. Untuk membuat hubungan antar tabel ini kita bisa menggunakan komponen Database Diagrams. Klik kanan pada Database Diagrams kemudian pilih New Database Diagram. Jendela baru akan terbuka seperti tampak pada Gambar 12.11.
Gambar 12.11. Jendela untuk menambah tabel yang berhubungan.
Rekayasa Perangkat Lunak
339
Pada jendela Add Table klik Add untuk memilih tabel yang akan kita relasikan. Pada contoh ini kita akan pilih semua tabel karena semua saling terkait. Klik Add beberapa kali sampai tidak ada nama tabel di jendela Add Table. Setelah semua tabel terpilih buat relasi seperti tampak pada Gambar 12.12. Cara menghubungkan tabel satu dengan tabel yang lain sama persis dengan yang kita lakukan di Microsoft Access. Simpan diagram ini.
Gambar 12.12. Relasi antar tabel. 12.5.2. Membuat View
View sama dengan Query pada Microsoft Access. SQL Server juga menyediakan fitur GUI untuk membuat View seperti halnya GUI Query pada Microsoft Access. Untuk membuat View, klik kanan pada View kemudian pilih New View sehingga jendela seperti Gambar 12.13 terbuka. Pilih Add Table untuk menambahkan satu atau lebih tabel yang akan kita buat View-nya. Misalnya kita pilih tabel siswa. Klik Close untuk menutup jendela tersebut. Sehingga akan muncul tampilan seperti tampak pada Gambar 12.14. Ada empat bagian penting pada Gambar 12.14 yaitu jendela Diagram, jendela Criteria, jendela SQL dan jendela Result. Jendela Diagram digunakan sebagai tempat tabel-tabel sumber yang akan kita buat View-nya. Jendela Criteria adalah tempat kita menentukan kriteria-kriteria pada View. Jendela SQL adalah tempat menuliskan perintah SQL dari View yang kita buat. Jendela Result adalah tempat untuk menampilkan hasil dari View.
340
Basis Data Berbasis SQL
Gambar 12.13. Jendela untuk menentukan tabel yang akan dibuat View.
Gambar 12.14. Jendela untuk membuat View.
Rekayasa Perangkat Lunak
341
Pada Gambar 12.14, kita telah memilih tabel Siswa sebagai sumber View dan muncul pada jendela Diagrams. Kita akan membuat View sederhana berdasarkan tabel ini. Klik *(All Columns) di bawah nama tabel Siswa. Isi jendela SQL otomatis akan berubah. Isi jendela SQL akan berubah sesuai dengan apa yang kalian lakukan pada jendela Diagram dan jendela Criteria. Kemudian klik tanda seru (!) pada toolbar untuk mengeksekusi View tersebut atau klik kanan di salah satu bagian pada Gambar 12.14 (boleh di jendela Diagram/Criteria/SQL/Result) kemudian pilih Execute SQL. Kalian akan memperoleh tampilan seperti pada Gambar 12.15. Simpan View ini dengan cara klik pada ikon Disket pada Toolbar kemudian masukkan nama View.
Gambar 12.15. Hasil eksekusi View. Kalau kalian perhatikan, langkah-langkah membuat View di atas sama persis dengan apa yang kalian lakukan ketika membuat Query pada Microsoft Access. Kita akan buat beberapa contoh yang lebih kompleks. Perhatikan contoh-contoh berikut.
342
Basis Data Berbasis SQL
Contoh 12.1. View untuk menampilkan nama Guru yang alamat rumahnya di luar kota Malang. Pada contoh ini kita menggunakan tabel Guru sebagai sumber View. Buat View baru kemudian tampilkan jendela seperti pada Gambar 12.13. Pilih tabel Guru kemudian Close. Klik Nama, Alamat dan Kota pada kotak tabel Guru. Kemudian pada jendela Criteria, pilih baris Kota dan pada kolom Filter ketikkan pernyataan <> ‘Malang’. Jalankan View ini, kalian akan mendapatkan hasil seperti pada Gambar 12.16.
Gambar 12.16. Hasil eksekusi View contoh 12.1. Kolom Filter pada jendela Criteria digunakan untuk memilih baris yang sesuai dengan keinginan kita. Pada contoh di atas, digunakan untuk memilih baris yang isi kolom Kotanya bukan ‘Malang’. Kita menggunakan tanda <> untuk menyatakan ketidaksamaan. Contoh 12.2. View untuk menampilkan nama, nomor induk, dan program keahlian Siswa secara urut abjad nama. Contoh ini membutuhkan minimal 2 tabel, yaitu tabel Siswa dan tabel Program. Perhatikan relasi antar tabel pada Gambar 12.12. Tabel Siswa berhubungan langsung dengan tabel Program. Dengan cara yang sama seperti Contoh 12.13, pilih tabel Siswa dan tabel Program. Pada kotak Siswa di jendela Diagram pilih Nama dan NoInduk sedangkan pada kotak Program pilih NamaProgram. Pada jendela Criteria, pilih baris Nama dan klik pada kolom Sort Type kemudian pilih Ascending. Kemudian jalankan View tersebut. Kalian akan mendapat hasil seperti pada Gambar 12.17.
Rekayasa Perangkat Lunak
343
Perhatikan pada jendela Result, kolom Nama ditampilkan berurutan sesuai dengan abjad.
Gambar 12.17. Hasil eksekusi View contoh 12.2. Contoh 12.3. View untuk menampilkan nama Guru dan bidang keahliannya secara urut abjad nama. Berdasarkan relasi tabel pada Gambar 12.12, maka View pada contoh ini membutuhkan tiga buah tabel yaitu tabel Guru, Guru_Bidang dan Bidang. Kolom Nama ada di tabel Guru sedangkan kolom NamaBidang ada pada tabel Bidang. Pilih tiga tabel tersebut. Pada kotak Guru di jendela Diagram pilih Nama kemudian pada kotak Bidang pilih NamaBidang. Pada jendela Criteria, pilih baris Nama dan klik pada kolom Sort Type kemudian pilih Ascending. Jalankan View ini. Perhatikan hasil yang diperoleh.
344
Basis Data Berbasis SQL
Gambar 12.18. Hasil eksekusi View contoh 12.3. 12.6.
MENGGUNAKAN T-SQL
Transact-SQL (disingkat T-SQL) adalah varian dari bahasa basis data SQL yang dikeluarkan oleh perusahaan Microsoft dan Sybase. Microsoft SQL Server hanya mengenali bahasa SQL tipe T-SQL ini. Oleh karena itu jika kalian ingin menggunakan Microsoft SQL Server, maka kalian harus memahami bahasa ini. Secara umum T-SQL tidak berbeda jauh dengan SQL standard. Hal ini karena T-SQL sebenarnya adalah bahasa SQL standar yang diberi tambahan perintahperintah khusus untuk membantu kerja dalam SQL Server. Perintah SELECT, FROM dan WHERE yang telah kita singgung di awal bab, tetap menjadi perintah utama di TSQL. Untuk membuat perintah-perintah T-SQL ini SQL Server mempunyai jendela Query yang dapat kita buka dengan cara klik pada tombol New Query di bawah Menu Bar (lihat Gambar 12.19). Sebelumnya pilih terlebih dahulu basis data yang ingin kita gunakan dengan cara klik pada nama basis data di Object Explorer. Setelah jendela Query terbuka kalian dapat mulai mengetikkan perintah-perintah SQL.
Rekayasa Perangkat Lunak
345
Gambar 12.19. Membuka jendela query. 12.6.1. Definisi Tabel dengan T-SQL Hampir semua aktivitas di dalam SQL Server dapat dilakukan dengan menggunakan perintah-perintah T-SQL. Termasuk membuat tabel. Pada sub bab sebelumya kalian telah membuat tabel-tabel dengan menggunakan fasilitas GUI. Kalian juga bisa membuat tabel-tabel tersebut dengan perintah-perintah SQL. Perintah-perintah yang berhubungan dengan definisi tabel termasuk dalam kategori DDL. Perintah untuk pendefinisian atau pembuatan tabel baru adalah CREATE TABLE. Sedangkan untuk menghapus kita menggunakan perintah DROP TABLE Buat basis data baru dengan nama Lat-01_SQL. Kemudian pilih basis data tersebut. Buka jendela Query seperti pada Gambar 12.18. Kiata akan membuat tabel-tabel yang sama seperti pada Lat-01 tetapi dengan perintah SQL. Tabel pertama yang kita buat adalah tabel Siswa (lihat kembali struktur tabel ini pada Tabel 12.1 di atas). Ketikkan perintah berikut ini, kemudian jalankan dengan klik tanda seru (!). CREATE TABLE [dbo].[Bidang]( [IdBidang] [smallint] NOT NULL, [NamaBidang] [nchar](20)NULL, [Deskripsi] [nchar](100)NULL, CONSTRAINT [PK_Bidang] PRIMARY KEY CLUSTERED ( [IdBidang] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]
346
Basis Data Berbasis SQL
Perintah CREATE TABLE diikuti dengan nama tabel yang akan kita buat ([dbo].[Bidang]) kemudian diikuti dengan daftar kolom yang ada pada tabel tersebut. Pada daftar kolom ini, tipe data, lebar data dan kondisi lainnya (misalnya NOT NULL atau NULL) harus dicantumkan. Setelah itu baru bagian CONSTRAINT dari tabel tersebut dituliskan. Bagian CONSTRAINT ini biasanya berisi pendefinisian Primary Key dari tabel tersebut. Perhatikan cara penulisan perintah-perintah di atas. Setelah kalian jalankan, periksalah pada bagian node Tables apakah tabel kalian sudah terbentuk atau belum. Klik kanan pada Tables basis data kalian di Object Explorer kemudian pilih Refresh. Tabel baru yang kalian buat akan muncul di bawah Object Tables. Buatlah tabel-tabel lainnya dengan cara yang sama. Berikut ini perintah-perintah pembuatan masing-masing tabel. Tabel Program CREATE TABLE [dbo].[Program]( [IdProgram] [smallint] NOT NULL, [NamaProgram] [nchar](20) NULL, [Deskripsi] [nchar](100) NULL, CONSTRAINT [PK_Program] PRIMARY KEY CLUSTERED ( [IdProgram] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Tabel Guru CREATE TABLE [dbo].[Guru]( [NIP] [nchar](15) NOT NULL, [Nama] [nchar](20) NULL, [Alamat] [nchar](30) NULL, [Kota] [nchar](20) NULL, [Telepon] [nchar](15) NULL, CONSTRAINT [PK_Guru] PRIMARY KEY CLUSTERED ( [NIP] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Tabel Siswa CREATE TABLE [dbo].[Siswa]( [NoInduk] [nchar](10) NOT NULL, [Nama] [nchar](20) NULL, [Alamat] [nchar](30) NULL, [Kota] [nchar](20) NULL, [Telepon] [nchar](15) NULL, [IdProgram] [smallint] NULL, CONSTRAINT [PK_Siswa] PRIMARY KEY CLUSTERED ( [NoInduk] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
Rekayasa Perangkat Lunak
347
) ON [PRIMARY] Tabel Guru_Program CREATE TABLE [dbo].[Guru_Program]( [NIP] [nchar](15) NOT NULL, [IdProgram] [smallint] NOT NULL, CONSTRAINT [PK_Guru_Program] PRIMARY KEY CLUSTERED ( [NIP] ASC, [IdProgram] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Tabel Guru_Bidang CREATE TABLE [dbo].[Guru_Bidang]( [IdBidang] [smallint] NOT NULL, [NIP] [nchar](15) NOT NULL, CONSTRAINT [PK_Guru_Bidang] PRIMARY KEY CLUSTERED ( [IdBidang] ASC, [NIP] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Pada perintah-perintah pembuatan tabel di atas, kita belum membuat relasi antar tabel. Relasi antar tabel pada SQL biasanya dinyatakan dalam hubungan FOREIGN KEY (lihat kembali pengertian FOREIGN KEY pada bab 10 dan 11). Kita perlu memodifikasi tabel dengan menambahkan CONSTRAINT agar tabel dapat mengerti relasi antar tabel. Buka kembali jendela Query kemudian ketikkan perintahperintah berikut ini. ALTER TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT [FK_Siswa_Program] FOREIGN KEY([IdProgram]) REFERENCES [dbo].[Program] ([IdProgram]) ALTER TABLE [dbo].[Guru_Program] WITH CHECK ADD [FK_Guru_Program_Guru] FOREIGN KEY([NIP]) REFERENCES [dbo].[Guru] ([NIP])
CONSTRAINT
ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD [FK_Guru_Bidang_Bidang] FOREIGN KEY([IdBidang]) REFERENCES [dbo].[Bidang] ([IdBidang])
CONSTRAINT
ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD [FK_Guru_Bidang_Guru] FOREIGN KEY([NIP]) REFERENCES [dbo].[Guru] ([NIP])
CONSTRAINT
Perintah untuk memodifikasi atau merubah struktur tabel adalah ALTER TABEL kemudia diikuti dengan nama tabel yang ingin dirubah. Perhatikan pada baris ALTER TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT
348
Basis Data Berbasis SQL
[FK_Siswa_Program] FOREIGN KEY([IdProgram]). Tabel yang ingin dimodifikasi adalah dbo.Siswa dan tabel ini berhubungan dengan tabel Program sehingga dituliskan FK_Siswa_Program. Kolom IdProgram pada tabel Siswa merupakan FOREIGN KEY sehingga dituliskan sebagai FOREIGN KEY([IdProgram]). Kolom IdProgram ini berasal dari tabel program sehingga pada bagian akhir perintah harus dituliskan referensi tabelnya (ditulis dengan REFERENCES [dbo].[Program] ([IdProgram])). Dengan cara yang sama relasi-relasi antar tabel di atas dibuat. Perintah DROP TABEL sangat mudah dilakukan yaitu tinggal menambahkan nama tabel didepan perintah tersebut. Misalnya DROP TABLE [dbo].[Bidang]. 12.6.2. Pengisian, Perubahan dan Penghapusan Isi Tabel dengan SQL Setelah semua tabel selesai dibuat, maka kita dapat mengisi data pada masingmasing tabel dengan menggunakan perintah INSERT. Perintah ini termasuk dalam kelompok DML. Kita akan mencoba menggunakan perintah ini pada tabel Bidang. Kita periksa dulu isi tabel Bidang dengan cara klik kanan pada nama tabel kemudian pilih Open Table. Isi tabel akan muncul pada jendela Summary (Gambar 12.20). Tutup kembali jendela Open Table tersebut.
Gambar 12.20. Isi tabel Bidang. Buka jendela Query kemudian ketikkan perintah berikut. INSERT INTO [Lat-01].[dbo].[Bidang] ([IdBidang] ,[NamaBidang] ,[Deskripsi]) VALUES (8, 'Jaringan Wireless', NULL) Perintah INSERT diikuti dengan nama basis data dan nama tabel ([Lat01].[dbo].[Bidang])kemudian diikuti dengan nama kolom yang ada pada tabel
Rekayasa Perangkat Lunak
349
tersebut. Kata kunci VALUES digunakan untuk memberi petunjuk bahwa bagian setelah kata kunci ini adalah data yang akan dimasukkan. Perhatikan, karena ada 3 kolom di tabel Bidang, maka kita juga memasukkan 3 buah data. Data pertama (8) harus terisi karena pada definisi tabel Bidang, kolom IdBidang dinyatakan NOT NULL. Data ketiga yaitu untuk kolom Deskripsi kita isi NULL karena kita ingin mengosongkan isi kolom ini. Jalankan perintah di atas. Kemudian klik kanan pada tabel Bidang kemudian pilih Refresh. Kemudian klik kanan lagi pada tabel Bidang dan pilih Open Table. Data yang kalian masukkan sudah berada pada tabel Bidang (Gambar 12.21).
Gambar 12.21. Isi tabel Bidang setelah INSERT data. Kalau kalian perhatikan, perintah INSERT di atas terlalu panjang. Coba hapus bagian daftar nama kolom pada perintah tersebut. Kemudian ganti data di bawah VALUES menjadi (9, ’Digital Animation’, NULL). Kemudian jalankan dan periksalah hasilnya. Apa yang terjadi? Setelah Refresh, kalian akan menjumpai bahwa data kalian juga dapat dimasukkan tanpa harus menyebut daftar nama kolom pada perintah INSERT. Seringkali dalam pengisian data pada suatu tabel, kita melakukan kesalahan. Kesalahan dapat berupa kesalahan ketik atau kesalahan pembacaan data. Sehingga ketika diperiksa, kita menginginkan untuk merubah/memperbaiki data tersebut. Proses ini biasa disebut sebagai update data. SQL menyediakan perintah UPDATE untuk melakukan proses ini. Perintah ini masih termasuk dalam kelompok DML. Misalnya kita ingin merubah isi kolom NamaBidang pada IdBidang yang ke-5 (lihat Gambar 12.21). Dari ‘Fotografi’ kita rubah menjadi ‘Fotografi Digital’ maka kita ketikkan perintah seperti berikut. UPDATE [Lat-01].[dbo].[Bidang] SET [NamaBidang] = 'Fotografi Digital' WHERE [IdBidang] = 5 Periksa kembali isi tabel Bidang. Jangan lupa untuk me-refresh dulu tabel Bidang sebelum perintah Open Table dijalankan.
350
Basis Data Berbasis SQL
Penghapusan data dengan SQL dilakukan dengan perintah DELETE. Perlu diperhatikan bahwa perintah DELETE akan menghapus isi seluru baris. Kalau kalian hanya ingin mengosongkan isi satu bagian dari baris (atau satu sel) saja gunakan perintah UPDATE. Misalnya kita ingin kita menghapus baris yang IdBidangnya sama dengan 8 maka kita ketikkan dengan perintah seperti berikut. DELETE FROM [Lat-01].[dbo].[Bidang] WHERE [IdBidang] = 8 12.6.3. Mencari dan Menampilkan Data (View) dengan SQL Seperti telah disinggung di awal bab, perintah utama dalam SQL adalah SELECT, FROM dan WHERE. Sebagian besar aktivitas kita menggunakan SQL berhubungan dengan perintah-perintah ini. Untuk menggunakan perintah-perintah ini, buka jendela Query kemudian ketikkan perintah yang kalian inginkan. Jalankan dengan menekan tombol tanda seru (!). Perintah SELECT digunakan untuk memilih kolom mana saja yang akan ditampilkan. Jika kita ingin menampilkan semua kolom, kita cukup menggunakan tanda *. Perintah FROM digunakan untuk menentukan asal kolom yang ingin kita tampilkan datanya. Perintah WHERE digunakan untuk membatasi baris-baris yang akan kita tampilkan agar sesuai dengan kriteria yang kita inginkan. WHERE bisa dari tabel atau hasil dari View yang lain. Perhatikan contoh-contoh penggunaan SQL berikut ini. Contoh 12.4. Menampilkan semua data pada tabel Bidang. Contoh ini kita membutuhkan tabel Bidang. Sedangkan kolom yang kita ingin tampilkan adalah semua kolom. Kita dapat menggunakan tanda * atau mendaftar semua kolom yang ada pada tabel Bidang. Berikut adalah perintah SQL dan hasil eksekusinya.
Rekayasa Perangkat Lunak
351
Jika kalian ingin menyimpan dalam bentuk View perintah di atas, tambahkan sebelum pernyataan SELECT perintah CREATE VIEW
Contoh 12.6. Menampilkan data nama siswa yang rumahnya di Batu. Pada contoh ini kita membutuhkan pernyataan WHERE untuk membatasi baris yang ingin kita tampilkan. Tabel yang dipakai adalah tabel Siswa dan kolom yang ingin ditampilkan adalah kolom Nama. Kalau kalian perhatikan hasil eksekusi contoh 12.2 di atas, yang alamat rumahnya di Batu ada dua orang yaitu Pepe Ricard dan Bubi Red. Pernyataan WHERE diikuti dengan kondisi yang harus dipenuhi. Pada kasus ini adalah Kota=’Batu’. Berikut ini perintah SQL secara lengkap dan outputnya. Perhatikan cara penulisannya.
352
Basis Data Berbasis SQL
Contoh 12.7. Menampilkan data nama, alamat dan kota dari guru yang rumahnya tidak di Malang. Pada bagian ini kita juga menggunakan perintah WHERE untuk membatasi data yang ingin kita tampilkan. Tabel yang kita gunakan adalah tabel guru dan kolom yang kita butuhkan adalah kolom nama, alamat dan kota. Pernyataan yang rumahnya tidak di Malang merupakan kondisi yang harus dipenuhi. Sehinga secara lengkap pernyataan akan tampak seperti berikut.
Contoh 12.8. Menampilkan data nama siswa dan program keahlian yang diikuti. Pada contoh ini kita melibatkan dua buah tabel yang saling berhubungan yaitu tabel Siswa dan tabel Program. Yang kita ingin tampilkan adalah kolom Nama pada tabel Siswa dan kolom NamaProgram pada tabel Program. Untuk kasus seperti ini pada perintah SELECT pemanggilan nama kolom harus didahului dengan nama tabelnya. Sedangkan pada FROM kita menggunakan perintah INNER JOIN untuk menggabung dua tabel. Perlu kalian cermati (lihat Tabel 12.1 di atas), pada tabel Siswa terdapat Foreign Key yaitu IdProgram yang merupakan Primary Key pada tabel Program. IdProgram ini merupakan penghubung yang dapat kita gunakan untuk menggabung dua tabel. Perhatikan pernyataan SQL berikut ini dan cermati outputnya.
Rekayasa Perangkat Lunak
353
Contoh 12.9. Menampilkan data nama siswa yang mengikuti program keahlian RPL. Contoh ini merupakan kelanjutan dari contoh 12.4. Kita menambahkan pernyataan WHERE untuk menampilkan nama yang ikut program keahlian RPL. Selain itu kita hanya ingin menampilkan kolom Nama dari tabel Siswa. Perhatikan pernyataan SQL berikut dan hasil eksekusinya.
Contoh 12.10. Menampilkan data nama guru dan bidang keahliannya. Contoh ini lebih kompleks dari contoh-contoh di atas. Kita melibatkan tiga buah tabel, yaitu tabel Guru, tabel Guru_Bidang dan tabel Bidang. Perhatikan relasi antar tabel tersebut pada Gambar 12.11. Ada dua INNER JOIN yang kita gunakan, yaitu INNER JOIN tabel Guru dengan tabel Guru_Bidang dan INNER JOIN Guru_Bidang dengan tabel Bidang. Perhatikan bagaimana membuat pernyataan INNER JOIN.
Contoh 12.11. Menampilkan data nama guru yang bidang keahliannya Pemrograman Web atau Basis Data. Contoh ini merupakan pengembangan dari contoh 12.10. Kita ingin menampilkan guru yang bidang keahliannya Pemrograman Web atau Basis Data. Kita perlu
354
Basis Data Berbasis SQL
menambahkan perintah WHERE untuk membatasi baris. Pada WHERE kita juga perlu operator OR. Perhatikan perintah SQL dan hasil eksekusinya berikut ini.
Bandingkan dengan hasil eksekusi contoh 12.10. Cobalah ganti OR dengan AND dan jalankan kembali perintah SQL tersebut. Bagaimanakah hasilnya? Contoh-contoh di atas dapat dikembangkan lagi dengan banyak variasi. Dengan banyak mencoba dan berlatih maka kalian akan dapat memahami dengan baik penggunaan perintah-perintah SQL. 12.7.
FUNGSI, PROCEDURE DAN TRIGGER
Microsoft SQL Server menyediakan fasilitas-fasilitas tingkat lanjut yang tidak dimiliki oleh Microsoft Access seperti kemampuan membuat fungsi, mendefinisikan store procedure dan trigger. Hal ini karena SQL Server diperuntukkan sebagai basis data server yang membutuhkan kinerja yang lebih kuat dari Microsoft Access. 12.7.1. FUNGSI T-SQL menyediakan banyak fungsi yang digunakan untuk mempermudah tugas-tugas dalam pengelolaan basis data. Beberapa fungsi penting akan disampaikan di sini. Untuk lebih lengkapnya silahkan baca manual atau online-help dari SQL Server. •
Fungsi-fungsi yang berhubungan dengan numeric Fungsi-fungsi penting yang berhubungan dengan numeric (angka) adalah
isNumeric dan Round. Fungsi isNumeric digunakan untuk memeriksa apakah isi
suatu data berupa data angka atau tidak. Buka jendela Query kemudian ketikkan perintah seperti pada contoh 12.12 dan periksalah hasilnya. Tabel Siswa mempunyai kolom Telepon yang isi datanya sekilas berupa angka. Kita dapat memeriksa dengan menggunakan fungsi isNumerik. Pada hasil eksekusi di bawah ini terlihat nilai hasil pemeriksaan menghasilkan angka 0 untuk
Rekayasa Perangkat Lunak
355
seluruh data. Angka 0 berarti false. Berarti, semua data pada kolom Telepon bukan data numeric. Contoh 12.12. Menggunakan fungsi isNumeric.
Fungsi ROUND digunakan untuk membulatkan bilangan pecahan ke bilangan bulat terdekat. Misalnya 13.58 akan menjadi 14.00. Perhatikan contoh berikut ini. Contoh 12.13. Menggunakan fungsi Round.
•
Fungsi-fungsi yang berhubungan dengan string Fungsi-fungsi penting yang berhubungan dengan karakter (string) antara lain adalah LEFT, RIGHT, LEN, LOWER, UPPER, LTRIM, dan RTRIM. LEFT digunakan untuk memilih sejumlah karakter tertentu dari sebelah kiri sedangkan RIGHT dari sebelah kanan. Hasil dari RIGHT tergantung dari lebar data yang kalian tetapkan pada pembuatan table. LEN digunakan mengetahui panjang karakter pada data. Perhatikan contoh berikut.
356
Basis Data Berbasis SQL
Contoh 12.14. Menggunakan LEFT, RIGHT dan LEN.
LOWER digunakan untuk merubah karakter menjadi huruf kecil, sedangkan UPPER sebaliknya. LTRIM digunakan untuk menghilangkan space di sebelah kiri data string, sedangkan RTRIM di sebelah kanan. Lihat contoh berikut. Contoh 12.15. Menggunakan fungsi UPPER dan LOWER.
•
Fungsi-fungsi yang berhubungan dengan waktu Fungsi-fungsi yang berhubungan dengan waktu yang penting antara lain: GETDATE, MONTH, DAY, YEAR, DATENAME, DATEADD, and DATEDIFF. GETDATE digunakan untuk mendapatkan tanggal sekarang dari system computer. MONTH digunakan untuk mengambil bagian bulan dari data tanggal. DAY digunakan untuk mengambil bagian tanggal dari data tanggal. YEAR digunakan untuk mengambil bagian tahun dari data tanggal. DATENAME digunakan untuk mendapatkan nama hari dari suatu tanggal. DATEADD digunakan untuk menambah atau mengurangi data tanggal. DATEDIFF
Rekayasa Perangkat Lunak
357
digunakan untuk melihat selisih antara dua buah data tanggal. contoh berikut.
Perhatikan
Contoh 12.16. Menggunakan fungs-fungsi waktu.
12.7.2. Procedure dan Stored Prosedure Selain fungsi-fungsi yang tersedia di atas, SQL Server juga memperkenalkan
user-defined function. Fungsi ini adalah fungsi yang dapat kita buat sendiri untuk
mempercepat pengelolaan basis data. Kadang-kadang fungsi jenis ini disebut juga procedure. Ada dua tipe user defined function yaitu scalar dan inline table-value. Fungsi scalar menghasilkan satu nilai keluaran melalui kata kunci Return. Inline Table-Value menghasilkan suatu table baru ketika dieksekusi. Perhatikan contoh berikut. Contoh 12.17. Membuat fungsi scalar. Fungsi yang ada di samping ini diberi nama dbo.FullName. Parameter yang digunakan ada dua yaitu @FirstName dan @LastName. Perhatikan bagaimana mendefinisikan suatu fungsi dan parameternya. Output dari fungsi akan bertipe data nVarChar dengan lebar data 35. Fungsi ini akan memberikan output satu nilai yaitu gabungan dari @LastName dan @Firstname. Sehingga kita bisa nyatakan ini termasuk dalam fungsi scalar. Pada kode yang di blok, terlihat bagaimana fungsi tersebut dipanggil pada suatu pernyataan query. Perhatikan output yang dihasilkan. Terbentuk kolom baru yang berisi gabungan kolom LastName dan FirstName. Stored procedure adalah potongan kode program yang dapat menerima parameter input dan menghasilkan satu atau lebih parameter output. Stored
358
Basis Data Berbasis SQL
procedure umumnya digunakan untuk operasi-operasi pada basis data. Biasanya suatu perintah SQL yang rumit, panjang dan kompleks disimpan sebagai stored procedure. Jika kita ingin melakukan operasi tersebut kita tidak perlu mengetik ulang, cukup kita panggil nama stored procedure dan kita eksekusi langsung. Perintah untuk membuat stored procedure adalah CREATE PROCEDURE kemudian diikuti dengan nama procedure-nya. Perhatikan contoh berikut ini. Contoh 12.18. Membuat stored procedure. Buka jendela Query, kemudian ketikkan kode berikut ini. CREATE PROCEDURE hapusBaris @IdNumber smallint AS DELETE FROM dbo.Bidang Where dbo.Bidang.IdBidang = @IdNumber Procedure yang kita buat ini bernama hapusBaris dengan satu parameter yaitu @IdNumber dengan tipe data smallint. Pernyataan setelah AS adalah pernyataan SQL yang akan dikerjakan ketika stored procedure di atas dijalankan. 12.7.3. Trigger Trigger adalah tipe khusus dari stored procedure yang akan dieksekusi ketika suatu kejadian muncul. Kejadian tersebut misalnya ketika ada penambahan data (INSERT), penghapusan data (DELETE) atau perubahan data (UPDATE). Trigger biasanya merupakan komponen dari suatu table. Cara membuatnya adalah klik node di depan table yang anda pilih. Setelah muncul daftar komponen table tersebut klik kanan pada Trigger dan pilih New Trigger. SQL Server akan menampilkan jendela baru yang isinya adalah template dari Trigger. Hapus semua teks pada jendela tersebut kemudian ketikkan contoh berikut ini. Contoh 12.19. Membuat trigger. CREATE TRIGGER coba_trigger ON dbo.Bidang FOR INSERT AS DECLARE @varNama Varchar(20) SELECT @varNama = NamaBidang FROM INSERTED PRINT 'Anda baru memasukan data : ' + @varNama Trigger di atas berada pada table Bidang. Nama triggernya adalah coba_trigger dan akan dijalankan ketika event pemasukkan data (INSERT) pada table dbo.Bidang terjadi.
Rekayasa Perangkat Lunak
359
12.8.
ADMINISTRASI SQL SERVER
12.8.1. Security dan Authentication. Security atau keamanan basis data merupakan komponen yang sangat penting. Karena sifatnya yang berperan sebagai server maka sebenarnya SQL Server secara teori dapat diakses oleh siapa saja. Hal ini tentu akan sangat merugikan jika ada pihak-pihak yang tidak bertanggung jawab melakukan perubahan, perusakan atau bahkan menghapus basis data yang kita buat dengan susah payah. SQL Server menyediakan mekanisme Authentication untuk membatasi siapa yang berhak masuk ke dalam sistem SQL Server. Ada dua model authentication yaitu Windows Authentication dan SQL Server Authentication.
Windows Authentication.
•
Pada model ini SQL Server tidak melakukan pengecekan pada user name dan password yang diberikan namun dipercayakan pada system operasi Windows. Artinya sebenarnya hanya user yang terdaftar pada computer tersebut yang mungin bisa masuk pada SQL Server.
•
SQL Server Authentication. Informasi user name dan password disimpan dalam SQL Server sehingga setiap kali ada user yang akan masuk koneksi ke SQL Server, SQL Server akan memeriksanya.
Untuk melihat model authentication apa yang ada di SQL Server, klik kanan pada nama server di jendela Object Explorer kemudian pilih Properties. Pada jendela Server Properties pilih bagian Security sehingga tampilan akan tampak seperti pada Gambar 12.22.
360
Basis Data Berbasis SQL
Gambar 12.22. Halaman security pada jendela Server Properties. Untuk menambahkan user yang bisa masuk ke SQL Server, klik node pada Security di Object Explorer, kemudian klik kanan Logins. Pilih New Logins untuk membuka jendela Login seperti pada Gambar 12.23. Buat user baru yang kalian inginkan.
Rekayasa Perangkat Lunak
361
Gambar 12.23. Jendela untuk membuat user baru. 12.8.2. Permissions Permissions berhubungan dengan hak akses seorang user pada suatu basis data. Seorang yang sudah terdaftar sebagai user pada SQL Server tidak secara otomatis bisa menggunakan basis data yang ada jika belum diberi hak. Untuk mengubah hak user pada basis data tertentu, klik node pada Logins. Klik kanan pada nama user yang terdaftar di bawah Logins kemudian pilih Properties. Pada jendela Login Properties, pilih bagian User Mapping sehingga tampilan akan tampak seperti pada Gambar 12.24.
362
Basis Data Berbasis SQL
Gambar 12.24. Hak akses basis data oleh user. Gambar di atas menunjukka user dengan nama sa merupakan pemilik (db_owner) dari beberapa basis data (lihat basis data yang dicentang). Kita dapat mengatur peran (role) seorang member pada basis data dengan mencentang atau tidak pada bagian Database role membership. 12.9.
RINGKASAN
•
Data Definition Language (DDL) adalah satu paket bahasa DBMS yang berguna untuk melakukan spesifikasi terhadap skema basis data sedangkan Data Manipulation Language (DML) adalah satu paket DBMS yang memperbolehkan pemakai untuk mengakses atau memanipulasi data sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang tepat.
•
SQL lebih menekankan pada aspek pencarian dari dalam tabel hal ini karena pencarian adalah inti dari pengelolaan data.
•
Pembuatan Tabel dan View pada SQL server dapat dilakukan dengan cara GUI atau dengan menggunakan perintah-perintah SQL.
•
Perintah utama SQL adalah SELECT, FROM dan WHERE.
Rekayasa Perangkat Lunak
363
•
Microsoft SQL Server menyediakan fasilitas fungsi built-in dan user-defined
function.
•
Stored procedure adalah potongan kode program yang dapat menerima parameter input dan menghasilkan satu atau lebih parameter output. Trigger adalah tipe khusus dari stored procedure yang akan dieksekusi ketika suatu kejadian muncul
•
SQL Server menyediakan mekanisme Authentication untuk membatasi siapa yang berhak masuk ke dalam sistem SQL Server dengan dua model yaitu Windows Authentication dan SQL Server Authentication. Selain itu keamanan data juga diatur dengan cara pemberian permissions.
12.10. SOAL-SOAL LATIHAN 1. Buatlah tabel baru dengan menggunakan fasilitas GUI pada basis data Lat01 dengan nama MataPelajaran dan kolom-kolomnya adalah: IdMatapelajaran, Nama, Deskripsi, Semester, dan JamPertemuan. Kolom Semester menunjukkan pada semester berapa mata pelajaran tersebut di ajarkan sedangkan JamPertemuan menunjukkan berapa jam pertemuan mata pelajaran tersebut di ajarkan (kedua kolom ini menggunakan tipe data numeric, kalian bisa memilih smallint atau int pada tipe datanya). Isilah tabel tersebut dengan mata pelajaran di sekolahmu. 2. Bagaimanakah perintah-perintah SQL untuk pembuatan tabel pada no 1. 3. Pada kondisi nyata ada hubungan antara mata pelajaran dan Guru. Yaitu Guru mengajarkan mata pelajaran. Buatlah hubungan antara tabel Guru Jika perlu dengan tabel MataPelajaran pada Database Diagrams. tambahkan kolom baru atau tabel baru yang bisa menjamin hubungan tersebut benar (Petunjuk: tentukan dulu kardinalitas hubungan apakan one-to-many ataukah many-to-many) 4. Buatlah View dengan perintah SQL untuk pernyataan-pernyataan berikut: a. Tampilkan semua data mata pelajaran. b. Tampilkan nama mata pelajaran yang diajarkan pada semester 3 ke atas (Petunjuk: gunakan tanda >, <, >= dan <= pada perintah WHERE) c. Tampilkan nama pelajaran yang diajarkan kurang dari 3 kali pertemuan. d. Tampilkan semua mengasuhnya.
nama
pelajaran
dan
nama
guru
yang
e. Tampilkan nama pelajaran dan nama guru yang mengasuhnya untuk mata pelajaran yang diajarkan di semester 4.
364
Basis Data Berbasis SQL
Jika kita sering berselancar di dunia internet kita akan sering menjumpai halaman-halaman web seperti pada Gambar 13.1. di samping ini. Halaman web ini ada yang bersifat statis tetapi juga ada yang dinamis. Tetapi apapun sifatnya, halaman-halaman tersebut hampir pasti melibatkan bahasa HTML. Bab ini membahas dua standar kompetensi yaitu menerapkan dasar-dasar pembuatan web statis tingkat dasar dan membuat file Gambar 13.1. Halaman web. HTML sesuai spesifikasi. Penggabungan dua kompetensi ini karena kedekatan isi kompetensi dasar. Standar kompetensi membuat file HTML sesuai spesifikasi terdiri dari empat kopetensi dasar yaitu menetapkan pemakaian struktur file, membuat struktur file HTML, memformat file dan menambahkan obyek. Standar kompetensi menerapkan dasar-dasar pembuatan web statis tingkat dasar juga terdiri dari empat kompetensi dasar yaitu menjelaskan konsep dasar dan teknologi web, mempersiapkan pembuatan web, melakukan pembuatan web, dan menampilkan web di browser. Rangkuman diletakkan pada akhir bab dilanjutkan dengan soal-soal latihan yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Sebelum mempelajari kompetensi ini ingatlah kembali dasar sistem komputer, sistem operasi, dan algoritma pemrograman dasar.
Rekayasa Perangkat Lunak
365
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Menjelaskan konsep dasar dan teknologi web o Menetapkan pemakaian dan struktur dokumen o Mempersiapkan pekerjaan pembuatan web o Melakukan pembuatan dokumen web baru dan menampilkan dalam web browser o Membuat struktur dokumen dengan bahasa HTML o Memformat dokumen dan menambahkan obyek o Membuat tabel o Membuat link antar dokumen 13.1.
KONSEP DASAR DAN TEKNOLOGI WEB
World Wide Web secara luas lebih dikenal dengan istilah Web. Web pertama kali diperkenalkan pada tahun 1992. Hal ini sebagai hasil usaha pengembangan yang dilakukan CERN di Swiss. Internet dan web adalah dua hal yang berbeda. Internet lebih merupakan perangkat keras, sedangkan web adalah perangkat lunak. Selain itu, protokol yang dipakai oleh keduanya juga berbeda. Internet menggunakan TCP/IP sebagai protokol operasionalnya, sedangkan web menggunakan HTTP (Hyper Text Transfer Protocol). Web disusun dari halaman-halaman yang menggunakan teknologi web dan saling berkaitan satu sama lain. Suatu standar teknologi web saat ini sudah tersusun, meskipun penerapannya belum didukung oleh seluruh pengembang web. Standar ini disusun oleh suatu badan yaitu World Wide Web Consortium (W3C). Standar ini dibutuhkan karena semakin banyaknya variasi dalam teknologi web sehingga terkadang satu sama lain tidak kompatibel. 13.1.1 Standar Teknologi Web Secara umum teknologi disain web terbagi menjadi beberapa layer (lapisan), yaitu structural layer, presentation layer dan behavioral layer. •
Structural layer Layer ini berhubungan dengan struktur dokumen dokumen web. Bagaimana sebuah dokumen tersusun, format apa yang dipakai, tanda atau mark up apa yang digunakan merupakan bagian dari layer ini. Standar teknologi yang direkomendasikan saat ini adalah Extensible Hypertext Markup Language (XHTML) dan Extensible Markup Language (XML). XHTML adalah HTML versi terakhir (4.01) yang ditulis ulang dengan dengan aturan-aturan yang lebih ketat mengacu pada XML. Sedangkan XML adalah sekumpulan aturan untuk menyusun bahasa markup.
366
Disain Web Statis dan HTML
•
Presentation layer Layer ini berhubungan dengan bagaimana mengatur tampilan dokumen pada layar, suara yang keluar, atau bagaimana format pencetakan dokumen. Pada teknologi web lama bagian ini menyatu dengan structural layer. Tapi pada standar baru, layer ini disarankan untuk dipisah. Yang termasuk teknologi ini adalah Cascading Style Sheets (CSS).
•
Behavioral layer Layer ini berhubungan dengan masalah penggunaan bahasa skrip dan pemrogramannya untuk tujuan meningkatkan sisi interaktif dan dinamis halaman web. Yang termasuk dalam layer ini adalah Document Object Model (DOM) dan JavaScript. DOM memungkinkan suatu dokumen atau skrip untuk mengakses atau meng-update isi, struktur, dan style dari dokumen. JavaScript merupakan teknologi yang cukup lama dan tetap digunakan untuk menambah dokumen menjadi lebih interaktif.
13.1.2. Web Statis dan Web Dinamis. Halaman web dapat digolongkan menjadi web statis dan web dinamis. Pengertian web statis dan web dinamis seringkali mengundang perdebatan. Sebagian pengguna internet menyatakan jika pada halaman-halaman web dilengkapi dengan animasi yang bergerak maka disebut web dinamis sedangkan jika halaman-halaman web tersebut hanya berisi teks dan gambar yang tidak bergerak maka disebut web statis. Namun berdasarkan kesepakatan maka pengertian statis dan dinamis tidak ditentukan oleh ada atau tidaknya animasi bergerak pada halaman-halaman web, tetapi ditentukan oleh isi atau informasi yang ada pada halaman-halaman tersebut. Data dan informasi yang ada pada web statis tidak berubah-ubah. Dokumen web yang dikirim kepada client akan sama isinya dengan apa yang ada di web server. Sedangkan web dinamis, memiliki data dan informasi yang berbeda-beda tergantung input apa yang disampaikan client. Dokumen yang sampai di client akan berbeda dengan dokumen yang ada di web server. Contoh paling mudah untuk membedakan web statis dan web dinamis adalah bila kalian membuka situs Google. Halaman awal adalah statis karena kita tidak melihat perubahan isi atau informasi. Halaman ini baik di komputer client maupun di web server akan sama. Namun begitu kita memasukkan kata pada textbox yang tersedia kemudian menekan tombol search maka kita sedang berinteraksi dengan web server Google. Web server akan mengirimkan halaman web sesuai yang diminta oleh client. Tampilan di sisi client akan berupa daftar alamat dan keterangannya. Sedangkan di sisi server isi dokumennya adalah serangkain kode-kode untuk mencari apa yang diinputkan client. Bab ini secara khusus akan mempelajari tentang pembuatan web statis sedangkan web dinamis akan kita bahas di bab 14.
Rekayasa Perangkat Lunak
367
13.2.
PERSIAPAN PEMBUATAN WEB
Pembuatan halaman web membutuhkan persiapan tidak saja pengetahuan tentang bagaimana disain halaman web, namun juga perlu dukungan persiapan perangkat keras, perangkat lunak, dan yang lainnya. 13.2.2. Perangkat Keras Perangkat keras yang dibutuhkan untuk pembuatan halaman web tidak berbeda jauh dengan kebutuhan komputasi biasa. Seperangkat komputer lengkap dengan CPU, monitor, keyboard, mouse, printer dan beberapa perangkat tambahan lain sudah dapat digunakan untuk membuat halaman web. spesifikasi tergantung dari perangkat lunak yang akan diinstal pada perangkat komputer tersebut. Jika kita menginstal web server, pengolah gambar untuk disain halaman web, HTML editor yang komplet, tentu kita membutuhkan spesifikasi yang lebih tinggi. 13.2.3. Perangkat Lunak •
Sistem operasi Sistem operasi memegang peranan penting dalam pembuatan web karena pada sistem operasi itu akan ditanamkan (diinstal) web server, web editor, sistem manajemen basis data dan bahasa pemrograman. Artinya pilihan pada sistem operasi tertentu akan menentukan pula pilihan web server, perangkat pengembang dan bahasa pemrograman yang akan digunakan. Hal ini dikarenakan adanya masalah kompatibilitas antar perangkat lunak. Sebagai contoh, apabila kita memilih menggunakan sistem operasi Linux maka kita tidak dapat menginstal IIS sebagai web server. Selain masalah kompatibilitas, hal lain yang juga perlu dipertimbangkan dalam penentuan sistem operasi yang akan kita gunakan pada server adalah masalah keamanan, stabilitas, kemudahan konfigurasi. Keamanan berhubungan dengan kemampuan sistem operasi untuk melindungi diri dari serangan virus, spam, atau kode-kode jahat yang sengaja disusupkan. Kemampuan ini sangat penting diperhatikan karena lalu lintas data dalam internet sangat rentan terhadap gangguan virus, spam, dan pengganggu lainnya. Stabilitas berhubungan dengan kemampuan sistem operasi untuk bekerja terus-menerus untuk merespon permintaan client. Kemudahan konfigurasi berhubungan mudah tidaknya konfigurasi dilakukan terhadap sistem operasi dalam perannya sebagai server.
•
Web Server Web server adalah perangkat lunak yang bertindak melayani permintaanpermintaan client terhadap halaman-halaman web tertentu. Ada beberapa
368
Disain Web Statis dan HTML
nama yang cukup populer dalam dunia web server. Diantaranya adalah Apache dan IIS (Internet Information Service). Sampai dengan Desember 2007, wikipedia mencatat Apache berada dalam posisi pertama sebagai web server yang paling banyak digunakan, disusul IIS. Apache dapat digunakan baik untuk web statis maupun web dinamis dan mendukung banyak platform sistem operasi dan bahasa pemrograman server, antara lain Perl, Phyton, Java (JSP dengan menggunakan Tomcat) dan tentu saja PHP. Fungsi-fungsi keamanan web juga dikendalikan dengan sangat baik. Dukungan pada koneksi dengan berbagai basis data, seperti MySQL, SQL Lite, PosgreSQL, Oracle, DB2 dan lain-lain dapat dilakukan dengan baik. Gambar 13.2 menunjukkan bagaimana web server Apache (httpd) digunakan di Linux.
Gambar 13.2. Menjalankan service Apache (httpd) pada Linux. IIS adalah web server keluaran Microsoft. Sebutan web server bagi IIS mungkin tidak terlalu tepat, karena selain web server, IIS juga memberikan fasilitas file server, email server dan layanan lain berbasis internet. Oleh karena itu istilah yang tepat mungkin adalah internet based-service. Perangkat lunak ini dibundel dalam sistem operasi Microsoft Windows. Namun secara default tidak langsung diinstall. Sehingga kalau kita mau menggunakannya kita harus menginstall lebih dulu. Gambar 13.3 menunjukkan bagaimana IIS diinstall.
Rekayasa Perangkat Lunak
369
Gambar 13.3. Memeriksa dan menginstal IIS. •
Web / HTML Editor Web / HTML Editor adalah perangkat lunak yang digunakan untuk membuat halaman-halaman web, baik yang bersifat statis maupun dinamis. Di pasar
perangkat lunak, saat ini tersedia banyak sekali jenis perangkat pengembang
web, mulai dari yang sederhana sampai yang canggih dan kompleks. Namun sebenarnya untuk membuat halaman web baik statis maupun dinamis kita
dapat menggunakan teks editor biasa seperti Notepad atau Vi. Hanya saja teks editor tidak menyediakan fasilitas-fasilitas yang memudahkan kita dalam
370
Disain Web Statis dan HTML
membuat halaman web. Pada perangkat pengembang web yang lebih kompleks seperti Adobe Dreamweaver (dulu Macromedia Dreamweaver), Microsoft Visual Studio .Net, dan beberapa yang lainnya, kita akan mendapati fasilitas yang sangat membantu mempercepat pembuatan halaman web, antara lain: tampilan berbasis GUI, automatic code completion (melengkapi kode secara otomatis), WYSIWYG (What You See Is What You Get) HTML Editor, koneksi ke basis data yang lebih mudah, dan banyak lagi fasilitas. Tentu saja perangkat pengembang ini berharga relative mahal. Pada bagian lain dari bab ini kalian akan diajak untuk mengenali sedikit beberapa perangkat lunak ini. •
Web Browser Web browser berfungsi menerjemahkan kode-kode HTML menjadi tampilan yang kita kehendaki. Ada banyak Web Browser tersedia di internet. Hampir semuanya dapat kita download secara bebas. Beberapa nama yang cukup terkenal antara lain Microsoft Internet Explorer, Firefox, Opera atau Safari. Microsoft Internet Explorer adalah default web browser pada sistem operasi Microsoft Windows (lihat Gambar 13.4). Firefox adalah default web browser pada sebagian besar sistem operasi Linux. Safari adalah default web browser pada sistem operasi Mac OS X (lihat Gambar 13.5). Sedangkan Opera adalah web browser keluaran Opera Software yang dapat berjalan pada berbagai platform sistem operasi (Gambar 13.6).
Gambar 13.4. Microsoft Internet Explorer.
Rekayasa Perangkat Lunak
371
Gambar 13.5. Safari.
Gambar 13.6. Opera.
372
Disain Web Statis dan HTML
13.3.
MEMBUAT DAN MENGUJI HALAMAN WEB
Ada dua model dalam pembuatan halaman web statis. Yang pertama adalah membuat halaman-halaman tersebut pada komputer lokal, kemudian setelah berhasil dipindahkan ke lokasi di web server. Model kedua adalah langsung membuat halaman-halaman web di lokasi web server. Lokasi web server dapat berada di satu komputer yang sama dengan tempat pembuatan halaman web atau di komputer lain yang berperan sebagai server. Cara pertama lebih mudah dilakukan karena tidak membutuhkan kerja web server di tahap disain. Pada bagian ini kita akan mencoba cara ini. Buatlah direktori pada komputer kalian. Jika kalian menggunakan sistem operasi Windows, kalian tinggal buka Windows Explorer kemudian klik kanan pada area Windows eksplorer dan pilih New kemudian pilih Folder. Beri nama misalkan LatihanWeb. Jika kalian menggunakan Linux, buka file manager yang tersedia misalnya Konqueror, Nautilus, atau Thunar. Lakukan cara yang sama seperti pada Windows Explorer. Umumnya suatu situs web tidak hanya berisi satu halaman web tetapi kumpulan dari beberapa halaman web yang saling berkait. Biasanya pengembang web membuat struktur direktori untuk mempermudah pengaturan halaman. Perhatikan struktur direktori sebuah situs web pada Gambar 13.7.
Gambar 13.7. Contoh Struktur direktori situs web. Halaman awal suatu situs web biasanya berupa halaman web yang diberi nama homepage. Biasanya filenya diberi nama index.html (atau bisa juga index.php, index.jsp, index.asp jika menggunakan bahasa skrip server). Di dalam direktori yang sama dengan index.html ini biasanya ada direktori-direktori lain yang berisi halaman-
Rekayasa Perangkat Lunak
373
halaman yang dikelompokkan berdasarkan kedekatan tema atau berdasarkan pengelompokkan lain. Selain itu ada direktori lain yang digunakan untuk menyimpan elemen-elemen yang digunakan dalam halaman web. biasanya berisi file-file gambar, teks, audio, video atau elemen-elemen yang lain. Buatlah struktur direktori seperti di atas dengan cara menambahkan sub direktori di bawah direktori LatihanWeb yang telah kalian buat. Beri nama sesuai keinginan kalian, tetapi usahakan nama direktori menunjukkan apa isi dari direktori tersebut. Buka teks editor, misalkan Notepad kemudian ketikkan kode berikut ini. <TITLE>Homepage Ini halaman index pertamaku Simpan dengan nama index.html dan letakkan di direktori LatihanWeb (Gambar 13.8). Untuk menguji file tersebut, klik ganda pada file index.html. kalian akan mendapatkan tampilan seperti pada Gambar 13.9.
Gambar 13.8. File index.html dan lokasi penyimpanannya.
374
Disain Web Statis dan HTML
Gambar 13.9. Hasil pengujian file index.html. 13.4.
HTML
13.4.1. Pengertian HTML Gambar 13.8 dan 13.9 menunjukkan pada kalian bagaimana membuat halaman
web sederhana. Halaman web yang kalian buat ini menggunakan bahasa yang disebut HTML (Hypertext Markup Language). HTML merupakan pengembangan dari standar pemformatan dokumen teks yaitu Standard Generalized Markup Language (SGML). HTML sebenarnya adalah dokumen ASCII atau teks biasa yang dirancang untuk tidak tergantung pada suatu sistem operasi tertentu.
HTML dibuat oleh Tim Barners-Lee ketika masih bekerja untuk CERN. HTML dipopulerkan pertama kali oleh browser Mosaic. Selama awal tahun 90’an, HTML mengalami perkembangan yang sangat pesat. Setiap pengembangan HTML pasti akan menambahkan kemampuan dan fasilitas yang lebih baik daripada versi sebelumnya. Perkembangan yang pesat tersebut tidak sampai merubah cara kerja HTML. Sebuah dokumen atau file HTML agar dapat dibaca langsung oleh browser disimpan dalam ekstensi .htm atau .html. Untuk menulis HTML tidak dibutuhkan perangkat lunak yang spesifik, cukup dengan text editor sederhana seperti Notepad (pada Microsoft Windows) atau beragam text editor yang ada di platform Linux dan Apple Mac OS, seperti vi, nano, joe, gedit, leafpad dan lain-lain. Beberapa editor menyediakan fitur-fitur tambahan seperti syntax coloring (memberi warna pada kodekode HTML) dan code completion (melengkapi secara otomatis kode yang akan dituliskan). Saat ini telah banyak perangkat lunak berbasis GUI yang sangat membantu dalam pembuatan halaman-halaman HTML. Macromedia Dreamweaver dan Microsoft Frontpage merupakan dua nama yang cukup populer di platform Microsoft Windows. Sedangkan di Linux tersedia Quanta+, Bluefish dan Nvu.
Rekayasa Perangkat Lunak
375
Gambar 13.10. Teks editor Notepad.
Gambar 13.11. Macromedia Dreamweaver.
376
Disain Web Statis dan HTML
Gambar 13.12. Quanta pada sistem operasi Linux
Gambar 13.13. Bluefish pada sistem operasi Linux
Rekayasa Perangkat Lunak
377
13.4.2. Struktur Umum File dengan Bahasa HTML HTML adalah bahasa yang disisipkan (embedded language) pada dokumen dengan memberi tanda tertentu yang disebut tag. Tag merupakan aturan penulisan kode yang ditulis dengan diawali tanda lebih kecil dan di akhiri dengan tanda lebih besar (
Setiap tag mempunyai nama yang spesifik. Kadang-kadang diikuti opsi-opsi yang disebut atribut. Baik nama maupun opsi harus berada dalam tanda <..>. Contoh: PHP Pada contoh ini tagnya memiliki nama sedangkan atribut untuk tag adalah href dan title. Sehingga baik nama tag dan atributnya harus berada di dalam tanda <…> seperti pada contoh.
b)
Sebagian besar tag berpasangan. Penulisan untuk tag yang berpasangan adalah sebagai berikut :
c)
Nama tag dan atribut-nya tidak bersifat case sensitive. Penulisan <strong>Cetak Tebal memberikan hasil yang sama dengan <STRONG>Cetak Tebal.
d)
Penulisan atribut suatu tag diletakkan setelah nama tag. Jika ada lebih dari satu atribut maka digunakan spasi untuk memisahkan. Urutan atribut tidak penting. Contoh: Teks Baru Teks Baru
e)
Nilai dari atribut ditulis setelah tanda sama dengan (=). Pada contoh sebelumnya (lihat bagian d) terlihat bahwa atribut SIZE dari tag FONT memiliki nilai 5 sedangkan atribut FACE memiliki nilai “verdana”.
f)
Jika nilai dari atribut hanya tunggal, maka kita langsung menuliskan setelah tanda =. Jika lebih dari satu maka dapat digunakan tanda ‘… ‘ atau “…”. Pada contoh bagian d, tampak bahwa penulisan nilai untuk atribut SIZE tanpa menggunakan tanda “..”, sedangkan pada atribut FACE tanda “..” untuk menandai kata verdana.
378
Disain Web Statis dan HTML
Dokumen HTML secara umum akan terdiri dari dua bagian yaitu Header dan Body (Gambar 13.14)
Gambar 13.14. Struktur umum dokumen HTML. •
Header
Bagian ini biasanya berisi berbagai macam keterangan tentang dokumen termasuk title (judul dokumen), posisinya dalam sekumpulan halaman web dan hubungannya dengan dokumen lain. Bagian ini ditandai dengan tag …. . Tag ini tidak mempunyai atribut. Di dalam tag ini kita dapat meletakkan beberapa tag lain seperti tag title dan tag link. Lihat Gambar 13.15 dan 13.16.
Gambar 13.15. Header dokumen HTML tanpa tag title.
Rekayasa Perangkat Lunak
379
Gambar 13.16. Header dokumen HTML dengan tag title. •
Body
Body adalah bagian dari dokumen HTML tempat dimana kita meletakkan isi dari dokumen. Bagian ini ditandai dengan tag dan diakhiri dengan . Apapun yang berada diantara dua tanda ini disebut sebagai body content. Dokumen HTML yang paling sederhana mungkin hanya berisi sebaris atau dua baris teks saja tanpa format apapun (Gambar 13.17). Pada dokumen yang lebih kompleks, body content bisa berisi teks yang terformat, gambar, tabel atau bahkan animasi yang rumit (Gambar 13.18).
Gambar 13.17. Dokumen HTML dengan body content sederhana.
380
Disain Web Statis dan HTML
Gambar 13.18. Dokumen HTML dengan body content yang lebih kompleks. 13.4.3. Format Dokumen Ada banyak sekali tag HTML yang tersedia, baik itu berhubungan dengan deskripsi dokumen atau yang berhubungan dengan format tampilan dokumen. Tidak semuanya akan dibahas dalam buku ini. Pada bagian berikut ini akan dibahas beberapa tag yang biasa dipakai dalam format tampilan dokumen. •
Heading
Heading adalah sekumpulan kata yang menjadi judul atau subjudul dalam sebuah dokumen HTML. Heading berbeda dengan tag <TITLE>. HTML menyediakan enam tingkatan heading, dimana heading level 1 () adalah yang terbesar dan heading level 6 (
) adalah yang terkecil. Gambar 13.19 menunjukkan bagaimana penggunaan heading.
Gambar 13.19. Penggunaan heading.
Rekayasa Perangkat Lunak
381
•
Paragraph
Paragraf dalam HTML dibuat dengan tag
Gambar 13.20. Penggunaan paragraph. •
Line Break
Line break digunakan untuk menuliskan teks pada baris berikutnya. Line break dibuat dengan tag tunggal
. Tag ini akan membuat baris baru tanpa memberi baris kosong sebagaimana pada tag
Gambar 13.21. Tag
dan
List
HTML menyediakan 3 cara untuk membuat daftar atau list, yaitu
382
Disain Web Statis dan HTML
o
Ordered list
Ordered list digunakan untuk membuat daftar dimana setiap bagian memiliki nomor secara berurutan. Ordered list dimulai dengan tag dan diakhiri dengan tag
, sedangkan setiap bagiannya digunakan tag
Ordered list
Atribut TYPE=1 TYPE=I TYPE=i TYPE=A TYPE=a
Unordered List
TYPE=circle TYPE=square TYPE=disk
Fungsi Daftar berurutan dengan angka arab (1,2,3,...) Daftar berurutan dengan angka romawi besar (I,II,III,...) Daftar berurutan dengan angka romawi kecil (i,ii,iii,...) Daftar berurutan dengan abjad besar (A,B,C,...) Daftar berurutan dengan abjad kecil (a,b,c,...) Daftar dengan tanda lingkaran Daftar dengan tanda tanda kotak Daftar dengan tanda cakram
Contoh penggunaan Ordered list dapat dilihat pada Gambar 13.22.
Gambar 13.22. Penggunaan Ordered List.
o
Unordered list
Unordered list digunakan untuk membuat daftar yang disajikan tanpa nomor urut, melainkan dengan secara default dengan tanda bulatan utuh (bullet). Tanda ini bisa dirubah dengan merubah nilai atribut TYPE untuk unordered list. Nilai-nilai atribut yang diijinkan dapat dilihat pada tabel 13.1.
Rekayasa Perangkat Lunak
383
Unordered list dimulai dengan tag dan diakhiri dengan tag
, sedangkan setiap bagiannya digunakan tag
Gambar 13.23. Penggunaan Unordered List. Tipe lain dari list yang termasuk Unordered list adalah Directory list dan Directory list merupakan daftar tak bernomor yang digunakan untuk menangani direktori. Tag yang digunakan adalah
Menu list.
Gambar 13.24. Penggunaan Direktori List
384
Disain Web Statis dan HTML
Gambar 13.25. Penggunaan Menu List
o
Definition list
Definition list membuat daftar definisi mirip seperti tampilan pada kamus, dengan definisi suatu istilah agak menjorok ke kanan. Tiga buah pasang tag yang terkait dengan definition list adalah: -
...
untuk menyatakan tempat bagi daftar definisi.
-
-
Gambar 13.26. Penggunaan Definition List. •
Font
HTML menyediakan fasilitas pengaturan huruf yang akan ditampilkan dalam dokumen. Pengaturan ini dilakukan dengan tag berpasangan dan
Rekayasa Perangkat Lunak
385
. Tag ini memiliki beberapa atribut untuk mengatur ukuran, jenis dan warna huruf yang digunakan. o
Atribut SIZE untuk mengatur ukuran huruf, dimana nilai 1 untuk huruf terkecil dan nilai 7 untuk huruf terbesar.
o
Atribut FACE untuk mengatur jenis huruf yang diinginkan, dimana nilainya berupa string nama font seperti Arial, Tahoma dan sebagainya.
o
Atribut COLOR untuk mengatur warna teks yang dikehendaki, dimana nilainya dapat diisi dengan dua cara dengan menyebut nama warna dalam bahasa Inggris seperti red, blue dan green atau dengan menggunakan nilai RGB (Red Green Blue) seperti FF000 untuk merah.
Gambar 13.27. Penggunaan tag Font. 13.4.4. Penambahan Obyek •
Horizontal Line
Untuk mempercantik tampilan halaman HTML, kita dapat menambahkan garis horizontal dengan tag
. Tag
mempunyai atribut SIZE untuk menentukan ketebalan garis, atribut WIDTH untuk menentukan lebar garis, Atribut ALIGN untuk menentukan letak teks dalam garis, dan atribut NOSHADE untuk mengatur agar garis tidak disertai bayangan. Gambar 13.28 menunjukkan bagaimana tag
digunakan.
386
Disain Web Statis dan HTML
Gambar 13.28. Penggunaan garis. •
Image Dokumen HTML dapat diperindah dengan menyertakan gambar pada halaman
web yang dibuat. Tag dapat digunakan untuk memanggil dan menampilkan gambar pada halaman web. Sintaks penulisan tag adalah: Atribut SRC digunakan untuk menentukan sumber file gambar yang akan ditampilkan. Atribut ALT berfungsi untuk memberi tulisan pengganti, apabila gambar tidak ditampilkan.
Gambar 13.29. Penggunaan tag image. Untuk pengaturan gambar yang lebih baik, tag IMG menyediakan beberapa atribut, antara lain: •
Atribut ALIGN untuk mengatur penempatan teks pada gambar.
•
Atribut BORDER untuk memberi bingkai pada gambar.
Rekayasa Perangkat Lunak
387
•
Atribut HEIGHT dan WIDTH untuk mengatur tinggi dan lebar gambar. Contoh berikut ini memperlihatkan penggunaan atribut-atribut tersebut.
Gambar 13.30. Penggunaan atribut-atribut tag IMG. Pada Gambar 13.30 terlihat perbedaan tampilan dibandingkan dengan Gambar 13.29. Tulisan Logo Linux terletak ditengah gambar karena kita menggunakan atribut align dengan nilai middle. Sedangkan tulisan logo Windows terletak di bagian atas karena kita menggunakan align dengan nilai top. Gambar logo windows diberi garis bingkai dengan menggunakan atribut border dengan nilai 2. 13.4.5. Tabel Tabel dalam HTML dibuat dengan menggunakan tag awal … … ...
Fungsi Membentuk judul tabel Membuat judul kolom Membentuk baris pada suatu tabel Membuat sebuah sel data
Contoh-contoh penggunaan tabel adalah sebagai berikut:
388
Disain Web Statis dan HTML
Gambar 13.31. Tabel sederhana. Pada Gambar 13.31, tabel yang kita buat adalah tabel sederhana dengan dua buah kolom dan 3 buah baris (perhatikan ada 3 buah pasangan tag … . Secara default tabel ditampilkan tanpa ada garis pada tabel tersebut. Kita dapat menambahkan garis dengan menggunakan atribut border pada tabel (lihat Gambar 13.32).
Gambar 13.32. Tabel dengan format yang lebih kompleks. Pada Gambar 13.32, terlihat tabel yang tampilannya lebih baik daripada Gambar sebelumnya. Ada beberapa atribut yang kita tambahkan pada tabel yaitu :
Rekayasa Perangkat Lunak
389
•
Atribut WIDTH untuk mengatur lebar tabel pada halaman. menggunakan satuan persen (%) atau pixel (px).
•
Atribut BORDER untuk memberikan garis pada tabel. Nilai untuk atribut ini dari dimulai dari 0 yang berarti tidak ada garis. Semakin besar angka semakin tebal garis.
•
Atribut BGCOLOR untuk menambahkan warna latar belakang pada tabel.
•
Atribut CELLPADDING untuk menentukan jarak antara teks dan tepi kiri sebuah sel (lihat gambar 13.33 untuk lebih jelasnya).
•
Atribut CELLSPACING untuk menentukan jarak bagian sel terhadap tepi dalam bingkai tabel (lihat gambar 13.33 untuk lebih jelasnya).
Kita dapat
Gambar 13.33. Cellpadding, cellspacing dan border. Seperti halnya perangkat lunak word-processor, pada HTML kita dapat menggabungkan dua atau lebih sel menjadi satu buah sel. Untuk menggabung baris dapat digunakan atribut ROWSPAN dan untuk menggabung kolom dapat digunakan atribut COLSPAN. Contoh penggunaannya dapat dilihat pada Gambar 13.34 dan 13.35.
390
Disain Web Statis dan HTML
Gambar 13.34. Rowspan.
Gambar 13.35. Colspan. Sel pada tabel tidak selalu harus berisi teks namun dapat juga berisi gambar seperti terlihat pada Gambar 13.36.
Rekayasa Perangkat Lunak
391
Gambar 13.36. Tabel dengan sel berisi gambar. 13.4.6. Link antar Dokumen
Link merupakan pautan untuk membuka atau memanggil halaman web atau file tertentu. Link merupakan tag yang sangat penting dalam penggunaan HTML, karena disinilah letak perbedaan antara dokumen HTML dengan dokumen teks yang lain. Link dapat dibuat dengan memberi perintah tag anchor . Anchor memiliki beberapa atribut, diantaranya HREF yang berfungsi untuk membuat link ke dokumen HTML tertentu dan NAME yang berfungsi untuk memberi tanda/nama titik tertentu pada dokumen HTML yang sama. Contoh penggunaan tag anchor dapat dilihat pada Gambar 13.37.
Gambar 13.37. Penggunaan tag anchor.
392
Disain Web Statis dan HTML
Atribut HREF dapat digunakan untuk memanggil halaman web pada sistem yang sama (pada satu komputer) seperti ditunjukkan pada Gambar 13.37. Pada kasus ini kita tinggal menuliskan lokasi dimana halaman yang akan kita panggil berada. HREF dapat juga kita gunakan untuk memanggil halaman lain diluar sistem kita atau memanggil situs-situs lain di internet. Caranya dengan mengetikkan alamat URL situs yang akan kita panggil. Cobalah ketikkan kode HTML berikut ini dengan teks editor kemudian simpan file dengan ekstensi .htm. DAFTAR ALAMAT MESIN PENCARI <menu>
RINGKASAN
•
Teknologi disain web terbagi menjadi beberapa layer (lapisan), yaitu structural layer, presentation layer dan behavioral layer.
•
Web statis adalah halaman web yang isi data dan informasinya tidak berubahubah. Sedangkan web dinamis, memiliki isi data dan informasi yang berbedabeda tergantung input apa yang disampaikan client.
•
Pembuatan halaman web membutuhkan dukungan persiapan perangkat keras, perangkat lunak dan pemahaman teknologi pembuatan web.
•
HTML (Hypertext Markup Language) merupakan bahasa yang digunakan untuk pembuatan halaman web dilakukan dengan cara disisipkan (embedded language) pada dokumen dengan memberi tanda tertentu yang disebut tag.
•
Dokumen HTML secara umum akan terdiri dari dua bagian yaitu Header dan Body.
•
HTML menyediakan tag-tag untuk pendeskripsian dokumen dan format dokumen yang lengkap.
•
Pada halaman HTML dapat ditambahkan gambar, tabel, suara, atau file-file lain.
13.6.
SOAL-SOAL LATIHAN
1. Apakah perbedaan antara web statis dan web dinamis? 2. Kunjungilah beberapa situs, kemudian cermatilah apakan halaman-halaman web yang tersedia termasuk halaman web statis ataukah dinamis? 3. Bukalah sebuah situs tertentu kemudian dari menu bar web browser kalian, pilih View kemudian pilih Source. Pada jendela yang muncul, cermatilah kode-kode HTML yang muncul. Cari bagian mana yang merupakan kode-
Rekayasa Perangkat Lunak
393
kode untuk format dokumen, tabel, gambar, dan elemen-elemen HTML yang lain. 4. Buatlah halaman HTML seperti berikut.
5. Buat lagi halaman web seperti berikut.
394
Disain Web Statis dan HTML
Gambar 14.1. Halaman pencarian Google . Bagi kalian yang sering berselancar di internet gambar seperti di atas hampir pasti sering kalian jumpai. Gambar hasil pencarian dari Google di atas dapat digolongkan dalam halaman-halaman web dinamis. Hal ini karena apa yang akan ditampilkan berubah-ubah tergantung pada apa yang kita inputkan. Bab ini membahas tiga standar kompetensi yaitu membuat halaman web dinamis dasar, membuat halaman dinamis tingkat lanjut dan membuat program aplikasi web berbasis JSP. Penggabungan tiga kompetensi ini karena kedekatan isi kompetensi dasar. Penyusunan sub bab tidak mengacu langsung pada kompetensi dasar, namun lebih mengacu pada urutan dan kedekatan pokok bahasan. Rangkuman diletakkan pada akhir bab dilanjutkan dengan soal-soal latihan yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Sebelum mempelajari kompetensi ini ingatlah kembali dasar sistem komputer, sistem operasi, algoritma pemrograman dasar, pemrogaman Java, web statis dan HTML.
Rekayasa Perangkat Lunak
395
TUJUAN Setelah mempelajari bab ini diharapkan kalian akan mampu : o Mempersiapkan lingkungan teknis o Membuat halaman dinamis o Menambahkan fungsi-fungsi pada halaman dinamis o Menguji halaman dinamis o Memahami konsep pemrograman web o Mempersiapkan pembuatan aplikasi o Mengenal bahasa-bahasa skrip untuk pemrograman web o Mengenali isu-isu keamanan web o Menjelaskan kebutuhan perangkat lunak untuk aplikasi web berbasis JSP o Menjelaskan dasar-dasar JSP 14.1.
DASAR WEB DINAMIS
Pengertian tentang web dinamis telah disinggung secara ringkas pada Bab 13. Pada bab ini kita akan lebih dalam mempelajari web dinamis. 14.1.1. Kebutuhan Lingkungan Teknis Ada perbedaan yang penting dalam kebutuhan lingkungan pengembangan antara web statis dan web dinamis. Pada bab sebelumnya kalian telah mengetahui bahwa ada beberapa kebutuhan perangkat untuk membuat halaman web statis, antara lain perangkat komputer personal, sistem operasi, text editor atau perangkat lunak pembuat halaman web, dan web browser. Beberapa kebutuhan tersebut dapat digunakan untuk lingkungan web statis, namun beberapa perangkat tambahan juga diperlukan. •
Perangkat keras Pengembangan web dinamis membutuhkan perangkat keras yang lebih tinggi spesifikasinya dibanding web statis. Umumnya pengembang akan melakukan pembuatan web dinamis pada satu komputer yang berperan sekaligus sebagai server dan client. Tapi, seringkali juga dibutuhkan lebih dari satu komputer, dimana satu komputer berperan sebagai server dan yang lainnya sebagai client. Pada komputer yang berperan sebagai server maka spesifikasi teknisnya harus lebih tinggi dari komputer client. Kebutuhan prosesor yang lebih cepat dan memori utama yang lebih besar merupakan kebutuhan mutlak.
•
Perangkat lunak Sistem operasi yang digunakan pada pengembangan web dinamis lebih baik jika menggunakan versi yang mendukung. Biasanya pembuat sistem operasi akan menyediakan versi yang memang khusus diperuntukkan bagi server. Versi ini biasanya memiliki tingkat keamanan dan stabilitas yang lebih tinggi dari versi desktop-nya. Sebagai contoh, pada Linux ada distro Ubuntu
396
Web Dinamis Berbasis JSP
versi server, SuSe menyediakan versi Enterprise Server, dan demikian juga distro-distro lainnya. Sedangkan pada Windows tersedia Windows NT, Windows Server 2000, Windows Server 2003 dan yang terbaru Windows Server 2008. Kebutuhan perangkat lunak yang sangat membedakan antara web statis dan web dinamis adalah bahasa pemrograman sisi server. Bahasa pemrograman ini diinstall untuk digunakan web server menerjemahkan perintah-perintah tertentu dalam bahasa tertentu. Sebagai contoh jika kita hanya menginstall web server Apache saja, maka kita tidak dapat menjalankan halaman web dinamis yang kita tulis dengan bahasa pemrograman PHP atau JSP. Agar dapat menjalankan halaman web dinamis tersebut kita perlu menginstall PHP atau Tomcat. Perangkat pengembang web dinamis saat ini sudah banyak tersedia, meskipun beberapa memiliki harga yang relative mahal. Beberapa diantaranya adalah Microsoft Visual Studio, Borland Delphi Studio, Adobe Dreamweaver, dan lain-lain. Perangkat lunak ini selain dapat sebagai HTML Editor juga mendukung bahasa pemrograman server seperti ASP.Net, PHP, JSP, dan ColdFusion. Perangkat lunak pengembang yang gratis juga tersedia, antara lain NetBeans yang mendukung penuh JSP, Eclipse yang mendukung banyak bahasa pemrograman, Komodo Editor, dan lain-lain. Meskipun gratis, tetapi fasilitas yang disediakan tidak kalah dengan yang tidak gratis. Perangkat lunak lain yang dibutuhkan adalah DBMS. Hal ini karena biasanya web dinamis menggunakan basis data sebagai tempat penyimpanan data. DBMS personal seperti Microsoft Access bukan pilihan yang baik untuk web dinamis, karena factor keamanan dan kinerjanya yang tidak sesuai dengan sifat-sifat web dinamis. Basis data berbasis SQL yang bersifat server seperti MySQL, Oracle, Microsoft SQL Server, dan lain-lain merupakan pilihan yang cocok untuk digunakan dalam web dinamis. 14.1.2. Pemrograman Web Dinamis Pemrograman web merupakan usaha untuk membuat halaman web dengan Pemrograman web (web menggunakan bahasa pemrograman web (script). programming) dikenal juga dengan istilah pengembangan web (web development). Istilah lain yang mungkin juga cukup terkenal adalah web design. Web design lebih memfokuskan bagaimana merancang tampilan halaman-halaman web menjadi menarik bila dilihat. Atau boleh dikatakan web design lebih pada aspek visualnya sedangkan web programming lebih fokus pada aspek logika proses yang terjadi di dalam halaman-halaman web. Seorang web programmer mungkin juga seorang web designer, namun biasanya pekerjaan ini dipisahkan orangnya karena perbedaan fokus penekanannya. Untuk membuat interaksi yang baik, dibutuhkan beberapa model pemrograman web. Model pemrograman yang umum digunakan adalah client-side dan server-side. Client dan server dalam kasus ini menunjukkan dua tempat yang berbeda. Server
Rekayasa Perangkat Lunak
397
adalah komputer yang bertindak sebagai pihak yang melayani permintaan data atau informasi. Sedangkan Client adalah komputer pengguna yang hendak mengakses program ke server untuk meminta data atau informasi dengan menggunakan alamat yang unik. Secara umum interaksi dan pertukaran data antara client dan server dalam internet tampak pada gambar 14.2. Pada gambar tersebut, tampak bahwa
segala proses dilakukan di web-server (server-side) sedangkan client hanya akan menerima hasil olahan dari web-server yaitu berupa halaman-halaman dalam format HTML.
Gambar 14.2. Pertukaran data antara client dan server. Biasanya perangkat komputer yang bertindak sebagai server akan berjalan terus-menerus tanpa henti dan berperan sebagai tempat dimana file/program dari aplikasi web ditempatkan. Secara umum, untuk dapat mengakses layanan ke server dibutuhkan browser seperti Internet Explorer (IE), Opera, Mozilla dan Netscape.
398
Web Dinamis Berbasis JSP
14.1.3. Bahasa Skrip untuk Pemrograman Web Seperti dijelaskan di atas ada dua model pemrograman web yaitu client-side dan server-side. Bahasa pemrograman untuk membuat web dinamis juga terbagi menjadi dua yaitu client-side script dan server-side script. Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi client biasa disebut sebagai client-side script. Client-side script yang umum digunakan adalah JavaScript dan VBScript. Keuntungan utama dari client-side script adalah waktu prosesnya yang jauh lebih cepat dibanding server-side. Hal ini karena seluruh permintaan pengguna akan diproses pada komputer pengguna sendiri. Namun masalah terbesar dari aplikasi dengan client-side script adalah keamanan kode dan data. Hal karena pengguna dapat dengan mudah membuka dan melihat kode program. Contoh penggunaan client-side script adalah : -
aplikasi web untuk kalkulator, tanggal atau permainan.
-
pemeriksaan event pada browser, jika mouse diklik kanan maka akan muncul keterangan yang dibutuhkan.
-
validasi isi form yang diinputkan oleh pengguna, sebelum isi form tersebut dikirim ke server.
Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi server biasa disebut sebagai server-side script. Ada beberapa keuntungan pada penggunaan server-side script, yaitu : -
Keamanan kode
Script yang kita buat tidak akan dapat dibaca oleh user karena seluruhnya akan disimpan dan dijalankan di web server. Yang akan dikirim ke client (pengguna) adalah hasil pengolahan yang berupa dokumen dalam format HTML saja.
-
Koneksi dengan basis data Kemampuan koneksi dengan basis data merupakan keuntungan terbesar dari
server-side script. Dengan kemampuan ini informasi yang dihasilkan oleh web server menjadi sangat dinamis bukan lagi halaman-halaman statis. Informasi yang disampaikan ke user tergantung dari apa yang diinginkan oleh user tersebut.
-
Dapat melakukan tracking (pelacakan) pengguna Dengan server-side script, dapat diketahui siapakah user yang sedang akses ke aplikasi web dengan menggunakan fasilitas session.
Saat ini ada tiga teknologi utama yang digunakan dalam server side script, yaitu ASP (termasuk ASP.Net), PHP, dan JSP. JSP akan kita bahas pada bagian lain dari bab ini.
Rekayasa Perangkat Lunak
399
•
ASP ASP sebenarnya bukan bahasa pemrograman karena ASP adalah mesin Bahasa (engine) untuk server side script yang ditanamkan pada IIS. pemrograman yang dipakai adalah VBScript. Namun orang lebih sering menyebut ASP saja. Secara default ini adalah server side script pada web server Microsoft Windows. Seperti halnya bahasa pemrograman web lainnya, untuk menandai bahwa suatu kode dalam halaman web merupakan VBScript maka digunakan tag sebagai penanda. Berikut ini suatu contoh VBScript: <% Response.Write("Hello World!") %>
Atau sebagai berikut: <%= "Hello World!" %> Pada kode di atas bagian yang ditandai dengan <% dan %> merupakan bagian yang memuat kode VBScript. VBScript merupakan bahasa yang sangat mirip dengan Visual Basic. Namun telah disesuaikan dengan lingkungan web. Dokumen berisi kode ini dapat disimpan dalam bentuk html atau dengan ekstensi .asp. Namun yang paling penting adalah dokumen tersebut harus diletakkan pada direktory yang dapat dibaca dan dieksekusi oleh web server IIS. ASP.Net merupakan versi lanjutan dari ASP, namun dengan teknologi yang sangat berbeda. ASP.Net dibangun berdasarkan pada teknologi .Net yang dikembangkan oleh Microsoft. Bahasa yang digunakan tidak lagi VBScript namun telah menggunakan kemampuan penuh dari salah satu dari bahasabahasa dalam kelompok .Net yaitu Visual Basic.NET, C#, Visual J. Dengan teknologi .Net memungkinkan tag-tag HTML digantikan secara penuh oleh script-script yang ditulis dengan bahasa-bahasa .Net. •
PHP PHP adalah bahasa pemrograman yang didesain khusus untuk membuat halaman web. PHP adalah singkatan dari PHP Hypertext Preprocessor. Singkatan yang agak aneh. Awalnya, PHP adalah singkatan dari Personal Home Page yang pertama kali diciptakan oleh Rasmus Lerdorf. PHP diciptakan pertama kali untuk keperluan mencatat jumlah pengunjung homepagenya. Perkembangan php saat ini dapat dilihat pada www.php.net.
400
Web Dinamis Berbasis JSP
PHP adalah salah satu bahasa server-side yang paling populer. Kepopulerannya disebabkan kelebihan-kelebihannya dibanding bahasa sejenis, seperti Perl dan CGI. PHP mampu menutupi kekurangan pada bahasa pemrograman web pada umumnya. PHP mudah dibuat dan cepat dijalankan. PHP dapat berjalan dalam web server yang berbeda, seperti Apache, PWS, IIS dan sebagainya. PHP juga dapat berjalan dalam sistem operasi yang berbeda pula, seperti UNIX, Windows, Mac OS X dan Linux. PHP diterbitkan secara gratis. Source code PHP dapat di-download tanpa perlu megeluarkan uang. PHP juga termasuk bahasa yang embedded (bisa diletakkan di dalam tag HTML). 14.1.4. Persiapan Membuat Halaman Web Dinamis Persiapan yang perlu dilakukan sebelum membuat halaman web dinamis antara lain adalah: •
Memeriksa apakah web server sudah terinstal dengan benar dan berjalan sebagaimana mestinya. Pada system operasi windows, kita dapat memeriksa apakah web server berjalan atau tidak melalui jendela Service. Buka Control Panel, kemudian klik ganda pada ikon Administrative Tools. Pilih ikon Service dan klik ganda pada ikon tersebut sampai terbuka jendela seperti pada Gambar 14.3.
Gambar 14.3. Jendela Services. Pada jendela Services tersebut cari nama servis web server kalian. Jika kalian menggunakan IIS cari nama Internet Information Services pada kolom nama. Jika kalian memakai Apache, cari juga nama Apache. Jika belum ada mungkin
Rekayasa Perangkat Lunak
401
belum terinstal atau belum didaftarkan sebagai servis. Jika sudah ada maka periksalah apakah sudah dijalankan apa belum dengan cara memeriksa kolom Jika belum, klik start untuk status apakah sudah started atau belum. menjalankan servis tersebut. Setelah itu ujilah dengan menjalankan web browser kalian. Ketikkan pada bagian alamat : http://localhost/ kemudian tekan enter. Pada beberapa konfigurasi web server, pemanggilan alamat mungkin harus menyertakan nomor port seperti http://localhost:8080/. Jika kalian mendapati halaman muka web server kalian tampil (lihat Gambar 14.4) berarti web server telah dapat berjalan. Tetapi jika tidak muncul atau terjadi pesan kesalahan berarti web server belum dapat berjalan dengan baik.
Gambar 14.4. Opera sedang memanggil alamat server. •
Memeriksa apakah bahasa pemrograman server yang akan digunakan sudah terinstall dan dapat dipanggil oleh web server. Pemeriksaan dapat dilakukan dengan cara memeriksa daftar perangkat lunak yang sudah diinstal di dalam sistem. Pada Windows dapat dilakukan dengan cara membuka jendela Add and Remove Programs seperti pada Gambar 14.5. Jika perangkat lunak bahasa pemrograman kalian sudah terinstal maka akan terdaftar pada jendela ini.
402
Web Dinamis Berbasis JSP
Gambar 14.5. Daftar perangkat lunak yang terinstal pada Windows. •
Mempersiapkan lokasi penyimpanan file-file kode program. File-file yang berisi kode-kode server-side script harus diletakkan dalam direktori yang bisa dibaca oleh web server. Sebagai contoh pada beberapa distribusi Linux file-file PHP disimpan pada direktori /usr/var/www/ dibeberapa distribusi yang lain disimpan di direktori /svr/www/. Pada Microsoft Windows demikian juga. Lokasi ini dapat diubah dengan cara mengedit file konfigurasi Apache Web Server (httpd.conf). Contoh lokasi penyimpanan file-file PHP dapat dilihat pada Gambar 14.6.
Rekayasa Perangkat Lunak
403
Gambar 14.6. Lokasi direktori yang bisa dibaca web server. 14.1.5. Pembuatan dan Pengujian Halaman Web Dinamis Pada bagian ini kita akan mencoba membuat halaman dinamis sederhana dengan bahasa PHP pada web server Apache. Buka teks editor kalian (bisa menggunakan Notepad) kemudian ketikkan kode berikut ini.
Salam kenal ya..!!!”;
Simpan file dengan nama 21_1.php dan simpan di direktori yang bisa diakses
web server Apache (pada kasus ini disimpan di direktori c:\appserv\www\scripts\).
Bukalah web browser kalian kemudian ketikkan di halaman alamat: http://localhost:8080/scripts/21_2.php. Localhost adalah nama server-nya dan 8080 adalah port dimana Apache dijalankan. Perhatikan bagaimana menuliskan alamat ini dan bandingkan dengan lokasi asli dari file tersebut. Jika semuanya lancar maka kalian akan mendapati tampilan seperti pada Gambar 14.7. Halaman web dinamis harus dipanggil dengan cara tersebut. Karena memang hanya bisa dijalankan oleh web server. Kalau dengan file halaman web statis, kalian bisa langsung klik ganda pada file tersebut dan web browser akan menampilkan hasilnya. Tetapi dengan halaman web dinamis tidak bisa dengan cara tersebut.
404
Web Dinamis Berbasis JSP
Cobalah klik ganda pada halama web dinamis yang telah kalian buat di atas. Bagaimanakah outputnya?
Gambar 14.7. Pengujian halaman web dinamis. 14.2.
SEKILAS TENTANG JSP
Seperti telah dijelaskan di atas, Java Server Pages (JSP) adalah bahasa scripting untuk web programming yang bersifat server side seperti halnya PHP dan ASP. JSP dapat berupa gabungan antara baris HTML dan fungsi-fungsi dari JSP itu sendiri. JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan berjalan di Platform Java, serta merupakan bagian teknologi J2EE (Java 2 Enterprise Edition). Teknologi JSP menyediakan cara yang lebih mudah dan cepat untuk membuat halaman-halaman web yang menampilkan isi secara dinamik. Teknologi JSP didesain untuk mempermudah dan mempercepat pembuatan aplikasi berbasis web yang bekerja dengan berbagai macam web server, application server, browser dan development tool.
Rekayasa Perangkat Lunak
405
14.2.1. Java dan JSP Ada tiga cara untuk menggunakan teknologi Java dalam lingkungan web, yaitu Applet merupakan program Java yang disisipkan pada halaman HTML dengan menggunakan tag <APPLET>. Kita dapat membuat sebuah program yang kompleks dengan menggunakan bahasa Java kemudian jika ingin ditampilkan dalam halaman web, kita menyimpan program tersebut dalam bentuk applet dan menyisipkannya pada halaman-halaman HTML. Applet ini akan dieksekusi oleh Java Virtual Machine (JVM) pada browser. Sayangnya seringkali komputer client tidak didukung oleh JVM, sehingga applet tersebut tidak dapat dijalankan.
applet, servlet dan JSP.
Servlet adalah program yang ditulis dengan bahasa Java yang dijalankan pada server yang terkoneksi web. Pada servlet, komputer client tidak membutuhkan JVM,
karena semua kode program akan dieksekusi di sisi server. Output yang akan disampaikan kepada browser client adalah murni HTML. Servlet ini akan dikompilasi dalam bentuk class. Servlet secara umum mampu meningkatkan sisi interaktif dan dinamis halaman web. Kelemahan dari servlet adalah teks-teks HTML yang berisi tampilan halaman harus dibuat dengan menggunakan bahasa pemrograman Java. Hal ini menyulitkan jika kita ingin mengubah tampilan bagian HTML-nya, karena berarti kita harus membuka kembali kode program java di servlet. JSP merupakan solusi dari servlet. Kita tidak perlu mengkodekan teks-teks HTML pada program, tapi cukup menyisipkan kode JSP pada teks HTML. Artinya bagian static yang berupa tag-tag HTML akan terpisah dari kode JSP. Kita dapat membuat halaman web static dengan HTML / Web editor, kemudian kita sisipi dengan kode JSP untuk membuat halaman menjadi web dinamis. 14.2.2. Mekanisme Kerja Aplikasi Web Berbasis JSP Secara umum aplikasi web berbasis JSP akan mengikuti mekanisme seperti Gambar 14.8. Halaman-halaman web yang mengandung kode JSP akan dikirim ke web server. Kemudian web server akan memanggil perangkat lunak penerjemah JSP. Oleh penerjemah ini kode JSP akan dirubah menjadi file sumber berekstensi .Java. file ini akan dikompilasi untuk menghasilkan class. Hasil dari kompilasi ini akan dijalankan kemudian hasilnya akan disampaikan kepada web server untuk diteruskan pada browser client.
Gambar 14.8. Mekanisme kerja aplikasi web dengan JSP.
406
Web Dinamis Berbasis JSP
Sekilas proses di atas terlihat bertele-tele. Pada awalnya, memang untuk menampilkan halaman yang mengandung JSP terasa lambat karena proses kompilasi harus dilakukan. Tetapi ketika memanggil untuk yang kedua kali maka proses penampilan halaman akan sangat cepat. Hal ini karena proses kompilasi tidak perlu dilakukan lagi. 14.2.3. Kebutuhan Perangkat Lunak dan Konfigurasi Untuk membangun aplikasi web berbasis JSP, diperlukan perangkat lunak yang hampir sama dengan web dinamis lainnya. Namun ada kekhususan dibanding dengan ASP atau PHP. Hal ini karena perbedaan mekanisme proses antara JSP dengan ASP atau PHP. Selain perangkat lunak yang telah disebutkan di bagian awal berikut ini adalah kebutuhan perangkat lunak tambahan untuk JSP. •
Java Development Kit (JDK). Karena JSP berdasarkan bahasa Java, maka JDK harus terinstal di dalam komputer. JDK telah dibahas secara singkat pada bab 8.
•
Tomcat. Tomcat adalah servlet container dan implementasi JSP. Dibutuhkan untuk mensimulasi komputer personal menjadi web server. Tomcat biasanya diinstalkan di atas web server Apache, sehingga orang sering menyebut sebagai Apache Tomcat. Perangkat lunak ini dapat didownload gratis di situs http://jakarta.apache.org.
•
Aplikasi pengembang terpadu (IDE) seperti NetBeans atau Eclipse. Meskipun membuat halaman JSP bisa dengan menggunakan teks editor biasa namun disarankan untuk menggunakan aplikasi seperti NetBeans untuk mempermudah pembuatan halaman web. Bahkan pada versi 6.1. (dapat didownload di http://www.netbeans.org) selain mendapatkan IDE kita juga mendapatkan web server dan servlet container (Apache Tomcat) terpadu (Gambar 14.9). Kita juga bisa menggunakan aplikasi server yang sangat kuat yaitu SUN Java Application Server (Gambar 14.10) yang juga terintegrasi pada paket penuh NetBeans. Pada buku ini kita akan banyak menggunakan fasilitas dari NetBeans baik untuk konfigurasi maupun untuk membuat halaman-halaman JSP.
Rekayasa Perangkat Lunak
407
Gambar 14.9. NetBeans 6.1 dengan Apache Tomcat terintegrasi.
Gambar 14.10. Admin Console Java Application Server.
408
Web Dinamis Berbasis JSP
Setelah semua terinstal dengan benar, maka langkah yang kedua adalah konfigurasi, terutama lokasi penyimpanan file. Buka NetBeans, kemudian setelah terbuka pilih menu Tools kemudian pilih Options. Pada jendela Options (Gambar 14.11), pilih tab Miscellaneous. Klik Add Directory untuk untuk membuka jendela Add Local Directory. Pilih lokasi kemudian tekan OK. Pada klik Ok pada jendela Options untuk keluar.
Gambar 14.11. Penentuan lokasi penyimpanan file. Untuk menguji apakah halaman JSP dapat dijalankan, pada halaman awal NetBeans, klik menu File dan pilih New Project. Jendela New Project seperti Gambar 14.12. akan terbuka. Pada bagian Choose Project pilih kategori Web dan pada Projects pilih Web Application. Klik Next untuk melanjutkan pada menentukan nama dan lokasi penyimpanan project (Gambar 14.13). klik Next untuk melanjutkan menentukan tipe dan setting server (Gambar 14.14). Pada bagian ini kita dapat memilih apakah menggunakan Apache Tomcat atau GlassFish (Java Application Server). Klik Finish untuk menyelesaikan konfigurasi aplikasi web.
Rekayasa Perangkat Lunak
409
Gambar 14.12. Penetuan tipe project.
Gambar 14.13. Penentuan nama dan lokasi project.
410
Web Dinamis Berbasis JSP
Gambar 14.14. Tipe dan pengaturan server. Setelah kalian menekan Finish kalian akan dihadapkan pada tampilan seperti pada Gambar 14.15.
Gambar 14.15. Lingkungan kerja NetBeans.
Rekayasa Perangkat Lunak
411
Gambar 14.16. Struktur direktori aplikasi JSP
Perhatikan pada jendela Project klik Files kemudian cermati struktur direktori pada direktori JSP-01 (Gambar 14.16). Struktur direktori aplikasi JSP harus mengikuti aturan yang ketat. Di bawah direktori JSP-01 terdapat direktori dengan penting yaitu web. direktori ini tempat kita menyimpan file dengan ekstensi .jsp. Di bawah direktori web terdapat direktori WEBINF. Direktori ini harus ditulis namanya seperti ini, jika tidak maka aplikasi tidak akan jalan. Direktori ini berisi file-file konfigurasi yang penting bagi jalannya aplikasi web dengan JSP.
Coba kalian jalankan halaman JSP yang telah otomatis dibuatkan oleh NetBeans dengan cara pilih menu Run, kemudian pilih Run Main Project. Kode program yang dibuatkan otomatis oleh NetBeans ini seperti berikut: <%-Document : index Created on : Jun 21, 2008, 9:42:26 AM Author : Aunur R. Mulyarto --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> Hello World!
Jika web browser kalian telah berhasil menampilkan halaman seperti pada Gambar 14.17, berarti kalian telah siap untuk membuat aplikasi dengan JSP. Perhatikan pada alamat URL-nya, halaman ini dipanggil dengan alamat http://localhost:8080/JSP-01/. Karena file yang kita panggil adalah file index.jsp, maka kita dibolehkan memanggil halaman tersebut tanpa menyebut nama file. Konfigurasi pada server telah membuat server mengenali bahwa halaman dengan nama index adalah halaman awal.
412
Web Dinamis Berbasis JSP
Gambar 14.17. Hasil eksekusi halaman web JSP. 14.3.
DASAR-DASAR JSP
JSP menyediakan empat kategori tag, yaitu directive, elemen scripting, komentar, dan action. Pada bagian ini kita tidak akan mempelajari tentang deklarasi variabel, struktur kontrol program, class dan method. Hal ini karena JSP didasarkan pada java, sehingga bagian-bagian tersebut sama dengan apa yang kalian pelajari pada bab tentang pemrograman Java (Bab 8). 14.3.1. Directive
Directive adalah sekumpulan tag yang menentukan bagaimana dokumen yang berisi direktif ini akan diproses. Directive digunakan JSP untuk mengirimkan “pesan” ke JSP container. Directive berguna untuk melakukan setting nilai global seperti deklarasi class atau method. Setting yang dilakukan oleh directive berlaku pada seluruh halaman (hanya halaman itu saja).
Secara umum sintaks directive adalah sebagai berikut : <%@ nama_directive atribut1=”nilai1” atribut2=”nilai2” . . %>
Directive pada JSP terdiri atas tiga jenis tentu saja dengan fungsi yang
berbeda-beda. •
Page : digunakan untuk mendefinisikan atribut-atribut yang terdapat pada halaman JSP. Atribut-atribut ini misalnya atribut language, import, info, errorpage dan lain-lain. Cara penulisannya dengan menggunakan tanda @ setelah tag JSP (<%) diikuti kata page dan atributnya. Contoh : <%@ page language=”java” %>
Rekayasa Perangkat Lunak
413
•
Include : digunakan untuk menyisipkan suatu berkas atau mengimpor suatu kelas. Cara penulisannya dengan menggunakan tanda @ setelah tag JSP (<%) diikuti kata include dan atributnya. Contoh : <%@ include file="/header.html" %>
•
Taglib : digunakan untuk mendefinisikan tag-tag yang dibuat sendiri oleh pemrogram. Cara penulisannya dengan menggunakan tanda @ setelah tag JSP (<%) diikuti kata taglib dan atributnya. Contoh: <%@ taglib uri = "http://jakarta.apache.org/taglibs/application-1.0" prefix="app" %>
14.3.2. Elemen Scripting Elemen scripting digunakan untuk menggabungkan instruksi-instruksi pemrograman Java ke dalam halaman web. Instruksi tersebut akan dieksekusi setiap kali halaman diproses sebagai permintaan. Ada tiga jenis scripting yaitu deklarasi, scriplet dan ekspresi. •
Deklarasi JSP menyediakan tag yang secara khusus ditujukan untuk melakukan pendeklarasian variable yang berlevel halaman. Variabel seperti ini akan dikenali di sepanjang halaman. Tag yang dimaksud dinamakan tag deklarasi. Tag ini berbentuk sebagai berikut : <%!.....%> Contoh 14.1. Penggunaan tag deklarasi. Ketikkan kode berikut dan simpan dengan nama contoh14-1.jsp.
<% baju = "John Mc Roe"; out.println("Merek baju : " + baju + "
"); out.println("Harga baju : " + harga + "
"); %>
414
Web Dinamis Berbasis JSP
Jalankan program tersebut maka tampilan hasil akan tampak seperti pada Gambar 14.18. Pada contoh kode ini tag deklarasi digunakan untuk mendeklarasikan dua variabel yaitu baju dengan tipe data string dan harga Perhatikan juga cara mengisi, memanggil dan dengan tipe data int. menampilkan kembali isi dari variabel dengan pernyataan out.println.
Gambar 14.18. Hasil eksekusi penggunaan tag deklarasi. •
Scriplet
Scriplet merupakan sekumpulan kode program Java uang dijalankan setiap kali halaman JSP dipanggil. Pada bagian ini kalian bisa memasukkan kode-kode program Java yang telah kalian pelajari pada Bab 8. Cara penulisannya adalah dengan memberikan tag <% kode %>.
Contoh 14.2. Penggunaan tag scriplet.
Ekspresi Ekspresi adalah satu baris perintah yang digunakan untuk mengeksekusi perintah sekaligus menampilkan dalam halaman web. Eskpresi ini mirip seperti
Rekayasa Perangkat Lunak
415
ketika kita memanggil fungsi/method pada Java. dengan menggunakan tag <%= kode %>
Cara penulisannya adalah
Contoh 14.3. Penggunaan tag ekspresi. Ketikkan kode di bawah ini kemudian simpan sebagai file jsp. <%! //Deklarasi variabel int jmlUser=3; //Deklarasi method public String Hello(String nama) { return "Hallo " + nama; } %> <TITLE>Contoh tag ekspresi JSP <% for (int i=1; i<=jmlUser; i++) { //Contoh scriplets %> <%=Hello("User "+ i + "!")%>
Jalankan kode program di atas. Tampilan output akan tampak seperti pada Gambar 14.19.
<%}%>
Gambar 14.19. Hasil eksekusi tag ekspresi.
416
Web Dinamis Berbasis JSP
14.3.3. Komentar Komentar digunakan untuk memberikan keterangan pada kode-kode JSP. Ada tiga jenis komentar yang dapat disisipkan dalam halaman JSP, yaitu komentar content, komentar JSP dan komentar bahasa script. Komentar content ditulis dengan tag . Komentar model ini tidak menampilkan output ke browser. Tapi tertulis pada source HTML. Komentar JSP merupakan tipe komentar yang hanya tampak pada kode program JSP. Ketika kode JSP dikompilasi, komentar tersebut akan dilewati dan tidak ikut dikompilasi. Komentar ini dituliskan dengan cara <%-- komentar -->. Komentar bahasa script sama dengan yang digunakan pada Java (lihat kembali bab 8). Komentar ini disisipkan pada scriplet. Pada contoh 14.3 kita telah menggunakan salah satu cara komentar bahasa script. Perhatikan pada baris yang diawali dengan tanda //. Cara yang lain adalah dengan tanda /* komentar */. 14.3.4. Action
Action mendukung beberapa aksi yang berbeda-beda. Hampir mirip dengan scripting, action akan dieksekusi setiap kali ada permintaan. Fungsi penting dari action adalah memungkinkan terjadinya transfer kontrol antar halaman, mendukung penggunaan applet Java dan memungkinkan JSP terintegrasi dengan komponen JavaBeans.
JSP mengenal tag action standar dan custom tag. Tag standar adalah tag yang didefinisikan dalam spesifikasi JSP, sedangkan custom tag adalah tag baru yang dapat didefinisikan sendiri. Pada bagian ini hanya dibahas mengenai tag action standar. Tag action standar JSP adalah sebagai berikut : •
<jsp:useBean>
•
<jsp:setProperty>
•
<jsp:getProperty>
•
<jsp:param>
•
<jsp:include>
•
<jsp:forward>
•
<jsp:plugin>
Pada buku ini kita akan mempelajari penggunaan action standard forward dan param. Forward action ini digunakan untuk mentransfer kontrol dari sebuah halaman
JSP ke halaman lain pada server lokal. Saat proses berlangsung, baris-baris kode sesudah forward action pada JSP asal tidak akan diproses lagi oleh JSP container. Proses berpindah pada halaman tujuan. Cara penulisannya adalah dengan Forward action menggunakan tag <jsp:forward page=”localURL” />. biasanya digunakan bersama-saman dengan Param action. Perhatikan contoh berikut.
Rekayasa Perangkat Lunak
417
Contoh 14.4. Penggunaan forward action untuk operasi login. Buat tiga file masing-masing bernama login.html, testlogin.jsp, dan validlogin.jsp. Isi dari masing-masing file adalah sebagai berikut. File login.html
if ((nama.equals("aunurrm")) && (pass.equals("arm"))) {
<jsp:forward page='validlogin.jsp' > <jsp:param name='id' value='<%= nama %>' /> <% } else { %> <jsp:forward page='login.html' /> <% } %> File validlogin.jsp
418
Web Dinamis Berbasis JSP
Selamat <%=request.getParameter(“id”) %>
Anda berhasil login
Jalankan halaman login.html maka kalian akan mendapatkan tampilan seperti pada Gambar 14.20. Isikan sembarang nama dan password kemudian tekan tombol Login. Kalian tidak akan mendapatkan hasil apa-apa. Nama dan password anda akan hilang. Demikian berulang-ulang. Sekarang masukkan pada nama ‘aunurrm’ dan passwordnya ‘arm’ (tanpa tanda petik). Tekan tombol Login, maka kalian akan mendapatkan hasil seperti pada Gambar 14.21.
Gambar 14.20. Hasil eksekusi halaman login.html
Gambar 14.21. Hasil eksekusi jika nama dan password benar.
Rekayasa Perangkat Lunak
419
Pada contoh di atas file login.html merupakan file untuk menerima input nama dan password. Pada file ini kita menggunakan fitur form pada HTML. Formulir dibentuk dengan menggunakan pasangan tag . Dua atribut utama dari FORM yang sering digunakan adalah ACTION dan METHOD. •
ACTION menentukan alamat yang akan dijalankan dan menerima semua masukan pada FORM. Jika ACTION tidak disebutkan, informasi akan dikirim ke alamat yang sama dengan halaman FORM itu sendiri.
•
METHOD digunakan untuk menentukan bagaimana informasi dikirim ke alamat yang disebutkan dalam ACTION. Nilai yang umum digunakan adalah GET dan POST. POST membuat informasi akan dikirim secara terpisah dengan alamat, sedangkan GET akan membuat informasi dikirim menjadi satu dengan alamat yang dituju.
Contoh di atas menggunakan action=”testlogin.jsp” dan metode penyampaiannya adalah post. Artinya data pada form akan dikirim ke file dengan nama testlogin.jsp yang berada satu direktori dengan file login.html. File kedua yang testlogin.jsp adalah file yang digunakan untuk menangkap input kemudian memeriksa apakah input tersebut valid atau tidak. Perintah request.getParameter digunakan untuk menerima input sesuai dengan variabel input yang ditetapkan. Sebagai contoh request.getParameter(‘nama’) berarti akan menangkap isi dari variabel nama dari file login.html. Isi dari nama dan pass ini kemudian di masukkan pada variabel string dengan nama yang sama. Kemudian dicocokkan apakah nama = ‘aunurrm’ dan pass=’arm’. Jika benar maka action forward dilakukan yaitu membawa isi yang didefinisikan di action param yaitu variabel ‘id’ ke file loginvalid.jsp. Jika tidak maka action forward juga dilakukan tetapi kembali ke file login.html. File ketiga hanya dipanggil jika syarat nama dan pass dipenuhi. menggunakan request.getParameter untuk menangkap variabel ‘id’. 14.4.
File ini juga
Keamanan dalam Web Dinamis
Web termasuk layanan internet yang paling rentan terhadap ancaman dan pelanggaran. Ada beberapa cara yang bisa dilakukan oleh pihak yang tidak bertanggung jawab terhadap suatu situs, antara lain: •
Pemanfaatan bug sistem. Para penyerang menggunakan bug (kesalahan) yang dikandung oleh sistem operasi, web server, bahasa pemrograman web, atau kode-kode lain yang terinstal di komputer server. Jika ini berhasil ditembus, maka penyerang dapat mengambil alih sistem secara keseluruhan.
•
Pemanfaatan bug pada aplikasi client. Kadang-kadang kita tidak terlalu memperhatikan bug pada aplikasi client, misalnya adanya fitur berbahaya pada web browser yang dapat dijadikan batu loncatan oleh para penyerang.
420
Web Dinamis Berbasis JSP
•
Pengaksesan tidak sah. Cara ini dilakukan dengan mendapatkan hak akses (user name dan password) secara tidak sah. Dengan menggunakan perangkat lunak tertentu, seperti password cracker, penyerang berusaha mengintip apa yang dilakukan pengguna saat login pada aplikasi web. Setelah memperoleh hak akses tersebut, mereka menggunakan untuk mengakses dan mengganggu system secara tidak sah.
•
Penyadapan transmisi informasi (eavesdropping). Informasi di internet seperti mobil yang berlalu lalang di jalan-jalan. Teknik ini termasuk tingkat tinggi. Dilakukan dengan cara mencegat dan menyadap informasi yang ditransmisikan antara web server dan web browser. Biasanya yang dituju adalah data-data rahasia seperti password, nomor account, nomor kartu kredit, dan rekaman transaksi online.
•
Penyerangan dengan Denial of Service (DOS). Bentuk penyerangan ini lebih mengarah pada lingkungan jaringan bukan pada system. Serangan ini ditujukan untuk melumpuhkan suatu system dengan cara membanjiri jaringan dengan trafik yang sangat tinggi dan terus menerus melebihi kapasitas yang didukung. Hal ini mengakibatkan system jaringan berhenti bekerja dan tidak dapat melayani permintaan pengguna.
Gambar 14.22. Penyerangan dengan DOS. Secara umum tidak ada perangkat lunak yang seratus persen menjamin bebas dari gangguan keamanan. Hal ini karena celah-celah keamanan selalu muncul di sana sini yang memungkinkan penyerangan. Namun ada beberapa langkah yang dapat digunakan untuk mengurangi resiko terserang gangguan, antara lain: •
Menjalankan server secara aman, misalnya dengan tidak memberikan kesempatan pada pengguna untuk mengakses melalu shell, membuat fasilitas perekam kesalahan (log) dari web server.
•
Menerapkan permissions atau hak akses pada direktori dan file secara ketat (buka Bab 4 untuk mempelajari lagi permissions). Permissions ini juga harus diterapkan pada file-file konfigurasi web server.
Rekayasa Perangkat Lunak
421
•
Menuliskan program aplikasi web secara aman. Sering kali kesalahan yang tidak disengaja pada pembuatan aplikasi web menjadikan aplikasi menjadi tidak aman. Ada baiknya aplikasi diperiksa dan diuji berulangkali untuk memastikan celah keamanannya sangat minimal.
•
Mencegah dan memproteksi informasi dengan cara melakukan enkripsi (penyandian) agar tidak dapat dibaca oleh penyadap.
•
Mengontrol akses ke web server. Cara ini dilakukan untuk melindungi datadata internal yang tidak bisa diakses dari luar. Beberapa cara dapat dilakukan seperti membatasi akses berdasarkan alamat IP atau domain, membatasi pengguna berdasarkan kategori tertentu, dan lain-lain.
Gambar 14.23. Membatasi akses untuk IP address tertentu. 14.5.
RINGKASAN
•
Pemrograman web merupakan usaha untuk membuat halaman web dengan menggunakan bahasa pemrograman web (script).
•
Ada dua model pemrograman web yaitu client-side dan server-side. Bahasa pemrograman untuk membuat web dinamis juga terbagi menjadi dua yaitu client-side script dan server-side script.
•
Untuk membangun aplikasi web dinamis, diperlukan persiapan pada web server, bahasa pemrograman web, lokasi penyimpanan web dinamis, dan konfigurasi dari aplikasi.
•
Java Server Pages (JSP) adalah bahasa scripting untuk web programming yang bersifat server side dan berjalan di Platform Java.
•
JSP menyediakan empat kategori tag, yaitu directive, elemen scripting, komentar, dan action.
•
Web termasuk layanan internet yang paling rentan terhadap ancaman dan pelanggaran oleh karena itu upaya pencegahan dan pengamanan web adalah sangat penting.
422
Web Dinamis Berbasis JSP
14.6.
SOAL-SOAL LATIHAN
1. Sebutkan kebutuhan perangkat keras dan lunak untuk pembuatan web dinamis. 2. Apakah perbedaan client-side script dan server side script? 3. Cobalah berselancar ke internet. Kemudian pada beberapa situs yang kalian kunjungi, cermati pada halaman URL nya (lihat pada bagian Address Bar pada web browser). Bisakah kalian menentukan teknologi pemrograman web apa yang digunakan. 4. Buatlah aplikasi sederhana dengan menggunakan JSP untuk menghitung gaji karyawan. Buat dua halaman, yang pertama adalah halaman untuk memasukkan input, yaitu nama bulan, nama karyawan, jumlah jam kerja pada bulan tersebut dan upah per jam. Sedang halaman yang kedua adalah, untuk menghitung upah karyawan (jam kerja sebulan x upah per jam) sekaligus menampilkan nama dan total gaji yang diperoleh pada bulan tersebut. 5. Kembangkan soal No 4, dengan cara menambahkan halaman login sebelum masuk halaman memasukkan input. Jika seseorang berhasil login, maka halaman memasukkan input akan tampil, tetapi jika tidak maka akan menuju ke halaman baru, yaitu untuk halaman mendaftar sebagai user.
Rekayasa Perangkat Lunak
423
424
Web Dinamis Berbasis JSP
Anonymous. 2004. Guide to the Software Engineering Body of Knowledge (SWEBOK). The Institute of Electrical and Electronics Engineers, Inc. Balter, A. 2006. Sams Teach Yourself Microsoft® SQL Server™ 2005 Express in 24 Hours. Sams. Bass, L., P. Clements, and R. Kazman. 2003. Software Architecture in Practice. 2nd Edition. Addison-Wesley. Cormen, T.H. 2001. Introduction to Algorithm: Second Edition. The MIT Press. Deek, FP., J.A.M. McHugh, and O.M. Eljabiri. 2005. Strategic software engineering : An Interdisciplinary Approach. Auerbach Publications. den Haan, P., L. Lavandowska, S.N. Panduranga, and K. Perrumal. 2004. Beginning JSP 2: From Novice to Professional. Apress. Dobson, R. 1999. Programming Microsoft Access 2000: The Developer’s Guide to Harnessing the Power of Access. Microsoft Press. Felleisen, M, R.B. Findler, M. Flatt, and S. Krishnamurthi. 2001. How to Design Programs; An Introduction to Computing and Programming. The MIT Press. Kak, A.C. 2003. Programming With Objects: A Comparative Presentation of Object Oriented Programming with C++ and Java. John Wiley & Sons, Inc. Kaisler, S.H. 2005. Software Paradigm. John Wiley & Sons, Inc. Kennedy, B. and C. Musciano. Edition. O'Reilly.
2006.
HTML & XHTML: The Definitive Guide, 6th
Lafore, R. 1998. Data Structures & Algorithm in Java. Waite Group Press. Laurie, B and P. Laurie. 2001. Apache: The Definition Guide. 2nd Edition. O’Reilly and Associates, Inc. Leffingwell, D. and D. Widrig. 2003. Managing Software Requirements: A Use Case Approach. 2nd Edition. Addison-Wesley. Lischner, R. 2000. Delphi in a Nutshell. O’Reilly and Associates, Inc.
Rekayasa Perangkat Lunak
425
Luckey, T. and J. Phillips. 2006. Software Project Management for Dummies. Wiley Publishing, Inc. McConnel, S. 2003. Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers. AddisonWesley. Meyer, B. 2000. Object Oriented Software Construction. 2nd Edition. ISE, Inc. Musciano, C. and B. Kennedy. 2002. HTML and XHTML: The Definition Guide. 4th Edition. O’Reilly and Associates, Inc. Navarro, A. 2001. Effective Web Design. 2nd Edition. SYBEX, Inc. Powell, G. 2006. Beginning Database Design. Wiley Publishing, Inc. Riordan, R.M. 2005. Professional.
Designing Effective Database Systems.
Addison Wesley
Robbins, J. N. 2006. Web Design in a Nutshell, 3rd Edition. O'Reilly. Suehring, S. 2002. MySQL Bible. Wiley Publishing, Inc. Taylor, D.A. 1998. Object Technology: A Manager’s Guide. Addison-Wesley. Van Roy, P and S. Haridi. 2004. Concepts, Techniques, and Models of Computer Programming. The MIT Press.
426
Daftar Pustaka
Abstraction Merupakan prinsip penyederhanaan dari sesuatu yang kompleks dengan cara memodelkan kelas sesuai dengan masalahnya Algoritma Urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis Array Struktur data yang menyimpan sekumpulan elemen yang bertipe sama Atribut Karakteristik atau ciri membedakan antara entitas dengan entitas yang lainnya
yang satu
Command Line Interface (CLI) Antar muka pengguna dengan model perintah-perintah teks Compiler Penerjemah bahasa pemrograman tingkat tinggi ke bahasa mesin dengan cara sekaligus seluruh kode program. Prosesnya disebut kompilasi. Component Object Model (COM) Infrastruktur yang disediakan oleh Visual Basic untuk mengakses obyekobyek atau kontrol-kontrol lain sepanjang punya antar muka yang dapat diakses oleh Visual Basic. Constraint Batasan-batasan dari masalah
Authentication Proses memeriksa keabsahan seseorang sebagai user (pengguna) pada suatu system (misalnya pada DBMS)
Control Aktivitas monitoring dan evaluasi terhadap feedback untuk menentukan apakah system telah bekerja dengan baik atau tidak
Basic Input/Output System (BIOS) Kode-kode program yang pertama kali dijalankan ketika komputer dinyalakan (booting)
Counter Variable pencacah yang digunakan dalam struktur algoritma pengulangan
Basis data (database) Kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan dalam perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya
Database Management System (DBMS) Perangkat Lunak yang khusus / spesifik ditujukan untuk pengelolaan basis data Disk Operating System (DOS) Salah satu sistem operasi lama berbasis CLI
Rekayasa Perangkat Lunak
427
Elektronika Ilmu yang mempelajari alat listrik arus lemah yang dioperasikan dengan cara mengontrol aliran elektron atau partikel bermuatan listrik dalam suatu alat Entitas Individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain Extensible Hypertext Markup Language (XHTML) HTML versi terakhir (4.01) yang ditulis ulang dengan dengan aturan-aturan yang lebih ketat mengacu pada XML Extensible Markup Language (XML) Sekumpulan aturan untuk menyusun bahasa markup Feedback Data tentang kinerja sistem Flowchart yang Skema/bagan (chart) menunjukkan aliran (flow) di dalam suatu program secara logika Gejala Signal atau tanda terjadinya suatu masalah
Ilmu komputer Suatu studi sistematis pada prosesproses algoritma yang menjelaskan dan mentransfor-masikan informasi Inheritance atau pewarisan Prinsip pewarisan sifat dari orang tua ke anak atau turunannya yang diterapkan pada kelas Inisialisasi Instruksi yang dilakukan pertama kali pada suatu variabel atau ekpresi pemrograman Input Elemen-elemen yang masuk ke dalam system Integrated Developement Environment (IDE) Lingkungan pengembangan aplikasi terintegrasi. Perangkat lunak untuk membantu mempermudah pembuatan aplikasi komputer Interpreter Penerjemah bahasa pemrograman tingkat tinggi ke bahasa mesin dengan cara satu per satu baris dibaca dan langsung diterjemahkan
Gerbang logika blok-blok penyusun dari perangkat keras elektronik
Kardinalitas Jumlah maksimum entitas pada suatu himpunan entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain
Graphical User Interface (GUI) Antar muka pengguna dengan model grafis
Konstanta Variabel yang nilai datanya bersifat tetap dan tidak bisa diubah.
Identifier Nama dari konstanta
Loop Proses pengulangan suatu perintah
suatu
428 Lampiran
variable
atau
Masalah (problem) Perbedaan antara situasi aktual dan situasi yang diharapkan atau perbedaan antara kondisi sekarang dengan target atau tujuan yang diinginkan Model Penyederhanaan dari suatu system atau Tiruan dari suatu sistem dengan sedikit atau banyak penyederhanaan Multi-tasking Kemampuan sistem operasi untuk menjalankan beberapa tugas / aplikasi secara bersamaan Multi-user Kemampuan system operasi untuk dijalankan oleh pengguna yang berbeda pada waktu bersamaan Output Perpindahan elemen-elemen yang dihasilkan dari proses perubahan ke tujuan yang diinginkan Pemecahan masalah Sebuah proses dimana suatu situasi dianalisa kemudian solusi-solusi dibuat bila ditemukan ada masalah dengan cara pendefinisian, pengurangan atau penghilangan, atau pencegahan masalah Pemrograman Berorientasi Obyek (Object Oriented Programming – OOP) Paradigma pemrograman yang menggunakan obyek dan interaksinya untuk merancang aplikasi dan program komputer Pemrograman web Usaha untuk membuat halaman web dengan menggunakan bahasa pemrograman web (script)
Perangkat lunak Seluruh instruksi yang digunakan untuk memproses informasi Permissions Proses untuk menentukan apa yang bisa dilakukan seorang pengguna pada suatu sistem Pointer Variabel yang menyimpan alamat pada memori komputer Polymorphism Kemampuan dari suatu obyek untuk mempunyai lebih dari satu bentuk Programmer Seseorang yang bekerja program komputer
membuat
Prosedur • Instruksi yang dibutuhkan oleh pengguna dalam memproses informasi • Sekumpulan perintah yang merupakan bagian dari program yang lebih besar yang berfungsi mengerjakan suatu tugas tertentu Proses Perubahan atau transformasi input menjadi output Prototyping Salah satu pendekatan dalam pengembangan perangkat lunak yang secara langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau komponen-komponen perangkat lunak akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual dilakukan
Rekayasa Perangkat Lunak 429
Pseudocode Cara penulisan algoritma dengan menggunakan kode-kode yang mirip dengan bahasa pemrograman Query Permintaan atau pencarian pada datadata tertentu pada suatu basis data Record Baris data dari suatu tabel Rekayasa Perangkat Lunak suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan
Stored procedure Potongan kode program yang dapat menerima parameter input dan menghasilkan satu atau lebih parameter output dan digunakan untuk operasi-operasi basis data Structured Query Language (SQL) Bahasa query terstruktur untuk mengelola basis data Strategi pemecahan masalah Metode atau pendekatan yang digunakan seseorang ketika menghadapi masalah Struktur algoritma Cara atau urutan untuk membuat suatu algoritma
Relationship atau relasi Hubungan yang terjadi antara sejumlah entitas
Tipe data Jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer
Sistem Kumpulan dari elemen-elemen yang saling berinteraksi untuk mencapai tujuan tertentu
Trigger Tipe khusus dari stored procedure yang akan dieksekusi ketika suatu kejadian muncul
Sistem basis data Kumpulan elemen-elemen seperti basis data, perangkat lunak, perangkat keras, dan manusia yang saling berinteraksi untuk mencapai tujuan yaitu pengorganisasian data.
Variabel Tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan pada suatu program
Software Lihat Perangkat Lunak Software Engineering Lihat Rekayasa Perangkat Lunak Solusi Bagian akhir atau output dari proses pemecahan masalah.
430 Lampiran
View Tabel virtual yang isinya berdasarkan pada query yang dilakukan pada basis data. Web browser Perangkat lunak yang berfungsi menerjemahkan kode-kode HTML menjadi tampilan yang kita kehendaki
Web dinamis Halaman-halaman web yang isi dan informasinya berubah-ubah sesuai dengan permintaan pengguna Web server Perangkat lunak yang bertindak melayani permintaan-permintaan client web terhadap halaman-halaman tertentu Web statis Halaman-halaman web yang isi dan informasinya tidak berubah-ubah
Rekayasa Perangkat Lunak 431
432 Lampiran
Berikut ini daftar alamat situs-situs internet yang penting dan digunakan sebagai rujukan dalam buku ini. Alamat
Keterangan
http://www.apache.org
Situs resmi web server Apache. Situs ini menyediakan kode sumber Apache dan file-file binary Apache yang siap diinstall di berbagai platform sistem operasi. Selain itu juga menyediakan dokumentasi Apache yang lengkap.
http://www.borland.com
Situs resmi Borland. Borland merupakan perusahaan perangkat lunak yang memproduksi Borland Delphi, Borland JBuilder, Turbo Pascal, Turbo Delphi, Borland C++ dan lain-lain.
http://www.debian.org
Situs resmi distribusi linux Debian.
http://www.eclipse.org
Situs resmi proyek eclipse, perangkat pengembang terpadu yang mendukung banyak bahasa pemrograman.
http://www.google.com
Situs resmi search engine Google.
http://www.ilmukomputer.com
Situs berbahasa Indonesia yang menyediakan dokumen-dokumen untuk belajar berbagai sub bidang dalam ilmu computer.
http://www.javasoft.com
Situs resmi yang diluncurkan Sun Microsystem dan berisi dokumentasi dan informasi online tentang bahasa pemrograman Java.
http://www.kambing.vlsm.org
Situs dengan server local di Indonesia. Situs ini menyediakan file-file iso dari berbagai jenis distribusi linux dan dapat didownload secara bebas. Selain itu situs ini juga sebagai mirror dari berbagai distribusi linux dan aplikasi yang berjalan di linux.
http://www.linuxdoc.org
Situs yang berisi dokumentasi bebas tentang linux. Sumber informasi online yang sangat bagus untuk mempelajari linux
Rekayasa Perangkat Lunak 433
http://www.microsoft.com
Situs resmi Microsoft. Microsoft merupakan perusahaan perangkat lunak yang memproduksi system operasi keluarga Windows, IDE Microsoft Visual Studio, Microsoft Office, Microsoft SQL Server, dan lain-lain.
http://www.mysql.com
Situs resmi MySQL Database Software. Situs ini menyediakan file-file instalasi MySQL untuk berbagai platform sistem operasi. Selain itu juga menyediakan dokumentasi MySQL yang lengkap.
http://www.netbeans.org
Situs resmi IDE Netbeans, perangkat lunak pengembang aplikasi Java
http://www.php.net
Situs resmi bahasa pemrograman dan interpreter PHP. Situs ini menyediakan kode sumber dan file-file instalasi PHP untuk berbagai platform sistem operasi. Selain itu juga menyediakan dokumentasi PHP yang lengkap.
http://www.w3.org
Situs resmi The World Wide Web Consortium (W3C). W3C adalah konsorsium yang menentapkan standar dalam teknologi internet, terutama tentang HTML, XML, CSS, XHTML dan teknologi lain. Dokumentasi tentang teknologi tersebut dapat dijumpai di situs ini.
434 Lampiran
IsNumeric(ekspresi) Fungsi ini digunakan untuk menguji apakah suatu ekspresi menghasilkan nilai numeric atau bukan. Nilai yang dikembalikan adalah Boolean. IsEmpty(ekspresi) Fungsi untuk memeriksa apakah suatu ekspresi telah berisi nilai atau tidak. Nilai yang dikembalikan adalah Boolean.. IsNull(ekspresi) Fungsi untuk memeriksa apakah suatu ekspresi mengandung data yang tidak valid, biasanya digunakan untuk memeriksa isi field recordset. IsArray(varname) Fungsi untuk memeriksa apakah suatu variabel adalah suatu array. IsDate(ekspresi) Fungsi untuk memeriksa apakah suatu ekspresi dapat dikonversi ke date. IsError(ekspresi) Fungsi untuk memeriksa apakah suatu ekspresi adalah nilai error IsObject(ekspresi) Fungsi untuk memeriksa apakah suatu ekspresi mengacu pada suatu OLE Automation object. IsMissing(argname) Fungsi untuk memeriksa apakah suatu argumen optional pada procedure ada dilewatkan atau tidak CBool(ekspresi) Konversi suatu ekspresi ke Boolean CByte(ekspresi) Konversi ekspresi ke Byte CCur(ekspresi) Konversi suatu ekspresi ke Currency CDate(date) Konversi suatu ekspresi ke date CDbl(ekspresi) Konversi suatu ekspresi ke Double CInt(ekspresi) Konversi suatu ekspresi ke Integer
Rekayasa Perangkat Lunak 435
CLng(ekspresi) Konversi suatu ekspresi ke Long CSng(ekspresi) Konversi suatu ekspresi ke single CStr(ekspresi) Konversi suatu ekspresi ke string CVar(ekspresi) Konversi suatu ekspresi ke Variant Asc(string) Fungsi untuk menampilkan kode character dari huruf pertama di suatu string. Chr(charcode) Fungsi untuk menampilkan karakter dari suatu kode karakter Format(ekspresi[, format[, hariPertamaDariMinggu[, mingguPertamaDariTahun]]]) Memformat suatu ekspresi berdasarkan ekspresi format Hex(number) dan Oct(number) Menampilkan string yang mewakili Octal atau Hexa dari suatu bilangan Str(number) Menampilkan string yang mewakili suatu angka. Val(string) Menampilkan angka yang terkandung dalam suatu string. Now Mengembalikan suatu Variant (Date) yang menunjukkan tanggal dan waktu berdasarkan sistem komputer. Time Mengembalikan waktu sistem sekarang Timer Mengembalikan suatu bilangan yang menunjukan jumlah detik sejak tengah malam Date Mengembalikan tanggal sistem sekarang Time = Time dan Date = Date Mengatur waktu atau tanggal sistem Untuk sistem yang menjalankan Microsoft Windows 95, tanggal yang dibutuhkan harus berupa tanggal dari 1 Jan 1998 sampai 31 Des 2099. Untuk sistem yang menjalankan Microsoft Windows NT, tanggal yang dibutuhkan harus berupa tanggal dari 1 Jan 1980 sampai 31 Desember 2079. Hour(time), Minute(time) dan Second(time) Mengembalikan suatu Variant (Integer) berupa bilangan 0 s/d 23 untuk jam, 0 s/d 59 untuk menit, dan 0 s/d 59 untuk detik.
436 Lampiran
Day(date), Month(date), dan Year(date) Mengembalikan suatu Variant (Integer) berupa bilangan 1 s/d 31 untuk bulan, 1 s/d 12 untuk bulan, dan tahun.
Rekayasa Perangkat Lunak 437
Aunur Rofiq Mulyarto, penulis buku ini lahir di Blitar pada tanggal 25 Nopember 1970. Pada usia 4 tahun, keluarganya pindah ke Kota Malang, sehingga masa kecil dihabiskan di Kota Malang. Menyelesaikan sekolah dasar pada SDN Dinoyo 2 Malang dan sekolah menengah pertama pada MTs Negeri 1 Malang. Penulis kemudian melanjutkan pada SMA Negeri 2 di kota yang sama. Setamat dari SMA pada tahun 1989, penulis melanjutkan ke jenjang perguruan tinggi di Institut Pertanian Bogor, melalui jalur PMDK (Penelusuran Minat dan Bakat). Jurusan yang diambil adalah Teknologi Industri Pertanian. Setelah berkutat dengan bangku kuliah selama kurang lebih 5 tahun, pada tahun 1994 penulis berhasil memperoleh gelar Sarjana Teknologi Pertanian. Setelah lulus, penulis sempat bekerja pada sebuah perusahaan sepatu di Sidoarjo, sebelum diterima menjadi staf pengajar pada Jurusan Teknologi Industri Pertanian, Fakultas Teknologi Pertanian, Universitas Brawijaya Malang pada tahun 1999. Pada tahun 2001 penulis memperoleh kesempatan tugas belajar pada Program Internasional Master of Science in Information Technology for Natural Resources Management yang diselenggarakan oleh IPB dan SEAMEO – BIOTROP. Gelar Master diperoleh pada tahun 2003 dengan predikat cumlaude. Saat ini selain aktif sebagai staf pengajar Jurusan Teknologi Industri Pertanian, Fakultas Teknologi Pertanian, Universitas Brawijaya Malang, penulis juga terlibat dalam beberapa penelitian, pengabdian dan proyek-proyek pengembangan sistem informasi. Penulis cukup aktif menulis beberapa karya ilmiah, antara lain buku teks Teknik Pemrograman, buku Teks Sistem dan Teknologi Informasi, dan sejumlah tulisan jurnal ilmiah. Di sela-sela kesibukannya, penulis masih sempat menyalurkan hobi lamanya bermain music bersama rekan-rekan sejawatnya.
Rekayasa Perangkat Lunak
439