Saturday 12 February 2011

Menguasai Statistik di Era Informasi dengan SPSS 15

1
BAB 1
PENDAHULUAN
Statistik dalam praktek, berhubungan dengan banyak angka hingga bisa
diartikan numerical description. Sebagai contoh, data statistik bisa berupa
pergerakan Indeks Bursa Saham (IHSG), jumlah tanaman di suatu wilayah,
jumlah penduduk wanita di suatu desa dan sebagainya; dalam dunia usaha,
statistik juga sering diasosiasikan dengan sekumpulan data, seperti pergerakan
tingkat inflasi, biaya promosi bulanan, jumlah pengunjung suatu
toko, dan sebagainya.
Namun, selain merupakan sekumpulan data, statistik juga dipakai untuk
melakukan berbagai analisis terhadap data, seperti melakukan peramalan
(forecasting), melakukan berbagai uji hipotesis, dan kegunaan lainnya;
statistik untuk kegunaan ini disebut sebagai ilmu statistik.
Aplikasi ilmu statistik dapat dibagi dalam dua bagian:
1. Statistik Deskriptif
Statistik Deskriptif berusaha menjelaskan atau menggambarkan berbagai
karateristik data, seperti berapa rata-ratanya, seberapa jauh data-data
bervariasi dari rata-ratanya, berapa median data, dan sebagainya.
2. Statistik Induktif (Inferensi)
Statistik Induktif berusaha membuat berbagai inferensi terhadap sekumpulan
data yang berasal dari suatu sampel. Tindakan inferensi tersebut
seperti melakukan perkiraan besaran populasi, uji hipotesis, peramalan,
dan sebagainya.
Dalam praktek, kedua bagian statistik tersebut dipakai bersama-sama; biasanya
dimulai dengan statistik deskriptif, lalu dilanjutkan dengan berbagai
analisis statistik untuk inferensi. Sebagai contoh, ada data tentang penjualan
Mobil merek “MUSANG” per bulan di suatu show room mobil di Jakarta
selama tahun 2002. Dari data tersebut, pertama akan dilakukan deskripsi
terhadap data tersebut, seperti menghitung berapa rata-rata penjualan mobil
“MUSANG” tersebut, berapa deviasi standarnya, dan lainnya. Setelah disusun
2
deskripsi atau penggambaran tentang data-data penjualan Mobil “MUSANG”
tersebut, kemudian baru dilakukan berbagai inferensi terhadap hasil deskripsi
tersebut, seperti memperkirakan berapa estimasi penjualan mobil
“MUSANG” di seluruh Indonesia (populasi), ramalan penjualan mobil
“MUSANG” di bulan Januari tahun depan, bulan Februari, dan seterusnya.
Jadi, statistik deskriptif akan dilakukan terlebih dahulu, lalu berdasar hasil
tersebut, baru dilakukan berbagai analisis statistik secara induktif.
1.1 ELEMEN STATISTIK
Meskipun statistik bisa diterapkan pada hampir semua aspek kehidupan,
namun ada beberapa elemen yang biasa terdapat dalam suatu persoalan
statistik, yaitu:
1. Populasi
Masalah dasar dari persoalan statistik adalah menentukan populasi data.
Secara umum populasi bisa didefinisikan sebagai sekumpulan data yang
mengidentifikasi suatu fenomena. Misal Pekerja di seluruh Indonesia bisa
disebut suatu populasi; namun semua Pekerja di PT UTAMA juga bisa
dikatakan populasi; bahkan Pekerja Wanita khusus di bagian produksi yang
bekerja lembur pada malam hari di PT UTAMA tersebut juga bisa disebut
suatu populasi. Jadi, definisi populasi lebih bergantung pada kegunaan dan
relevansi data yang dikumpulkan; jika diinginkan diteliti kepuasan pekerja
wanita yang bekerja malam di PT UTAMA tersebut, maka populasi adalah
Pekerja Wanita khusus di bagian produksi yang bekerja lembur pada malam
hari di PT UTAMA. Namun, jika ingin diteliti status dan keadaan pekerja
wanita di Indonesia, maka populasi yang relevan adalah seluruh wanita
Indonesia yang aktif bekerja.
Populasi dalam statistik tidak hanya terbatas pada masalah-masalah manusia
atau bisnis, namun dapat lebih luas cakupannya. Seperti populasi ayam di
suatu daerah, populasi bakteri ‘X’ di suatu laboratorium, dan seterusnya. Juga
populasi bisa sedemikian besarnya hingga bisa dikatakan tak terbatas, seperti
populasi oksigen di dunia, populasi plankton di lautan, dan sebagainya.
2. Sampel
Sampel bisa didefinisikan sebagai sekumpulan data yang diambil atau
diseleksi dari suatu populasi; seperti dalam kasus populasi di atas, jika
populasi adalah seluruh pekerja wanita di PT UTAMA, maka sampel bisa
sebagian pekerja wanita, atau beberapa pekerja wanita di perusahaan
3
tersebut. Jadi, sampel pada dasarnya adalah bagian dari populasi, atau
populasi bisa dibagi dalam berbagai jenis sampel.
Pengambilan sampel dilakukan karena dalam praktek banyak kendala yang
tidak memungkinkan seluruh populasi diteliti. Kendala tersebut bisa karena
situasi, waktu, tenaga, biaya, dan sebagainya. Sebagai contoh, tidak mungkin
akan diteliti semua bakteri “X” yang ada di seluruh dunia; atau akan menghabiskan
banyak waktu dan biaya jika seluruh pekerja wanita di Indonesia
dijadikan objek penelitian. Oleh karena itu, pengambilan sampel (contoh)
data pada banyak kasus statistik merupakan suatu kebiasaan dan karenanya
metode pengambilan sampel menjadi bagian penting dari statistik.
3. Variabel
Dalam melakukan inferensi terhadap populasi, tidak semua ciri populasi
harus diketahui. Hanya satu atau beberapa karateristik populasi yang perlu
diketahui, yang disebut sebagai variabel. Seperti untuk meneliti kepuasan
pekerja, variabel yang dianggap relevan bisa berupa usia pekerja, gender
pekerja, penghasilan pekerja, dan lainnya. Namun, variabel seperti status
pekerja, asal pekerja, atau tempat tinggal pekerja bisa saja dianggap tidak
relevan dan tidak perlu dianalisis.
4. Statistik Inferensi
Seperti telah dijelaskan di muka, statistik inferensi pada dasarnya adalah
suatu keputusan, perkiraan, atau generalisasi tentang suatu populasi berdasarkan
informasi yang terkandung dari suatu sampel. Pada kasus pekerja
wanita di atas, diambil sampel sebanyak 20 orang pekerja wanita di PT
UTAMA. Jika setelah dilakukan serangkaian analisis statistik, ternyata
umumnya para pekerja wanita bergaji rendah dan merasa tidak puas dengan
kondisi kerjanya, maka bisa disimpulkan bahwa seluruh pekerja wanita di
PT UTAMA (populasi) juga merasa tidak puas dengan kondisi kerja dan
tingkat gaji yang diterima selama ini. Jadi, apa yang disimpulkan dari analisis
terhadap sampel, itu pula yang digeneralisasikan (kesimpulan umum) pada
populasi.
1.2 TIPE DATA STATISTIK
Seperti telah disebut di muka, statistik dalam prakteknya tidak bisa dilepaskan
dari data yang berupa angka, baik itu dalam statistik deskriptif yang
menggambarkan data, maupun statistik inferensi yang melakukan analisis
terhadap data. Namun, sebenarnya data dalam statistik juga bisa mengandung
data non angka atau data kualitatif.
4
Data dalam statistik berdasarkan tingkat pengukurannya (level of measurement)
dapat dibedakan dalam empat jenis:
Data Kualitatif (Qualitative Data)
Data kualitatif secara sederhana bisa disebut data yang bukan berupa angka.
Data kualitatif mempunyai ciri tidak bisa dilakukan operasi matematika,
seperti penambahan, pengurangan, perkalian, dan pembagian.
Data kualitatif bisa dibagi menjadi dua:
1. Nominal
Data bertipe nominal adalah data yang paling “rendah” dalam level pengukuran
data. Jika suatu pengukuran data hanya menghasilkan satu dan hanya
satu-satunya kategori, maka data tersebut adalah data nominal (data
kategori). Misal proses pendataan tempat tinggal 40 responden dalam suatu
penelitian. Dalam kasus ini setiap orang akan bertempat tinggal di suatu
tempat tertentu (berdasar KTP), tidak bisa di tempat lain. Misal Amir berdomisili
di Solo, maka dia (dianggap) tidak mungkin tinggal di Jakarta, atau
punya dua KTP. Jadi, data tempat tinggal adalah data nominal karena Amir
hanya punya satu dan satu-satunya, tidak bisa lebih dari satu, tempat
tinggal yang ditunjukkan dengan KTP.
Atau, data Jenis Kelamin seseorang. Ini juga suatu data nominal karena
seorang laki-laki tidak mungkin berkelamin ganda. Demikian juga Tanggal
Lahir seseorang, Pekerjaan (diasumsi hanya satu jenis pekerjaan dalam satu
saat), dan seterusnya.
Data Nominal dalam praktek statistik biasanya akan dijadikan “angka”, yaitu
proses yang disebut kategorisasi. Misal dalam pengisian data, jenis kelamin
lelaki dikategorikan sebagai “1” dan perempuan sebagai “2”. Kategori ini
hanya sebagai tanda saja. Jadi, tidak bisa dilakukan operasi matematika,
seperti 1 + 2 atau 1 – 2, dan lainnya.
2. Ordinal
Data ordinal, seperti pada data nominal, adalah juga data kualitatif namun
dengan level yang lebih “tinggi” daripada data nominal. Jika pada data
nominal, semua data kategori dianggap sama, maka pada data ordinal, ada
tingkatan data. Misal pada data Jenis Kelamin di atas, Lelaki dianggap
setara dengan Wanita, atau dalam data Tempat Kelahiran, data Jakarta
dianggap sama dengan data Yogyakarta, Surabaya, Boyolali, dan seterusnya.
Pada data ordinal, ada data dengan urutan lebih tinggi dan urutan lebih
rendah. Misal data tentang sikap seseorang terhadap produk tertentu. Dalam
pengukuran sikap konsumen, ada sikap yang “suka”, “tidak suka”, “sangat
5
suka”, dan lainnya. Di sini data tidak bisa disamakan derajatnya, dalam arti
“suka” dianggap lebih tinggi dari “tidak suka”, namun lebih rendah dari
“sangat suka”. dan lainnya. Jadi, di sini ada preferensi atau tingkatan data,
di mana data yang satu berstatus lebih tinggi atau lebih rendah dari yang lain.
Namun, pada data ordinal juga tidak bisa dilakukan operasi matematika,
seperti jika “tidak suka” dikategorikan sebagai “1”, “suka” sebagai “2” dan
“sangat suka” sebagai “3”, maka tidak bisa dianggap “1 + 2 = 3”, atau “tidak
suka” ditambah “suka” menjadi “sangat suka”!
Data Kuantitatif (Quantitative Data)
Data kuantitatif bisa disebut sebagai data berupa angka dalam arti sebenarnya.
Jadi. berbagai operasi matematika bisa dilakukan pada data kuantitatif.
Seperti pada data kualitatif, data kuantitatif juga bisa dibagi menjadi dua
bagian.
1. Data Interval
Data Interval menempati level pengukuran data yang lebih “tinggi” dari data
ordinal karena selain bisa bertingkat urutannya, juga urutan tersebut bisa
dikuantitatifkan. Seperti pengukuran temperatur sebuah ruangan pembakaran
roti dari PT ENAK JOSS. Interval Temperatur ruang tersebut:
o Cukup Panas jika temperatur antara 500C - 800C
o Panas jika temperatur antara 800C - 1100C
o Sangat Panas jika temperatur antara 1100C - 1400C
Dalam kasus di atas, data temperatur bisa dikatakan data interval karena data
mempunyai interval (jarak) tertentu, yaitu 300C.
Namun, di sini data interval tidak mempunyai titik nol yang absolut. Misal
pada pengukuran temperatur, seperti pernyataan bahwa ‘air membeku pada
00C‘. Pernyataan di atas bersifat relatif, karena 00C hanya sebagai tanda saja.
Dalam pengukuran 0F, air membeku bukan pada 00F, namun pada 320F.
Dengan demikian, juga tidak bisa dikatakan bahwa suhu 1000F adalah dua
kali lebih panas dari suhu 500F.
2. Data Rasio
Data Rasio adalah data dengan tingkat pengukuran paling “tinggi” di antara
jenis data lainnya. Data Rasio adalah data bersifat angka dalam arti sesungguhnya
(bukan kategori seperti pada data nominal dan ordinal) dan bisa
dioperasikan secara matematika (+, -, x, /). Perbedaan dengan data interval
adalah bahwa data rasio mempunyai titik nol dalam arti sesungguhnya.
Misal jumlah produk roti dari gudang PT ENAK JOSS pada contoh di atas.
6
Jika jumlah roti nol, berarti memang tidak ada sepotong roti pun dalam
gudang tersebut. Jika ada 24 roti, kemudian bertambah produk baru sebanyak
3 roti, maka total roti sekarang adalah 24 + 3 = 27 roti (operasi penjumlahan),
dan seterusnya. Atau, berat badan dan tinggi badan seseorang, pengukuranpengukurannya
mempunyai angka nol/0 dalam arti sesungguhnya. Misal
berat badan 0 berarti memang tanpa berat. Dengan demikian, bisa dikatakan
bahwa sekantong beras seberat 10 kilogram adalah benar-benar dua kali lebih
berat dari sekantong beras yang mempunyai berat 5 kilogram.
Jenis-jenis data di atas dikupas dengan cukup mendalam karena penerapan
dalam statistik akan berbeda untuk jenis data yang berbeda. Data kualitatif
karena bukan data angka dalam arti sesungguhnya, tidak bisa disamakan
perlakuannya dengan data kuantitatif. Data nominal dan ordinal biasanya
menggunakan metode statistik nonparametrik, sedangkan data kuantitatif
memakai metode parametrik. Hal ini akan dijelaskan lebih terperinci pada
bab-bab di belakang.
1.3 STATISTIK DAN KOMPUTER
Komputer berasal dari kata ‘Computare’ dalam bahasa Yunani yang berarti
menghitung (bandingkan dengan kata ‘to compute’ dalam Bahasa Inggris).
Dengan demikian, komputer memang dibuat untuk melakukan pengolahan
data yang didasarkan pada operasi matematika seperti (x, /, +, -) dan operasi
logika (>, <, =). Perkembangan teknologi komputer pun pada intinya
berusaha untuk melipatgandakan kemampuan perhitungan di atas, dengan
memperbaiki kinerja “otak” komputer atau CPU (Central Processing Unit),
dari mulai teknologi XT yang sudah usang sampai teknologi terbaru saat ini,
yakni Intel Core 2 Extreme Processor dan AMD Phenom Processor.
Di lain sisi, ilmu statistik, baik itu statistik deskriptif maupun statistik
inferensi, pada dasarnya adalah ilmu yang '‘penuh’ pula dengan operasi
perhitungan matematika. Statistik berasal dari kata “statistic” yang dapat
didefinisikan sebagai data yang telah terolah. Apakah itu data yang telah
terolah? Tidak lain adalah data “mentah” yang kemudian mengalami proses
pengolahan data. Misal data berat badan sekelompok orang (dalam satuan
kilogram). Dengan proses klasifikasi, data mentah tersebut akan dijadikan
distribusi frekuensi, yang diikuti deskripsi beberapa angka statistik yang
penting, seperti varians, standar deviasi, rata-rata, dan lainnya (ingat pemahaman
statistik deskriptif). Kemudian dengan proses berikut, data-data tersebut
bisa diproses untuk melakukan statistik inferensi, seperti melakukan uji
hipotesis, korelasi, dan lainnya.
7
Bagaimana proses tersebut bisa berlangsung? Tentu hal itu didasarkan pada
pengolahan data yang berbasis perhitungan matematika, sesuatu yang bisa
dikerjakan dengan cepat oleh komputer. Jadi, jika statistik menyediakan
cara/metode pengolahan data yang ada, maka komputer menyediakan
sarana pengolahan datanya. Dengan bantuan komputer, pengolahan data
statistik hingga dihasilkan informasi yang relevan menjadi lebih cepat dan
lebih akurat. Hal ini sangat dibutuhkan bagi para pengambil keputusan
karena informasi yang tepat tapi lambat tersajinya akan menjadi “basi”,
sedangkan informasi yang walaupun cepat namun tidak akurat akan menghasilkan
keputusan yang bisa salah.
1.4 PROGRAM KOMPUTER STATISTIK
Saat ini banyak beredar berbagai paket program komputer statistik, dari yang
“kuno” dan berbasis DOS seperti Microstat sampai program berbasis
Windows seperti SPSS, SAS, Statistica, Eviews, Minitab, dan lainnya. Pada
dasarnya, program komputer yang berhubungan dengan pengolahan data
statistik bisa dibagi menjadi tiga kelompok:
1. MEMBUAT SENDIRI PROGRAM STATISTIK
Perhitungan statistik bisa dibuat sendiri untuk kegunaan tertentu dengan
bahasa BASIC, PASCAL, dan lainnya. Walaupun mampu menghasilkan
output yang memadai, namun kecuali untuk kegunaan yang bersifat khusus,
pembuatan program sendiri tidak populer dilakukan saat ini.
2. PROGRAM STATISTIK SEBAGAI ADD-INS DARI PROGRAM
LAIN
Perhitungan statistik bisa juga dilakukan lewat program yang sebenarnya
tidak difokuskan pada persoalan statistik, namun mampu memproses datadata
statistik dengan cukup memadai. Sebagai contoh, software spreadsheet
Microsoft Excel yang mempunyai ADD-INS (program bantu), di mana
dengan menginstal menu ANALYSIS TOOLPAK, bisa didapatkan serangkaian
prosedur statistik yang memadai.
(Buku pembahasan mengenai pengolahan data statistik lewat Excel sudah
tersedia dengan judul Aplikasi Excel dalam Statistik Bisinis terbitan Elex
Media Komputindo).
3. PROGRAM KHUSUS KOMPUTER STATISTIK
Pengolahan data statistik, sejalan dengan makin spesialisasinya banyak
software, bisa dilakukan dengan software yang khusus digunakan untuk
8
pengolahan data statistik. Sofware seperti itu hanya melakukan pengolahan
data statistik deskriptif maupun induktif, menyajikan berbagai grafik yang
relevan untuk membantu pengambilan keputusan di bidang statistik. Contoh
program tersebut seperti Microstat, SAS, Micro TSP, MINITAB, Eviews,
SPSS, dan sebagainya.
1.5 SPSS DAN KOMPUTER STATISTIK
SPSS sebagai sofware statistik pertama kali dibuat tahun 1968 oleh tiga
mahasiswa Stanford University, yakni Norman H. Nie, C. Hadlai Hull dan
Dale H. Bent. Saat itu software dioperasikan pada komputer mainframe.
Setelah penerbit terkenal McGraw-Hill menerbitkan user manual SPSS,
program tersebut menjadi populer. Pada tahun 1984, SPSS pertama kali
muncul dengan versi PC (bisa dipakai untuk komputer desktop) dengan nama
SPSS/PC+, dan sejalan dengan mulai populernya sistem operasi Windows,
SPSS pada tahun 1992 juga mengeluarkan versi Windows. Dan untuk
memantapkan posisinya sebagai salah satu market leader dalam business
intelligence, SPSS juga menjalin aliansi strategis dengan software house
terkemuka dunia lainnya, seperti Oracle Corp., Business Object, serta Ceres
Integrated Solutions.
Hal ini membuat SPSS yang tadinya ditujukan bagi pengolahan data statistik
untuk ilmu sosial (SPSS saat itu adalah singkatan dari Statistical Package for
the Social Sciences), sekarang diperluas untuk melayani berbagai jenis user,
seperti untuk proses produksi di pabrik, riset ilmu-ilmu sains, dan lainnya.
Dan kepanjangan dari SPSS sekarang menjadi Statistical Product and
Service Solutions. Pengguna software SPSS di seluruh dunia juga sangat
beragam, seperti HSBC Bank, ABN AMRO Bank, AC Nielsen (biro riset
pemasaran terbesar di dunia), American Airlines, British Telecommunications,
Deutsche Telekom, Canon UK, Credit Suisse, Unilever,
University of Chicago, New York University, dan perusahaan besar lainnya.
Saat ini SPSS tidak hanya menangani permasalahan statistik saja, namun
sudah meluas ke data mining (mengeksplorasi data yang telah terkumpul) dan
predictive analytic.
9
1.6 PERSYARATAN HARDWARE
DAN SOFTWARE SPSS 14
Agar SPSS 15 dapat berjalan dengan optimal, disarankan untuk menggunakan:
o Prosesor Intel Pentium atau kompatibelnya; dapat juga prosesor AMD
Athlon atau kompatibelnya.
o Memori (RAM) minimal 256 MB.
o Kapasitas hard disk minimal 400 MB.
o Monitor SVGA.
o Sistem Operasi seperti Microsoft Windows XP atau Windows 2000.
1.7 CARA KERJA SPSS
Untuk bisa memahami cara kerja software SPSS, berikut dikemukakan kaitan
antara cara kerja komputer dengan SPSS dalam mengolah data.
1. KOMPUTER
Seperti telah dijelaskan di muka, pada dasarnya komputer berfungsi mengolah
data menjadi informasi yang berarti. Data yang akan diolah dimasukkan
sebagai input, kemudian dengan proses pengolahan data oleh komputer,
dihasilkan output yang berupa informasi untuk kegunaan lebih lanjut.
Pengolahan data menjadi informasi dengan komputer:
INPUT OUTPUT DATA
DATA (INFORMASI)
PROSES
KOMPUTER
10
2. STATISTIK
Statistik juga mempunyai fungsi yang mirip dengan komputer, yaitu mengolah
data dengan perhitungan statistik tertentu, menjadi informasi yang
berarti.
Cara kerja proses perhitungan dengan statistik:
INPUT OUTPUT DATA
DATA (INFORMASI)
3. SPSS
Proses pengolahan data pada SPSS juga mirip dengan kedua proses di atas.
Hanya di sini ada variasi dalam penyajian input dan output data.
INPUT DATA OUTPUT DATA
dengan dengan
DATA EDITOR VIEWER
Penjelasan Proses Statistik dengan SPSS:
1. Data yang akan diproses dimasukkan lewat menu DATA EDITOR yang
otomatis muncul di layar saat SPSS dijalankan.
2. Data yang telah diinput kemudian diproses, juga lewat menu DATA
EDITOR.
3. Hasil pengolahan data muncul di layar (window) yang lain dari SPSS,
yaitu VIEWER. Output SPSS bisa berupa teks/tulisan, tabel, atau grafik.
Dengan demikian, dalam SPSS ada berbagai macam window yang bisa
tampil sekaligus jika memang akan dilakukan berbagai proses di atas.
Namun, yang pasti harus digunakan adalah DATA EDITOR sebagai bagian
PROSES
STATISTIK
PROSES
dengan
DATA EDITOR
11
input dan proses data, serta VIEWER yang merupakan tempat output hasil
pengolahan data.
Namun demikian, selain berbagai window di atas, ada beberapa window lagi
yang juga disertakan dalam SPSS, yaitu Syntax Editor dan Script Editor.
Berikut penjelasan singkat dari semua window yang terdapat pada SPSS.
1.8 WINDOWS SPSS
SPSS menyediakan beberapa window, yang meliputi:
1. Window SPSS Data Editor
(lihat bagian kiri atas tampilan SPSS)
Window ini terbuka secara otomatis setiap kali program SPSS dijalankan,
dan berfungsi untuk input data SPSS. Pada Data Editor juga dijumpai
berbagai menu utama untuk manipulasi data input dan proses data dengan
berbagai macam metode statistik.
2. Window SPSS VIEWER
(ada di bagian kiri atas tampilan SPSS)
Jika Data Editor berfungsi untuk memasukkan data yang siap diolah oleh
SPSS, kemudian melakukan pengolahan data yang dilakukan lewat menu
Analyze, maka hasil pengolahan data atau informasi ditampilkan lewat
window SPSS VIEWER atau bisa disebut Viewer saja. Isi viewer bisa berupa
sebuah Tabel, sebuah Grafik, sebuah Teks, atau kombinasi ketiganya.
3. Window Syntax Editor
Walaupun SPSS sudah menyediakan berbagai macam pengolahan data
statistik secara memadai, namun ada beberapa perintah atau pilihan yang
hanya bisa digunakan dengan SPSS Command Language. Perintah-perintah
tersebut bisa ditulis pada Menu Syntax Editor. Menu ini berupa file teks yang
berisi berbagai perintah SPSS, dan bisa diketik secara manual. Penggunaan
window Syntax dijelaskan pada folder TIP TRIK OTOMATISASI
PROGRAM SPSS.
4. Menu Script Editor
Menu Script pada dasarnya digunakan untuk melakukan berbagai pengerjaan
SPSS secara otomatis, seperti membuka dan menutup File, ekspor Chart,
penyesuaian bentuk output, dan lainnya. Isi menu ini sama dengan menu
12
terdahulu, hanya ditambah dengan submenu Script untuk membuat berbagai
subrutin dan fungsi baru, serta submenu Debug untuk melakukan proses
debug pada script.
Buku ini sebagian besar membahas bagaimana cara memasukkan data
statistik ke dalam SPSS, mengolahnya dengan prosedur statistik tertentu,
serta menafsir hasil output SPSS; dengan demikian hanya menu pada Data
Editor yang dibahas dengan mendalam dalam buku ini.
1.9 TIP DAN TRIK
Pada CD KERJA, disediakan berbagai macam tip dan trik untuk mengolah
data statistik yang tidak ada pada buku ini; seperti merger file, restrukturisasi
data, recode data, pembuatan basic dan general tabel, berbagai macam model
regresi, berbagai metode statistik non parametrik, dan lainnya. Semua tip dan
trik tersebut dapat diakses lewat folder-folder TIP DAN TRIK yang relevan;
misal folder TIPS TRIK BAB 3 MENGELOLA DATA berisi beberapa tip
dan trik yang melengkapi pembahasan Bab 3 buku ini tentang cara mengelola
data yang ada.
1
MENGENAL JAVA
Bagian awal ini akan mengajak Anda untuk mengenal lebih dekat bahasa pemrograman Java. Lebih khusus lagi, kita akan mengeksplorasi komponen-komponen fundamental yang perlu sekali diketahui dan dipahami dengan baik. Selain itu, bagian ini juga akanmengulas secara garis besar tentang fitur-fitur baru Java versi 5.0
 dan 6. Diharapkan uraian ini nantinya dapat membantu memudahkan
 
Anda ketika ingin mengungkap rahasia-rahasia Java selanjutnya.
1 Sekilas Java
Tentunya Anda tidak asing lagi dengan nama Java, sebuah bahasa
pemrograman berorientasi objek yang dikembangkan oleh Sun
Microsystems. Di bagian awal ini, kita akan mengulas tentang sekilas
Java yang ditinjau dari aspek lingkungan pengembangan dan
produk. Diharapkan ulasan ini nantinya dapat memperjelas terminologi
ataupun pernyataan-pernyataan yang kerap kali membingungkan,
terutama bagi yang baru mengenal Java.
2
• Lingkungan Pengembangan
Dalam mendiskusikan Java, kiranya penting sekali untuk membedakan
antara bahasa pemrograman Java, Java Virtual Machine,
dan platform Java. Bahasa pemrograman Java adalah bahasa yang
digunakan untuk menghasilkan aplikasi-aplikasi Java. Pada umumnya,
bahasa pemrograman hanya mendefinisikan sintaks dan perilaku
bahasa.
Pada saat program Java dikompilasi, ia akan dikonversi ke bentuk
bytecode, yang merupakan bahasa mesin yang portable. Selanjutnya,
bytecode tersebut dijalankan di Java Virtual Machine (atau
disebut Java VM atau JVM). Meskipun JVM dapat diimplementasikan
langsung di perangkat keras, namun biasanya diimplementasikan
dalam bentuk program perangkat lunak yang mengemulasi mesin
(komputer) dan digunakan untuk menginterpretasi bytecode.
Platform dapat didefinisikan sebagai perangkat lunak pendukung
untuk aktivitas-aktivitas tertentu. Platform Java sendiri pada prinsipnya
berbeda dengan bahasa Java atau JVM. Platform Java adalah
himpunan kelas-kelas Java yang sudah didefinisikan sebelumnya
dan eksis sejak instalasi Java. Platform Java juga mengacu pada
lingkungan runtime atau API (Application Programming Interface)
Java.
• Edisi Java
Guna mencakup lingkungan-lingkungan aplikasi yang berbeda, Sun
mendefinisikan 3 (tiga) edisi Java.
• J2ME (Java 2 Micro Edition)
Edisi ini ditujukan bagi lingkungan dengan sumber daya terbatas,
seperti smartcard, ponsel, dan PDA.
• J2SE (Java 2 Standard Edition)
Edisi ini ditujukan bagi lingkungan workstation, seperti pembuatan
aplikasi-aplikasi dekstop.
• J2EE (Java 2 Enterprise Edition)
Edisi ini ditujukan bagi lingkungan Internet atau aplikasi terdistribusi
dalam skala besar.
3
Perbedaan setiap edisi meliputi fitur-fitur bahasa yang didukung dan
API yang tersedia. Berdasarkan tingkatannya, edisi yang lebih tinggi
mampu mengemulasikan edisi yang lebih rendah. Adapun urutan
edisi dari yang tertinggi ke rendah adalah J2EE, J2SE, dan J2ME.
• Versi Java
Ada hal yang menarik dan perlu kita cermati mengenai versi-versi
Java yang telah dirilis. Sun menggunakan dua jenis versi untuk
mengidentifikasikan rilis Java, yaitu versi produk dan versi developer.
Seperti kita ketahui, versi terbaru saat ini adalah versi 6 (versi
produk) atau versi 1.6.0 (versi developer), dengan nama kode Mustang.
Sejak tahun 2006, Sun juga menyederhanakan penamaan platform
dengan tujuan untuk mencerminkan tingkat kematangan, stabilitas,
skalabilitas, dan sekuriti yang lebih baik. Jika penamaan versi sebelumnya
adalah Java 2 Platform, Standard Edition 5.0 (J2SE 5.0),
maka sekarang disederhanakan menjadi Java Platform, Standard
Edition 6 (Java SE 6, atau lebih sering disebut Java 6).
2 Kompilasi dan Interpretasi
Seperti diketahui, Java adalah bahasa pemrograman yang kode
programnya dikompilasi dan diinterpretasi. Meskipun pembuatan
aplikasi Java dapat dilakukan melalui IDE (Integrated Development
Environment), namun di sini kita memfokuskan pada tool commandline
untuk kompilasi dan interpretasi.
• Kompilasi
Kompilasi kode program Java dilakukan menggunakan tool
command-line yang bernama javac, atau biasa disebut kompiler
Java. Tahap kompilasi ini bertujuan untuk mengonversi kode sumber
ke program biner yang berisi bytecode, yaitu instruksi-instruksi
mesin. Contoh berikut memperlihatkan cara melakukan kompilasi
pada file program Coba.java (asumsi sudah berada di command-line
atau shell).
javac Coba.java
4
Saat mengompilasi kode program, kita juga diperkenankan untuk
menspesifikasikan versi rilis tertentu. Aturan dasar dalam spesifikasi
versi ini cukup sederhana, di mana versi terbaru dapat mengenali
versi-versi di bawahnya, namun tidak demikian sebaliknya. Sebagai
contoh, untuk mengetahui apakah kode program dapat berjalan di
versi 1.4 ataukah tidak, tambahkan opsi –source 1.4.
javac –source 1.4 Coba.java
Jika –source digunakan untuk menspesifikasikan rilis asal, opsi
–target berfungsi untuk menetapkan versi tujuan. Opsi-opsi lain yang
sering digunakan diperlihatkan sebagai berikut:
// Menetapkan lokasi file-file kelas (classpath)
javac -cp D:\java Coba.java
javac -classpath D:\java Coba.java
// Menetapkan lokasi file .class yang akan dihasilkan
javac -d D:\java Coba.java
// Hasil: file Coba.class diletakkan di D:\java
// Mendapatkan informasi mengenai apa yang dilakukan kompiler
javac -verbose Coba.java
// Mendapatkan informasi versi (developer)
javac -version
Sekadar catatan, untuk memudahkan pemanggilan kompiler, tambahkan
path yang berisi file-file executable (di direktori bin) ke
variabel sistem Path. Untuk lebih praktisnya, Anda bisa menggunakan
kotak dialog Environment Variables (melalui System
Properties).
Apabila Anda bekerja di lingkungan Unix/Linux, modifikasilah file
/etc/profile dengan menambahkan baris berikut:
PATH=/lokasi_instalasi/bin:$PATH
export PATH
• Interpretasi
Sebagaimana disinggung, kode program Java tidak dieksekusi di
komputer secara langsung, tetapi berjalan di atas komputer hipotesis
yang distandardisasikan, yang disebut Java Virtual Machine. Untuk
menginterpretasi bytecode, kita menggunakan tool bernama java,
atau biasa disebut interpreter Java. Pada saat menginterpretasi, Anda
5
tidak perlu menyertakan ekstensi file (.java atau .class), cukup nama
file saja.
java Coba
Untuk kasus program-program berbasis teks, hasil keluaran akan
langsung ditampilkan di command-line. Terkait hal ini, tool java
memungkinkan Anda untuk meng-capture hasil keluaran dan menyimpannya
di sebuah file.
Contoh perintah berikut akan menangkap hasil keluaran program
Coba dan menyimpannya di file coba.txt.
java Coba > coba.txt
Apabila Anda menggunakan perintah di atas pada aplikasi GUI,
maka file keluaran akan tetap diciptakan, namun tidak ada isinya
(dengan asumsi bahwa program tidak mencetak teks keluaran).
3 Elemen Bahasa
Secara garis besar, elemen-elemen di setiap bahasa pemrograman
sebenarnya hampir sama. Meskipun demikian, ada elemen-elemen
khusus yang membedakan dan sekaligus mencerminkan identitas
suatu bahasa. Adapun mengingat di sini kita bekerja dengan bahasa
pemrograman Java, tentunya kita juga perlu memahami elemenelemen
dasar bahasa ini.
• Tipe Data
Tipe data di Java dikelompokkan menjadi dua jenis, yaitu tipe
primitif dan reference (kelas). Tipe primitif/dasar adalah tipe-tipe
bawaan, meliputi boolean, char, byte, short, int, long, float,
dan double. Sementara itu, tipe reference memiliki semantik seperti
pointer. Jenis tipe reference meliputi kelas, interface, dan array.
Apabila Anda ingin memperlakukan nilai primitif sebagai suatu
objek, Anda bisa memanfaatkan kelas-kelas pembungkus (wrapper).
Kelas-kelas tersebut meliputi Boolean, Character, Byte, Short,
Integer, Long, Float, dan Double. Perhatikan sintaksnya (penulisan
huruf kecil dan besar), agar tidak keliru dengan tipe-tipe
primitif.
6
• Deklarasi dan Inisialisasi Variabel
Sebelum digunakan, setiap variabel harus dideklarasikan terlebih
dahulu. Langkah ini dilakukan dengan menetapkan tipe data dan
nama variabel. Pernyataan deklarasi variabel tunggal juga dapat
digunakan untuk mendeklarasikan lebih dari satu variabel, tetapi
semuanya harus bertipe sama.
int i;
int j;
// ekuivalen dengan kedua pernyataan di atas
int i, j;
Deklarasi juga dapat sekaligus melakukan inisialisasi terhadap suatu
variabel.
int i = 2;
int j = 3;
int i = 2, j = 3;
• Initial Value
Saat mendeklarasikan variabel kelas, kita tidak harus melakukan
inisialisasi karena kompiler akan meng-assign initial value (nilai awal
atau default). Nilai default untuk semua tipe reference adalah null.
Nilai default tipe primitif boolean adalah false, char adalah
\u0000, integer (byte, short, int, long) adalah 0, dan floating
point (float, double) adalah 0.0.
• Ruang Lingkup Variabel
Java mendefinisikan empat jenis variabel, meliputi variabel instance
(field non-statis), variabel kelas (field statis), variabel lokal, dan
parameter. Istilah field mengacu pada variabel instance dan variabel
kelas (terkadang disebut member variable). Sementara itu, istilah
variabel mengacu pada semua jenis variabel.
Lokasi di mana suatu variabel dideklarasikan secara eksplisit juga
menetapkan ruang lingkupnya. Ruang lingkup variabel adalah wilayah
di mana suatu variabel dapat diacu melalui namanya. Ruang
lingkup juga menyatakan kapan variabel akan diciptakan dan dihapus
dari memori.
7
• Blok
Blok adalah kelompok pernyataan (nol atau lebih) di dalam tanda
kurung kurawal. Penggunaan blok dengan pernyataan alir kontrol
sangat direkomendasikan, meskipun hanya melibatkan sebuah pernyataan.
if (kondisi)
{ // awal blok
// pernyataan
} // akhir blok
• Komentar
Penulisan komentar dapat mengadopsi blok komentar gaya C
ataupun C++. Komentar gaya bahasa C lazimnya digunakan untuk
komentar yang terdiri atas beberapa baris. Sementara itu, komentar
gaya C++, yang dinyatakan melalui karakter //, umumnya digunakan
untuk komentar satu baris.
Untuk komentar-komentar yang akan dimasukkan ke dokumentasi
dan dihasilkan melalui tool javadoc, disarankan menggunakan /**
dan diakhiri dengan karakter */.
4 Aturan Penamaan
Di dalam pemrograman, suatu nama digunakan untuk mengacu ke
entitas yang dideklarasikan. Terkait hal ini, ada beberapa aturan
dasar penamaan yang perlu sekali diperhatikan dalam upaya menghasilkan
kode program yang readable.
• Penamaan Paket
Nama awal paket sebaiknya terdiri atas dua atau tiga huruf kecil, dan
biasanya menggunakan nama domain Internet, seperti com, org, net,
dan edu. Selain itu, Anda juga diperkenankan memberi nama paket
dengan kode-kode negara, seperti id, uk, atau au. Penggunaan nama
domain ini bertujuan untuk mencegah terjadinya konflik paket,
dengan asumsi bahwa Anda tidak menggunakan nama domain
orang lain. Sebagai contoh, nama paket berbasis domain
http://didik.indodesain.com adalah com.indodesain.didik.
8
• Penamaan Kelas dan Interface
Nama kelas dan interface sebaiknya berupa kata benda atau ungkapan
kata benda yang deskriptif dan tidak terlalu panjang. Penulisan
nama mengacu pada sintaks Pascal, di mana huruf pertama untuk
setiap kata adalah huruf besar dan tidak ada spasi, misalnya Bangun,
SegiTiga, atau KoneksiData.
• Penamaan Method
Nama method seharusnya berupa kata kerja atau ungkapan kata
kerja. Penulisan method mengacu pada sintaks Camel, di mana huruf
pertama untuk setiap kata pertama adalah huruf kecil dan huruf
pertama kata selanjutnya adalah huruf besar. Nama method umumnya
juga mencerminkan operasi yang dilakukannya, contohnya
seperti setData, getData, isValidData, atau toString.
• Penamaan Variabel
Penamaan variabel-variabel kelas (fields) mirip dengan penamaan
method. Untuk penamaan variabel lokal dan parameter, seringkali
menggunakan suatu akronim, singkatan, atau istilah-istilah yang
mudah diingat, contohnya seperti sr (StreamReader), buf (buffer), d
(double), dan s (String).
• Penamaan Konstanta
Seperti umumnya bahasa pemrograman, nama konstanta di Java
harus berupa huruf besar semua. Apabila nama konstanta terdiri atas
beberapa kata, sebaiknya pisahkan dengan tanda garis bawah “_”.
Contoh penamaan konstanta misalnya MAX, MAX_DATA, atau
MAX_LEN_DATA.
5 Paket dan Namespace
Paket bertujuan mengorganisir keterhubungan kelas dan mendefinisikan
namespace untuk kelas-kelas yang berada di dalamnya. Dalam
upaya memudahkan penggunaan, menghindari konflik nama, dan
mengontrol akses kelas-kelas maupun interface-interface, kita bisa
mengelompokkannya ke dalam suatu paket.
9
• Deklarasi Paket
Paket dideklarasikan menggunakan pernyataan package yang diikuti
dengan nama paket dan subpaket (jika ada). Deklarasi paket
sebaiknya dilakukan di bagian paling awal kode program. Contoh
deklarasi paket diperlihatkan seperti berikut:
package com.indodesain.didik;
Dalam implementasinya, nama paket dan subpaket sebenarnya
mencerminkan struktur direktori dengan susunan sesuai penamaan.
Apabila kita tidak menggunakan paket, maka kelas terkait merupakan
bagian dari paket default (tanpa nama).
• Mengakses Member Paket
Kelas-kelas dan interface-interface di dalam paket, atau disebut
member paket, hanya dapat diakses dari luar paket apabila ia didefinisikan
sebagai public. Ada dua pendekatan yang bisa kita
gunakan untuk mengakses member paket, yaitu dengan mengacu
nama lengkap dan mengimpor member.
Misalkan di subpaket didik terdapat kelas Test, maka cara mengacunya
adalah seperti berikut:
com.indodesain.didik.Test t = new com.indodesain.didik.Test();
Untuk pendekatan kedua, kita terlebih dahulu menuliskan keyword
import yang diikuti nama paket.
import com.indodesain.didik.Test;
...
// Instantiasi di body kelas
Test t = new Test();
Pada pendekatan kedua, Anda juga diperkenankan mengimpor seluruh
member yang dinyatakan dengan karakter asterik (*).
import com.indodesain.didik.*;
Walaupun pendekatan acuan dengan nama lengkap terkesan kurang
efektif, namun dalam situasi-situasi tertentu sangat diperlukan. Sebagai
contoh, pendekatan ini lazim digunakan untuk menghindari konflik
ketika mengakses member di beberapa paket dengan nama
sama.
10
• Impor Otomatis
Secara otomatis JRE akan mengimpor member yang ada di paket
java.lang, paket default, dan current paket. Oleh karena itu, pada
saat menggunakan member di paket-paket tersebut, kita tidak perlu
melakukan impor secara eksplisit. Sebagai contoh, kita bisa langsung
menggunakan kelas String tanpa terlebih dahulu mengimpor
java.lang.String ataupun mengacu nama lengkapnya.
Di Java 5.0, ada fitur baru yang memungkinkan kita untuk mengimpor
dengan tambahan pernyataan static. Penjelasan mengenai
fitur ini akan kita bahas lebih lanjut setelah mengulas pernyataan
static.
• Strategi Impor Paket
Seringkali kita melihat program-program Java yang mendeklarasikan
pernyataan import untuk mengakses member paket secara
lengkap. Contohnya seperti berikut:
import java.io.File;
import java.io.FileReader;
import java.net.URL;
Tak jarang pula, kita melihat deklarasi yang menggunakan karakter
asterik. Contohnya seperti berikut:
import java.io.*;
import java.net.*;
import java.util.*;
Sebenarnya, apa kelebihan dan kekurangan masing-masing pendekatan
di atas? Apakah pengaksesan member paket dengan nama
lengkap lebih cepat dieksekusi dibanding penggunaan karakter
asterik?
Pada prinsipnya, deklarasi lengkap memang lebih cepat dikompilasi
dibanding pendekatan asterik. Meski demikian, deklarasi lengkap
tidak menawarkan kelebihan ketika program dieksekusi (diinterpretasi).
Dalam segi efisiensi penulisan, pendekatan asterik tentu
menawarkan kelebihan bagi kita. Selain itu, ketika kita ingin
mengganti penggunaan kelas (misal dalam satu paket), kita tidak
perlu menghapus deklarasi sebelumnya dan mengganti dengan
deklarasi baru.
11
Meskipun pengaksesan dengan karakter asterik tidak berpengaruh
terhadap eksekusi program, namun bukan berarti pendekatan ini
paling efisien. Setidaknya, kita bisa menggunakan strategi berdasarkan
kasus yang kita hadapi. Sebagai contoh, jika kita hanya memerlukan
satu atau dua kelas/interface di satu paket, akan lebih
efisien jika kita mendeklarasikan nama member paket secara lengkap.
Sebaliknya, jika jumlah kelas atau interface yang kita perlukan
cukup banyak, tentu akan praktis jika kita menggunakan karakter
asterik.
6 Kelas
Kelas merupakan salah satu konsep fundamental pemrograman berorientasi
objek. Kelas dapat diilustrasikan sebagai suatu cetak biru
(blueprint) atau prototipe yang digunakan untuk menciptakan objek.
Terkait dengan konsep penting ini, ada beberapa subbahasan yang
akan kita ulas di sini.
• Definisi Kelas
Definisi kelas terdiri atas dua komponen, yaitu deklarasi kelas dan
body kelas. Deklarasi kelas adalah baris pertama di suatu kelas, dan
minimal mendeklarasikan nama kelas. Sementara itu, body dideklarasikan
setelah nama kelas dan berada di antara kurung kurawal.
// deklarasi kelas
public class ContohKelas {
// body kelas
}
Di Java, nama kelas sekaligus merepresentasikan nama file kode
program, dan sifatnya adalah case-sensitive.
• Konstruktor
Kegunaan utama konstruktor adalah untuk menetapkan status awal
manakala objek diciptakan. Ada beberapa catatan penting yang
harus kita perhatikan dalam pendeklarasian konstruktor. Pertama,
nama konstruktor harus sama dengan nama kelas. Kedua, konstruktor
boleh memiliki argumen lebih dari satu atau tidak sama sekali.
Ketiga, konstruktor tidak boleh mengembalikan suatu nilai.
12
public class ContohKelas {
// Konstruktor
public ContohKelas() {
}
}
Konstruktor yang tidak memiliki argumen dinamakan sebagai
konstruktor default. Apabila suatu kelas dideklarasikan tanpa adanya
sebuah konstruktor, maka secara implisit Java akan menambahkan
konstruktor default.
• Access Modifier
Kelas dan interface memiliki batasan akses (access modifier) yang
menyatakan level aksesnya. Apabila kelas dideklarasikan sebagai
public, maka ia dapat diakses dari mana saja. Jika batasan akses
tidak diberikan, kelas tersebut dinamakan default accessibility, dan
hanya dapat diakses dari dalam paket terkait (tidak termasuk subpaket).
Batasan akses lainnya untuk kelas level atas adalah abstract (tidak
dapat diinstantiasi) dan final (tidak dapat diperluas). Anda tidak
diperkenankan mendeklarasikan kelas level atas sebagai private
ataupun protected.
• Kelas Bersarang
Suatu kelas boleh mendeklarasikan kelas baru di dalamnya, atau
biasa disebut inner class, atau kelas bersarang. Apabila diperlukan,
inner class juga dapat memiliki kelas lagi di dalamnya.
public class ContohKelas {
public class KelasBersarang {
// body kelas KelasBersarang
}
}
Inner class juga dapat dideklarasikan secara lokal, yaitu di dalam
body method. Kelas seperti ini dinamakan local inner class atau local
nested class.
public void test() {
class KelasDiMethod {
13
// body kelas KelasDiMethod
}
}
• Keyword this dan super
Keyword this dapat digunakan untuk merepresentasikan suatu
current objek dan mengakses variabel-variabel kelas serta method.
public class KelasInduk {
int j;
public void setNilai(int i) {
// this ini mengacu pada objek KelasInduk
this.j = i;
}
}
Keyword super digunakan untuk mengakses member kelas yang
diturunkan (kelas induk).
// KelasAnak memperluas/mewarisi KelasInduk
class KelasAnak extends KelasInduk {
public KelasAnak() {
// Mengakses method di kelas induk
super.setNilai(3);
}
}
7 Method
Seperti halnya kelas, ada dua bagian utama dalam definisi method,
yaitu deklarasi dan body method. Deklarasi method mendefinisikan
semua atribut method, seperti level akses, tipe kembalian (jika ada),
dan argumen-argumen (jika ada).
• Method main
Method main merupakan method khusus yang berperan sebagai
entry point pada aplikasi. Setiap kelas di suatu aplikasi boleh memiliki
method main, namun hanya satu yang ditetapkan untuk dieksekusi
saat aplikasi dijalankan.
public static void main(String[] args) {
// isi method main
}
14
Method main harus didefinisikan sebagai public, static, tidak
mengembalikan suatu nilai (void), dan memiliki argumen berupa
array string. Apabila interpreter tidak menemukan method main di
suatu aplikasi, akan muncul pesan kesalahan yang diakibatkan tidak
adanya entry point.
Sebenarnya, Anda juga bisa mendefinisikan method utama dengan
keyword static saja. Pendefinisian seperti ini terlihat tidak mencerminkan
struktur method seperti pada umumnya.
public class ContohKelas {
static {
System.out.println("Halo Indonesia");
System.exit(0);
}
}
Meskipun kode program di atas dapat berjalan seperti yang diharapkan,
namun pendekatan tersebut tidak lazim digunakan.
• Modifier Method
Modifier dari sebuah method dapat terdiri atas nol atau lebih keyword
modifier, seperti public, protected, atau private. Keberadaan
modifier ini membantu kelas untuk mendefinisikan suatu kontrak,
sehingga client dapat mengetahui layanan-layanan yang ditawarkan
oleh kelas.
Selain beberapa keyword modifier di atas, yang umumnya sudah kita
pahami kegunaannya, ada beberapa modifier lain yang bisa kita
spesifikasikan. Salah satu keyword modifier yang sering digunakan
adalah static. Modifier ini mengizinkan kita untuk mengakses
method tanpa perlu menginstantiasi kelas yang mendefinisikannya.
Sebagai gantinya, sebelum memanggil method, kita terlebih dahulu
menuliskan nama kelas terkait.
class Test {
public static void sayHello() {
System.out.println("hello");
}
public void sayNo() {
System.out.println("no");
}
}
15
public class AksesStatis {
public static void main(String[] args) {
// Akses method statis
Test.sayHello();
// Error, akses method non-statis
// Test.sayNo();
// Harus begini
Test t = new Test();
t.sayNo();
}
}
• Variabel Lokal
Sebelum variabel lokal dapat digunakan, ia harus diinisialisasi terlebih
dahulu. Kondisi ini berbeda dengan variabel kelas, di mana
secara otomatis akan diinisialisasi. Penggunaan variabel lokal yang
tanpa diinisialisasi akan mengakibatkan kesalahan pada saat kompilasi.
• Overloading Method
Overloading method adalah kemampuan untuk mendefinisikan beberapa
method di sebuah kelas dengan nama sama. Aturan dasar
overloading adalah jumlah atau tipe argumen harus berbeda. Apabila
jumlah dan tipe argumen sama, maka urutannya harus berbeda.
int Test() {
return 1;
}
int Test(int a) {
return a;
}
int Test(double a, int b) {
return b;
}
int Test(int i, double j) {
return i;
}
// Ini akan error, sudah didefinisikan di method sebelumnya
void Test(int x, double y) {
}
16
8 Objek
Di pemrograman berorientasi objek, objek adalah entitas dasar saat
runtime. Pada saat kode program dieksekusi, objek berinteraksi satu
sama lain tanpa harus mengetahui detil data atau kodenya. Interaksi
antara objek ini dilakukan menggunakan suatu message. Objek memiliki
suatu siklus hidup, yaitu diciptakan, dimanipulasi, dan dihancurkan.
• Menciptakan Objek
Objek diciptakan menggunakan operator new. Dari sisi kelas, langkah
ini merupakan instantiasi kelas. Selanjutnya objek yang berhasil
diciptakan tersebut akan diletakkan di memori heap.
ContohKelas ck = new ContohKelas();
Dalam kasus-kasus tertentu, terkadang kita juga dapat menciptakan
objek tanpa harus meng-assign ke variabel. Langkah ini umumnya
dilakukan apabila kita tidak memerlukan referensi ke objek tersebut.
Sebagai contoh, jika kita memiliki method yang menerima argumen
berupa objek ContohKelas, maka dapat kita tuliskan seperti berikut:
getData(new ContohKelas());
• Memeriksa Tipe Objek
Anda bisa memanfaatkan fungsionalitas operator instanceof untuk
mengetahui tipe suatu objek pada saat runtime. Operator ini akan
mengembalikan nilai true apabila tipe objek sesuai, sebaliknya
mengembalikan nilai false.
ContohKelas ck = new ContohKelas();
System.out.println(ck instanceof ContohKelas);
// Output: true
Perlu diperhatikan, instanceof akan selalu mengembalikan nilai
false jika variabel objek diinisialisasi dengan nilai null. Ini karena
nilai null tidak mencerminkan objek apa pun.
ContohKelas ck2 = null;
System.out.println(ck2 instanceof ContohKelas);
// Output: false
17
Operator instanceof hanya dapat digunakan pada tipe reference
dan objek. Penggunaan operator ini pada tipe primitif akan mengakibatkan
kesalahan saat kompilasi.
• Menghapus Objek
Java menggunakan teknik yang dikenal sebagai garbage collection
untuk menghapus objek-objek yang sudah tidak diperlukan. Dengan
demikian, kita tidak perlu khawatir akan terjadinya kebocoran memori.
Dalam praktiknya, garbage collector mampu mengidentifikasi
kapan suatu objek dialokasikan dan kapan ia tidak digunakan lagi.
Garbage collector melakukan tugasnya secara tak sinkron berdasarkan
ketersediaan sumber daya. Normalnya, jika suatu objek
sudah tidak diacu (di-refer), maka ia akan segera dibersihkan. Terlepas
dari mekanisme normal ini, kita juga dapat memanggil garbage
collector secara eksplisit menggunakan method statis gc.
System.gc();
Perlu sekali diperhatikan, tidak semua jenis objek akan ditangani oleh
garbage collector. Untuk objek-objek eksternal, seperti file dan database,
sebaiknya kita tangani secara eksplisit.
9 Exception Handling
Eksepsi (exception) adalah suatu even, yang terjadi selama eksekusi
program, yang mengacaukan alir normal instruksi program. Pada
prinsipnya, eksepsi adalah suatu objek, yang diturunkan dari kelas
java.lang.Throwable. Dalam menangani suatu eksepsi, Java
menggunakan mekanisme penanganan eksepsi terstruktur.
• Menangkap Eksepsi
Ada dua jenis blok kode yang dapat kita gunakan untuk menangani
eksepsi, yaitu try dan catch. Blok try berisi kode yang berpotensi
membangkitkan eksepsi, sedangkan blok cath merupakan exception
handler-nya.
int i = 10;
int j = 0;
try {
18
// Baris berikut akan membangkitkan eksepsi, karena
// pembagian dengan nol, sehingga perlu ditangkap
int n = i / j;
// Baris berikut tidak akan dieksekusi
System.out.println(n);
} catch (Exception ex) {
System.out.println("Eksepsi ditangkap\n" + ex.getMessage());
}
Apabila penanganan eksepsi terdiri atas beberapa blok catch, sebaiknya
letakkan objek yang paling relevan di blok terdekat.
Langkah ini bertujuan agar eksepsi yang terjadi dapat ditangkap oleh
blok yang sesuai, dan menjadikan kode program mengalir secara
natural.
try {
int n = i / j;
System.out.println(n);
} catch (ArithmeticException ae) {
System.out.println("ArithmeticException");
} catch (Exception e) {
System.out.println("Eksepsi ditangkap");
}
Penanganan eksepsi juga dapat melibatkan blok finally, yaitu blok
yang akan selalu dieksekusi. Blok ini umumnya sering dimanfaatkan
untuk tahap pembersihan sumber daya karena sifatnya yang selalu
dijalankan.
try {
int n = i / j;
System.out.println(n);
} catch (ArithmeticException ex) {
System.out.println("ArithmeticException");
} catch (Exception ex) {
System.out.println("Eksepsi ditangkap");
} finally {
System.out.println("Ini akan selalu dieksekusi");
}
• Melempar Eksepsi
Untuk menspesifikasikan eksepsi yang akan diperiksa, kita dapat
memanfaatkan klausa throws.
public static int pembagian(int i, int j)
throws ArithmeticException {
return i/j;
}
19
Klausa throws di atas menyatakan bahwa pemanggilan method
pembagian harus dilakukan menggunakan blok try dan catch.
try {
int l = pembagian(2,0);
System.out.println(l);
} catch (ArithmeticException ex) {
ex.printStackTrace();
}
Kita juga dapat menangkap eksepsi secara eksplisit menggunakan
pernyataan throw (perhatikan, jangan keliru dengan throws).
public static int pembagian(int i, int j)
throws ArithmeticException {
if (j == 0) {
throw new ArithmeticException("Pembagian dengan 0");
}
return i/j;
}
• Informasi Eksepsi
Kelas Throwable mendefinisikan sejumlah method yang dapat
membantu kita untuk mendapatkan informasi-informasi terkait
dengan eksepsi, di antaranya adalah method getMessage dan
printStackTrace.
Apabila Anda ingin mendapatkan informasi mengenai method atau
nama kelas terkait, gunakan method getStackTrace dan objek
StackTraceElement.
try {
int l = pembagian(2,0);
System.out.println(l);
} catch (ArithmeticException ex) {
System.out.println("Nama File: " +
ex.getStackTrace()[0].getFileName());
System.out.println("Nama Kelas: " +
ex.getStackTrace()[0].getClassName());
System.out.println("Nama Method: " +
ex.getStackTrace()[0].getMethodName());
System.out.println("Baris ke-" +
ex.getStackTrace()[0].getLineNumber());
}
20
10 Fitur Baru Java 5.0
Meskipun Sun Microsystems sudah merilis Java versi 6, namun
rasanya belum terlambat jika kita membicarakan fitur-fitur baru Java
5.0. Secara garis besar, ada tujuh fitur utama yang diperkenalkan
oleh versi dengan nama kode Tiger ini.
• Tipe Generic
Intuisi dari fitur ini adalah menghasilkan kode yang mudah dideteksi
kesalahannya saat kompilasi. Sebagai contoh, di versi sebelumnya,
ketika kita hanya ingin menampung string di suatu objek, kompiler
tidak akan memprotes meski yang dimasukkan bukanlah string. Kini,
Anda dapat menspesialisasi tipe yang awalnya bersifat general.
// Mendefinisikan list untuk string
List<String> list = new ArrayList<String>();
// Ini dilaksanakan
list.add("string");
// Ini akan diprotes kompiler (error)
list.add(123);
• Tipe Enumerasi
Fitur ini mengizinkan Anda untuk mendeklarasikan tipe enum (enumerasi)
dengan mudah. Tak hanya itu, fitur ini juga menyediakan
semua keuntungan dari pola Typesafe Enum secara praktis. Dalam
implementasinya, deklarasi dilakukan menggunakan keyword enum.
private static enum NamaHari {
Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu
};
• Autoboxing/Unboxing
Fitur ini mampu menghilangkan kejenuhan Anda ketika melakukan
konversi antara tipe primitif dan pembungkusnya. Seperti diketahui,
di versi sebelum Java 5.0, kita harus memperlakukan tipe primitif ke
tipe reference (disebut boxing) ketika ingin mengonversi tipe primitif
ke pembungkusnya. Sebaliknya, kita melakukan unboxing ketika
ingin mengonversi tipe reference ke tipe primitif.
// Sebelum Java 5.0
// Konversi primitif ke wrapper (pembungkus)
int i = 3;
Integer box = new Integer(i);
21
// Konversi wrapper ke primitif
Integer j = new Integer(200);
int unbox = j.intValue();
Sejak Java 5.0, secara otomatis kompiler akan menambahkan kode
yang diperlukan untuk melakukan konversi tipe.
// Autoboxing/unboxing
// Integer auto di-unbox ke int (tipe primitif),
// kemudian hasil penjumlahan di-boxing ke objek Integer
Integer auto = 3 + 2;
• Anotasi
Fitur ini menyediakan suatu cara untuk menghubungkan metadata
dengan elemen-elemen program. Java 5.0 mendefinisikan tiga jenis
anotasi standard di dalam paket java.lang, meliputi Override,
Deprecated, dan SupressWarnings. Contoh penggunaan anotasi
diperlihatkan seperti berikut:
@Override public String toString() {
return "[" + super.toString() + "]";
}
@Deprecated public static void test() {
System.out.println("deprecated");
}
// Mengabaikan warning unchecked
@SuppressWarnings(value={"unchecked"})
public static void testSupress() {
// Kode yang berpotensi mendapat respon
// warning unchecked di sini
}
• Argumen Variabel
Kini Java mendukung argumen array (bukan tipe reference array)
melalui fitur varargs. Untuk menggunakan fitur ini, deklarasi tipe
pada variabel harus diikuti dengan tanda titik sebanyak tiga kali.
public static void TestVarArgs(String s, int... args) {
System.out.println("argumen 1= " + s);
int len = args.length;
// Ekstraksi argumen
for (int j=0; j<len; j++) {
System.out.println("argumen " + (j+2) + "= " + args[j]);
}
22
}
Pada saat method di atas dipanggil, kompiler akan menginterpretasikan
sebagai TestVarArgs(String s, int[] args).
Meskipun varargs dianggap sebagai array, tetapi kode pemanggil
tidak perlu mengirimkan array saat mengisikan argumen.
• Pernyataan for/in
Di beberapa bahasa lain, Anda tentu tidak asing dengan pernyataan
foreach. Pernyataan seperti ini kini juga dapat kita nikmati di Java
5.0, meskipun namanya bukan foreach.
for (NamaHari h : NamaHari.values()) {
System.out.println(h);
}
Ekspresi dengan huruf tebal di atas bisa kita baca “untuk setiap
NamaHari h di enumerasi NamaHari”. Dari sini terlihat bahwa pendekatan
for/in dapat menghilangkan kejenuhan dan kesalahan saat
melakukan iterasi.
• Impor Static
Penggunaan keyword import static memungkinkan Anda untuk
mengakses member-member kelas yang sifatnya statis tanpa harus
menyertakan nama paket atau kelas.
// Tanpa impor static
System.out.println("Halo Indonesia");
// Impor static, dengan terlebih dahulu menuliskan
// import static java.lang.System.out;
// di atas deklarasi kelas
out.println("Halo Indonesia");
11 Fitur Baru Java 6
Bagian ini akan menguraikan fitur-fitur utama Java 6 secara garis
besar. Dengan demikian, di sini kita tidak akan membahas tentang
implementasi fitur terkait. Di bab-bab selanjutnya, kita akan membahas
penggunaan fitur baru yang relevan dengan topik bab. Sekilas
uraian ini dimaksudkan untuk sekadar memberikan referensi tambahan.
23
• Utilitas dan Elemen Bahasa
Sebagai paket utama, java.lang dan java.util tak luput dari
modifikasi dan penambahan fitur-fitur baru. Fitur baru yang ditambahkan
di paket java.lang antara lain input/output console dan
pemeriksaan string kosong. Di paket java.util, juga ditambahkan
kelas-kelas dan interface-interface baru, di antaranya interface Deque
dan NavigableMap. Selain itu, paket java.lang dan java.util
juga menambahkan sejumlah method di kelas-kelas dan interfaceinterface.
• AWT dan Swing
Untuk meningkatkan kemampuan AWT dan Swing, Java menambahkan
beragam fitur baru. Di paket AWT, terdapat fitur-fitur menarik
seperti splash screen, system tray, modalitas dialog, dan text
antialiasing. Adapun untuk menyediakan dukungan yang lebih baik
pada aplikasi GUI Swing, ditambahkan fitur pengurutan dan penyaringan
tabel, pencetakan di komponen teks, drag dan drop, serta
objek SwingWorker.
• JDBC 4.0
Kemampuan akses dan manipulasi data melalui aplikasi-aplikasi
Java kini semakin ditingkatkan dengan dirilisnya JDBC 4.0. Sejumlah
fitur baru yang diperkenalkan antara lain mekanisme loading
driver, penanganan eksepsi, fungsionalitas BLOB/CLOB, dukungan
karakter nasional, dan anotasi.
• I/O dan Networking
Meskipun perubahannya tidak terlalu signifikan, fitur dan kemampuan
paket java.io serta java.net juga mengalami peningkatan.
Di paket java.io ditambahkan kelas baru bernama Console. Selain
itu, ada sedikit modifikasi dan penambahan di kelas-kelas dan
interface-interface paket java.io. Sementara itu, di paket java.net
ditambahkan sebanyak dua interface dan empat kelas baru.
• Web Services
Untuk mendukung integrasi web services di edisi standard (J2SE),
Java menambahkan API baru JAX-WS. Sebenarnya, dukungan Java
24
terhadap web services bukan merupakan hal baru karena sudah diimplementasikan
di edisi enterprise (J2EE).
• Scripting
Java 6 menambahkan API scripting yang diimplementasikan melalui
paket javax.script. Paket ini terdiri atas kelas-kelas dan interfaceinterface
yang mendefinisikan engine scripting dan menyediakan
framework untuk penggunaannya di aplikasi-aplikasi Java. API ini
dimaksudkan untuk digunakan oleh pemrogram yang ingin mengeksekusi
program-program yang ditulis dengan bahasa script di
aplikasi Java.
• Sekuriti dan Performansi
Java 6 mencoba menyederhanakan tugas administrator sekuriti
dengan menyediakan berbagai pendekatan baru untuk mengakses
layanan sekuriti native, seperti Public Key Infrastructure (PKI) dan
layanan kriptografi di Microsoft Windows, Java Generic Security
Services (Java GSS) dan layanan Kerberos, dan akses ke server
LDAP untuk autentikasi pengguna.
Untuk memperlihatkan tingkat kematangannya, Java 6 melakukan
evaluasi serta peningkatan performansi secara menyeluruh. Dalam
konteks aplikasi GUI Swing misalnya, keberadaan objek SwingWorker
secara signifikan mampu meningkatkan performa aplikasi.