Senin, 03 Maret 2014

carii.... trf pulsa

Cara transfer pulsa all operator (sesama operator)


Transfer Pulsa Sesama Operator baik itu dari telkomsel simpati ke As,
transfer pulsa dari indosat mentari ke Im3,
transfer pulsa sesama kartu Xl ke Xl
masih bisa dilakukan tentunya dengan cara yang berbeda ada yang berupa OTA ada juga yang berupa via sms
berikut ini sebagian cara-cara Transfer Pulsa ke Nomor Sesama Operator :

1. Transfer Pulsa kartu simPATI dan Kartu AS

Ketik : *858*nomor tujuan*nominal transfer# lalu tekan OK/YES/tombol hijau/call
Contoh untuk pengiriman nominal Rp. 10.000 ke nomor 085217848484, ketik *858*085217848484*10# tekan OK/YES

Syarat :

# Minimum sisa pulsa pengirim setelah melakukan transfer Rp. 10.000
# Setiap transaksi transfer pulsa yang berhasil dikenakan biaya sebesar Rp. 600
# Status pengirim harus aktif & penerima juga harus aktif atau berada pada masa isi ulang (grace periode)


2. Transfer Pulsa kartu Indosat

Ketik: TP [NO_TUJUAN] [Denominasi] Kirim ke nomor 151
Contoh : TP 08561234567 5000
Berarti mengirim pulsa 5.000 rupiah ke nomer 08561234567
Jika berhasil maupun gagal akan menerima sms konfirmasi balasan

Syarat :

- Kartu IM3 prabayar dalam keadaan masa aktif
- Memiliki saldo pulsa minimal Rp. 10.500 (500 adalah tarif)
- Transfer minimal Rp. 5.000 dan maskimal Rp. 100.000
- Sehari hanya boleh mentransfer pulsa maksimal Rp 200.000
- Kartu penerima pulsa dalam keadaan masa aktif



3. Transfer Pulsa kartu XL (Bagi Pulsa)

ketik: BAGI [spasi] nomor XL yang dituju [spasi] nominal kirim ke 168
Contoh: BAGI 0817xxxxx 1500 kemudian dikirim ke 168

Syarat :

Pengirim harus mempunyai sisa saldo minimal Rp 10.000 setelah pulsa dikirim dan nomor pengirim berada dalam masa aktif
Bagi pengguna voucher bebas Xtra hanya bisa sebagai pengirim Bagi Pulsa



4. Transfer Pulsa kartu Esia

a. Kirim Pulsa

Ketik: TRANSFERJumlah TalkTime yang mau dikirimNo.Esia

penerima harus beserta kode areanya kirim ke 789 (tarif Rp250/SMS+PPn)
Contoh : TRANSFER 5000 02192889288

b. Kirim Masa Aktif

Ketik: WAKTUJumlah Hari tambahan masa aktif yang mau dikirimNo.Esia

penerima harus beserta kode areanya kirim ke 789 (Rp250/hari+PPn + Rp250/sms+PPn)
Contoh : WAKTU 5 02192889288



5. Transfer Pulsa kartu Axis

Ketik: *886*Jumlah Pulsa*Nomor Axis# lalu tekan OK/YES

Contoh : *886*5000*0838123456# lalu OK/YES

Syarat:

• Nomor AXIS pengirim harus berada dalam masa aktif dengan saldo pulsa minimum Rp 5 ribu setelah transfer pulsa
• Jumlah pulsa minimum yang dapat ditransfer adalah Rp 5 ribu dan maksimum Rp 100 ribu (dengan kelipatan Rp 1.000)
• Dalam satu hari, pengirim dapat melakukan transfer pulsa hingga Rp 200 ribu



6. Transfer Pulsa kartu Flexi

Cara Penggunaan
Untuk menggunakan layanan ini maka pengguna (pengirim transfer) harus melakukan registrasi terlebih dahulu untuk mendapatkan PIN, caranya :
Ketik : REG kirim ke 858 Untuk transfer pulsa :
Ketik TR No.Flexi TujuanNominalPIN
Contoh untuk transfer pulsa Rp. 20 ribu,
Ketik : TR 021707360xx 20 1234
Tarif REG Rp 80,-(termasuk PPN),
Tarif transfer Rp 45,-/transaksi
Tarif UNREG,ubah PIN Gratis

automobiles, sejarah,,..

10 Peristiwa Pertama Dalam Dunia Otomotif



PAGI itu Udin hendak menemui kliennya di tempat yang sudah disepakati. Sial, Udin bangun agak telat. Segera dia bergegas memacu mobilnya. Udin terpaksa ambil jalan pintas, memasuki gang-gang sempit dan melalui ‘jalan-jalan tikus’ agar cepat tiba di tujuan. Walau sempat mengabaikan beberapa rambu lalu lintas akhirnya dia sampai juga menemui klien tepat waktu. Nah, jika saja sekitar seabad yang lalu Karl Benz maupun Gottlieb Daimler tidak menemukan mobil, mungkin si Udin tak akan seberuntung ini. Sudah pasti Udin (dan juga kita!) patut berterima kasih kepada Benz, Daimler dan beberapa orang/institusi di bawah ini yang telah menjadi pionir dalam dunia otomotif.

1. Mobil berbahan bakar minyak pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif, mobil pertama di dunia
Motorwagen 1885
Tahun 1885, Karl Benz membangun Motorwagen, sebuah mobil bermesin empat langkah dengan bahan bakar bensin. Benz juga merupakan penemu dari komponen mobil seperti pengapian mobil, busi, sistem transmisi mobil, radiator air dan karburator. Walaupun pada saat yang bersamaan Gottlieb Daimler yang berpasangan dengan Wilhelm Maybach juga telah berhasil membuat mobil berbahan bakar bensin tapi Benz terlebih dahulu menyelesaikan penemuan bersejarah ini dan mematenkan mobil karyanya pada 1886. 

2. Mobil produksi masal pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif,curved dash, oldsmobile, mobil produksi masal pertama
Curved Dash 1901
Produksi mobil secara masal pertama kali terjadi di Amerika Serikat (AS). Mobil yang diproduksi masal itu adalahCurved Dash dari perusahaan Oldsmobile. Sebanyak 10 atau lebih mobil diproduksi dalam waktu seminggu sejak April 1901. Di akhir tahun tersebut jumlah mobil yang diproduksi mencapai 403 unit dan meningkat jadi 5.508 unit di tiga tahun selanjutnya. Mobil produksi masal tersebut saat itu dibanderol 650 dolar AS per unit. 

3. Sepeda motor pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif,reitwagen,Hildebrand und Wolfműller, motor pertama di dunia
Motor komersil pertama (kiri) dan motor Reitwagen (kanan)
Sepeda motor pertama dibuat pada tahun 1885, oleh Gottlieb Daimler dan Wilhelm Maybach, dua pakar mesin empat langkah Jerman. Mereka menyebut kendaraan penemuannya ini dengan nama “Reitwagen” (mobil tunggangan). Sayangnya motor ini tidak dijual untuk umum. Tahun 1893, Henry dan Wilhelm Hildebrand mengembangkan sepeda motor mereka bekerja sama dengan Alois Wolfmuller dan mekaniknya, Hans Geisenhof. Sepeda motor ini adalah yang pertama dijual untuk umum. Motor ini sudah mengusung teknologi yang sampai saat ini masih dipakai seperti mesin silinder ganda kembar (twin cylinders) berpendingin air, empat langkah dengan kapasitas 1.488cc. Walau bermesin besar, ternyata tenaga kuda yang dihasilkan hanya 2,5 horse power (hp) saja pada 240 rpm. Kecepatan maksimal yang bisa diraih adalah 30 mil/jam atau sekitar 48 km/jam.

4. Sarana hiburan mobil pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif,1922 Ford Model-T
Radio pertama dipasang di mobil Ford Model-T 1922.
Saat ini sarana hiburan yang bisa dipasang di mobil sudah bermacam-macam jenisnya. Ada TV, pemutar music, konsol game, bahkan lemari es! Namun di masa-masa awal sarana yang tersedia hanya terbatas. Mei 1922, pelajar George Frost, ketua perkumpulan pecinta radio sebuah SMA di AS pada masa itu, memasang radio transistor di mobil Ford Model-T miliknya. Inilah sarana hiburan pertama yang terpasang di mobil. Pada November tahun itu juga, sebuah radio transistor dipasang di mobil limusin Daimler oleh perusahaan radio Marconi yang menjadikannya mobil kedua di dunia yang memiliki sarana hiburan. 

5. Pelat nomor kendaraan pertama
Plat nomor kendaraan pertama kali diperkenalkan di Perancis oleh Kepolisian Kota Paris pada 14 Agustus 1893 dalam sebuah peraturan yang berbunyi: “Setiap kendaraan bermotor harus memasang sebuah plat besi yang mencantumkan nama dan alamat pemilik kendaraan, serta nomor khusus. Plat besi ini dipasang di sisi kiri mobil dan harus jelas terlihat.” Pada 30 September 1901, peraturan bersejarah ini diterapkan di seluruh Perancis. 

6. Mobil pertama yang dicuri
Sejarah otomotif, 10 kejadian pertama dunia otomotif, Peugeot 1896, mobil pertama yang dicuri
Model mobil Peugeot 1896 yang dicuri.
Kasus pencurian kendaraan bermotor pertama kali terjadi di Paris, Perancis pada Juni 1896. Ketika itu, mobilPeugeot milik Baron de Zuylen dicuri oleh montir di bengkel tempat servis kendaraan langganannya. Karena saat itu jumlah mobil mungkin masih bisa dihitung dengan jari, maka tak lama kemudian mobil beserta pencurinya berhasil dibekuk. 

7. Kecelakaan maut pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif, benz 1896, mobil yang memakan korban jiwa pertama
Mobil model Benz 1896 yang merenggut nyawa orang pertama kali.
Entah sudah berapa banyak nyawa melayang akibat kecelakaan kendaraan bermotor. Pada 17 Agustus 1896, Bridget Driscoll of Croydon sedang menyeberangi jalan di Crystal Palace, London. Tak disangka, muncul mobil Roger-Benz berkecepatan 6,4 km/jam yang dikendarai Arthur Edsell. Malang bagi Briscoll, karena panik dia hanya terpaku diam di tengah jalan dan brakkk…!!! nyawa Driscoll melayang dan ini tercatat sebagai kecelakaan maut kendaraan bermotor pertama di dunia. 

8. Lampu dan rambu lalu lintas pertama
- Lampu lalu lintas (traffic light) pertama kali diperkenalkan di Inggris pada 10 Desember 1868 yang dipasang Kepolisian Kota London di dekat gedung parlemen Inggris. Tujuan pemasangan dimaksudkan untuk memudahkan para anggota parlemen yang akan memasuki gedung kantornya. Lampu lalu lintas ini berbentuk serupa lentera yang terdiri dari dua tanda warna: merah dan hijau. Sayang penggunaan lampu lalu lintas ini tidak begitu populer dan banyak dicibir masyarakat Inggris. Lampu tersebut adalah lampu lalu lintas satu-satunya di Inggris sampai tahun 1872. Sejak itu, traffic light ditiadakan dan baru diperkenalkan kembali di Inggris 50 tahun kemudian. 
Sejarah otomotif, 10 kejadian pertama dunia otomotif, rambu lalin pertama, traffic light pertama
Model rambu lalu lintas pertama yang masih digunakan hingga saat ini.
- Rambu lalu lintas pertama dipasang di Inggris pada Desember 1879. Rambu yang dipasang oleh Komunitas Sepeda Inggris ini berbentuk plat besi yang dipancang di tiang kayu ditulisi peringatan: “Kepada para pengendara sepeda: Bukit ini berbahaya”. Tahun 1901, rambu lalu lintas khusus untuk pengendara mobil dipasang di Gloucester, Inggris. Rambu lalu lintas pertama berstandar internasional berbentuk plat besi segitiga dibuat di Perancis pada 1909. 

9. Balapan mobil pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif, balapan mobil pertama, juara balap mobil pertama
Mobil Peugeot 3 tenaga kuda yang jadi juara balap mobil pertama di dunia.
Tahun 1894, majalah Le Petit Journal menyelenggarakan Competition for Horeseless Carriages (lomba kendaraan yang tidak ditarik kuda). Lomba ini adalah lomba balapan mobil pertama di dunia. Para peserta lomba terlebih dulu mengikuti kualifikasi awal sejauh 50 km, setelah itu dilanjutkan lomba utama yang berjarak 127 km. Bendera start dikibarkan di kota Paris dan finish di Kota Rouen di Perancis. Para kontestan berasal dari produsen mobil yang serius seperti PeugeotPanhard atau De Dion hingga amatiran dan hanya 25 mobil yang lolos kualifikasi. Jules-Albert de Dion menjadi yang pertama finish di Rouen dengan catatan waktu 6 jam 48 menit dengan kecepatan rata-rata 19 km/jam. Dia finish 3 menit 30 detik di depan Georges Lemaître (Peugeot), diikuti Doriot (Peugeot) dengan waktu lebih 16 menit 30 detik, René Panhard (Panhard) 33 menit 30 detik lebih lambat dan Émile Levassor (Panhard) 55 menit 30 detik lebih lambat. Namun yang diakui sebagai pemenang resmi adalah Peugeot dan Panhard yang dinilai berdasarkan karakteristik mereka dalam kecepatan, handling dan keselamatan. 

10. SPBU pertama
Sejarah otomotif, 10 kejadian pertama dunia otomotif, SPBU pertama di dunia, SPBU berkanopi pertama di dunia
SPBU pertama di dunia.
SPBU (Stasiun Pengisian Bahan Bakar Untuk Umum) pertama di dunia didirikan oleh perusahaan Automobile Gasoline Co., di St Louis, AS. pada 1905. Namun bentuk SPBU ini masih sederhana. Sedangkan SPBU yang fisik bangunannya banyak diadopsi oleh SPBU zaman sekarang (berkanopi) dioperasikan pertama kali oleh perusahaan Standard Oil of California di kota Seattle, AS pada 1907. 

+ Mobil pertama di Indonesia
Orang Indonesia pertama yang tercatat sebagai pemilik mobil adalah Pakubuwono ke X (PB X) dari Solo, pada tahun 1894. Mobilnya bermerk Benz, tipe Carl Benz tetapi di dapurpacu.com disebut sebagai Benz Phaeton, beroda empat. Ternyata waktu itupun untuk memiliki sebuah mobil harus indent, karena diperlukan waktu satu tahun persiapan pembuatannya. Tipe mobil yang dipesan ini memiliki banyak variasi dan dibuat sesuai dengan pesanan PB X. Adalah John.C.Potter seorang penjual mobil alias sales pertama di Indonesia mendapat kepercayaan untuk mengurusi pengirimannya dari Eropa. 

Hebatnya, kehadiran ini berarti hanya berselang delapan tahun setelah Karl Benz membuat mobilnya yang pertama, yang diakui sebagai mobil pertama di dunia. Mobil Benz Phaeton yang dipesan dari Eropa seharga 10.000 gulden itu menyandang mesin 1-silinder, 2,0 liter, bertenaga 5 hp, menggunakan roda kayu dan ban mati (ban tanpa udara), serta dapat memuat delapan orang. Masuknya mobil pertama ke Surakarta pada 1894, membuat Indonesia berada dua tahun di depan sang penjajah Belanda, yang baru menerima mobil pertamanya di Den Haag pada 1896. Indonesia memiliki mobil juga jauh lebih awal dari Thailand yang menerima mobil dengan merk Benz yang pertama, pada tanggal 19 Desember 1904, mobil Benz bagi Raja Thailand Chulalongkorn (Rama V). Mobil itu dipesan Duta Besar Thailand untuk Prancis dari Automobile-Union Paris milik Emil Jellinek yang terletak di 39 Avenue des Champs Elysees, Paris. 

Mobil Benz phaeton milik PB X terakhir terlihat di muka umum pada 1924, sewaktu mobil itu akan dikapalkan ke Belanda melalui pelabuhan Semarang untuk diikutsertakan dalam pameran mobil RAI. Tidak diketahui di mana keberadaan mobil tersebut sekarang, tapi mobil serupa bisa ditemukan di Museum Mobil Leidschendam, Belanda bagian selatan.[sumber] 
Sejarah otomotif, 10 kejadian pertama dunia otomotif, Sepeda motor pertama di Indonesia, SPBU berkanopi pertama di dunia, Hildebrand und Wolfmüller adalah motor pertama di Indonesia
Model sepeda motor pertama yang hadir di Indonesia.
+ Sepeda motor pertama di Indonesia
Probolinggo, sebuah kota pesisir di Jawa Timur, ternyata merupakan tempat hadirnya sepeda motor pertama di Indonesia. Sepeda motor telah hadir di Indonesia sejak tahun 1893 –atau 117 tahun yang lalu. Uniknya, walaupun pada saat itu Indonesia masih dibawah pendudukan Belanda, orang pertama yang memiliki sepeda motor di Indonesia bukanlah orang Belanda, melainkan orang Inggris. Adalah John C. Potter yang sehari-hari bekerja sebagai masinis pertama di Pabrik Gula Oemboel, Probolinggo, Jawa Timur-lah yang memiliki sepeda motor pertama itu. 

Dalam buku Krèta Sètan (De Duivelswagen) dikisahkan bagaimana John C. Potter memesan sendiri sepeda motor tersebut dari pabriknya Hildebrand und Wolfműller di Muenchen, Jerman. Sepeda motor pesanan Potter itu tiba pada tahun 1893, satu tahun sebelum mobil pertama tiba di Indonesa. Dan hal tersebutlah yang membuat Potter menjadi orang pertama di Indonesia yang menggunakan kendaraan bermotor.

Minggu, 02 Maret 2014

Jurnalistik, Referensi PenitiKu..

Teori Jurnalistik dan Perkembangannya


Ilustrasi teori jurnalistik
Pada 1920, ketika jurnalisme modern baru saja mengambil bentuk, seorang penulis bernama Walter Lippmann dan seorang filsuf Amerika John Dewey berdebat mengenai peran jurnalisme. Teori jurnalistik mereka berdua masih menjadi poin utama dalam perdebatan tentang peran jurnalisme dalam masyarakat dan negara.

Teori Jurnalistik

1. Teori Lippmann

Lippmann memahami peran jurnalisme pada saat itu adalah untuk bertindak sebagai mediator atau penerjemah antara masyarakat dan elit pembuat kebijakan. Wartawan menjadi perantara. Ketika elit berbicara, wartawan mendengarkan dan mencatat informasi, menyaring, dan memberikannya kepada masyarakat untuk dikonsumsi.
Alasannya adalah bahwa masyarakat tidak dalam posisi untuk mendekonstruksi padatnya informasi yang terus tumbuh dan kompleks dalam masyarakat modern, dan karena itu perantara dibutuhkan untuk menyaring berita bagi masyarakat.
Lippmann mengatakanya kira-kira begini, publik tidak cukup cerdas untuk memahami rumitnya isu-isu politik. Selain itu, masyarakat sudah cukup tersibukkan dengan kehidupan sehari-hari mereka untuk peduli pada kebijakan publik yang kompleks.
Karena itu, seseorang yang dibutuhkan masyarakat untuk menafsirkan keputusan atau kebijakan para elit menjadi informasi yang jelas dan sederhana. Itulah peran wartawan.
Lippmann percaya bahwa masyarakat akan memengaruhi pengambilan keputusan dari elit dengan suara mereka. Sementara itu, para elit (politisi, yaitu pembuat kebijakan, birokrat, ilmuwan, dll) akan menjaga agar kekuasaan berjalan. Dalam pemikiran Lippmann, peran wartawan adalah untuk menginformasikan publik tentang apa yang elit lakukan.
Karena wartawan juga bertindak sebagai pengawas atas elit, ketika masyarakat memilih dengan suara mereka. Inilah membuat masyarakat di rantai kekuasaan paling bawah, dapat menangkap arus informasi yang diturunkan dari para ahli/elit secara efektif.

2. Teori Dewey

Sedangkan Dewey percaya bahwa masyarakat tidak hanya mampu memahami masalah-masalah yang dibuat atau ditanggapi oleh elit, keputusan dibuat setelah diskusi dan perdebatan di forum publik. Jika suatu masalah telah benar-benar dijabarkan, maka ide-ide terbaik naik ke permukaan.
Dewey percaya, wartawan harus melakukan lebih dari sekadar menyampaikan informasi. Dia percaya bahwa wartawan harus mempertimbangkan konsekuensi dari kebijakan yang berlaku. Seiring waktu, gagasannya telah diimplementasikan di berbagai tingkat, dan lebih dikenal sebagai "jurnalisme komunitas".
Konsep jurnalisme komunitas merupakan perkembangan baru dalam jurnalisme. Dalam paradigma baru ini, wartawan dapat melibatkan warga dan para ahli/ elit dalam berita. Sangat penting untuk dicatat bahwa meski terlihat ada asumsi kesetaraan, Dewey masih menghargai keahlian.
Dewey percaya bahwa pengetahuan bersama jauh lebih unggul untuk pengetahuan individu. Para ahli dan sarjana tetap dipersilahkan dalam kerangka Dewey, tetapi tidak dalam struktur hierarki dalam pemahaman Lippmann mengenai jurnalistik dan masyarakat.
Filsafat jurnalistik Lippmann mungkin lebih diterima oleh para pemimpin pemerintahan. Sedang pendekatan Dewey menjadi gambaran yang lebih baik tentang bagaimana wartawan melihat peran mereka dalam masyarakat, dan, pada gilirannya, masyarakat mengharapkan fungsi jurnalistik dapat berjalan.
Banyak kritik masyarakat terhadap akibat pemberitaan dilakukan oleh wartawan, tetapi mereka tetap mengharapkan wartawan untuk menjadi pengawas pemerintah, memungkinkan orang untuk mengambil keputusan mengenai isu-isu yang sedang terjadi.

Hukum Jurnalistik

Undang-Undang No. 40 Tahun 1999 tentang Pers lahir atas pertimbangan bahwa kemerdekaan pers merupakan salah satu wujud kedaulatan rakyat dan menjadi unsur yang sangat penting untuk menciptakan kehidupan bermasyarakat, berbangsa, dan bernegara yang demokratis, sehingga kemerdekaan mengeluarkan pikiran dan pendapat sebagaimana tercantum dalam Pasal 28 Undang-Undang Dasar 1945 harus dijamin.
Sebagai negara yang menganut paham demokrasi, kemerdekaan menyatakan pikiran dan pendapat sesuai dengan hati nurani dan hak memperoleh informasi, merupakan hak asasi manusia yang sangat hakiki, yang diperlukan untuk menegakkan keadilan dan kebenaran, memajukan kesejahteraan umum, dan mencerdaskan kehidupan bangsa.
Pers nasional sebagai wahana komunikasi massa, penyebar informasi, dan pembentuk opini harus dapat melaksanakan asas, fungsi, hak, kewajiban, dan peranannya dengan sebaik-baiknya berdasarkan kemerdekaan pers yang profesional, sehingga harus mendapat jaminan dan perlindungan hukum, serta bebas dari campur tangan dan paksaan dari mana pun.
Oleh karena itu, perlu adanya satu payung hukum yang melindungi para pekerja pers nasional. Pada Bab II tentang Asas, Fungsi, Hak, Kewajiban, dan Peranan Pers diatur masalah kemerdekaan pers.
Dijelaskan bahwa kemerdekaan pers adalah salah satu wujud kedaulatan rakyat yang berasaskan prinsip-prinsip demokrasi, keadilan, dan supremasi hukum (Pasal 2). Sedangkan penjelasan lebih lanjut mengenai kemerdekaan pers ini dijelaskan dalam Pasal 4 ayat 1.
Dalam penjelasannya dinyatakan bahwa pers harus bebas dari tindakan pencegahan, pelarangan, dan atau penekanan agar hak masyarakat untuk memperoleh informasi terjamin.
Kemerdekaan pers adalah kemerdekaan yang disertai kesadaran akan pentingnya penegakan supremasi hukum yang dilaksanakan oleh pengadilan dan tanggung jawab profesi yang dijabarkan dalam Kode Etik Jurnalistik serta sesuai dengan hati nurani insan pers.
Adanya perhatian terhadap para jurnalis yang dituangkan dalam undang-undang dan kode etik jurnalistik menandakan bahwa pers dibutuhkan dan dilindungi kehadirannya sebagai corong informasi bagi masyarakat. Sejak zaman sebelum kemerdekaan, peran pers sangat penting terhadap usaha-usaha melepaskan diri dari belenggu penjajahan.
Berbagai upaya diplomatik dan politik melalui perundingan dan sebagainya dapat disuarakan secara internasional melalui media massa. Untuk itu, undang-undang pers ini diharapkan menjadi payung hukum bagi para jurnalis, sehingga lebih fokus dan objektif dalam menyiarkan informasi kepada publik.

Produk Jurnalistik

Hal tersebut membuat seorang jurnalistik dituntut untuk memberikan berita atau informasi yang menarik bagi para penikmat media tersebut. Informasi yang diberikan oleh produk-produk jurnalistik tersebut memiliki beberapa hal yang menjadi dasar, yaitu sebagai berikut.

1. Bersifat tentang kebiasaan dan kebutuhan hidup masyarakat sehari-hari.

Sebagai contoh kita bisa melihat, apa yang dibutuhkan masyarakat sekarang, harga handphone, jadwal bioskop, berita-berita bencana alam, informasi olahraga, dan lain-lainnya.

2. Informasi yang bersifat memerlukan perhatian dari masyarakat.

Seperti misalnya kondisi ekonomi, politik, sosial yang sedang terjadi. Sebagai contoh, kita tentunya sering kali melihat adanya berita di berbagai media seperti bencana alam, berita tentang naiknya harga kebutuhan dan lain-lainnya.

3. Menyampaikan hal-hal baru.

Biasanya ini terkait dengan konten dari masing-masing produk jurnalistik. Contohnya adalah sekarang ini ada beberapa berita yang menampilkan tentang lifestyle, kesehatan, bahkan berita yang mengajak dan memotivasi kita untuk mampu mengelola keuangan sendiri.
Informasi dari kegiatan-kegiatan jurnalistik tersebut mempunyai kandungan yang dapat merubah sikap, pendapat serta membujuk masyarakat untuk menanggapi informasi tersebut. Dan kategori pemberitaan yang diberikan dari beberapa produk jurnalistik yang tersaji saat ini selain mengambarkan berita, bisa juga menampilkan komentar atau ulasan.
Komentar atau ulasan di media cetak biasanya terjadi pada rubrik-rubrik opini, sementara itu dalam media elektronik, seperti televisi atau radio disampaikan dalam bentuk sesi tanya jawab yang ditampilkan secara visual.
Sementara itu, dalam media internet, melalui sebuah rubrik yang dikenal dengan citizen journalism, di mana masyarakat yang bukan jurnalis atau wartawan pun bisa memberikan berita mereka sendiri.

4. Bersifat advetorial.

Di mana produk jurnalistik ini memberitakan sebuah informasi dari beberapa perusahaan tentang produk-produk mereka, berupa berita atau informasi yang dibutuhkan mereka.
Tetapi, apa yang paling penting adalah tampilan pemberitaan yang akan dipaparkan dalam produk-produk jurnalistik. Setiap tulisan yang dibuat haruslah selalu mengandung konsep dasar jurnalistik yaitu, 5W+1H, yaituwhat, who, where, when, why dan how. Semua terapan tersebut wajib digunakan oleh para wartawan dalam setiap penyajian beritanya. Bahkan masyarakat yang ingin menyampaikannya dalam bentuk citizen journalism.
Dunia jurnalistik membuat dunia benar-benar di ujung jari. Misalnya, membaca berita-berita di koran akan membuat wawasan bertambah. Pengetahuan tentang banyak hal bisa didapatkan hanya dengan harga Rp2.000,- hingga Rp6.500,-. Tidak harus pergi ke daerah tertentu secara langsung untuk mengetahui apa dan bagaimana bentuk daerah tersebut.
Cukup dengan mencari berita dan berselancar sejenak di internet, semua data dan informasi sudah bisa didapatkan dengan mudah. Keberadaan dunia jurnalistik ini juga membuat banyak orang mempunyai pekerjaan. Ratusan lowongan pekerjaan dapat disediakan oleh bidang jurnalistik ini.
Misalnya, penulis lepas, wartawan, karesponden, fotografer, editor, hingga janitor dan penjual koran di lampu merah, bisa menghidupi keluarga mereka dengan cara mencemplungkan diri ke dunia jurnalistik ini. Semoga teori jurnalistik dan penjelasan lainnya tersebut bermanfaat.

Jurnalistik, Referensi PenitiKu..

Teori Jurnalistik dan Perkembangannya


Ilustrasi teori jurnalistik
Pada 1920, ketika jurnalisme modern baru saja mengambil bentuk, seorang penulis bernama Walter Lippmann dan seorang filsuf Amerika John Dewey berdebat mengenai peran jurnalisme. Teori jurnalistik mereka berdua masih menjadi poin utama dalam perdebatan tentang peran jurnalisme dalam masyarakat dan negara.

Teori Jurnalistik

1. Teori Lippmann

Lippmann memahami peran jurnalisme pada saat itu adalah untuk bertindak sebagai mediator atau penerjemah antara masyarakat dan elit pembuat kebijakan. Wartawan menjadi perantara. Ketika elit berbicara, wartawan mendengarkan dan mencatat informasi, menyaring, dan memberikannya kepada masyarakat untuk dikonsumsi.
Alasannya adalah bahwa masyarakat tidak dalam posisi untuk mendekonstruksi padatnya informasi yang terus tumbuh dan kompleks dalam masyarakat modern, dan karena itu perantara dibutuhkan untuk menyaring berita bagi masyarakat.
Lippmann mengatakanya kira-kira begini, publik tidak cukup cerdas untuk memahami rumitnya isu-isu politik. Selain itu, masyarakat sudah cukup tersibukkan dengan kehidupan sehari-hari mereka untuk peduli pada kebijakan publik yang kompleks.
Karena itu, seseorang yang dibutuhkan masyarakat untuk menafsirkan keputusan atau kebijakan para elit menjadi informasi yang jelas dan sederhana. Itulah peran wartawan.
Lippmann percaya bahwa masyarakat akan memengaruhi pengambilan keputusan dari elit dengan suara mereka. Sementara itu, para elit (politisi, yaitu pembuat kebijakan, birokrat, ilmuwan, dll) akan menjaga agar kekuasaan berjalan. Dalam pemikiran Lippmann, peran wartawan adalah untuk menginformasikan publik tentang apa yang elit lakukan.
Karena wartawan juga bertindak sebagai pengawas atas elit, ketika masyarakat memilih dengan suara mereka. Inilah membuat masyarakat di rantai kekuasaan paling bawah, dapat menangkap arus informasi yang diturunkan dari para ahli/elit secara efektif.

2. Teori Dewey

Sedangkan Dewey percaya bahwa masyarakat tidak hanya mampu memahami masalah-masalah yang dibuat atau ditanggapi oleh elit, keputusan dibuat setelah diskusi dan perdebatan di forum publik. Jika suatu masalah telah benar-benar dijabarkan, maka ide-ide terbaik naik ke permukaan.
Dewey percaya, wartawan harus melakukan lebih dari sekadar menyampaikan informasi. Dia percaya bahwa wartawan harus mempertimbangkan konsekuensi dari kebijakan yang berlaku. Seiring waktu, gagasannya telah diimplementasikan di berbagai tingkat, dan lebih dikenal sebagai "jurnalisme komunitas".
Konsep jurnalisme komunitas merupakan perkembangan baru dalam jurnalisme. Dalam paradigma baru ini, wartawan dapat melibatkan warga dan para ahli/ elit dalam berita. Sangat penting untuk dicatat bahwa meski terlihat ada asumsi kesetaraan, Dewey masih menghargai keahlian.
Dewey percaya bahwa pengetahuan bersama jauh lebih unggul untuk pengetahuan individu. Para ahli dan sarjana tetap dipersilahkan dalam kerangka Dewey, tetapi tidak dalam struktur hierarki dalam pemahaman Lippmann mengenai jurnalistik dan masyarakat.
Filsafat jurnalistik Lippmann mungkin lebih diterima oleh para pemimpin pemerintahan. Sedang pendekatan Dewey menjadi gambaran yang lebih baik tentang bagaimana wartawan melihat peran mereka dalam masyarakat, dan, pada gilirannya, masyarakat mengharapkan fungsi jurnalistik dapat berjalan.
Banyak kritik masyarakat terhadap akibat pemberitaan dilakukan oleh wartawan, tetapi mereka tetap mengharapkan wartawan untuk menjadi pengawas pemerintah, memungkinkan orang untuk mengambil keputusan mengenai isu-isu yang sedang terjadi.

Hukum Jurnalistik

Undang-Undang No. 40 Tahun 1999 tentang Pers lahir atas pertimbangan bahwa kemerdekaan pers merupakan salah satu wujud kedaulatan rakyat dan menjadi unsur yang sangat penting untuk menciptakan kehidupan bermasyarakat, berbangsa, dan bernegara yang demokratis, sehingga kemerdekaan mengeluarkan pikiran dan pendapat sebagaimana tercantum dalam Pasal 28 Undang-Undang Dasar 1945 harus dijamin.
Sebagai negara yang menganut paham demokrasi, kemerdekaan menyatakan pikiran dan pendapat sesuai dengan hati nurani dan hak memperoleh informasi, merupakan hak asasi manusia yang sangat hakiki, yang diperlukan untuk menegakkan keadilan dan kebenaran, memajukan kesejahteraan umum, dan mencerdaskan kehidupan bangsa.
Pers nasional sebagai wahana komunikasi massa, penyebar informasi, dan pembentuk opini harus dapat melaksanakan asas, fungsi, hak, kewajiban, dan peranannya dengan sebaik-baiknya berdasarkan kemerdekaan pers yang profesional, sehingga harus mendapat jaminan dan perlindungan hukum, serta bebas dari campur tangan dan paksaan dari mana pun.
Oleh karena itu, perlu adanya satu payung hukum yang melindungi para pekerja pers nasional. Pada Bab II tentang Asas, Fungsi, Hak, Kewajiban, dan Peranan Pers diatur masalah kemerdekaan pers.
Dijelaskan bahwa kemerdekaan pers adalah salah satu wujud kedaulatan rakyat yang berasaskan prinsip-prinsip demokrasi, keadilan, dan supremasi hukum (Pasal 2). Sedangkan penjelasan lebih lanjut mengenai kemerdekaan pers ini dijelaskan dalam Pasal 4 ayat 1.
Dalam penjelasannya dinyatakan bahwa pers harus bebas dari tindakan pencegahan, pelarangan, dan atau penekanan agar hak masyarakat untuk memperoleh informasi terjamin.
Kemerdekaan pers adalah kemerdekaan yang disertai kesadaran akan pentingnya penegakan supremasi hukum yang dilaksanakan oleh pengadilan dan tanggung jawab profesi yang dijabarkan dalam Kode Etik Jurnalistik serta sesuai dengan hati nurani insan pers.
Adanya perhatian terhadap para jurnalis yang dituangkan dalam undang-undang dan kode etik jurnalistik menandakan bahwa pers dibutuhkan dan dilindungi kehadirannya sebagai corong informasi bagi masyarakat. Sejak zaman sebelum kemerdekaan, peran pers sangat penting terhadap usaha-usaha melepaskan diri dari belenggu penjajahan.
Berbagai upaya diplomatik dan politik melalui perundingan dan sebagainya dapat disuarakan secara internasional melalui media massa. Untuk itu, undang-undang pers ini diharapkan menjadi payung hukum bagi para jurnalis, sehingga lebih fokus dan objektif dalam menyiarkan informasi kepada publik.

Produk Jurnalistik

Hal tersebut membuat seorang jurnalistik dituntut untuk memberikan berita atau informasi yang menarik bagi para penikmat media tersebut. Informasi yang diberikan oleh produk-produk jurnalistik tersebut memiliki beberapa hal yang menjadi dasar, yaitu sebagai berikut.

1. Bersifat tentang kebiasaan dan kebutuhan hidup masyarakat sehari-hari.

Sebagai contoh kita bisa melihat, apa yang dibutuhkan masyarakat sekarang, harga handphone, jadwal bioskop, berita-berita bencana alam, informasi olahraga, dan lain-lainnya.

2. Informasi yang bersifat memerlukan perhatian dari masyarakat.

Seperti misalnya kondisi ekonomi, politik, sosial yang sedang terjadi. Sebagai contoh, kita tentunya sering kali melihat adanya berita di berbagai media seperti bencana alam, berita tentang naiknya harga kebutuhan dan lain-lainnya.

3. Menyampaikan hal-hal baru.

Biasanya ini terkait dengan konten dari masing-masing produk jurnalistik. Contohnya adalah sekarang ini ada beberapa berita yang menampilkan tentang lifestyle, kesehatan, bahkan berita yang mengajak dan memotivasi kita untuk mampu mengelola keuangan sendiri.
Informasi dari kegiatan-kegiatan jurnalistik tersebut mempunyai kandungan yang dapat merubah sikap, pendapat serta membujuk masyarakat untuk menanggapi informasi tersebut. Dan kategori pemberitaan yang diberikan dari beberapa produk jurnalistik yang tersaji saat ini selain mengambarkan berita, bisa juga menampilkan komentar atau ulasan.
Komentar atau ulasan di media cetak biasanya terjadi pada rubrik-rubrik opini, sementara itu dalam media elektronik, seperti televisi atau radio disampaikan dalam bentuk sesi tanya jawab yang ditampilkan secara visual.
Sementara itu, dalam media internet, melalui sebuah rubrik yang dikenal dengan citizen journalism, di mana masyarakat yang bukan jurnalis atau wartawan pun bisa memberikan berita mereka sendiri.

4. Bersifat advetorial.

Di mana produk jurnalistik ini memberitakan sebuah informasi dari beberapa perusahaan tentang produk-produk mereka, berupa berita atau informasi yang dibutuhkan mereka.
Tetapi, apa yang paling penting adalah tampilan pemberitaan yang akan dipaparkan dalam produk-produk jurnalistik. Setiap tulisan yang dibuat haruslah selalu mengandung konsep dasar jurnalistik yaitu, 5W+1H, yaituwhat, who, where, when, why dan how. Semua terapan tersebut wajib digunakan oleh para wartawan dalam setiap penyajian beritanya. Bahkan masyarakat yang ingin menyampaikannya dalam bentuk citizen journalism.
Dunia jurnalistik membuat dunia benar-benar di ujung jari. Misalnya, membaca berita-berita di koran akan membuat wawasan bertambah. Pengetahuan tentang banyak hal bisa didapatkan hanya dengan harga Rp2.000,- hingga Rp6.500,-. Tidak harus pergi ke daerah tertentu secara langsung untuk mengetahui apa dan bagaimana bentuk daerah tersebut.
Cukup dengan mencari berita dan berselancar sejenak di internet, semua data dan informasi sudah bisa didapatkan dengan mudah. Keberadaan dunia jurnalistik ini juga membuat banyak orang mempunyai pekerjaan. Ratusan lowongan pekerjaan dapat disediakan oleh bidang jurnalistik ini.
Misalnya, penulis lepas, wartawan, karesponden, fotografer, editor, hingga janitor dan penjual koran di lampu merah, bisa menghidupi keluarga mereka dengan cara mencemplungkan diri ke dunia jurnalistik ini. Semoga teori jurnalistik dan penjelasan lainnya tersebut bermanfaat.

Jurnalistik, Referensi PenitiKu..

Teori Jurnalistik dan Perkembangannya


Ilustrasi teori jurnalistik
Pada 1920, ketika jurnalisme modern baru saja mengambil bentuk, seorang penulis bernama Walter Lippmann dan seorang filsuf Amerika John Dewey berdebat mengenai peran jurnalisme. Teori jurnalistik mereka berdua masih menjadi poin utama dalam perdebatan tentang peran jurnalisme dalam masyarakat dan negara.

Teori Jurnalistik

1. Teori Lippmann

Lippmann memahami peran jurnalisme pada saat itu adalah untuk bertindak sebagai mediator atau penerjemah antara masyarakat dan elit pembuat kebijakan. Wartawan menjadi perantara. Ketika elit berbicara, wartawan mendengarkan dan mencatat informasi, menyaring, dan memberikannya kepada masyarakat untuk dikonsumsi.
Alasannya adalah bahwa masyarakat tidak dalam posisi untuk mendekonstruksi padatnya informasi yang terus tumbuh dan kompleks dalam masyarakat modern, dan karena itu perantara dibutuhkan untuk menyaring berita bagi masyarakat.
Lippmann mengatakanya kira-kira begini, publik tidak cukup cerdas untuk memahami rumitnya isu-isu politik. Selain itu, masyarakat sudah cukup tersibukkan dengan kehidupan sehari-hari mereka untuk peduli pada kebijakan publik yang kompleks.
Karena itu, seseorang yang dibutuhkan masyarakat untuk menafsirkan keputusan atau kebijakan para elit menjadi informasi yang jelas dan sederhana. Itulah peran wartawan.
Lippmann percaya bahwa masyarakat akan memengaruhi pengambilan keputusan dari elit dengan suara mereka. Sementara itu, para elit (politisi, yaitu pembuat kebijakan, birokrat, ilmuwan, dll) akan menjaga agar kekuasaan berjalan. Dalam pemikiran Lippmann, peran wartawan adalah untuk menginformasikan publik tentang apa yang elit lakukan.
Karena wartawan juga bertindak sebagai pengawas atas elit, ketika masyarakat memilih dengan suara mereka. Inilah membuat masyarakat di rantai kekuasaan paling bawah, dapat menangkap arus informasi yang diturunkan dari para ahli/elit secara efektif.

2. Teori Dewey

Sedangkan Dewey percaya bahwa masyarakat tidak hanya mampu memahami masalah-masalah yang dibuat atau ditanggapi oleh elit, keputusan dibuat setelah diskusi dan perdebatan di forum publik. Jika suatu masalah telah benar-benar dijabarkan, maka ide-ide terbaik naik ke permukaan.
Dewey percaya, wartawan harus melakukan lebih dari sekadar menyampaikan informasi. Dia percaya bahwa wartawan harus mempertimbangkan konsekuensi dari kebijakan yang berlaku. Seiring waktu, gagasannya telah diimplementasikan di berbagai tingkat, dan lebih dikenal sebagai "jurnalisme komunitas".
Konsep jurnalisme komunitas merupakan perkembangan baru dalam jurnalisme. Dalam paradigma baru ini, wartawan dapat melibatkan warga dan para ahli/ elit dalam berita. Sangat penting untuk dicatat bahwa meski terlihat ada asumsi kesetaraan, Dewey masih menghargai keahlian.
Dewey percaya bahwa pengetahuan bersama jauh lebih unggul untuk pengetahuan individu. Para ahli dan sarjana tetap dipersilahkan dalam kerangka Dewey, tetapi tidak dalam struktur hierarki dalam pemahaman Lippmann mengenai jurnalistik dan masyarakat.
Filsafat jurnalistik Lippmann mungkin lebih diterima oleh para pemimpin pemerintahan. Sedang pendekatan Dewey menjadi gambaran yang lebih baik tentang bagaimana wartawan melihat peran mereka dalam masyarakat, dan, pada gilirannya, masyarakat mengharapkan fungsi jurnalistik dapat berjalan.
Banyak kritik masyarakat terhadap akibat pemberitaan dilakukan oleh wartawan, tetapi mereka tetap mengharapkan wartawan untuk menjadi pengawas pemerintah, memungkinkan orang untuk mengambil keputusan mengenai isu-isu yang sedang terjadi.

Hukum Jurnalistik

Undang-Undang No. 40 Tahun 1999 tentang Pers lahir atas pertimbangan bahwa kemerdekaan pers merupakan salah satu wujud kedaulatan rakyat dan menjadi unsur yang sangat penting untuk menciptakan kehidupan bermasyarakat, berbangsa, dan bernegara yang demokratis, sehingga kemerdekaan mengeluarkan pikiran dan pendapat sebagaimana tercantum dalam Pasal 28 Undang-Undang Dasar 1945 harus dijamin.
Sebagai negara yang menganut paham demokrasi, kemerdekaan menyatakan pikiran dan pendapat sesuai dengan hati nurani dan hak memperoleh informasi, merupakan hak asasi manusia yang sangat hakiki, yang diperlukan untuk menegakkan keadilan dan kebenaran, memajukan kesejahteraan umum, dan mencerdaskan kehidupan bangsa.
Pers nasional sebagai wahana komunikasi massa, penyebar informasi, dan pembentuk opini harus dapat melaksanakan asas, fungsi, hak, kewajiban, dan peranannya dengan sebaik-baiknya berdasarkan kemerdekaan pers yang profesional, sehingga harus mendapat jaminan dan perlindungan hukum, serta bebas dari campur tangan dan paksaan dari mana pun.
Oleh karena itu, perlu adanya satu payung hukum yang melindungi para pekerja pers nasional. Pada Bab II tentang Asas, Fungsi, Hak, Kewajiban, dan Peranan Pers diatur masalah kemerdekaan pers.
Dijelaskan bahwa kemerdekaan pers adalah salah satu wujud kedaulatan rakyat yang berasaskan prinsip-prinsip demokrasi, keadilan, dan supremasi hukum (Pasal 2). Sedangkan penjelasan lebih lanjut mengenai kemerdekaan pers ini dijelaskan dalam Pasal 4 ayat 1.
Dalam penjelasannya dinyatakan bahwa pers harus bebas dari tindakan pencegahan, pelarangan, dan atau penekanan agar hak masyarakat untuk memperoleh informasi terjamin.
Kemerdekaan pers adalah kemerdekaan yang disertai kesadaran akan pentingnya penegakan supremasi hukum yang dilaksanakan oleh pengadilan dan tanggung jawab profesi yang dijabarkan dalam Kode Etik Jurnalistik serta sesuai dengan hati nurani insan pers.
Adanya perhatian terhadap para jurnalis yang dituangkan dalam undang-undang dan kode etik jurnalistik menandakan bahwa pers dibutuhkan dan dilindungi kehadirannya sebagai corong informasi bagi masyarakat. Sejak zaman sebelum kemerdekaan, peran pers sangat penting terhadap usaha-usaha melepaskan diri dari belenggu penjajahan.
Berbagai upaya diplomatik dan politik melalui perundingan dan sebagainya dapat disuarakan secara internasional melalui media massa. Untuk itu, undang-undang pers ini diharapkan menjadi payung hukum bagi para jurnalis, sehingga lebih fokus dan objektif dalam menyiarkan informasi kepada publik.

Produk Jurnalistik

Hal tersebut membuat seorang jurnalistik dituntut untuk memberikan berita atau informasi yang menarik bagi para penikmat media tersebut. Informasi yang diberikan oleh produk-produk jurnalistik tersebut memiliki beberapa hal yang menjadi dasar, yaitu sebagai berikut.

1. Bersifat tentang kebiasaan dan kebutuhan hidup masyarakat sehari-hari.

Sebagai contoh kita bisa melihat, apa yang dibutuhkan masyarakat sekarang, harga handphone, jadwal bioskop, berita-berita bencana alam, informasi olahraga, dan lain-lainnya.

2. Informasi yang bersifat memerlukan perhatian dari masyarakat.

Seperti misalnya kondisi ekonomi, politik, sosial yang sedang terjadi. Sebagai contoh, kita tentunya sering kali melihat adanya berita di berbagai media seperti bencana alam, berita tentang naiknya harga kebutuhan dan lain-lainnya.

3. Menyampaikan hal-hal baru.

Biasanya ini terkait dengan konten dari masing-masing produk jurnalistik. Contohnya adalah sekarang ini ada beberapa berita yang menampilkan tentang lifestyle, kesehatan, bahkan berita yang mengajak dan memotivasi kita untuk mampu mengelola keuangan sendiri.
Informasi dari kegiatan-kegiatan jurnalistik tersebut mempunyai kandungan yang dapat merubah sikap, pendapat serta membujuk masyarakat untuk menanggapi informasi tersebut. Dan kategori pemberitaan yang diberikan dari beberapa produk jurnalistik yang tersaji saat ini selain mengambarkan berita, bisa juga menampilkan komentar atau ulasan.
Komentar atau ulasan di media cetak biasanya terjadi pada rubrik-rubrik opini, sementara itu dalam media elektronik, seperti televisi atau radio disampaikan dalam bentuk sesi tanya jawab yang ditampilkan secara visual.
Sementara itu, dalam media internet, melalui sebuah rubrik yang dikenal dengan citizen journalism, di mana masyarakat yang bukan jurnalis atau wartawan pun bisa memberikan berita mereka sendiri.

4. Bersifat advetorial.

Di mana produk jurnalistik ini memberitakan sebuah informasi dari beberapa perusahaan tentang produk-produk mereka, berupa berita atau informasi yang dibutuhkan mereka.
Tetapi, apa yang paling penting adalah tampilan pemberitaan yang akan dipaparkan dalam produk-produk jurnalistik. Setiap tulisan yang dibuat haruslah selalu mengandung konsep dasar jurnalistik yaitu, 5W+1H, yaituwhat, who, where, when, why dan how. Semua terapan tersebut wajib digunakan oleh para wartawan dalam setiap penyajian beritanya. Bahkan masyarakat yang ingin menyampaikannya dalam bentuk citizen journalism.
Dunia jurnalistik membuat dunia benar-benar di ujung jari. Misalnya, membaca berita-berita di koran akan membuat wawasan bertambah. Pengetahuan tentang banyak hal bisa didapatkan hanya dengan harga Rp2.000,- hingga Rp6.500,-. Tidak harus pergi ke daerah tertentu secara langsung untuk mengetahui apa dan bagaimana bentuk daerah tersebut.
Cukup dengan mencari berita dan berselancar sejenak di internet, semua data dan informasi sudah bisa didapatkan dengan mudah. Keberadaan dunia jurnalistik ini juga membuat banyak orang mempunyai pekerjaan. Ratusan lowongan pekerjaan dapat disediakan oleh bidang jurnalistik ini.
Misalnya, penulis lepas, wartawan, karesponden, fotografer, editor, hingga janitor dan penjual koran di lampu merah, bisa menghidupi keluarga mereka dengan cara mencemplungkan diri ke dunia jurnalistik ini. Semoga teori jurnalistik dan penjelasan lainnya tersebut bermanfaat.

Selasa, 25 Februari 2014

IT java Programing, referensi Pbo 1


Bab 1 : Pengenalan Terhadap Java

  1. Sebutkan kelebihan-kelebihan yang dimiliki oleh Java yang Anda ketahui!

Jawaban :

·        Bersifat portable dan platform independent . Program Java yang Anda tulis akan dapat dieksekusi di platform mana pun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untukplatform tersebut tersedia.
·        Memiliki garbage collection yang dapat mendealokasikan memori secara otomatis. Anda tidak perlu secara eksplisit membebaskan suatu lokasi memori yang dipakai karena ini akan dilakukan secara otomatis oleh Java.
·        Menghilangkan pewarisan berganda yang terdapat pada C++. Walaupun kelihatannya lebih sebagai suatu kekurangan, namun banyak para ahli yang mengakui bahasa konsep pewarisan berganda lebih banyak mengakibatkan kerugian dari pada keuntungan. Java telah didesain sedemikian rupa sehingga Anda tidak akan memerlukan tehnik ini dalam pembuatan program apa pun.
·        Mengurangi pointer aritmetik. Pengaksesan lokasi memori secara langsung dengan menggunakanpointer memungkinkan program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi dan menghilangkan kemungkinan kesalahan seperti ini, penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.
·        Memiliki array sejati.
·        Mengurangi kerancuan antara pemberian nilai pada statement kondisional. Contoh penggunaan tanda ‘=’ dengan ‘==’ pada kondisi if.

  1. Apa yang Anda ketahui tentang karakteristik Java?

Jawaban :

    • Berorientasi Objek, Java telah menerapkan konsep pemrograman berorientasi objek yang modern dalam implementasinya.
    • Robust, Java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly typed dan memilikiruntime checking.
    • Portable, program Java dapat dieksekusi di platformmana pun selama tersedia Java Virtual Machine untukplatform tersebut.
    • MultithreadingJava mendukung penggunaanmultithreading yang telah terintegrasi secara langsung dalam bahasa Java.
    • Dinamisprogram Java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi programdan bukan pada saat kompilasi.
    • Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari.
    • TerdistribusiJava didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet.
    • Aman, aplikasi yang dibuat dengan bahasa Java dapat dipastikan keamanannya terutama untuk aplikasi internet.
    • Netral secara arsitekturJava tidak terikat pada suatu mesin atau sistem operasi tertentu.
    • Interpreted, aplikasi Java dapat dieksekusi padaplatform yang berbeda-beda dengan melakukan interpretasi pada bytecode.
    • Berkinerja Tinggi, bytecode  Java telah sangat teroptimasi, sehingga eksekusi program dapat dilakukan secara cepat sekalipun dilakukan dengan cara interpretasi terhadap bytecode.


Bab 2: Pengenalan Objek: Paradigma Pemrograman Berbasis Objek

  1. Jelaskan perbedaan antara state dan behavior. Berikan contohnya!

Jawaban:
           
            State merupakan keadaan dari suatu objek, contohnya tinggi, berat, usia, merupakan state yang dimiliki oleh objek manusia. State ini bersifat pasif karena ia tidak dapat melakukan operasi apa pun, padanya justru dilakukan operasi. Oleh karena itu secara sederhana state dapat dianggap sebagai ‘kata benda’. Sedangkan behaviour merupakan operasi atau aktivitas yang dapat dilakukan oleh suatu objek, contohnya makan, minum, menua, bekerja, merupakan behaviour yang dimiliki oleh objek manusia. Aktivitas ini dapat (tidak selalu) mempengaruhi state dari objek itu sendiri, misalnya behaviour menua dapat merubahstate umur. Oleh karena sifatnya ini, secara sederhana behaviour dianggap sebagai ‘kata kerja’.

  1. Jelaskan apa yang dimaksud dengan class dan objek ! Apa bedanya dan berikan contohnya!

Jawaban:

            Class digunakan untuk menggambarkan suatu model atau spesifikasi dari suatu entitas, sedangkan objek merupakan kenyataan, realisasi atau perwujudan dari classitu sendiri. Contoh sederhana : desain arsitektur gedung dan gedung yang dibuat berdasarkan desain tersebut. Desain arsitektur gedung dapat dianggap sebagai class, sedangkan gedung yang dibangun berdasarkan desain itu sendiri dapat dianggap sebagai objeknya.
Bab 3 : Sintaks Bahasa dan Tipe Data

  1. Apa perbedaan antara tipe data primitif dan tipe data referensi?

Jawaban :

            Tipe data primitif merupakan tipe data dasar yang dikenal oleh Java. Variabel dengan tipe data primitif dapat langsung digunakan untuk ‘memegang’ data yang sesuai dengan tipe datanya. Contoh : int var = 3; maka nilai variabel var adalah 3.
            Sedangkan tipe data referensi digunakan untuk semua tipe data selain tipe data primitif termasuk di sini adalah array dan class. Variabel dengan tipe data referensi tidak ‘memegang’ secara langsung nilai yang hendak disimpan, melainkan variabel ini hanya ‘memegang’ referensi (alamat) dari nilai yang sebenarnya yang ada di memori.

  1. Untuk melatih pengetahuan Anda akan tipe data, buatlahprogram untuk menghitung luas :

    • Segitiga
    • Lingkaran
    • Bujursangkar
    • Empat persegi panjang

Hati-hati dengan konversi tipe data secara otomatis yang dilakukan oleh Java, terutama konversi dari tipe floating-point ke integer.

Jawaban :

public class HitungLuas {
     public static void main(String[] args) {

     // data segitiga
int panjangSegitiga = 5;
int tinggiSegitiga = 9;

     // data lingkaran
int jari2Lingkaran = 15;

     // data bujursangkar
int panjangSisi = 13;

     // data persegi panjang
int panjangPersegi = 35;
int lebarPersegi = 45;

double luas;

     // luas segitiga
luas = ((double) (panjangSegitiga*tinggiSegitiga)/2);
System.out.println("Luas Segitiga : " + luas);

     // luas lingkaran
luas = 3.14*jari2Lingkaran*jari2Lingkaran;
System.out.println("Luas Lingkaran : " + luas);

     // luas bujursangkar
luas = panjangSisi*panjangSisi;
System.out.println("Luas Bujursangkar : " + luas);

     // luas persegi panjang
luas = panjangPersegi*lebarPersegi;
System.out.println("Luas Persegi Panjang : " + luas);

     }

}


           

output program :

            


Bab 4 : Operator

1.      Apa perbedaan x++ dan ++x, jelaskan!

Jawaban :

      Penggunaan x++ dan ++x jika tidak dikombinasikan dengan ekspresi lainnya tidak memiliki perbedaan sama sekali. Perbedaannya baru akan terasa jika penggunaannya digabung dengan suatu ekspresi. Namun secara sederhana x++ dapat diartikan : lakukan operasi terhadap x baru kemudian tambahkan tambahkan dengan 1. Sedangkan ++x dapar diartikan : jumlahksn x dengan 1, baru kemudian lakukan operasi terhadap x. Contoh :

y = x++ + 10;  sama dengan : y = x + 10;
                                                       x = x + 1;

Sedangkan

      y = ++x + 10;  sama dengan : y = x + 1;
                                                      x = x + 10;

           
2.      Bagaimana menghitung perkalian dan pembagian dengan bilangan dua tanpa menggunakan operatormatematika?

Jawaban :

      Perkalian dengan bilangan dua dapat  dilakukan dengan menggunakan operator bitwise << (geser kiri). Sedangkan untuk pembagian dapat dilakukan dengan menggunakan operator bitwise >> (geser kanan).

Contoh penjelasan :

      124/2 = 124 >> 1
124    =  0000000001111100
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \               >> 1
   0000000000111110             = 62
                       
                        124*2 = 124 << 1
124 = 0000000001111100
   / / / / / / / / / / / / / / /                   << 1
  0000000011111000                 = 248
3.            Bagaimana menukar nilai dari dua variabel integerdengan tanpa menggunakan variabel perantara.

Jawaban :

Contoh : variabel A = 22 dan B = 34, tanpa menggunakan variabel perantara, tukarlah kedua nilai dari variabel tersebut sehingga variabel A = 34 dan B = 22.

Untuk menukar nilai dari dua buah variabel integertanpa menggunakan variabel perantara dapat digunakanoperator bitwise XOR. Perhatikan contoh penjelasan berikut ini :

A = 22 dan B = 34
Hasil dari A XOR B adalah

      A = 22             = 0000000000010110
B = 34             = 0000000000100010
A XOR B        = 0000000000110100 = 52

Jika kita anggap hasil dari A XOR B adalah C maka

A = 22             = 0000000000010110
C = 52             = 0000000000110100
B XOR C        = 0000000000010110 = A

Dapat disimpulkan bahwa jika C = A XOR B,
maka C XOR A = B dan C XOR B = A

Dengan demikian, Anda dapat menuliskan kode berikut ini untuk menukar nilai dari dua buah variabel integer A dan B di atas :

A = A ^ B;
B = A ^ B;
A = B ^ A;

Sehingga sekarang nilai variabel A = 34 dan B = 22.


Bab 5 : Kontrol Alur Eksekusi Program

1.      Buatlah program yang menghasilkan ouput seperti di bawah ini!


                       
                        Jawaban :
public class Bintang {
     public static void main(String[] args) {
     int ukuran = 7;

     for (int i = 0; i<ukuran; i++) {
          int j;
          int spasiCounter = ukuran - i - 1;

          for (j = 0; j < spasiCounter; j++) {
              System.out.print(" ");
          }

          for (j = 0; j <= (i*2); j++) {
              if (j % 2 == 1)
                   System.out.print(" ");
              else
                   System.out.print("*");
          }
          System.out.println();
     }
     }
}


                       
                                   



















Bab 6 : Class

            Buatlah sebuah class dengan nama Televisi, yang mempunyai property :

·        deskripsi : untuk menyimpan nama/deskripsi dari televise. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapay diubah setelahnya.
·        jumlahChannel : untuk menyimpan banyaknya channel yang dapat disimpan oleh televisi. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapat diubah setelahnya.
·        channels : untuk menyimpan data channel stasiun televisi yang sudah diset. Property ini dapat dibaca dan diubah kapan saja.
·        channelAktif : untuk menyimpan nomor channel yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.
·        volume : untuk menyimpan informasi besarnya volume televisi yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.

Selain itu objek Televisi tersebut juga harus mendukung operasi berikut ini :

·        Menset channel stasiun televisi yang diinginkan. Ini sama halnya jika Anda membeli televisi baru, hal pertama kali yang Anda lakukan tentunya adalah mendaftarkan semua channel stasiun televisi yang ada ke dalam televisi Anda.Sehingga berikutnya jika Anda ingin menonton televisi yang Anda inginkan, Anda cukup memasukkan nomor channel dari stasiun tersebut yang sudah terdaftar pada televisi tersebut. Anda juga tidak boleh menset channel lebih banyak dari jumlah channel yang dapat ditampung oleh televisi.
·        Mengganti channel stasiun yang sedang aktif. Jika nomor channel yang diinginkan ternyata belum diset ke stasiun televisi manapun, tampilkan informasi yang memberitahukan hal tersebut.
·        Mengubah volume suara.
·        Menampilkan deskripsi dari televisi.

Class Televisi yang Anda buat tersebut harus dapat digunakan oleh program berikut ini :

public class User {
     public static void main(String[] args) {

     Televisi tv = new Televisi("TV tempoe doeloe, 14 inches", 10);

     String[] semuaChannel = {"RCTI", "SCTV","INDOSIAR","LA TV",
                                               "METRO TV","TRANS TV","TPI","TV 7",                                              "TVRI","TV G","AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV", 
                                               "MTRO TV","TRANS TV","TPI","TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannels(channelFavorit);

     tv.setChannelAktif(3);

     tv.setVolume(10);

     tv.setChannelAktif(1);
     }
}

           

            Dengan hasil eksekusi seperti berikut ini :

            

           
                        Jawaban :

class Televisi {
     private String deskripsi;
     private int jumlahChannel;
     private String[] channels = null;
     private int channelAktif;
     private int volume;

     public Televisi(String deskripsi, int jumlahChannel) {
     this.deskripsi = deskripsi;
     this.jumlahChannel = jumlahChannel;
     }

     public String getDeskripsi() {
     return deskripsi;
     }

     public int getJumlahChannel() {
     return jumlahChannel;
     }

     public String[] getChannels() {
     if (channels == null) {
          System.out.println("Belum ada channel yang diset!");
     }
     return channels;
     }

     public void setChannels(String[] channels) {
     if (channels.length > jumlahChannel) {
          System.out.println("Maaf Tv ini hanya dapat menyimpan " +
                        jumlahChannel + " channel");
     }
     else {
          this.channels = channels;
         System.out.println("Informasi channel berhasil di update!");
     }
     }

     public int getChannelAktif() {
     return channelAktif;
     }

     public void setChannelAktif(int channelAktif) {
     if (channelAktif > channels.length) {
          System.out.println("Channel yang Anda inginkan belum diset!");
          return;
     }
     this.channelAktif = channelAktif;
     System.out.println("Pindah channel ke : " + channels[channelAktif]);
     }

     public int getVolume() {
     return volume;
     }

     public void setVolume(int volume) {
     this.volume = volume;
     System.out.println("intensitas volume sekarang : " + volume);
     }
}

           
                                   
Bab 7 : Pewarisan

1.      Keuntungan apa yang dapat Anda peroleh dengan melakukan pewarisan dan kapan Anda mungkin perlu untuk melakukannya?

Jawaban :

      Keuntungan terutama yang Anda dapatkan adalah ‘reusable code’, karena dengan menurunkan suatu class dari Superclass, Anda cukup menambahkan kode specific yang dimiliki oleh class itu saja sedangkan kode lainnya mungkin tidak perlu Anda ketik ulang karena telah didapat dari Superclass-nya.

2.      Apa yang terjadi jika Anda mendeklarasikan member pada Subclass yang sama persis dengan yang dimiliki oleh superclass-nya? Bagaimana pula cara subclasss agar dapat mengakses member dari superclass tersebut?

Jawaban :

      Member yang Anda deklarasikan pada subclass yang sama persis dengan member yang dideklarasikan oleh superclass-nya dikatakan meng-override member dari superclass tersebut. Untuk mengakses member dari superclass ini dari subclass-nya harus digunakan keyword super.

3.      Buatlah sebuah class turunan bernama class TelevisiModern dari class Televisi  yang telah Anda buat pada soal  di bab 6. Tambahkan fasilitas teletext dan cd player built-in yang dapat digunakan oleh contoh program berikut ini :

public class User {
     public static void main(String[] args) {

     TelevisiModern tv = new TelevisiModern("TV Modern, 29 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR",
                   "LA TV", "METRO TV", "TRANS TV",
                   "TPI", "TV 7", "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR",
                    "LA TV", "MTRO TV", "TRANS TV", "TPI",
                                               "TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannelAktif(3);
     tv.setVolume(10);
     tv.setChannelAktif(10);
     tv.setChannelAktif(1);
     tv.setModusTampilan(TelevisiModern.TELETEX);
     tv.setHalamanTeletext(250);
     tv.setModusTampilan(TelevisiModern.TV);
     tv.playCD();
     tv.setDiscTray("The Matrix");
     tv.playCD();

     }
}

Dengan tampilan hasil eksekusi seperti berikut ini :


Jawaban :

public class TelevisiModern extends Televisi {
     public static final int TV = 0;
     public static final int TELETEXT = 1;
     int modusTampilan = TV;
     int halamanTeletext = 100;
     String discTray = null;

     public TelevisiModern(String deskripsi, int jumlahChannel) {
     super(deskripsi, jumlahChannel);
     }

     public void setHalamanTeletext(int halamanTeletext) {
     this.halamanTeletext = halamanTeletext;
     System.out.println("Berpindah ke halaman teletext " +
                                          halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
     switch (modusTampilan) {
          case TV:
              System.out.println("Modus tampilan : Televisi");
              break;
          case TELETEXT:
              System.out.println("Modus tampilan : Teletext");
              break;
     }
     }

     public String getDiscTray() {
     return discTray;
     }

     public void setDiscTray(String discTray) {
     this.discTray = discTray;
     }

     public void playCD() {
     if (discTray == null) {
          System.out.println("Tidak ada CD di dalam disc tray!");
          return;
     }
     System.out.println("Memutar file " + discTray);
     }
}


Bab 8 : Interface

Buatlah sebuah interface bernama Control dan rombaklah class TelevisiModern yang telah anda buat pada soal Bab 7 di atas agar mengimplmentasi interface Control ini sehingga semua fungsi objek dari class TelevisiModern tersebut dapat di akses melalui interface tersebut! Buat juga sebuah class baru bernama RemoteControl di mana objek dari class inilah yang akan menggunakan interface Control untuk mengakses fungsi objek dari class TelevisiModern tersebut! Class dan Interface yang telah dibuat tersebut harus dapat digunakan seperti dalam contoh programberikut ini:

public class User {
     public static void main(String[] args) {

     TelevisiModern tv1 = new TelevisiModern("TV Sony 29 inches", 200);
     TelevisiModern tv2 = new TelevisiModern("TV Hitachi 21 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7",
                                              "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7"};

     tv1.setDiscTray("The Matrix");
     tv2.setDiscTray("Spiderman");

     // remote control diarahkan ke tv1
     RemoteControl rc = new RemoteControl(tv1);

     rc.setChannels(semuaChannel);
     rc.setChannelAktif(3);
     rc.setVolume(10);
     rc.setChannelAktif(10);
     rc.setModusTampilan(TelevisiModern.TELETEXT);
     rc.setHalamanTeletext(250);
     rc.setModusTampilan(TelevisiModern.TV);
     rc.playCD();

     System.out.println();

     //remote control diarahkan ke tv2
     rc.setTv(tv2);
     rc.setChannels(channelFavorit);
     rc.setVolume(20);
     rc.setChannelAktif(1);
     rc.playCD();
     }
}
           

Jawaban:

public interface Control {

     public String getDeskripsi();
     public String[] getChannel();
     public int getJumlahChannel();
     public void setChannels(String[] channels);
     public int getChannelAktif();
     public void setChannelAktif(int channelAktif);
     public int getVolume();
     public void setVolume(int volume);
}

public class RemoteControl implements Control {

     Control tv = null;

     public RemoteControl(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public void setTv(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public String getDeskripsi() {
            return tv.getDeskripsi();
     }

     public int getJumlahChannel() {
            return tv.getJumlahChannel();
     }

     public String[] getChannels() {
            return tv.getChannels();
     }

     public void setShannels(String[] channels) {
            tv.setChannels(channels);
     }

     public int getChannelAktif() {
            return tv.getChannelAktif();
     }

     public void setChannelAktif(int channelAktif) {
            tv.setChannelAktif(channelAktif);
     }

     public int getVolume() {
            return tv.getVolume();
     }

     public void setVolume(int volume) {
            tv.setVolume(volume);
     }

     public void setHalamanTeletext(int halamanTeletext) {
            tv.setHalamanTeletext(halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
            tv.setModusTampilan(modusTampilan);
     }

     public void playCD() {
            tv.playCD();
     }
}
           

Selanjutnya class TelevisiModern yang telah anda buat sebelumnya harus dideklarasikan agar mengimplementasi interface Control diatas.

Bab 9 : Package dan Classpath

1.      Bagaimana cara anda memberitahu Java untuk menggunakan classpath yang anda inginkan  dan bagaimana pula cara Java memanfaatkan classpath ini untuk mendapatkan class yang dibutuhkan ?

Jawaban:

Cara pertama adalah dengan menset environmentvariabel yang bernama CLASSPATH agar menampung semua path yang mungkin dibutuhkan untuk mendapatkan class ataupun interface yang akan digunakan. Misalnya, class yang dibutuhkan terletak pada direktori c:\java_projects\classes dan d:\java_tool\lib, maka environment variabel CLASSPATH harus berisi kedua path tersebut. Pada sistem operasi Windows hal ini dapat Anda lakukan dengan mengetikan perintah berikut ini pada command prompt (dos prompt):

set CLASSPATH= c:\java_projects\classes; d:\java_tool\lib

Direktori yang terdaftar dalam CLASSPATH ini akan digunakan oleh Java sebagai titik awal (root) pencarian dari class yang dibutuhkan. Misalnya, jika anda mengetikkan perintah berikut ini:

java TesMe

maka Java akan mencari class TesMe ini dalam kedua direktori di atas. Jika class yang hendak anda eksekusi menggunakan package, misalnya anda hendak mengeksekusi program dengan mengetikan perintah berikut ini:

java bab9.TesPackage

maka Java akan mencari class TesPackage dalam direktori:

c:\java_projects\classes \bab9 dan
d:\java_tool\lib\bab9.

Cara kedua yang dapat dilakukan untuk menset CLASSPATH adalah dengan mengunakan switch

-classpath <daftar-direktori>

pada waktu hendak mengompilasi ataupun hendak mengeksekusi suatu program. Contoh:

java -classpath c:\java_projects bab9.TesPackage

2.      keuntungan apa saja yang dapat anda peroleh dengan menggunakan package dalam program?

Jawaban:

Dengan menggunakan package anda menciptakanname space anda sendiri sehingga anda dapat menggunakan nama yang sama dengan class maupuninterface asalkan kedua class maupun interface tersebut berada di dalam package yang berbeda. Selain itu dengan menggunakan package, file class maupuninterface yang anda buat akan tersimpan dengan rapi dalam direktorinya masing-masing sehingga memudahkan pencarian. Menaruh file dalam jumlah besar ke dalam satu direktori saja akan mudah menimbulkan kebingungan pada saat pencarian.

3.      Jelaskan fungsi keyword import dalam hubungannya dengan penggunaan package!

Jawaban:

Keyword import dipakai jika anda ingin menggunakan class ataupun interface yang berbeda pada package yang berbeda dari tempat dimana anda ingin menggunakannya. Dengan menggunakan keywordimport ini, anda tidak perlu menuliskan full package class/interface name untuk dapat menggunakan classatau interface yang ada dalam suatu package. Anda cukup menggunakan nama classnya saja secara langsung.


Bab 10 : Penanganan Eksepsi

1.      Apa perbedaan antara keyword throw dengan keywordthrows!

Jawaban :

      Keyword throw digunakan untuk melempar suatu eksepsi dalam program, contoh kode:

      If (ada yang salah)
                  Throw new Exception(“Salah nih….!”);

Sedangkan keyword throws digunakan pada waktu mendeklarasikan suatu method untuk memberitahu bahwa method yang bersangkutan dapat melempar eksepsi dengan tipe yang dideklarasikan oleh keywordthrows tersebut. Contoh kode :

      void methodAneh() throws IOException, Exception {}

Penggunaan keyword throws ini juga hanya diperlukan jika eksepsi yang hendak dilempar merupakan eksepsi yang dicek (bukan merupakan turunan dari classRuntimeException dan umumnya merupakan turunan dari class Exception).

2.      Jelaskan fungsi pembuatan subclass eksepsi sendiri!

Jawaban :

Dengan membuat class eksepsi sendiri berarti Anda membuat tipe data baru dimana tipe data baru ini dapat Anda gunakan untuk melempar suatu eksepsi untuk kemudian ditangkap pada bagian lain dari program. Dengan menggunakan tipe data eksepsi yang berbeda-beda, program dapat mengetahui apa kira-kira penyebab eksepsi yang bersangkutan sehingga dapat bertindak sebagimana mestinya.


Bab 11 : Pemrograman Multithreading

1.      Menurut Anda, kapan sebaiknya menggunakaninterface Runnable dan kapan membuat turunan dariclass Thread?

Jawaban :

      Interface Runnable digunakan jika Anda harus menurunkan class yang Anda buat dari class lainnya sehingga tidak memungkinkan lagi untuk diturunkan dari class Thread. Namun membuat class turunan dariclass Thread sangat disarankan jika class yang Anda buat tersebut akan meng-override member dari classThread tersebut.

2.      Pertimbangan apa yang kira-kira digunakan pada saat Anda memutuskan penggunaan antara sinkronisasi padamethod dengan sinkronisasi pada objek!

Jawaban :

Sinkronisasi pada method mengharuskan methodtersebut dideklarasikan dengan menggunakankeyword synchronized. Jika ternyata pendeklarasianmethod tersebut tidak menggunakan keywordtersebut maka Anda tidak punya cara lain selain menggunakan tehnik sinkronisasi pada objek. Namun jika Anda memiliki source code dari classdimana method tersebut berada, Anda dapat saja mengubah method tersebut agar didelarasikan menggunakan keyword synchronized.

Bab 12 : The Java Library

1.      Jelaskan fungsi class wrappers dan hubungannya dengan tipe data primitif!

Jawaban :

Class wrappers digunakan untuk mempresentasikan tipe data primitif dalam bentuk objek. Ini diperlukan karena tipe data primitif tidak digunakan menggunakan referensinya. Sedangkan banyak operasi yang didukung oleh Java Librarymengharuskan penggunaan referensi yang hanya didukung oleh tipe data referensi.
           
2.      Berikut ini adalah sekumpulan string yang di dalamnya terdapat informasi No Induk Mahasiswa(NIM), Nama, dan IPK :

0256975648;Nilasari Kumala;3.1#0568974567;Timotius;3.8#0236971245;Stevabus Firman;2.6#0457878975;Dicky Suteja;0#0695475486;Andi Setiawan;3.4

Buatlah sebuah program untuk mengelompokkan semua informasi yang didapat dari string di atas, ke dalam collection atau map. Tambahkan fasilitas untuk mengurutkan data berdasarkan ketiga informasi tersebut dan tampilkan ke layer!

Program yang Anda buat tersebut harus dapat digunakan seperti berikut ini :

public class User {
    public static void main(String[] args) {
        String inputData = "0256975648;Niko Syah;3.1#0568974567;
                               Titi Nur;3.8#0236972345;" +
                              "StevanusFirman;2.6#0457878975;
                               DickySuteja;2.0#0695475486;Andi Sujata;3.4";
       
        Database database = new Database(inputData);
       
        System.out.println("Data Asli");
        System.out.println("=============");
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan NIM");
       System.out.println("==============================");
        database.urutkanBerdasarkanNim();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan Nama");
       System.out.println("==============================");
        database.urutkanBerdasarkanNama();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan IPK");
       System.out.println("==============================");
        database.tampilkanData();
    }
}

Dengan tampilan hasil eksekusi sebagai berikut :

Jawaban :

public class Mahasiswa {
            private String nim;
            private String nama;
            private double ipk;
           
            public Mahasiswa(String nim, String nama, double ipk) {
                        this.nim = nim;
                        this.nama = nama;
                        this.ipk = ipk;
            }
           
            public String getNim() {
                        return nim;
            }
           
            public void setNim(String nim) {
                        this.nim = nim;
            }
           
            public String getNama() {
                        return nama;
            }
           
            public void setNama(String nama) {
                        this.nama = nama;
            }
           
            public double getIpk() {
                        return ipk;
            }
           
            public void setIpk(double ipk) {
                        this.ipk = ipk;
            }
}

import java.util.ArrayList;
import java.util.StringTokenizer;

public class Database {
    private ArrayList data = new ArrayList();
           
    public Database(String inputData) {
        Mahasiswa datum;
        StringTokenizer tokens = new StringTokenizer(inputData, ";#");
       
        while (tokens.hasMoreTokens()) {
            String nim = tokens.nextToken();
            String nama = tokens.nextToken();
            double ipk = Double.parseDouble(tokens.nextToken());
            datum = new Mahasiswa(nim, nama, ipk);
            data.add(datum);
        }
    }
   
    public void tampilkanData() {
        for (int i = 0; i < data.size(); i++) {
            Mahasiswa datum = (Mahasiswa)data.get(i);
            System.out.print(datum.getNim() + "\t");
            System.out.print(datum.getNama() + "\t\t");
            System.out.println(datum.getIpk());
        }
    }
   
    public void urutkanBerdasarkanNim() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1, str2;
        int length;
        Mahasiswa datum, datumBaru;
        for(int i=0;i<data.size();i++){
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0){
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNim();
            length = dataBaru.size();
           
            for(int j=0;j<length;j++){
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNim();
                if(str1.compareTo(str2)<0){
                    dataBaru.add(j,datumBaru);
                    break;
                } 
                else if (j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanNama() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1,str2;
        int length;
        Mahasiswa datum,datumBaru;
        for (int i=0;i<data.size();i++) {
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0) {
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNama();
            length = dataBaru.size();
            
            for(int j=0;j<length;j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNama();
                if(str1.compareTo(str2)<0) {
                    dataBaru.add(j,datumBaru);
                    break;
                }
                else if(j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanIpk() {
        ArrayList dataBaru = new ArrayList(data.size());
        double num1, num2;
        int length;
        Mahasiswa datum, datumBaru;
        for (int i = 0; i < data.size(); i++) {
            datumBaru = (Mahasiswa)data.get(1);
            if (i == 0) {
                dataBaru.add(datumBaru);
                continue;
            }
            num1 = datumBaru.getIpk();
            length = dataBaru.size();
            for (int j = 0; j < length; j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                num2 = datum.getIpk();
               
                if (num1 < num2) {
                    dataBaru.add(j, datumBaru);
                    break;
                }
                else if (j == length - 1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
}

Bab 13 : Operasi I/O

1.      Jelaskan perbedaan utama antara Byte Streams dengan Character Streams!

Jawaban :

      Sesuai dengan namanya, byte streams membaca maupun menulis data (stream) dengan menggunakan ukuran byte atau 8 bit, sedangkan character streams menggunakan ukuran character, di mana dalam Java yang menggunakan Unicode untuk mempresentasikan sebuah karakter, memiliki besar 2 byte atau 16 bit. Oleh karena itu penggunaan character streams umumnya hanya cocok digunakan untuk membaca ataupun menulis data yang berupa teks (string) saja. Jika data yang hendak dibaca ataupun ditulis bukan merupakan teks, sebaiknya digunakan byte streams.

2.      Buatlah program untuk mengkopi suatu file teks! Nama file yang hendak dikopi dan hasil kopiannya harus dilewatkan sebagai parameter pada waktu eksekusi. Contoh eksekusi program :

Java kopi fileA.txt fileB.txt

Jawaban :

public class Kopi {
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Cara pemakaian : " );
            System.out.println("java Kopi namaFileSumber namaFileTujuan");
            return;
        }
       
        String sumber = args[0];
        String tujuan = args[1];
       
        String data;
        FileWriter fout = null;
        FileReader fin = null;
        try {
            try {
                fin = new FileReader(sumber);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            try {
                fout = new FileWriter(tujuan);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            BufferedReader br = new BufferedReader(fin);
           
            data = br.readLine();
            while (data != null) {
                // \r\n digunakan untuk pindah baris
                fout.write(data + "\r\n");
                data = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("Eksepsi tidak diketahui : " + e);
        } finally {
            //tutup file
            if (fout != null) {
                try {
                    fout.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
        }
    }      
}


Bab 14 : Membuat User Interface dengan Swing

            Buatlah sebuah game sederhana dengan aturan sebagai berikut :

1.      Tampilan game ini terdiri atas 40 button yang disusun 5 baris, 8 kolom. Dalam game ini, user harus mencari pasangan dari nilai yang ada pada masing-masing button. Untuk kesederhanaan, sebagai nilainya, Anda cukup menggunakan nilai integer dari 0-100.
2.      Semua nilai dari masing-masing button ini harus disembunyikan dengan menggunakan lambang “?”.
3.      Untuk melihat nilai yang ada, user harus mengklik pada button yang bersangkutan. Selanjutnya user harus mencari pasangan dari nilai yang ditampilkan tersebut dengan mengklik button lainnya. Jika ternyata kedua nilai dari button yang telah ditampilkan tersebut tidak sama, maka nilai yang sudah ditampilkan tersebut harus ditutup lagi dengan lambang “?”. Namun jika nilai dari kedua button sama maka nilai dari kedua button tersebut harus tetap ditampilkan dan button harus di disabled agar tidak bisa dipilih lagi.
4.      Game akan dianggap selesai jika user berhasil membuka semua nilai yang disembunyikan oleh setiap button.

Berikut ini contoh tampilan hasil eksekusi program, Anda tidak harus mengikuti contoh tampilan ini. Jika memungkinkan, Anda dipersilahkan untuk menambahkan fasilitas apa pun yang mungkin akan membuat game ini semakin menarik untuk dimainkan.

Bab 1 : Pengenalan Terhadap Java

  1. Sebutkan kelebihan-kelebihan yang dimiliki oleh Java yang Anda ketahui!

Jawaban :

·        Bersifat portable dan platform independent . Program Java yang Anda tulis akan dapat dieksekusi di platform mana pun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untukplatform tersebut tersedia.
·        Memiliki garbage collection yang dapat mendealokasikan memori secara otomatis. Anda tidak perlu secara eksplisit membebaskan suatu lokasi memori yang dipakai karena ini akan dilakukan secara otomatis oleh Java.
·        Menghilangkan pewarisan berganda yang terdapat pada C++. Walaupun kelihatannya lebih sebagai suatu kekurangan, namun banyak para ahli yang mengakui bahasa konsep pewarisan berganda lebih banyak mengakibatkan kerugian dari pada keuntungan. Java telah didesain sedemikian rupa sehingga Anda tidak akan memerlukan tehnik ini dalam pembuatan program apa pun.
·        Mengurangi pointer aritmetik. Pengaksesan lokasi memori secara langsung dengan menggunakanpointer memungkinkan program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi dan menghilangkan kemungkinan kesalahan seperti ini, penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.
·        Memiliki array sejati.
·        Mengurangi kerancuan antara pemberian nilai pada statement kondisional. Contoh penggunaan tanda ‘=’ dengan ‘==’ pada kondisi if.

  1. Apa yang Anda ketahui tentang karakteristik Java?

Jawaban :

    • Berorientasi Objek, Java telah menerapkan konsep pemrograman berorientasi objek yang modern dalam implementasinya.
    • Robust, Java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly typed dan memilikiruntime checking.
    • Portable, program Java dapat dieksekusi di platformmana pun selama tersedia Java Virtual Machine untukplatform tersebut.
    • MultithreadingJava mendukung penggunaanmultithreading yang telah terintegrasi secara langsung dalam bahasa Java.
    • Dinamisprogram Java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi programdan bukan pada saat kompilasi.
    • Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari.
    • TerdistribusiJava didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet.
    • Aman, aplikasi yang dibuat dengan bahasa Java dapat dipastikan keamanannya terutama untuk aplikasi internet.
    • Netral secara arsitekturJava tidak terikat pada suatu mesin atau sistem operasi tertentu.
    • Interpreted, aplikasi Java dapat dieksekusi padaplatform yang berbeda-beda dengan melakukan interpretasi pada bytecode.
    • Berkinerja Tinggi, bytecode  Java telah sangat teroptimasi, sehingga eksekusi program dapat dilakukan secara cepat sekalipun dilakukan dengan cara interpretasi terhadap bytecode.


Bab 2: Pengenalan Objek: Paradigma Pemrograman Berbasis Objek

  1. Jelaskan perbedaan antara state dan behavior. Berikan contohnya!

Jawaban:
           
            State merupakan keadaan dari suatu objek, contohnya tinggi, berat, usia, merupakan state yang dimiliki oleh objek manusia. State ini bersifat pasif karena ia tidak dapat melakukan operasi apa pun, padanya justru dilakukan operasi. Oleh karena itu secara sederhana state dapat dianggap sebagai ‘kata benda’. Sedangkan behaviour merupakan operasi atau aktivitas yang dapat dilakukan oleh suatu objek, contohnya makan, minum, menua, bekerja, merupakan behaviour yang dimiliki oleh objek manusia. Aktivitas ini dapat (tidak selalu) mempengaruhi state dari objek itu sendiri, misalnya behaviour menua dapat merubahstate umur. Oleh karena sifatnya ini, secara sederhana behaviour dianggap sebagai ‘kata kerja’.

  1. Jelaskan apa yang dimaksud dengan class dan objek ! Apa bedanya dan berikan contohnya!

Jawaban:

            Class digunakan untuk menggambarkan suatu model atau spesifikasi dari suatu entitas, sedangkan objek merupakan kenyataan, realisasi atau perwujudan dari classitu sendiri. Contoh sederhana : desain arsitektur gedung dan gedung yang dibuat berdasarkan desain tersebut. Desain arsitektur gedung dapat dianggap sebagai class, sedangkan gedung yang dibangun berdasarkan desain itu sendiri dapat dianggap sebagai objeknya.
Bab 3 : Sintaks Bahasa dan Tipe Data

  1. Apa perbedaan antara tipe data primitif dan tipe data referensi?

Jawaban :

            Tipe data primitif merupakan tipe data dasar yang dikenal oleh Java. Variabel dengan tipe data primitif dapat langsung digunakan untuk ‘memegang’ data yang sesuai dengan tipe datanya. Contoh : int var = 3; maka nilai variabel var adalah 3.
            Sedangkan tipe data referensi digunakan untuk semua tipe data selain tipe data primitif termasuk di sini adalah array dan class. Variabel dengan tipe data referensi tidak ‘memegang’ secara langsung nilai yang hendak disimpan, melainkan variabel ini hanya ‘memegang’ referensi (alamat) dari nilai yang sebenarnya yang ada di memori.

  1. Untuk melatih pengetahuan Anda akan tipe data, buatlahprogram untuk menghitung luas :

    • Segitiga
    • Lingkaran
    • Bujursangkar
    • Empat persegi panjang

Hati-hati dengan konversi tipe data secara otomatis yang dilakukan oleh Java, terutama konversi dari tipe floating-point ke integer.

Jawaban :

public class HitungLuas {
     public static void main(String[] args) {

     // data segitiga
int panjangSegitiga = 5;
int tinggiSegitiga = 9;

     // data lingkaran
int jari2Lingkaran = 15;

     // data bujursangkar
int panjangSisi = 13;

     // data persegi panjang
int panjangPersegi = 35;
int lebarPersegi = 45;

double luas;

     // luas segitiga
luas = ((double) (panjangSegitiga*tinggiSegitiga)/2);
System.out.println("Luas Segitiga : " + luas);

     // luas lingkaran
luas = 3.14*jari2Lingkaran*jari2Lingkaran;
System.out.println("Luas Lingkaran : " + luas);

     // luas bujursangkar
luas = panjangSisi*panjangSisi;
System.out.println("Luas Bujursangkar : " + luas);

     // luas persegi panjang
luas = panjangPersegi*lebarPersegi;
System.out.println("Luas Persegi Panjang : " + luas);

     }

}


           

output program :

            


Bab 4 : Operator

1.      Apa perbedaan x++ dan ++x, jelaskan!

Jawaban :

      Penggunaan x++ dan ++x jika tidak dikombinasikan dengan ekspresi lainnya tidak memiliki perbedaan sama sekali. Perbedaannya baru akan terasa jika penggunaannya digabung dengan suatu ekspresi. Namun secara sederhana x++ dapat diartikan : lakukan operasi terhadap x baru kemudian tambahkan tambahkan dengan 1. Sedangkan ++x dapar diartikan : jumlahksn x dengan 1, baru kemudian lakukan operasi terhadap x. Contoh :

y = x++ + 10;  sama dengan : y = x + 10;
                                                       x = x + 1;

Sedangkan

      y = ++x + 10;  sama dengan : y = x + 1;
                                                      x = x + 10;

           
2.      Bagaimana menghitung perkalian dan pembagian dengan bilangan dua tanpa menggunakan operatormatematika?

Jawaban :

      Perkalian dengan bilangan dua dapat  dilakukan dengan menggunakan operator bitwise << (geser kiri). Sedangkan untuk pembagian dapat dilakukan dengan menggunakan operator bitwise >> (geser kanan).

Contoh penjelasan :

      124/2 = 124 >> 1
124    =  0000000001111100
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \               >> 1
   0000000000111110             = 62
                       
                        124*2 = 124 << 1
124 = 0000000001111100
   / / / / / / / / / / / / / / /                   << 1
  0000000011111000                 = 248
3.            Bagaimana menukar nilai dari dua variabel integerdengan tanpa menggunakan variabel perantara.

Jawaban :

Contoh : variabel A = 22 dan B = 34, tanpa menggunakan variabel perantara, tukarlah kedua nilai dari variabel tersebut sehingga variabel A = 34 dan B = 22.

Untuk menukar nilai dari dua buah variabel integertanpa menggunakan variabel perantara dapat digunakanoperator bitwise XOR. Perhatikan contoh penjelasan berikut ini :

A = 22 dan B = 34
Hasil dari A XOR B adalah

      A = 22             = 0000000000010110
B = 34             = 0000000000100010
A XOR B        = 0000000000110100 = 52

Jika kita anggap hasil dari A XOR B adalah C maka

A = 22             = 0000000000010110
C = 52             = 0000000000110100
B XOR C        = 0000000000010110 = A

Dapat disimpulkan bahwa jika C = A XOR B,
maka C XOR A = B dan C XOR B = A

Dengan demikian, Anda dapat menuliskan kode berikut ini untuk menukar nilai dari dua buah variabel integer A dan B di atas :

A = A ^ B;
B = A ^ B;
A = B ^ A;

Sehingga sekarang nilai variabel A = 34 dan B = 22.


Bab 5 : Kontrol Alur Eksekusi Program

1.      Buatlah program yang menghasilkan ouput seperti di bawah ini!


                       
                        Jawaban :
public class Bintang {
     public static void main(String[] args) {
     int ukuran = 7;

     for (int i = 0; i<ukuran; i++) {
          int j;
          int spasiCounter = ukuran - i - 1;

          for (j = 0; j < spasiCounter; j++) {
              System.out.print(" ");
          }

          for (j = 0; j <= (i*2); j++) {
              if (j % 2 == 1)
                   System.out.print(" ");
              else
                   System.out.print("*");
          }
          System.out.println();
     }
     }
}


                       
                                   



















Bab 6 : Class

            Buatlah sebuah class dengan nama Televisi, yang mempunyai property :

·        deskripsi : untuk menyimpan nama/deskripsi dari televise. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapay diubah setelahnya.
·        jumlahChannel : untuk menyimpan banyaknya channel yang dapat disimpan oleh televisi. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapat diubah setelahnya.
·        channels : untuk menyimpan data channel stasiun televisi yang sudah diset. Property ini dapat dibaca dan diubah kapan saja.
·        channelAktif : untuk menyimpan nomor channel yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.
·        volume : untuk menyimpan informasi besarnya volume televisi yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.

Selain itu objek Televisi tersebut juga harus mendukung operasi berikut ini :

·        Menset channel stasiun televisi yang diinginkan. Ini sama halnya jika Anda membeli televisi baru, hal pertama kali yang Anda lakukan tentunya adalah mendaftarkan semua channel stasiun televisi yang ada ke dalam televisi Anda.Sehingga berikutnya jika Anda ingin menonton televisi yang Anda inginkan, Anda cukup memasukkan nomor channel dari stasiun tersebut yang sudah terdaftar pada televisi tersebut. Anda juga tidak boleh menset channel lebih banyak dari jumlah channel yang dapat ditampung oleh televisi.
·        Mengganti channel stasiun yang sedang aktif. Jika nomor channel yang diinginkan ternyata belum diset ke stasiun televisi manapun, tampilkan informasi yang memberitahukan hal tersebut.
·        Mengubah volume suara.
·        Menampilkan deskripsi dari televisi.

Class Televisi yang Anda buat tersebut harus dapat digunakan oleh program berikut ini :

public class User {
     public static void main(String[] args) {

     Televisi tv = new Televisi("TV tempoe doeloe, 14 inches", 10);

     String[] semuaChannel = {"RCTI", "SCTV","INDOSIAR","LA TV",
                                               "METRO TV","TRANS TV","TPI","TV 7",                                              "TVRI","TV G","AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV", 
                                               "MTRO TV","TRANS TV","TPI","TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannels(channelFavorit);

     tv.setChannelAktif(3);

     tv.setVolume(10);

     tv.setChannelAktif(1);
     }
}

           

            Dengan hasil eksekusi seperti berikut ini :

            

           
                        Jawaban :

class Televisi {
     private String deskripsi;
     private int jumlahChannel;
     private String[] channels = null;
     private int channelAktif;
     private int volume;

     public Televisi(String deskripsi, int jumlahChannel) {
     this.deskripsi = deskripsi;
     this.jumlahChannel = jumlahChannel;
     }

     public String getDeskripsi() {
     return deskripsi;
     }

     public int getJumlahChannel() {
     return jumlahChannel;
     }

     public String[] getChannels() {
     if (channels == null) {
          System.out.println("Belum ada channel yang diset!");
     }
     return channels;
     }

     public void setChannels(String[] channels) {
     if (channels.length > jumlahChannel) {
          System.out.println("Maaf Tv ini hanya dapat menyimpan " +
                        jumlahChannel + " channel");
     }
     else {
          this.channels = channels;
         System.out.println("Informasi channel berhasil di update!");
     }
     }

     public int getChannelAktif() {
     return channelAktif;
     }

     public void setChannelAktif(int channelAktif) {
     if (channelAktif > channels.length) {
          System.out.println("Channel yang Anda inginkan belum diset!");
          return;
     }
     this.channelAktif = channelAktif;
     System.out.println("Pindah channel ke : " + channels[channelAktif]);
     }

     public int getVolume() {
     return volume;
     }

     public void setVolume(int volume) {
     this.volume = volume;
     System.out.println("intensitas volume sekarang : " + volume);
     }
}

           
                                   
Bab 7 : Pewarisan

1.      Keuntungan apa yang dapat Anda peroleh dengan melakukan pewarisan dan kapan Anda mungkin perlu untuk melakukannya?

Jawaban :

      Keuntungan terutama yang Anda dapatkan adalah ‘reusable code’, karena dengan menurunkan suatu class dari Superclass, Anda cukup menambahkan kode specific yang dimiliki oleh class itu saja sedangkan kode lainnya mungkin tidak perlu Anda ketik ulang karena telah didapat dari Superclass-nya.

2.      Apa yang terjadi jika Anda mendeklarasikan member pada Subclass yang sama persis dengan yang dimiliki oleh superclass-nya? Bagaimana pula cara subclasss agar dapat mengakses member dari superclass tersebut?

Jawaban :

      Member yang Anda deklarasikan pada subclass yang sama persis dengan member yang dideklarasikan oleh superclass-nya dikatakan meng-override member dari superclass tersebut. Untuk mengakses member dari superclass ini dari subclass-nya harus digunakan keyword super.

3.      Buatlah sebuah class turunan bernama class TelevisiModern dari class Televisi  yang telah Anda buat pada soal  di bab 6. Tambahkan fasilitas teletext dan cd player built-in yang dapat digunakan oleh contoh program berikut ini :

public class User {
     public static void main(String[] args) {

     TelevisiModern tv = new TelevisiModern("TV Modern, 29 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR",
                   "LA TV", "METRO TV", "TRANS TV",
                   "TPI", "TV 7", "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR",
                    "LA TV", "MTRO TV", "TRANS TV", "TPI",
                                               "TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannelAktif(3);
     tv.setVolume(10);
     tv.setChannelAktif(10);
     tv.setChannelAktif(1);
     tv.setModusTampilan(TelevisiModern.TELETEX);
     tv.setHalamanTeletext(250);
     tv.setModusTampilan(TelevisiModern.TV);
     tv.playCD();
     tv.setDiscTray("The Matrix");
     tv.playCD();

     }
}

Dengan tampilan hasil eksekusi seperti berikut ini :


Jawaban :

public class TelevisiModern extends Televisi {
     public static final int TV = 0;
     public static final int TELETEXT = 1;
     int modusTampilan = TV;
     int halamanTeletext = 100;
     String discTray = null;

     public TelevisiModern(String deskripsi, int jumlahChannel) {
     super(deskripsi, jumlahChannel);
     }

     public void setHalamanTeletext(int halamanTeletext) {
     this.halamanTeletext = halamanTeletext;
     System.out.println("Berpindah ke halaman teletext " +
                                          halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
     switch (modusTampilan) {
          case TV:
              System.out.println("Modus tampilan : Televisi");
              break;
          case TELETEXT:
              System.out.println("Modus tampilan : Teletext");
              break;
     }
     }

     public String getDiscTray() {
     return discTray;
     }

     public void setDiscTray(String discTray) {
     this.discTray = discTray;
     }

     public void playCD() {
     if (discTray == null) {
          System.out.println("Tidak ada CD di dalam disc tray!");
          return;
     }
     System.out.println("Memutar file " + discTray);
     }
}


Bab 8 : Interface

Buatlah sebuah interface bernama Control dan rombaklah class TelevisiModern yang telah anda buat pada soal Bab 7 di atas agar mengimplmentasi interface Control ini sehingga semua fungsi objek dari class TelevisiModern tersebut dapat di akses melalui interface tersebut! Buat juga sebuah class baru bernama RemoteControl di mana objek dari class inilah yang akan menggunakan interface Control untuk mengakses fungsi objek dari class TelevisiModern tersebut! Class dan Interface yang telah dibuat tersebut harus dapat digunakan seperti dalam contoh programberikut ini:

public class User {
     public static void main(String[] args) {

     TelevisiModern tv1 = new TelevisiModern("TV Sony 29 inches", 200);
     TelevisiModern tv2 = new TelevisiModern("TV Hitachi 21 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7",
                                              "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7"};

     tv1.setDiscTray("The Matrix");
     tv2.setDiscTray("Spiderman");

     // remote control diarahkan ke tv1
     RemoteControl rc = new RemoteControl(tv1);

     rc.setChannels(semuaChannel);
     rc.setChannelAktif(3);
     rc.setVolume(10);
     rc.setChannelAktif(10);
     rc.setModusTampilan(TelevisiModern.TELETEXT);
     rc.setHalamanTeletext(250);
     rc.setModusTampilan(TelevisiModern.TV);
     rc.playCD();

     System.out.println();

     //remote control diarahkan ke tv2
     rc.setTv(tv2);
     rc.setChannels(channelFavorit);
     rc.setVolume(20);
     rc.setChannelAktif(1);
     rc.playCD();
     }
}
           

Jawaban:

public interface Control {

     public String getDeskripsi();
     public String[] getChannel();
     public int getJumlahChannel();
     public void setChannels(String[] channels);
     public int getChannelAktif();
     public void setChannelAktif(int channelAktif);
     public int getVolume();
     public void setVolume(int volume);
}

public class RemoteControl implements Control {

     Control tv = null;

     public RemoteControl(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public void setTv(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public String getDeskripsi() {
            return tv.getDeskripsi();
     }

     public int getJumlahChannel() {
            return tv.getJumlahChannel();
     }

     public String[] getChannels() {
            return tv.getChannels();
     }

     public void setShannels(String[] channels) {
            tv.setChannels(channels);
     }

     public int getChannelAktif() {
            return tv.getChannelAktif();
     }

     public void setChannelAktif(int channelAktif) {
            tv.setChannelAktif(channelAktif);
     }

     public int getVolume() {
            return tv.getVolume();
     }

     public void setVolume(int volume) {
            tv.setVolume(volume);
     }

     public void setHalamanTeletext(int halamanTeletext) {
            tv.setHalamanTeletext(halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
            tv.setModusTampilan(modusTampilan);
     }

     public void playCD() {
            tv.playCD();
     }
}
           

Selanjutnya class TelevisiModern yang telah anda buat sebelumnya harus dideklarasikan agar mengimplementasi interface Control diatas.

Bab 9 : Package dan Classpath

1.      Bagaimana cara anda memberitahu Java untuk menggunakan classpath yang anda inginkan  dan bagaimana pula cara Java memanfaatkan classpath ini untuk mendapatkan class yang dibutuhkan ?

Jawaban:

Cara pertama adalah dengan menset environmentvariabel yang bernama CLASSPATH agar menampung semua path yang mungkin dibutuhkan untuk mendapatkan class ataupun interface yang akan digunakan. Misalnya, class yang dibutuhkan terletak pada direktori c:\java_projects\classes dan d:\java_tool\lib, maka environment variabel CLASSPATH harus berisi kedua path tersebut. Pada sistem operasi Windows hal ini dapat Anda lakukan dengan mengetikan perintah berikut ini pada command prompt (dos prompt):

set CLASSPATH= c:\java_projects\classes; d:\java_tool\lib

Direktori yang terdaftar dalam CLASSPATH ini akan digunakan oleh Java sebagai titik awal (root) pencarian dari class yang dibutuhkan. Misalnya, jika anda mengetikkan perintah berikut ini:

java TesMe

maka Java akan mencari class TesMe ini dalam kedua direktori di atas. Jika class yang hendak anda eksekusi menggunakan package, misalnya anda hendak mengeksekusi program dengan mengetikan perintah berikut ini:

java bab9.TesPackage

maka Java akan mencari class TesPackage dalam direktori:

c:\java_projects\classes \bab9 dan
d:\java_tool\lib\bab9.

Cara kedua yang dapat dilakukan untuk menset CLASSPATH adalah dengan mengunakan switch

-classpath <daftar-direktori>

pada waktu hendak mengompilasi ataupun hendak mengeksekusi suatu program. Contoh:

java -classpath c:\java_projects bab9.TesPackage

2.      keuntungan apa saja yang dapat anda peroleh dengan menggunakan package dalam program?

Jawaban:

Dengan menggunakan package anda menciptakanname space anda sendiri sehingga anda dapat menggunakan nama yang sama dengan class maupuninterface asalkan kedua class maupun interface tersebut berada di dalam package yang berbeda. Selain itu dengan menggunakan package, file class maupuninterface yang anda buat akan tersimpan dengan rapi dalam direktorinya masing-masing sehingga memudahkan pencarian. Menaruh file dalam jumlah besar ke dalam satu direktori saja akan mudah menimbulkan kebingungan pada saat pencarian.

3.      Jelaskan fungsi keyword import dalam hubungannya dengan penggunaan package!

Jawaban:

Keyword import dipakai jika anda ingin menggunakan class ataupun interface yang berbeda pada package yang berbeda dari tempat dimana anda ingin menggunakannya. Dengan menggunakan keywordimport ini, anda tidak perlu menuliskan full package class/interface name untuk dapat menggunakan classatau interface yang ada dalam suatu package. Anda cukup menggunakan nama classnya saja secara langsung.


Bab 10 : Penanganan Eksepsi

1.      Apa perbedaan antara keyword throw dengan keywordthrows!

Jawaban :

      Keyword throw digunakan untuk melempar suatu eksepsi dalam program, contoh kode:

      If (ada yang salah)
                  Throw new Exception(“Salah nih….!”);

Sedangkan keyword throws digunakan pada waktu mendeklarasikan suatu method untuk memberitahu bahwa method yang bersangkutan dapat melempar eksepsi dengan tipe yang dideklarasikan oleh keywordthrows tersebut. Contoh kode :

      void methodAneh() throws IOException, Exception {}

Penggunaan keyword throws ini juga hanya diperlukan jika eksepsi yang hendak dilempar merupakan eksepsi yang dicek (bukan merupakan turunan dari classRuntimeException dan umumnya merupakan turunan dari class Exception).

2.      Jelaskan fungsi pembuatan subclass eksepsi sendiri!

Jawaban :

Dengan membuat class eksepsi sendiri berarti Anda membuat tipe data baru dimana tipe data baru ini dapat Anda gunakan untuk melempar suatu eksepsi untuk kemudian ditangkap pada bagian lain dari program. Dengan menggunakan tipe data eksepsi yang berbeda-beda, program dapat mengetahui apa kira-kira penyebab eksepsi yang bersangkutan sehingga dapat bertindak sebagimana mestinya.


Bab 11 : Pemrograman Multithreading

1.      Menurut Anda, kapan sebaiknya menggunakaninterface Runnable dan kapan membuat turunan dariclass Thread?

Jawaban :

      Interface Runnable digunakan jika Anda harus menurunkan class yang Anda buat dari class lainnya sehingga tidak memungkinkan lagi untuk diturunkan dari class Thread. Namun membuat class turunan dariclass Thread sangat disarankan jika class yang Anda buat tersebut akan meng-override member dari classThread tersebut.

2.      Pertimbangan apa yang kira-kira digunakan pada saat Anda memutuskan penggunaan antara sinkronisasi padamethod dengan sinkronisasi pada objek!

Jawaban :

Sinkronisasi pada method mengharuskan methodtersebut dideklarasikan dengan menggunakankeyword synchronized. Jika ternyata pendeklarasianmethod tersebut tidak menggunakan keywordtersebut maka Anda tidak punya cara lain selain menggunakan tehnik sinkronisasi pada objek. Namun jika Anda memiliki source code dari classdimana method tersebut berada, Anda dapat saja mengubah method tersebut agar didelarasikan menggunakan keyword synchronized.

Bab 12 : The Java Library

1.      Jelaskan fungsi class wrappers dan hubungannya dengan tipe data primitif!

Jawaban :

Class wrappers digunakan untuk mempresentasikan tipe data primitif dalam bentuk objek. Ini diperlukan karena tipe data primitif tidak digunakan menggunakan referensinya. Sedangkan banyak operasi yang didukung oleh Java Librarymengharuskan penggunaan referensi yang hanya didukung oleh tipe data referensi.
           
2.      Berikut ini adalah sekumpulan string yang di dalamnya terdapat informasi No Induk Mahasiswa(NIM), Nama, dan IPK :

0256975648;Nilasari Kumala;3.1#0568974567;Timotius;3.8#0236971245;Stevabus Firman;2.6#0457878975;Dicky Suteja;0#0695475486;Andi Setiawan;3.4

Buatlah sebuah program untuk mengelompokkan semua informasi yang didapat dari string di atas, ke dalam collection atau map. Tambahkan fasilitas untuk mengurutkan data berdasarkan ketiga informasi tersebut dan tampilkan ke layer!

Program yang Anda buat tersebut harus dapat digunakan seperti berikut ini :

public class User {
    public static void main(String[] args) {
        String inputData = "0256975648;Niko Syah;3.1#0568974567;
                               Titi Nur;3.8#0236972345;" +
                              "StevanusFirman;2.6#0457878975;
                               DickySuteja;2.0#0695475486;Andi Sujata;3.4";
       
        Database database = new Database(inputData);
       
        System.out.println("Data Asli");
        System.out.println("=============");
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan NIM");
       System.out.println("==============================");
        database.urutkanBerdasarkanNim();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan Nama");
       System.out.println("==============================");
        database.urutkanBerdasarkanNama();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan IPK");
       System.out.println("==============================");
        database.tampilkanData();
    }
}

Dengan tampilan hasil eksekusi sebagai berikut :

Jawaban :

public class Mahasiswa {
            private String nim;
            private String nama;
            private double ipk;
           
            public Mahasiswa(String nim, String nama, double ipk) {
                        this.nim = nim;
                        this.nama = nama;
                        this.ipk = ipk;
            }
           
            public String getNim() {
                        return nim;
            }
           
            public void setNim(String nim) {
                        this.nim = nim;
            }
           
            public String getNama() {
                        return nama;
            }
           
            public void setNama(String nama) {
                        this.nama = nama;
            }
           
            public double getIpk() {
                        return ipk;
            }
           
            public void setIpk(double ipk) {
                        this.ipk = ipk;
            }
}

import java.util.ArrayList;
import java.util.StringTokenizer;

public class Database {
    private ArrayList data = new ArrayList();
           
    public Database(String inputData) {
        Mahasiswa datum;
        StringTokenizer tokens = new StringTokenizer(inputData, ";#");
       
        while (tokens.hasMoreTokens()) {
            String nim = tokens.nextToken();
            String nama = tokens.nextToken();
            double ipk = Double.parseDouble(tokens.nextToken());
            datum = new Mahasiswa(nim, nama, ipk);
            data.add(datum);
        }
    }
   
    public void tampilkanData() {
        for (int i = 0; i < data.size(); i++) {
            Mahasiswa datum = (Mahasiswa)data.get(i);
            System.out.print(datum.getNim() + "\t");
            System.out.print(datum.getNama() + "\t\t");
            System.out.println(datum.getIpk());
        }
    }
   
    public void urutkanBerdasarkanNim() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1, str2;
        int length;
        Mahasiswa datum, datumBaru;
        for(int i=0;i<data.size();i++){
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0){
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNim();
            length = dataBaru.size();
           
            for(int j=0;j<length;j++){
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNim();
                if(str1.compareTo(str2)<0){
                    dataBaru.add(j,datumBaru);
                    break;
                } 
                else if (j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanNama() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1,str2;
        int length;
        Mahasiswa datum,datumBaru;
        for (int i=0;i<data.size();i++) {
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0) {
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNama();
            length = dataBaru.size();
            
            for(int j=0;j<length;j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNama();
                if(str1.compareTo(str2)<0) {
                    dataBaru.add(j,datumBaru);
                    break;
                }
                else if(j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanIpk() {
        ArrayList dataBaru = new ArrayList(data.size());
        double num1, num2;
        int length;
        Mahasiswa datum, datumBaru;
        for (int i = 0; i < data.size(); i++) {
            datumBaru = (Mahasiswa)data.get(1);
            if (i == 0) {
                dataBaru.add(datumBaru);
                continue;
            }
            num1 = datumBaru.getIpk();
            length = dataBaru.size();
            for (int j = 0; j < length; j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                num2 = datum.getIpk();
               
                if (num1 < num2) {
                    dataBaru.add(j, datumBaru);
                    break;
                }
                else if (j == length - 1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
}

Bab 13 : Operasi I/O

1.      Jelaskan perbedaan utama antara Byte Streams dengan Character Streams!

Jawaban :

      Sesuai dengan namanya, byte streams membaca maupun menulis data (stream) dengan menggunakan ukuran byte atau 8 bit, sedangkan character streams menggunakan ukuran character, di mana dalam Java yang menggunakan Unicode untuk mempresentasikan sebuah karakter, memiliki besar 2 byte atau 16 bit. Oleh karena itu penggunaan character streams umumnya hanya cocok digunakan untuk membaca ataupun menulis data yang berupa teks (string) saja. Jika data yang hendak dibaca ataupun ditulis bukan merupakan teks, sebaiknya digunakan byte streams.

2.      Buatlah program untuk mengkopi suatu file teks! Nama file yang hendak dikopi dan hasil kopiannya harus dilewatkan sebagai parameter pada waktu eksekusi. Contoh eksekusi program :

Java kopi fileA.txt fileB.txt

Jawaban :

public class Kopi {
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Cara pemakaian : " );
            System.out.println("java Kopi namaFileSumber namaFileTujuan");
            return;
        }
       
        String sumber = args[0];
        String tujuan = args[1];
       
        String data;
        FileWriter fout = null;
        FileReader fin = null;
        try {
            try {
                fin = new FileReader(sumber);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            try {
                fout = new FileWriter(tujuan);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            BufferedReader br = new BufferedReader(fin);
           
            data = br.readLine();
            while (data != null) {
                // \r\n digunakan untuk pindah baris
                fout.write(data + "\r\n");
                data = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("Eksepsi tidak diketahui : " + e);
        } finally {
            //tutup file
            if (fout != null) {
                try {
                    fout.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
        }
    }      
}


Bab 14 : Membuat User Interface dengan Swing

            Buatlah sebuah game sederhana dengan aturan sebagai berikut :

1.      Tampilan game ini terdiri atas 40 button yang disusun 5 baris, 8 kolom. Dalam game ini, user harus mencari pasangan dari nilai yang ada pada masing-masing button. Untuk kesederhanaan, sebagai nilainya, Anda cukup menggunakan nilai integer dari 0-100.
2.      Semua nilai dari masing-masing button ini harus disembunyikan dengan menggunakan lambang “?”.
3.      Untuk melihat nilai yang ada, user harus mengklik pada button yang bersangkutan. Selanjutnya user harus mencari pasangan dari nilai yang ditampilkan tersebut dengan mengklik button lainnya. Jika ternyata kedua nilai dari button yang telah ditampilkan tersebut tidak sama, maka nilai yang sudah ditampilkan tersebut harus ditutup lagi dengan lambang “?”. Namun jika nilai dari kedua button sama maka nilai dari kedua button tersebut harus tetap ditampilkan dan button harus di disabled agar tidak bisa dipilih lagi.
4.      Game akan dianggap selesai jika user berhasil membuka semua nilai yang disembunyikan oleh setiap button.

Berikut ini contoh tampilan hasil eksekusi program, Anda tidak harus mengikuti contoh tampilan ini. Jika memungkinkan, Anda dipersilahkan untuk menambahkan fasilitas apa pun yang mungkin akan membuat game ini semakin menarik untuk dimainkan.

Bab 1 : Pengenalan Terhadap Java

  1. Sebutkan kelebihan-kelebihan yang dimiliki oleh Java yang Anda ketahui!

Jawaban :

·        Bersifat portable dan platform independent . Program Java yang Anda tulis akan dapat dieksekusi di platform mana pun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untukplatform tersebut tersedia.
·        Memiliki garbage collection yang dapat mendealokasikan memori secara otomatis. Anda tidak perlu secara eksplisit membebaskan suatu lokasi memori yang dipakai karena ini akan dilakukan secara otomatis oleh Java.
·        Menghilangkan pewarisan berganda yang terdapat pada C++. Walaupun kelihatannya lebih sebagai suatu kekurangan, namun banyak para ahli yang mengakui bahasa konsep pewarisan berganda lebih banyak mengakibatkan kerugian dari pada keuntungan. Java telah didesain sedemikian rupa sehingga Anda tidak akan memerlukan tehnik ini dalam pembuatan program apa pun.
·        Mengurangi pointer aritmetik. Pengaksesan lokasi memori secara langsung dengan menggunakanpointer memungkinkan program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi dan menghilangkan kemungkinan kesalahan seperti ini, penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.
·        Memiliki array sejati.
·        Mengurangi kerancuan antara pemberian nilai pada statement kondisional. Contoh penggunaan tanda ‘=’ dengan ‘==’ pada kondisi if.

  1. Apa yang Anda ketahui tentang karakteristik Java?

Jawaban :

    • Berorientasi Objek, Java telah menerapkan konsep pemrograman berorientasi objek yang modern dalam implementasinya.
    • Robust, Java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly typed dan memilikiruntime checking.
    • Portable, program Java dapat dieksekusi di platformmana pun selama tersedia Java Virtual Machine untukplatform tersebut.
    • MultithreadingJava mendukung penggunaanmultithreading yang telah terintegrasi secara langsung dalam bahasa Java.
    • Dinamisprogram Java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi programdan bukan pada saat kompilasi.
    • Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari.
    • TerdistribusiJava didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet.
    • Aman, aplikasi yang dibuat dengan bahasa Java dapat dipastikan keamanannya terutama untuk aplikasi internet.
    • Netral secara arsitekturJava tidak terikat pada suatu mesin atau sistem operasi tertentu.
    • Interpreted, aplikasi Java dapat dieksekusi padaplatform yang berbeda-beda dengan melakukan interpretasi pada bytecode.
    • Berkinerja Tinggi, bytecode  Java telah sangat teroptimasi, sehingga eksekusi program dapat dilakukan secara cepat sekalipun dilakukan dengan cara interpretasi terhadap bytecode.


Bab 2: Pengenalan Objek: Paradigma Pemrograman Berbasis Objek

  1. Jelaskan perbedaan antara state dan behavior. Berikan contohnya!

Jawaban:
           
            State merupakan keadaan dari suatu objek, contohnya tinggi, berat, usia, merupakan state yang dimiliki oleh objek manusia. State ini bersifat pasif karena ia tidak dapat melakukan operasi apa pun, padanya justru dilakukan operasi. Oleh karena itu secara sederhana state dapat dianggap sebagai ‘kata benda’. Sedangkan behaviour merupakan operasi atau aktivitas yang dapat dilakukan oleh suatu objek, contohnya makan, minum, menua, bekerja, merupakan behaviour yang dimiliki oleh objek manusia. Aktivitas ini dapat (tidak selalu) mempengaruhi state dari objek itu sendiri, misalnya behaviour menua dapat merubahstate umur. Oleh karena sifatnya ini, secara sederhana behaviour dianggap sebagai ‘kata kerja’.

  1. Jelaskan apa yang dimaksud dengan class dan objek ! Apa bedanya dan berikan contohnya!

Jawaban:

            Class digunakan untuk menggambarkan suatu model atau spesifikasi dari suatu entitas, sedangkan objek merupakan kenyataan, realisasi atau perwujudan dari classitu sendiri. Contoh sederhana : desain arsitektur gedung dan gedung yang dibuat berdasarkan desain tersebut. Desain arsitektur gedung dapat dianggap sebagai class, sedangkan gedung yang dibangun berdasarkan desain itu sendiri dapat dianggap sebagai objeknya.
Bab 3 : Sintaks Bahasa dan Tipe Data

  1. Apa perbedaan antara tipe data primitif dan tipe data referensi?

Jawaban :

            Tipe data primitif merupakan tipe data dasar yang dikenal oleh Java. Variabel dengan tipe data primitif dapat langsung digunakan untuk ‘memegang’ data yang sesuai dengan tipe datanya. Contoh : int var = 3; maka nilai variabel var adalah 3.
            Sedangkan tipe data referensi digunakan untuk semua tipe data selain tipe data primitif termasuk di sini adalah array dan class. Variabel dengan tipe data referensi tidak ‘memegang’ secara langsung nilai yang hendak disimpan, melainkan variabel ini hanya ‘memegang’ referensi (alamat) dari nilai yang sebenarnya yang ada di memori.

  1. Untuk melatih pengetahuan Anda akan tipe data, buatlahprogram untuk menghitung luas :

    • Segitiga
    • Lingkaran
    • Bujursangkar
    • Empat persegi panjang

Hati-hati dengan konversi tipe data secara otomatis yang dilakukan oleh Java, terutama konversi dari tipe floating-point ke integer.

Jawaban :

public class HitungLuas {
     public static void main(String[] args) {

     // data segitiga
int panjangSegitiga = 5;
int tinggiSegitiga = 9;

     // data lingkaran
int jari2Lingkaran = 15;

     // data bujursangkar
int panjangSisi = 13;

     // data persegi panjang
int panjangPersegi = 35;
int lebarPersegi = 45;

double luas;

     // luas segitiga
luas = ((double) (panjangSegitiga*tinggiSegitiga)/2);
System.out.println("Luas Segitiga : " + luas);

     // luas lingkaran
luas = 3.14*jari2Lingkaran*jari2Lingkaran;
System.out.println("Luas Lingkaran : " + luas);

     // luas bujursangkar
luas = panjangSisi*panjangSisi;
System.out.println("Luas Bujursangkar : " + luas);

     // luas persegi panjang
luas = panjangPersegi*lebarPersegi;
System.out.println("Luas Persegi Panjang : " + luas);

     }

}


           

output program :

            


Bab 4 : Operator

1.      Apa perbedaan x++ dan ++x, jelaskan!

Jawaban :

      Penggunaan x++ dan ++x jika tidak dikombinasikan dengan ekspresi lainnya tidak memiliki perbedaan sama sekali. Perbedaannya baru akan terasa jika penggunaannya digabung dengan suatu ekspresi. Namun secara sederhana x++ dapat diartikan : lakukan operasi terhadap x baru kemudian tambahkan tambahkan dengan 1. Sedangkan ++x dapar diartikan : jumlahksn x dengan 1, baru kemudian lakukan operasi terhadap x. Contoh :

y = x++ + 10;  sama dengan : y = x + 10;
                                                       x = x + 1;

Sedangkan

      y = ++x + 10;  sama dengan : y = x + 1;
                                                      x = x + 10;

           
2.      Bagaimana menghitung perkalian dan pembagian dengan bilangan dua tanpa menggunakan operatormatematika?

Jawaban :

      Perkalian dengan bilangan dua dapat  dilakukan dengan menggunakan operator bitwise << (geser kiri). Sedangkan untuk pembagian dapat dilakukan dengan menggunakan operator bitwise >> (geser kanan).

Contoh penjelasan :

      124/2 = 124 >> 1
124    =  0000000001111100
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \               >> 1
   0000000000111110             = 62
                       
                        124*2 = 124 << 1
124 = 0000000001111100
   / / / / / / / / / / / / / / /                   << 1
  0000000011111000                 = 248
3.            Bagaimana menukar nilai dari dua variabel integerdengan tanpa menggunakan variabel perantara.

Jawaban :

Contoh : variabel A = 22 dan B = 34, tanpa menggunakan variabel perantara, tukarlah kedua nilai dari variabel tersebut sehingga variabel A = 34 dan B = 22.

Untuk menukar nilai dari dua buah variabel integertanpa menggunakan variabel perantara dapat digunakanoperator bitwise XOR. Perhatikan contoh penjelasan berikut ini :

A = 22 dan B = 34
Hasil dari A XOR B adalah

      A = 22             = 0000000000010110
B = 34             = 0000000000100010
A XOR B        = 0000000000110100 = 52

Jika kita anggap hasil dari A XOR B adalah C maka

A = 22             = 0000000000010110
C = 52             = 0000000000110100
B XOR C        = 0000000000010110 = A

Dapat disimpulkan bahwa jika C = A XOR B,
maka C XOR A = B dan C XOR B = A

Dengan demikian, Anda dapat menuliskan kode berikut ini untuk menukar nilai dari dua buah variabel integer A dan B di atas :

A = A ^ B;
B = A ^ B;
A = B ^ A;

Sehingga sekarang nilai variabel A = 34 dan B = 22.


Bab 5 : Kontrol Alur Eksekusi Program

1.      Buatlah program yang menghasilkan ouput seperti di bawah ini!


                       
                        Jawaban :
public class Bintang {
     public static void main(String[] args) {
     int ukuran = 7;

     for (int i = 0; i<ukuran; i++) {
          int j;
          int spasiCounter = ukuran - i - 1;

          for (j = 0; j < spasiCounter; j++) {
              System.out.print(" ");
          }

          for (j = 0; j <= (i*2); j++) {
              if (j % 2 == 1)
                   System.out.print(" ");
              else
                   System.out.print("*");
          }
          System.out.println();
     }
     }
}


                       
                                   



















Bab 6 : Class

            Buatlah sebuah class dengan nama Televisi, yang mempunyai property :

·        deskripsi : untuk menyimpan nama/deskripsi dari televise. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapay diubah setelahnya.
·        jumlahChannel : untuk menyimpan banyaknya channel yang dapat disimpan oleh televisi. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapat diubah setelahnya.
·        channels : untuk menyimpan data channel stasiun televisi yang sudah diset. Property ini dapat dibaca dan diubah kapan saja.
·        channelAktif : untuk menyimpan nomor channel yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.
·        volume : untuk menyimpan informasi besarnya volume televisi yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.

Selain itu objek Televisi tersebut juga harus mendukung operasi berikut ini :

·        Menset channel stasiun televisi yang diinginkan. Ini sama halnya jika Anda membeli televisi baru, hal pertama kali yang Anda lakukan tentunya adalah mendaftarkan semua channel stasiun televisi yang ada ke dalam televisi Anda.Sehingga berikutnya jika Anda ingin menonton televisi yang Anda inginkan, Anda cukup memasukkan nomor channel dari stasiun tersebut yang sudah terdaftar pada televisi tersebut. Anda juga tidak boleh menset channel lebih banyak dari jumlah channel yang dapat ditampung oleh televisi.
·        Mengganti channel stasiun yang sedang aktif. Jika nomor channel yang diinginkan ternyata belum diset ke stasiun televisi manapun, tampilkan informasi yang memberitahukan hal tersebut.
·        Mengubah volume suara.
·        Menampilkan deskripsi dari televisi.

Class Televisi yang Anda buat tersebut harus dapat digunakan oleh program berikut ini :

public class User {
     public static void main(String[] args) {

     Televisi tv = new Televisi("TV tempoe doeloe, 14 inches", 10);

     String[] semuaChannel = {"RCTI", "SCTV","INDOSIAR","LA TV",
                                               "METRO TV","TRANS TV","TPI","TV 7",                                              "TVRI","TV G","AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV", 
                                               "MTRO TV","TRANS TV","TPI","TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannels(channelFavorit);

     tv.setChannelAktif(3);

     tv.setVolume(10);

     tv.setChannelAktif(1);
     }
}

           

            Dengan hasil eksekusi seperti berikut ini :

            

           
                        Jawaban :

class Televisi {
     private String deskripsi;
     private int jumlahChannel;
     private String[] channels = null;
     private int channelAktif;
     private int volume;

     public Televisi(String deskripsi, int jumlahChannel) {
     this.deskripsi = deskripsi;
     this.jumlahChannel = jumlahChannel;
     }

     public String getDeskripsi() {
     return deskripsi;
     }

     public int getJumlahChannel() {
     return jumlahChannel;
     }

     public String[] getChannels() {
     if (channels == null) {
          System.out.println("Belum ada channel yang diset!");
     }
     return channels;
     }

     public void setChannels(String[] channels) {
     if (channels.length > jumlahChannel) {
          System.out.println("Maaf Tv ini hanya dapat menyimpan " +
                        jumlahChannel + " channel");
     }
     else {
          this.channels = channels;
         System.out.println("Informasi channel berhasil di update!");
     }
     }

     public int getChannelAktif() {
     return channelAktif;
     }

     public void setChannelAktif(int channelAktif) {
     if (channelAktif > channels.length) {
          System.out.println("Channel yang Anda inginkan belum diset!");
          return;
     }
     this.channelAktif = channelAktif;
     System.out.println("Pindah channel ke : " + channels[channelAktif]);
     }

     public int getVolume() {
     return volume;
     }

     public void setVolume(int volume) {
     this.volume = volume;
     System.out.println("intensitas volume sekarang : " + volume);
     }
}

           
                                   
Bab 7 : Pewarisan

1.      Keuntungan apa yang dapat Anda peroleh dengan melakukan pewarisan dan kapan Anda mungkin perlu untuk melakukannya?

Jawaban :

      Keuntungan terutama yang Anda dapatkan adalah ‘reusable code’, karena dengan menurunkan suatu class dari Superclass, Anda cukup menambahkan kode specific yang dimiliki oleh class itu saja sedangkan kode lainnya mungkin tidak perlu Anda ketik ulang karena telah didapat dari Superclass-nya.

2.      Apa yang terjadi jika Anda mendeklarasikan member pada Subclass yang sama persis dengan yang dimiliki oleh superclass-nya? Bagaimana pula cara subclasss agar dapat mengakses member dari superclass tersebut?

Jawaban :

      Member yang Anda deklarasikan pada subclass yang sama persis dengan member yang dideklarasikan oleh superclass-nya dikatakan meng-override member dari superclass tersebut. Untuk mengakses member dari superclass ini dari subclass-nya harus digunakan keyword super.

3.      Buatlah sebuah class turunan bernama class TelevisiModern dari class Televisi  yang telah Anda buat pada soal  di bab 6. Tambahkan fasilitas teletext dan cd player built-in yang dapat digunakan oleh contoh program berikut ini :

public class User {
     public static void main(String[] args) {

     TelevisiModern tv = new TelevisiModern("TV Modern, 29 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR",
                   "LA TV", "METRO TV", "TRANS TV",
                   "TPI", "TV 7", "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR",
                    "LA TV", "MTRO TV", "TRANS TV", "TPI",
                                               "TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannelAktif(3);
     tv.setVolume(10);
     tv.setChannelAktif(10);
     tv.setChannelAktif(1);
     tv.setModusTampilan(TelevisiModern.TELETEX);
     tv.setHalamanTeletext(250);
     tv.setModusTampilan(TelevisiModern.TV);
     tv.playCD();
     tv.setDiscTray("The Matrix");
     tv.playCD();

     }
}

Dengan tampilan hasil eksekusi seperti berikut ini :


Jawaban :

public class TelevisiModern extends Televisi {
     public static final int TV = 0;
     public static final int TELETEXT = 1;
     int modusTampilan = TV;
     int halamanTeletext = 100;
     String discTray = null;

     public TelevisiModern(String deskripsi, int jumlahChannel) {
     super(deskripsi, jumlahChannel);
     }

     public void setHalamanTeletext(int halamanTeletext) {
     this.halamanTeletext = halamanTeletext;
     System.out.println("Berpindah ke halaman teletext " +
                                          halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
     switch (modusTampilan) {
          case TV:
              System.out.println("Modus tampilan : Televisi");
              break;
          case TELETEXT:
              System.out.println("Modus tampilan : Teletext");
              break;
     }
     }

     public String getDiscTray() {
     return discTray;
     }

     public void setDiscTray(String discTray) {
     this.discTray = discTray;
     }

     public void playCD() {
     if (discTray == null) {
          System.out.println("Tidak ada CD di dalam disc tray!");
          return;
     }
     System.out.println("Memutar file " + discTray);
     }
}


Bab 8 : Interface

Buatlah sebuah interface bernama Control dan rombaklah class TelevisiModern yang telah anda buat pada soal Bab 7 di atas agar mengimplmentasi interface Control ini sehingga semua fungsi objek dari class TelevisiModern tersebut dapat di akses melalui interface tersebut! Buat juga sebuah class baru bernama RemoteControl di mana objek dari class inilah yang akan menggunakan interface Control untuk mengakses fungsi objek dari class TelevisiModern tersebut! Class dan Interface yang telah dibuat tersebut harus dapat digunakan seperti dalam contoh programberikut ini:

public class User {
     public static void main(String[] args) {

     TelevisiModern tv1 = new TelevisiModern("TV Sony 29 inches", 200);
     TelevisiModern tv2 = new TelevisiModern("TV Hitachi 21 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7",
                                              "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7"};

     tv1.setDiscTray("The Matrix");
     tv2.setDiscTray("Spiderman");

     // remote control diarahkan ke tv1
     RemoteControl rc = new RemoteControl(tv1);

     rc.setChannels(semuaChannel);
     rc.setChannelAktif(3);
     rc.setVolume(10);
     rc.setChannelAktif(10);
     rc.setModusTampilan(TelevisiModern.TELETEXT);
     rc.setHalamanTeletext(250);
     rc.setModusTampilan(TelevisiModern.TV);
     rc.playCD();

     System.out.println();

     //remote control diarahkan ke tv2
     rc.setTv(tv2);
     rc.setChannels(channelFavorit);
     rc.setVolume(20);
     rc.setChannelAktif(1);
     rc.playCD();
     }
}
           

Jawaban:

public interface Control {

     public String getDeskripsi();
     public String[] getChannel();
     public int getJumlahChannel();
     public void setChannels(String[] channels);
     public int getChannelAktif();
     public void setChannelAktif(int channelAktif);
     public int getVolume();
     public void setVolume(int volume);
}

public class RemoteControl implements Control {

     Control tv = null;

     public RemoteControl(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public void setTv(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public String getDeskripsi() {
            return tv.getDeskripsi();
     }

     public int getJumlahChannel() {
            return tv.getJumlahChannel();
     }

     public String[] getChannels() {
            return tv.getChannels();
     }

     public void setShannels(String[] channels) {
            tv.setChannels(channels);
     }

     public int getChannelAktif() {
            return tv.getChannelAktif();
     }

     public void setChannelAktif(int channelAktif) {
            tv.setChannelAktif(channelAktif);
     }

     public int getVolume() {
            return tv.getVolume();
     }

     public void setVolume(int volume) {
            tv.setVolume(volume);
     }

     public void setHalamanTeletext(int halamanTeletext) {
            tv.setHalamanTeletext(halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
            tv.setModusTampilan(modusTampilan);
     }

     public void playCD() {
            tv.playCD();
     }
}
           

Selanjutnya class TelevisiModern yang telah anda buat sebelumnya harus dideklarasikan agar mengimplementasi interface Control diatas.

Bab 9 : Package dan Classpath

1.      Bagaimana cara anda memberitahu Java untuk menggunakan classpath yang anda inginkan  dan bagaimana pula cara Java memanfaatkan classpath ini untuk mendapatkan class yang dibutuhkan ?

Jawaban:

Cara pertama adalah dengan menset environmentvariabel yang bernama CLASSPATH agar menampung semua path yang mungkin dibutuhkan untuk mendapatkan class ataupun interface yang akan digunakan. Misalnya, class yang dibutuhkan terletak pada direktori c:\java_projects\classes dan d:\java_tool\lib, maka environment variabel CLASSPATH harus berisi kedua path tersebut. Pada sistem operasi Windows hal ini dapat Anda lakukan dengan mengetikan perintah berikut ini pada command prompt (dos prompt):

set CLASSPATH= c:\java_projects\classes; d:\java_tool\lib

Direktori yang terdaftar dalam CLASSPATH ini akan digunakan oleh Java sebagai titik awal (root) pencarian dari class yang dibutuhkan. Misalnya, jika anda mengetikkan perintah berikut ini:

java TesMe

maka Java akan mencari class TesMe ini dalam kedua direktori di atas. Jika class yang hendak anda eksekusi menggunakan package, misalnya anda hendak mengeksekusi program dengan mengetikan perintah berikut ini:

java bab9.TesPackage

maka Java akan mencari class TesPackage dalam direktori:

c:\java_projects\classes \bab9 dan
d:\java_tool\lib\bab9.

Cara kedua yang dapat dilakukan untuk menset CLASSPATH adalah dengan mengunakan switch

-classpath <daftar-direktori>

pada waktu hendak mengompilasi ataupun hendak mengeksekusi suatu program. Contoh:

java -classpath c:\java_projects bab9.TesPackage

2.      keuntungan apa saja yang dapat anda peroleh dengan menggunakan package dalam program?

Jawaban:

Dengan menggunakan package anda menciptakanname space anda sendiri sehingga anda dapat menggunakan nama yang sama dengan class maupuninterface asalkan kedua class maupun interface tersebut berada di dalam package yang berbeda. Selain itu dengan menggunakan package, file class maupuninterface yang anda buat akan tersimpan dengan rapi dalam direktorinya masing-masing sehingga memudahkan pencarian. Menaruh file dalam jumlah besar ke dalam satu direktori saja akan mudah menimbulkan kebingungan pada saat pencarian.

3.      Jelaskan fungsi keyword import dalam hubungannya dengan penggunaan package!

Jawaban:

Keyword import dipakai jika anda ingin menggunakan class ataupun interface yang berbeda pada package yang berbeda dari tempat dimana anda ingin menggunakannya. Dengan menggunakan keywordimport ini, anda tidak perlu menuliskan full package class/interface name untuk dapat menggunakan classatau interface yang ada dalam suatu package. Anda cukup menggunakan nama classnya saja secara langsung.


Bab 10 : Penanganan Eksepsi

1.      Apa perbedaan antara keyword throw dengan keywordthrows!

Jawaban :

      Keyword throw digunakan untuk melempar suatu eksepsi dalam program, contoh kode:

      If (ada yang salah)
                  Throw new Exception(“Salah nih….!”);

Sedangkan keyword throws digunakan pada waktu mendeklarasikan suatu method untuk memberitahu bahwa method yang bersangkutan dapat melempar eksepsi dengan tipe yang dideklarasikan oleh keywordthrows tersebut. Contoh kode :

      void methodAneh() throws IOException, Exception {}

Penggunaan keyword throws ini juga hanya diperlukan jika eksepsi yang hendak dilempar merupakan eksepsi yang dicek (bukan merupakan turunan dari classRuntimeException dan umumnya merupakan turunan dari class Exception).

2.      Jelaskan fungsi pembuatan subclass eksepsi sendiri!

Jawaban :

Dengan membuat class eksepsi sendiri berarti Anda membuat tipe data baru dimana tipe data baru ini dapat Anda gunakan untuk melempar suatu eksepsi untuk kemudian ditangkap pada bagian lain dari program. Dengan menggunakan tipe data eksepsi yang berbeda-beda, program dapat mengetahui apa kira-kira penyebab eksepsi yang bersangkutan sehingga dapat bertindak sebagimana mestinya.


Bab 11 : Pemrograman Multithreading

1.      Menurut Anda, kapan sebaiknya menggunakaninterface Runnable dan kapan membuat turunan dariclass Thread?

Jawaban :

      Interface Runnable digunakan jika Anda harus menurunkan class yang Anda buat dari class lainnya sehingga tidak memungkinkan lagi untuk diturunkan dari class Thread. Namun membuat class turunan dariclass Thread sangat disarankan jika class yang Anda buat tersebut akan meng-override member dari classThread tersebut.

2.      Pertimbangan apa yang kira-kira digunakan pada saat Anda memutuskan penggunaan antara sinkronisasi padamethod dengan sinkronisasi pada objek!

Jawaban :

Sinkronisasi pada method mengharuskan methodtersebut dideklarasikan dengan menggunakankeyword synchronized. Jika ternyata pendeklarasianmethod tersebut tidak menggunakan keywordtersebut maka Anda tidak punya cara lain selain menggunakan tehnik sinkronisasi pada objek. Namun jika Anda memiliki source code dari classdimana method tersebut berada, Anda dapat saja mengubah method tersebut agar didelarasikan menggunakan keyword synchronized.

Bab 12 : The Java Library

1.      Jelaskan fungsi class wrappers dan hubungannya dengan tipe data primitif!

Jawaban :

Class wrappers digunakan untuk mempresentasikan tipe data primitif dalam bentuk objek. Ini diperlukan karena tipe data primitif tidak digunakan menggunakan referensinya. Sedangkan banyak operasi yang didukung oleh Java Librarymengharuskan penggunaan referensi yang hanya didukung oleh tipe data referensi.
           
2.      Berikut ini adalah sekumpulan string yang di dalamnya terdapat informasi No Induk Mahasiswa(NIM), Nama, dan IPK :

0256975648;Nilasari Kumala;3.1#0568974567;Timotius;3.8#0236971245;Stevabus Firman;2.6#0457878975;Dicky Suteja;0#0695475486;Andi Setiawan;3.4

Buatlah sebuah program untuk mengelompokkan semua informasi yang didapat dari string di atas, ke dalam collection atau map. Tambahkan fasilitas untuk mengurutkan data berdasarkan ketiga informasi tersebut dan tampilkan ke layer!

Program yang Anda buat tersebut harus dapat digunakan seperti berikut ini :

public class User {
    public static void main(String[] args) {
        String inputData = "0256975648;Niko Syah;3.1#0568974567;
                               Titi Nur;3.8#0236972345;" +
                              "StevanusFirman;2.6#0457878975;
                               DickySuteja;2.0#0695475486;Andi Sujata;3.4";
       
        Database database = new Database(inputData);
       
        System.out.println("Data Asli");
        System.out.println("=============");
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan NIM");
       System.out.println("==============================");
        database.urutkanBerdasarkanNim();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan Nama");
       System.out.println("==============================");
        database.urutkanBerdasarkanNama();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan IPK");
       System.out.println("==============================");
        database.tampilkanData();
    }
}

Dengan tampilan hasil eksekusi sebagai berikut :

Jawaban :

public class Mahasiswa {
            private String nim;
            private String nama;
            private double ipk;
           
            public Mahasiswa(String nim, String nama, double ipk) {
                        this.nim = nim;
                        this.nama = nama;
                        this.ipk = ipk;
            }
           
            public String getNim() {
                        return nim;
            }
           
            public void setNim(String nim) {
                        this.nim = nim;
            }
           
            public String getNama() {
                        return nama;
            }
           
            public void setNama(String nama) {
                        this.nama = nama;
            }
           
            public double getIpk() {
                        return ipk;
            }
           
            public void setIpk(double ipk) {
                        this.ipk = ipk;
            }
}

import java.util.ArrayList;
import java.util.StringTokenizer;

public class Database {
    private ArrayList data = new ArrayList();
           
    public Database(String inputData) {
        Mahasiswa datum;
        StringTokenizer tokens = new StringTokenizer(inputData, ";#");
       
        while (tokens.hasMoreTokens()) {
            String nim = tokens.nextToken();
            String nama = tokens.nextToken();
            double ipk = Double.parseDouble(tokens.nextToken());
            datum = new Mahasiswa(nim, nama, ipk);
            data.add(datum);
        }
    }
   
    public void tampilkanData() {
        for (int i = 0; i < data.size(); i++) {
            Mahasiswa datum = (Mahasiswa)data.get(i);
            System.out.print(datum.getNim() + "\t");
            System.out.print(datum.getNama() + "\t\t");
            System.out.println(datum.getIpk());
        }
    }
   
    public void urutkanBerdasarkanNim() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1, str2;
        int length;
        Mahasiswa datum, datumBaru;
        for(int i=0;i<data.size();i++){
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0){
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNim();
            length = dataBaru.size();
           
            for(int j=0;j<length;j++){
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNim();
                if(str1.compareTo(str2)<0){
                    dataBaru.add(j,datumBaru);
                    break;
                } 
                else if (j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanNama() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1,str2;
        int length;
        Mahasiswa datum,datumBaru;
        for (int i=0;i<data.size();i++) {
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0) {
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNama();
            length = dataBaru.size();
            
            for(int j=0;j<length;j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNama();
                if(str1.compareTo(str2)<0) {
                    dataBaru.add(j,datumBaru);
                    break;
                }
                else if(j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanIpk() {
        ArrayList dataBaru = new ArrayList(data.size());
        double num1, num2;
        int length;
        Mahasiswa datum, datumBaru;
        for (int i = 0; i < data.size(); i++) {
            datumBaru = (Mahasiswa)data.get(1);
            if (i == 0) {
                dataBaru.add(datumBaru);
                continue;
            }
            num1 = datumBaru.getIpk();
            length = dataBaru.size();
            for (int j = 0; j < length; j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                num2 = datum.getIpk();
               
                if (num1 < num2) {
                    dataBaru.add(j, datumBaru);
                    break;
                }
                else if (j == length - 1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
}

Bab 13 : Operasi I/O

1.      Jelaskan perbedaan utama antara Byte Streams dengan Character Streams!

Jawaban :

      Sesuai dengan namanya, byte streams membaca maupun menulis data (stream) dengan menggunakan ukuran byte atau 8 bit, sedangkan character streams menggunakan ukuran character, di mana dalam Java yang menggunakan Unicode untuk mempresentasikan sebuah karakter, memiliki besar 2 byte atau 16 bit. Oleh karena itu penggunaan character streams umumnya hanya cocok digunakan untuk membaca ataupun menulis data yang berupa teks (string) saja. Jika data yang hendak dibaca ataupun ditulis bukan merupakan teks, sebaiknya digunakan byte streams.

2.      Buatlah program untuk mengkopi suatu file teks! Nama file yang hendak dikopi dan hasil kopiannya harus dilewatkan sebagai parameter pada waktu eksekusi. Contoh eksekusi program :

Java kopi fileA.txt fileB.txt

Jawaban :

public class Kopi {
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Cara pemakaian : " );
            System.out.println("java Kopi namaFileSumber namaFileTujuan");
            return;
        }
       
        String sumber = args[0];
        String tujuan = args[1];
       
        String data;
        FileWriter fout = null;
        FileReader fin = null;
        try {
            try {
                fin = new FileReader(sumber);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            try {
                fout = new FileWriter(tujuan);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            BufferedReader br = new BufferedReader(fin);
           
            data = br.readLine();
            while (data != null) {
                // \r\n digunakan untuk pindah baris
                fout.write(data + "\r\n");
                data = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("Eksepsi tidak diketahui : " + e);
        } finally {
            //tutup file
            if (fout != null) {
                try {
                    fout.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
        }
    }      
}


Bab 14 : Membuat User Interface dengan Swing

            Buatlah sebuah game sederhana dengan aturan sebagai berikut :

1.      Tampilan game ini terdiri atas 40 button yang disusun 5 baris, 8 kolom. Dalam game ini, user harus mencari pasangan dari nilai yang ada pada masing-masing button. Untuk kesederhanaan, sebagai nilainya, Anda cukup menggunakan nilai integer dari 0-100.
2.      Semua nilai dari masing-masing button ini harus disembunyikan dengan menggunakan lambang “?”.
3.      Untuk melihat nilai yang ada, user harus mengklik pada button yang bersangkutan. Selanjutnya user harus mencari pasangan dari nilai yang ditampilkan tersebut dengan mengklik button lainnya. Jika ternyata kedua nilai dari button yang telah ditampilkan tersebut tidak sama, maka nilai yang sudah ditampilkan tersebut harus ditutup lagi dengan lambang “?”. Namun jika nilai dari kedua button sama maka nilai dari kedua button tersebut harus tetap ditampilkan dan button harus di disabled agar tidak bisa dipilih lagi.
4.      Game akan dianggap selesai jika user berhasil membuka semua nilai yang disembunyikan oleh setiap button.

Berikut ini contoh tampilan hasil eksekusi program, Anda tidak harus mengikuti contoh tampilan ini. Jika memungkinkan, Anda dipersilahkan untuk menambahkan fasilitas apa pun yang mungkin akan membuat game ini semakin menarik untuk dimainkan.

Bab 1 : Pengenalan Terhadap Java

  1. Sebutkan kelebihan-kelebihan yang dimiliki oleh Java yang Anda ketahui!

Jawaban :

·        Bersifat portable dan platform independent . Program Java yang Anda tulis akan dapat dieksekusi di platform mana pun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untukplatform tersebut tersedia.
·        Memiliki garbage collection yang dapat mendealokasikan memori secara otomatis. Anda tidak perlu secara eksplisit membebaskan suatu lokasi memori yang dipakai karena ini akan dilakukan secara otomatis oleh Java.
·        Menghilangkan pewarisan berganda yang terdapat pada C++. Walaupun kelihatannya lebih sebagai suatu kekurangan, namun banyak para ahli yang mengakui bahasa konsep pewarisan berganda lebih banyak mengakibatkan kerugian dari pada keuntungan. Java telah didesain sedemikian rupa sehingga Anda tidak akan memerlukan tehnik ini dalam pembuatan program apa pun.
·        Mengurangi pointer aritmetik. Pengaksesan lokasi memori secara langsung dengan menggunakanpointer memungkinkan program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi dan menghilangkan kemungkinan kesalahan seperti ini, penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.
·        Memiliki array sejati.
·        Mengurangi kerancuan antara pemberian nilai pada statement kondisional. Contoh penggunaan tanda ‘=’ dengan ‘==’ pada kondisi if.

  1. Apa yang Anda ketahui tentang karakteristik Java?

Jawaban :

    • Berorientasi Objek, Java telah menerapkan konsep pemrograman berorientasi objek yang modern dalam implementasinya.
    • Robust, Java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly typed dan memilikiruntime checking.
    • Portable, program Java dapat dieksekusi di platformmana pun selama tersedia Java Virtual Machine untukplatform tersebut.
    • MultithreadingJava mendukung penggunaanmultithreading yang telah terintegrasi secara langsung dalam bahasa Java.
    • Dinamisprogram Java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi programdan bukan pada saat kompilasi.
    • Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari.
    • TerdistribusiJava didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet.
    • Aman, aplikasi yang dibuat dengan bahasa Java dapat dipastikan keamanannya terutama untuk aplikasi internet.
    • Netral secara arsitekturJava tidak terikat pada suatu mesin atau sistem operasi tertentu.
    • Interpreted, aplikasi Java dapat dieksekusi padaplatform yang berbeda-beda dengan melakukan interpretasi pada bytecode.
    • Berkinerja Tinggi, bytecode  Java telah sangat teroptimasi, sehingga eksekusi program dapat dilakukan secara cepat sekalipun dilakukan dengan cara interpretasi terhadap bytecode.


Bab 2: Pengenalan Objek: Paradigma Pemrograman Berbasis Objek

  1. Jelaskan perbedaan antara state dan behavior. Berikan contohnya!

Jawaban:
           
            State merupakan keadaan dari suatu objek, contohnya tinggi, berat, usia, merupakan state yang dimiliki oleh objek manusia. State ini bersifat pasif karena ia tidak dapat melakukan operasi apa pun, padanya justru dilakukan operasi. Oleh karena itu secara sederhana state dapat dianggap sebagai ‘kata benda’. Sedangkan behaviour merupakan operasi atau aktivitas yang dapat dilakukan oleh suatu objek, contohnya makan, minum, menua, bekerja, merupakan behaviour yang dimiliki oleh objek manusia. Aktivitas ini dapat (tidak selalu) mempengaruhi state dari objek itu sendiri, misalnya behaviour menua dapat merubahstate umur. Oleh karena sifatnya ini, secara sederhana behaviour dianggap sebagai ‘kata kerja’.

  1. Jelaskan apa yang dimaksud dengan class dan objek ! Apa bedanya dan berikan contohnya!

Jawaban:

            Class digunakan untuk menggambarkan suatu model atau spesifikasi dari suatu entitas, sedangkan objek merupakan kenyataan, realisasi atau perwujudan dari classitu sendiri. Contoh sederhana : desain arsitektur gedung dan gedung yang dibuat berdasarkan desain tersebut. Desain arsitektur gedung dapat dianggap sebagai class, sedangkan gedung yang dibangun berdasarkan desain itu sendiri dapat dianggap sebagai objeknya.
Bab 3 : Sintaks Bahasa dan Tipe Data

  1. Apa perbedaan antara tipe data primitif dan tipe data referensi?

Jawaban :

            Tipe data primitif merupakan tipe data dasar yang dikenal oleh Java. Variabel dengan tipe data primitif dapat langsung digunakan untuk ‘memegang’ data yang sesuai dengan tipe datanya. Contoh : int var = 3; maka nilai variabel var adalah 3.
            Sedangkan tipe data referensi digunakan untuk semua tipe data selain tipe data primitif termasuk di sini adalah array dan class. Variabel dengan tipe data referensi tidak ‘memegang’ secara langsung nilai yang hendak disimpan, melainkan variabel ini hanya ‘memegang’ referensi (alamat) dari nilai yang sebenarnya yang ada di memori.

  1. Untuk melatih pengetahuan Anda akan tipe data, buatlahprogram untuk menghitung luas :

    • Segitiga
    • Lingkaran
    • Bujursangkar
    • Empat persegi panjang

Hati-hati dengan konversi tipe data secara otomatis yang dilakukan oleh Java, terutama konversi dari tipe floating-point ke integer.

Jawaban :

public class HitungLuas {
     public static void main(String[] args) {

     // data segitiga
int panjangSegitiga = 5;
int tinggiSegitiga = 9;

     // data lingkaran
int jari2Lingkaran = 15;

     // data bujursangkar
int panjangSisi = 13;

     // data persegi panjang
int panjangPersegi = 35;
int lebarPersegi = 45;

double luas;

     // luas segitiga
luas = ((double) (panjangSegitiga*tinggiSegitiga)/2);
System.out.println("Luas Segitiga : " + luas);

     // luas lingkaran
luas = 3.14*jari2Lingkaran*jari2Lingkaran;
System.out.println("Luas Lingkaran : " + luas);

     // luas bujursangkar
luas = panjangSisi*panjangSisi;
System.out.println("Luas Bujursangkar : " + luas);

     // luas persegi panjang
luas = panjangPersegi*lebarPersegi;
System.out.println("Luas Persegi Panjang : " + luas);

     }

}


           

output program :

            


Bab 4 : Operator

1.      Apa perbedaan x++ dan ++x, jelaskan!

Jawaban :

      Penggunaan x++ dan ++x jika tidak dikombinasikan dengan ekspresi lainnya tidak memiliki perbedaan sama sekali. Perbedaannya baru akan terasa jika penggunaannya digabung dengan suatu ekspresi. Namun secara sederhana x++ dapat diartikan : lakukan operasi terhadap x baru kemudian tambahkan tambahkan dengan 1. Sedangkan ++x dapar diartikan : jumlahksn x dengan 1, baru kemudian lakukan operasi terhadap x. Contoh :

y = x++ + 10;  sama dengan : y = x + 10;
                                                       x = x + 1;

Sedangkan

      y = ++x + 10;  sama dengan : y = x + 1;
                                                      x = x + 10;

           
2.      Bagaimana menghitung perkalian dan pembagian dengan bilangan dua tanpa menggunakan operatormatematika?

Jawaban :

      Perkalian dengan bilangan dua dapat  dilakukan dengan menggunakan operator bitwise << (geser kiri). Sedangkan untuk pembagian dapat dilakukan dengan menggunakan operator bitwise >> (geser kanan).

Contoh penjelasan :

      124/2 = 124 >> 1
124    =  0000000001111100
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \               >> 1
   0000000000111110             = 62
                       
                        124*2 = 124 << 1
124 = 0000000001111100
   / / / / / / / / / / / / / / /                   << 1
  0000000011111000                 = 248
3.            Bagaimana menukar nilai dari dua variabel integerdengan tanpa menggunakan variabel perantara.

Jawaban :

Contoh : variabel A = 22 dan B = 34, tanpa menggunakan variabel perantara, tukarlah kedua nilai dari variabel tersebut sehingga variabel A = 34 dan B = 22.

Untuk menukar nilai dari dua buah variabel integertanpa menggunakan variabel perantara dapat digunakanoperator bitwise XOR. Perhatikan contoh penjelasan berikut ini :

A = 22 dan B = 34
Hasil dari A XOR B adalah

      A = 22             = 0000000000010110
B = 34             = 0000000000100010
A XOR B        = 0000000000110100 = 52

Jika kita anggap hasil dari A XOR B adalah C maka

A = 22             = 0000000000010110
C = 52             = 0000000000110100
B XOR C        = 0000000000010110 = A

Dapat disimpulkan bahwa jika C = A XOR B,
maka C XOR A = B dan C XOR B = A

Dengan demikian, Anda dapat menuliskan kode berikut ini untuk menukar nilai dari dua buah variabel integer A dan B di atas :

A = A ^ B;
B = A ^ B;
A = B ^ A;

Sehingga sekarang nilai variabel A = 34 dan B = 22.


Bab 5 : Kontrol Alur Eksekusi Program

1.      Buatlah program yang menghasilkan ouput seperti di bawah ini!


                       
                        Jawaban :
public class Bintang {
     public static void main(String[] args) {
     int ukuran = 7;

     for (int i = 0; i<ukuran; i++) {
          int j;
          int spasiCounter = ukuran - i - 1;

          for (j = 0; j < spasiCounter; j++) {
              System.out.print(" ");
          }

          for (j = 0; j <= (i*2); j++) {
              if (j % 2 == 1)
                   System.out.print(" ");
              else
                   System.out.print("*");
          }
          System.out.println();
     }
     }
}


                       
                                   



















Bab 6 : Class

            Buatlah sebuah class dengan nama Televisi, yang mempunyai property :

·        deskripsi : untuk menyimpan nama/deskripsi dari televise. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapay diubah setelahnya.
·        jumlahChannel : untuk menyimpan banyaknya channel yang dapat disimpan oleh televisi. Property ini hanya dapat diset saat pembuatan saja, dapat dibaca namun tidak dapat diubah setelahnya.
·        channels : untuk menyimpan data channel stasiun televisi yang sudah diset. Property ini dapat dibaca dan diubah kapan saja.
·        channelAktif : untuk menyimpan nomor channel yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.
·        volume : untuk menyimpan informasi besarnya volume televisi yang sedang aktif saat ini. Property ini dapat dibaca dan diubah kapan saja.

Selain itu objek Televisi tersebut juga harus mendukung operasi berikut ini :

·        Menset channel stasiun televisi yang diinginkan. Ini sama halnya jika Anda membeli televisi baru, hal pertama kali yang Anda lakukan tentunya adalah mendaftarkan semua channel stasiun televisi yang ada ke dalam televisi Anda.Sehingga berikutnya jika Anda ingin menonton televisi yang Anda inginkan, Anda cukup memasukkan nomor channel dari stasiun tersebut yang sudah terdaftar pada televisi tersebut. Anda juga tidak boleh menset channel lebih banyak dari jumlah channel yang dapat ditampung oleh televisi.
·        Mengganti channel stasiun yang sedang aktif. Jika nomor channel yang diinginkan ternyata belum diset ke stasiun televisi manapun, tampilkan informasi yang memberitahukan hal tersebut.
·        Mengubah volume suara.
·        Menampilkan deskripsi dari televisi.

Class Televisi yang Anda buat tersebut harus dapat digunakan oleh program berikut ini :

public class User {
     public static void main(String[] args) {

     Televisi tv = new Televisi("TV tempoe doeloe, 14 inches", 10);

     String[] semuaChannel = {"RCTI", "SCTV","INDOSIAR","LA TV",
                                               "METRO TV","TRANS TV","TPI","TV 7",                                              "TVRI","TV G","AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV", 
                                               "MTRO TV","TRANS TV","TPI","TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannels(channelFavorit);

     tv.setChannelAktif(3);

     tv.setVolume(10);

     tv.setChannelAktif(1);
     }
}

           

            Dengan hasil eksekusi seperti berikut ini :

            

           
                        Jawaban :

class Televisi {
     private String deskripsi;
     private int jumlahChannel;
     private String[] channels = null;
     private int channelAktif;
     private int volume;

     public Televisi(String deskripsi, int jumlahChannel) {
     this.deskripsi = deskripsi;
     this.jumlahChannel = jumlahChannel;
     }

     public String getDeskripsi() {
     return deskripsi;
     }

     public int getJumlahChannel() {
     return jumlahChannel;
     }

     public String[] getChannels() {
     if (channels == null) {
          System.out.println("Belum ada channel yang diset!");
     }
     return channels;
     }

     public void setChannels(String[] channels) {
     if (channels.length > jumlahChannel) {
          System.out.println("Maaf Tv ini hanya dapat menyimpan " +
                        jumlahChannel + " channel");
     }
     else {
          this.channels = channels;
         System.out.println("Informasi channel berhasil di update!");
     }
     }

     public int getChannelAktif() {
     return channelAktif;
     }

     public void setChannelAktif(int channelAktif) {
     if (channelAktif > channels.length) {
          System.out.println("Channel yang Anda inginkan belum diset!");
          return;
     }
     this.channelAktif = channelAktif;
     System.out.println("Pindah channel ke : " + channels[channelAktif]);
     }

     public int getVolume() {
     return volume;
     }

     public void setVolume(int volume) {
     this.volume = volume;
     System.out.println("intensitas volume sekarang : " + volume);
     }
}

           
                                   
Bab 7 : Pewarisan

1.      Keuntungan apa yang dapat Anda peroleh dengan melakukan pewarisan dan kapan Anda mungkin perlu untuk melakukannya?

Jawaban :

      Keuntungan terutama yang Anda dapatkan adalah ‘reusable code’, karena dengan menurunkan suatu class dari Superclass, Anda cukup menambahkan kode specific yang dimiliki oleh class itu saja sedangkan kode lainnya mungkin tidak perlu Anda ketik ulang karena telah didapat dari Superclass-nya.

2.      Apa yang terjadi jika Anda mendeklarasikan member pada Subclass yang sama persis dengan yang dimiliki oleh superclass-nya? Bagaimana pula cara subclasss agar dapat mengakses member dari superclass tersebut?

Jawaban :

      Member yang Anda deklarasikan pada subclass yang sama persis dengan member yang dideklarasikan oleh superclass-nya dikatakan meng-override member dari superclass tersebut. Untuk mengakses member dari superclass ini dari subclass-nya harus digunakan keyword super.

3.      Buatlah sebuah class turunan bernama class TelevisiModern dari class Televisi  yang telah Anda buat pada soal  di bab 6. Tambahkan fasilitas teletext dan cd player built-in yang dapat digunakan oleh contoh program berikut ini :

public class User {
     public static void main(String[] args) {

     TelevisiModern tv = new TelevisiModern("TV Modern, 29 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR",
                   "LA TV", "METRO TV", "TRANS TV",
                   "TPI", "TV 7", "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR",
                    "LA TV", "MTRO TV", "TRANS TV", "TPI",
                                               "TV 7"};

     System.out.println("Televisi yang baru gua beli : " + tv.getDeskripsi());

     tv.getChannels();
     tv.setChannels(semuaChannel);
     tv.setChannelAktif(3);
     tv.setVolume(10);
     tv.setChannelAktif(10);
     tv.setChannelAktif(1);
     tv.setModusTampilan(TelevisiModern.TELETEX);
     tv.setHalamanTeletext(250);
     tv.setModusTampilan(TelevisiModern.TV);
     tv.playCD();
     tv.setDiscTray("The Matrix");
     tv.playCD();

     }
}

Dengan tampilan hasil eksekusi seperti berikut ini :


Jawaban :

public class TelevisiModern extends Televisi {
     public static final int TV = 0;
     public static final int TELETEXT = 1;
     int modusTampilan = TV;
     int halamanTeletext = 100;
     String discTray = null;

     public TelevisiModern(String deskripsi, int jumlahChannel) {
     super(deskripsi, jumlahChannel);
     }

     public void setHalamanTeletext(int halamanTeletext) {
     this.halamanTeletext = halamanTeletext;
     System.out.println("Berpindah ke halaman teletext " +
                                          halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
     switch (modusTampilan) {
          case TV:
              System.out.println("Modus tampilan : Televisi");
              break;
          case TELETEXT:
              System.out.println("Modus tampilan : Teletext");
              break;
     }
     }

     public String getDiscTray() {
     return discTray;
     }

     public void setDiscTray(String discTray) {
     this.discTray = discTray;
     }

     public void playCD() {
     if (discTray == null) {
          System.out.println("Tidak ada CD di dalam disc tray!");
          return;
     }
     System.out.println("Memutar file " + discTray);
     }
}


Bab 8 : Interface

Buatlah sebuah interface bernama Control dan rombaklah class TelevisiModern yang telah anda buat pada soal Bab 7 di atas agar mengimplmentasi interface Control ini sehingga semua fungsi objek dari class TelevisiModern tersebut dapat di akses melalui interface tersebut! Buat juga sebuah class baru bernama RemoteControl di mana objek dari class inilah yang akan menggunakan interface Control untuk mengakses fungsi objek dari class TelevisiModern tersebut! Class dan Interface yang telah dibuat tersebut harus dapat digunakan seperti dalam contoh programberikut ini:

public class User {
     public static void main(String[] args) {

     TelevisiModern tv1 = new TelevisiModern("TV Sony 29 inches", 200);
     TelevisiModern tv2 = new TelevisiModern("TV Hitachi 21 inches", 100);

     String[] semuaChannel = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7",
                                              "TVRI", "TV G", "AN TV"};

     String[] channelFavorit = {"RCTI", "SCTV", "INDOSIAR", "LA TV",
                                               "METRO TV", "TRANS TV", "TPI", "TV 7"};

     tv1.setDiscTray("The Matrix");
     tv2.setDiscTray("Spiderman");

     // remote control diarahkan ke tv1
     RemoteControl rc = new RemoteControl(tv1);

     rc.setChannels(semuaChannel);
     rc.setChannelAktif(3);
     rc.setVolume(10);
     rc.setChannelAktif(10);
     rc.setModusTampilan(TelevisiModern.TELETEXT);
     rc.setHalamanTeletext(250);
     rc.setModusTampilan(TelevisiModern.TV);
     rc.playCD();

     System.out.println();

     //remote control diarahkan ke tv2
     rc.setTv(tv2);
     rc.setChannels(channelFavorit);
     rc.setVolume(20);
     rc.setChannelAktif(1);
     rc.playCD();
     }
}
           

Jawaban:

public interface Control {

     public String getDeskripsi();
     public String[] getChannel();
     public int getJumlahChannel();
     public void setChannels(String[] channels);
     public int getChannelAktif();
     public void setChannelAktif(int channelAktif);
     public int getVolume();
     public void setVolume(int volume);
}

public class RemoteControl implements Control {

     Control tv = null;

     public RemoteControl(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public void setTv(Control tv) {
            this.tv = tv;
            System.out.println("Remote diarahkan ke tv : " + tv.getDeskripsi());
     }

     public String getDeskripsi() {
            return tv.getDeskripsi();
     }

     public int getJumlahChannel() {
            return tv.getJumlahChannel();
     }

     public String[] getChannels() {
            return tv.getChannels();
     }

     public void setShannels(String[] channels) {
            tv.setChannels(channels);
     }

     public int getChannelAktif() {
            return tv.getChannelAktif();
     }

     public void setChannelAktif(int channelAktif) {
            tv.setChannelAktif(channelAktif);
     }

     public int getVolume() {
            return tv.getVolume();
     }

     public void setVolume(int volume) {
            tv.setVolume(volume);
     }

     public void setHalamanTeletext(int halamanTeletext) {
            tv.setHalamanTeletext(halamanTeletext);
     }

     public void setModusTampilan(int modusTampilan) {
            tv.setModusTampilan(modusTampilan);
     }

     public void playCD() {
            tv.playCD();
     }
}
           

Selanjutnya class TelevisiModern yang telah anda buat sebelumnya harus dideklarasikan agar mengimplementasi interface Control diatas.

Bab 9 : Package dan Classpath

1.      Bagaimana cara anda memberitahu Java untuk menggunakan classpath yang anda inginkan  dan bagaimana pula cara Java memanfaatkan classpath ini untuk mendapatkan class yang dibutuhkan ?

Jawaban:

Cara pertama adalah dengan menset environmentvariabel yang bernama CLASSPATH agar menampung semua path yang mungkin dibutuhkan untuk mendapatkan class ataupun interface yang akan digunakan. Misalnya, class yang dibutuhkan terletak pada direktori c:\java_projects\classes dan d:\java_tool\lib, maka environment variabel CLASSPATH harus berisi kedua path tersebut. Pada sistem operasi Windows hal ini dapat Anda lakukan dengan mengetikan perintah berikut ini pada command prompt (dos prompt):

set CLASSPATH= c:\java_projects\classes; d:\java_tool\lib

Direktori yang terdaftar dalam CLASSPATH ini akan digunakan oleh Java sebagai titik awal (root) pencarian dari class yang dibutuhkan. Misalnya, jika anda mengetikkan perintah berikut ini:

java TesMe

maka Java akan mencari class TesMe ini dalam kedua direktori di atas. Jika class yang hendak anda eksekusi menggunakan package, misalnya anda hendak mengeksekusi program dengan mengetikan perintah berikut ini:

java bab9.TesPackage

maka Java akan mencari class TesPackage dalam direktori:

c:\java_projects\classes \bab9 dan
d:\java_tool\lib\bab9.

Cara kedua yang dapat dilakukan untuk menset CLASSPATH adalah dengan mengunakan switch

-classpath <daftar-direktori>

pada waktu hendak mengompilasi ataupun hendak mengeksekusi suatu program. Contoh:

java -classpath c:\java_projects bab9.TesPackage

2.      keuntungan apa saja yang dapat anda peroleh dengan menggunakan package dalam program?

Jawaban:

Dengan menggunakan package anda menciptakanname space anda sendiri sehingga anda dapat menggunakan nama yang sama dengan class maupuninterface asalkan kedua class maupun interface tersebut berada di dalam package yang berbeda. Selain itu dengan menggunakan package, file class maupuninterface yang anda buat akan tersimpan dengan rapi dalam direktorinya masing-masing sehingga memudahkan pencarian. Menaruh file dalam jumlah besar ke dalam satu direktori saja akan mudah menimbulkan kebingungan pada saat pencarian.

3.      Jelaskan fungsi keyword import dalam hubungannya dengan penggunaan package!

Jawaban:

Keyword import dipakai jika anda ingin menggunakan class ataupun interface yang berbeda pada package yang berbeda dari tempat dimana anda ingin menggunakannya. Dengan menggunakan keywordimport ini, anda tidak perlu menuliskan full package class/interface name untuk dapat menggunakan classatau interface yang ada dalam suatu package. Anda cukup menggunakan nama classnya saja secara langsung.


Bab 10 : Penanganan Eksepsi

1.      Apa perbedaan antara keyword throw dengan keywordthrows!

Jawaban :

      Keyword throw digunakan untuk melempar suatu eksepsi dalam program, contoh kode:

      If (ada yang salah)
                  Throw new Exception(“Salah nih….!”);

Sedangkan keyword throws digunakan pada waktu mendeklarasikan suatu method untuk memberitahu bahwa method yang bersangkutan dapat melempar eksepsi dengan tipe yang dideklarasikan oleh keywordthrows tersebut. Contoh kode :

      void methodAneh() throws IOException, Exception {}

Penggunaan keyword throws ini juga hanya diperlukan jika eksepsi yang hendak dilempar merupakan eksepsi yang dicek (bukan merupakan turunan dari classRuntimeException dan umumnya merupakan turunan dari class Exception).

2.      Jelaskan fungsi pembuatan subclass eksepsi sendiri!

Jawaban :

Dengan membuat class eksepsi sendiri berarti Anda membuat tipe data baru dimana tipe data baru ini dapat Anda gunakan untuk melempar suatu eksepsi untuk kemudian ditangkap pada bagian lain dari program. Dengan menggunakan tipe data eksepsi yang berbeda-beda, program dapat mengetahui apa kira-kira penyebab eksepsi yang bersangkutan sehingga dapat bertindak sebagimana mestinya.


Bab 11 : Pemrograman Multithreading

1.      Menurut Anda, kapan sebaiknya menggunakaninterface Runnable dan kapan membuat turunan dariclass Thread?

Jawaban :

      Interface Runnable digunakan jika Anda harus menurunkan class yang Anda buat dari class lainnya sehingga tidak memungkinkan lagi untuk diturunkan dari class Thread. Namun membuat class turunan dariclass Thread sangat disarankan jika class yang Anda buat tersebut akan meng-override member dari classThread tersebut.

2.      Pertimbangan apa yang kira-kira digunakan pada saat Anda memutuskan penggunaan antara sinkronisasi padamethod dengan sinkronisasi pada objek!

Jawaban :

Sinkronisasi pada method mengharuskan methodtersebut dideklarasikan dengan menggunakankeyword synchronized. Jika ternyata pendeklarasianmethod tersebut tidak menggunakan keywordtersebut maka Anda tidak punya cara lain selain menggunakan tehnik sinkronisasi pada objek. Namun jika Anda memiliki source code dari classdimana method tersebut berada, Anda dapat saja mengubah method tersebut agar didelarasikan menggunakan keyword synchronized.

Bab 12 : The Java Library

1.      Jelaskan fungsi class wrappers dan hubungannya dengan tipe data primitif!

Jawaban :

Class wrappers digunakan untuk mempresentasikan tipe data primitif dalam bentuk objek. Ini diperlukan karena tipe data primitif tidak digunakan menggunakan referensinya. Sedangkan banyak operasi yang didukung oleh Java Librarymengharuskan penggunaan referensi yang hanya didukung oleh tipe data referensi.
           
2.      Berikut ini adalah sekumpulan string yang di dalamnya terdapat informasi No Induk Mahasiswa(NIM), Nama, dan IPK :

0256975648;Nilasari Kumala;3.1#0568974567;Timotius;3.8#0236971245;Stevabus Firman;2.6#0457878975;Dicky Suteja;0#0695475486;Andi Setiawan;3.4

Buatlah sebuah program untuk mengelompokkan semua informasi yang didapat dari string di atas, ke dalam collection atau map. Tambahkan fasilitas untuk mengurutkan data berdasarkan ketiga informasi tersebut dan tampilkan ke layer!

Program yang Anda buat tersebut harus dapat digunakan seperti berikut ini :

public class User {
    public static void main(String[] args) {
        String inputData = "0256975648;Niko Syah;3.1#0568974567;
                               Titi Nur;3.8#0236972345;" +
                              "StevanusFirman;2.6#0457878975;
                               DickySuteja;2.0#0695475486;Andi Sujata;3.4";
       
        Database database = new Database(inputData);
       
        System.out.println("Data Asli");
        System.out.println("=============");
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan NIM");
       System.out.println("==============================");
        database.urutkanBerdasarkanNim();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan Nama");
       System.out.println("==============================");
        database.urutkanBerdasarkanNama();
        database.tampilkanData();
        System.out.println();
       
        System.out.println("Diurutkan Berdasarkan IPK");
       System.out.println("==============================");
        database.tampilkanData();
    }
}

Dengan tampilan hasil eksekusi sebagai berikut :

Jawaban :

public class Mahasiswa {
            private String nim;
            private String nama;
            private double ipk;
           
            public Mahasiswa(String nim, String nama, double ipk) {
                        this.nim = nim;
                        this.nama = nama;
                        this.ipk = ipk;
            }
           
            public String getNim() {
                        return nim;
            }
           
            public void setNim(String nim) {
                        this.nim = nim;
            }
           
            public String getNama() {
                        return nama;
            }
           
            public void setNama(String nama) {
                        this.nama = nama;
            }
           
            public double getIpk() {
                        return ipk;
            }
           
            public void setIpk(double ipk) {
                        this.ipk = ipk;
            }
}

import java.util.ArrayList;
import java.util.StringTokenizer;

public class Database {
    private ArrayList data = new ArrayList();
           
    public Database(String inputData) {
        Mahasiswa datum;
        StringTokenizer tokens = new StringTokenizer(inputData, ";#");
       
        while (tokens.hasMoreTokens()) {
            String nim = tokens.nextToken();
            String nama = tokens.nextToken();
            double ipk = Double.parseDouble(tokens.nextToken());
            datum = new Mahasiswa(nim, nama, ipk);
            data.add(datum);
        }
    }
   
    public void tampilkanData() {
        for (int i = 0; i < data.size(); i++) {
            Mahasiswa datum = (Mahasiswa)data.get(i);
            System.out.print(datum.getNim() + "\t");
            System.out.print(datum.getNama() + "\t\t");
            System.out.println(datum.getIpk());
        }
    }
   
    public void urutkanBerdasarkanNim() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1, str2;
        int length;
        Mahasiswa datum, datumBaru;
        for(int i=0;i<data.size();i++){
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0){
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNim();
            length = dataBaru.size();
           
            for(int j=0;j<length;j++){
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNim();
                if(str1.compareTo(str2)<0){
                    dataBaru.add(j,datumBaru);
                    break;
                } 
                else if (j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanNama() {
        ArrayList dataBaru = new ArrayList(data.size());
        String str1,str2;
        int length;
        Mahasiswa datum,datumBaru;
        for (int i=0;i<data.size();i++) {
            datumBaru = (Mahasiswa)data.get(i);
            if(i==0) {
                dataBaru.add(datumBaru);
                continue;
            }
            str1 = datumBaru.getNama();
            length = dataBaru.size();
            
            for(int j=0;j<length;j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                str2 = datum.getNama();
                if(str1.compareTo(str2)<0) {
                    dataBaru.add(j,datumBaru);
                    break;
                }
                else if(j==length-1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
   
    public void urutkanBerdasarkanIpk() {
        ArrayList dataBaru = new ArrayList(data.size());
        double num1, num2;
        int length;
        Mahasiswa datum, datumBaru;
        for (int i = 0; i < data.size(); i++) {
            datumBaru = (Mahasiswa)data.get(1);
            if (i == 0) {
                dataBaru.add(datumBaru);
                continue;
            }
            num1 = datumBaru.getIpk();
            length = dataBaru.size();
            for (int j = 0; j < length; j++) {
                datum = (Mahasiswa)dataBaru.get(j);
                num2 = datum.getIpk();
               
                if (num1 < num2) {
                    dataBaru.add(j, datumBaru);
                    break;
                }
                else if (j == length - 1)
                    dataBaru.add(datumBaru);
            }
        }
        data = dataBaru;
        dataBaru = null;
    }
}

Bab 13 : Operasi I/O

1.      Jelaskan perbedaan utama antara Byte Streams dengan Character Streams!

Jawaban :

      Sesuai dengan namanya, byte streams membaca maupun menulis data (stream) dengan menggunakan ukuran byte atau 8 bit, sedangkan character streams menggunakan ukuran character, di mana dalam Java yang menggunakan Unicode untuk mempresentasikan sebuah karakter, memiliki besar 2 byte atau 16 bit. Oleh karena itu penggunaan character streams umumnya hanya cocok digunakan untuk membaca ataupun menulis data yang berupa teks (string) saja. Jika data yang hendak dibaca ataupun ditulis bukan merupakan teks, sebaiknya digunakan byte streams.

2.      Buatlah program untuk mengkopi suatu file teks! Nama file yang hendak dikopi dan hasil kopiannya harus dilewatkan sebagai parameter pada waktu eksekusi. Contoh eksekusi program :

Java kopi fileA.txt fileB.txt

Jawaban :

public class Kopi {
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Cara pemakaian : " );
            System.out.println("java Kopi namaFileSumber namaFileTujuan");
            return;
        }
       
        String sumber = args[0];
        String tujuan = args[1];
       
        String data;
        FileWriter fout = null;
        FileReader fin = null;
        try {
            try {
                fin = new FileReader(sumber);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            try {
                fout = new FileWriter(tujuan);
            } catch (FileNotFoundException e) {
                System.out.println("File : " + sumber +
                                    "tidak ada atau tidak dapat dibuka.");
                return;
            }
           
            BufferedReader br = new BufferedReader(fin);
           
            data = br.readLine();
            while (data != null) {
                // \r\n digunakan untuk pindah baris
                fout.write(data + "\r\n");
                data = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("Eksepsi tidak diketahui : " + e);
        } finally {
            //tutup file
            if (fout != null) {
                try {
                    fout.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException err) {
                    System.out.println("Eksepsi tidak diketahui : " + err);
                }
            }
        }
    }      
}


Bab 14 : Membuat User Interface dengan Swing

            Buatlah sebuah game sederhana dengan aturan sebagai berikut :

1.      Tampilan game ini terdiri atas 40 button yang disusun 5 baris, 8 kolom. Dalam game ini, user harus mencari pasangan dari nilai yang ada pada masing-masing button. Untuk kesederhanaan, sebagai nilainya, Anda cukup menggunakan nilai integer dari 0-100.
2.      Semua nilai dari masing-masing button ini harus disembunyikan dengan menggunakan lambang “?”.
3.      Untuk melihat nilai yang ada, user harus mengklik pada button yang bersangkutan. Selanjutnya user harus mencari pasangan dari nilai yang ditampilkan tersebut dengan mengklik button lainnya. Jika ternyata kedua nilai dari button yang telah ditampilkan tersebut tidak sama, maka nilai yang sudah ditampilkan tersebut harus ditutup lagi dengan lambang “?”. Namun jika nilai dari kedua button sama maka nilai dari kedua button tersebut harus tetap ditampilkan dan button harus di disabled agar tidak bisa dipilih lagi.
4.      Game akan dianggap selesai jika user berhasil membuka semua nilai yang disembunyikan oleh setiap button.

Berikut ini contoh tampilan hasil eksekusi program, Anda tidak harus mengikuti contoh tampilan ini. Jika memungkinkan, Anda dipersilahkan untuk menambahkan fasilitas apa pun yang mungkin akan membuat game ini semakin menarik untuk dimainkan.