7
BAB II LANDASAN TEORI
2.1 Bahasa Inggris 2.1.1
Definisi Bahasa Inggris adalah media komunikasi utama bagi masyarakat
di negara Inggris, Amerika Serikat, Kanada, Australia, New Zealand, Afrika Selatan, dan di banyak negara lainnya. Bahasa Inggris (English) merupakan bahasa resmi dari banyak negara-negara persemakmuran dan dipahami serta dipergunakan secara meluas. Bahasa Inggris dipergunakan di lebih banyak negara di dunia dibanding bahasa yang lain serta dibanding bahasa yang lain kecuali bahasa Cina, bahasa ini juga lebih banyak dipergunakan orang.
2.1.2
Sejarah Bahasa Inggris termasuk rumpun bahasa-bahasa Anglo-Frisia pada
cabang barat bahasa-bahasa Jerman, dan merupakan sebuah bahasa subfamili dari bahasa-bahasa Indo-Eropa. Bahasa Inggris hampir mendekati bahasa Frisia, sedikit lebih luas dari bahasa Netherlandic (Belanda –Flemish) dan dialek Jerman tingkat rendah (Plattdeutsch), serta jauh dari bahasa Jerman Modern tingkat tinggi.
2.1.3
Kosa Kata Bahasa Inggris Kosa kata bahasa Inggris telah mengalami peningkatan selama
lebih dari 1500 tahun perkembangannya. Kamus bahasa Inggris yang hampir mendekati lengkap, Oxford English Dictionary (edisi kedua, 20 edisi, 1989), memuat lebih dari 600.000 kata, termasuk ungkapan-
7
8
ungkapan yang sudah kuno dan pengucapan-pengucapan yang bermacam-macam. Mungkin kamus ini adalah kamus bahasa Inggris yang berisikan kosa kata lebih dari 1 juta kata, termasuk ungkapan kasar dan berbagai ekspressi logat serta istilah-istilah tekhnik dan ilmiyah, yang banyak di antaranya hanya muncul dalam pemakaiannya setelah pertengahan abad ke-20. Kosakata bahasa Inggris lebih meluas dibanding kosa kata bahasa lain di dunia, namun demikian beberapa bahasa – bahasa Cina, misalnya – memiliki sebuah kapasitas penyusunan kata yang serupa dengan bahasa Inggris. Secara luas, penyerapan terus menerus dari setiap bahasa pokok, khususnya dari bahasa Latin, bahasa Yunani, dan beberapa bahasa Skandinavia,
serta
dari
banyak
bahasa-bahasa
tak
terkenal,
memperbanyak kata-kata dalam kosa kata bahasa Inggris. Selain itu, banyak proses telah menjadikan penciptaan banyak kata-kata baru sebagaimana penetapan pola-pola baru untuk perkembangan lebih lanjut. Di antara proses ini adalah onomatopoeia, atau peniruan suarasuara alam, seperti terbentuknya kata burp (sendawa) dan clink (menyentuhkan dua ujung gelas); affiksasi, atau penambahan prefiks dan suffiks, salah satunya seperti mis- dan –ness, atau menyerap seperti ex- dan –ist; kombinasi bagian-bagian kata, seperti dalam brunch, membentuk beberapa bagian dari breakfast dan lunch; bentuk bebas dari percampuran, seperti bonehead dan down pour; bentuk awal kembali (back formation), atau pembentukan kata dari kata yang telah ada terlebih dulu, bentuk-bentuk yang mendorong terbentuknya kata-kata terakhir, yang diambil dari bentuk terdahulu – contohnya, to jell, dibentuk dari jelly; dan perubahan fungsional, atau penggunaan dari salah satu bentuk ungkapan sebagai satu kata yang dianggap kata lainnya, misalnya, kata benda shower digunakan sebagai kata kerja, to shower.
9
Proses-proses tersebut yang mungkin telah menambahkan banyak sekali kata adalah affiksasi dan khususnya perubahan fungsional, yang difasilitasi oleh keanehan struktur kebahasaan yang dimiliki bahasa Inggris.
2.2 Pengertian Kalimat
Kalimat adalah gabungan dari dua buah kata atau lebih yang menghasilkan suatu pengertian dan pola intonasi akhir. Kalimat dapat dibagi-bagi lagi berdasarkan jenis dan fungsinya yang akan dijelaskan pada bagian lain. Contohnya seperti kalimat lengkap, kalimat tidak lengkap, kalimat pasif, kalimat perintah, kalimat majemuk, dan lain sebagainya. Berikut ini adalah contoh kalimat secara umum : – Joy Tobing adalah pemenang lomba Indonesian Idol yang pertama. – Pergi! – Bang Napi dihadiahi timah panas oleh polisi yang mabok minuman keras itu. – The Samsons sedang konser tunggal di pinggir pantai ancol yang sejuk dan indah. Setiap kalimat memiliki unsur penyusun kalimat. Gabungan
dari unsur-unsur kalimat akan
membentuk kalimat yang mengandung arti. Unsur-unsur inti kalimat antara lain SPOK : – Subjek / Subyek (S) – Predikat (P) – Objek / Obyek (O) – Keterangan (K)
1. Predikat (P) Predikat dalam pandangan aliran struktural dianggap unsur yang paling penting dan merupakan inti kalimat. Predikat dalam bahasa Indonesia bisa berwujud kata atau frasa verbal, adjektival, nominal, numeral, dan preposisional. Perhatikan beberapa contoh kalimat di bawah ini: a. Yasmina duduk-duduk di ruang tamu. b. Anda dan saya tidak harus pergi sekarang. c. Letusan Gunung Merapi keras sekali. d. Makanan itu mahal.
10
e. Ayah saya guru bahasa Indonesia. f. Anda guru? g. Anak kami tiga . h. Peserta audisi itu puluhan ribu orang. i. Dia dari Medan j. Pak Nurdin ke Saudi.
Pada sepuluh kalimat di atas, terdapat bagian yang dicetak miring. Ada yang berbentuk kata maupun frasa (lebih dari satu kata). Kata atau frasa yang dicetak miring tersebut berfungsi sebagai predikat. Kalimat a dan b adalah contoh kalimat dengan predikat berkatagori verbal, disebut kalimat verbal. Kalimat c dan d adalah contoh kalimat dengan predikat berkatagori adjektival, disebut kalimat adjektival. Kalimat e dan f adalah contoh kalimat dengan predikat berkatagori nominal, disebut kalimat nominal. Kalimat g dan h adalah contoh kalimat dengan predikat berkatagori numeral, disebut kalimat numeral. Kalimat i dan j adalah contoh kalimat dengan predikat berkatagori preposisional, disebut kalimat preposisional. 2. Subjek (S) Disamping predikat, kalimat umumnya mempunyai unsur yang berfungsi sebagai subjek. Dalam pola kalimat bahasa Indonesia, subjek biasanya terletak sebelum predikat, kecuali jenis kalimat inversi. Subjek umumnya berwujud nomina, tetapi pada kalimatkalimat tertentu, katagori lain bisa juga mengisi kedudukan subjek. Pada sepuluh contoh kalimat di atas, kata atau frasa Yasmina, Anda dan saya, letusan Gunung Merapi, makanan itu, ayah saya, anak kami, peserta audisi itu, dia, dan Pak Nurdin berfungsi sebagai subjek. Subjek yang tidak berupa nomina, bisa ditemukan pada contoh kalimat seperti ini: 1. Merokok merupakan perbuatan mubazir. 2. Berwudlu atau bertayamum harus dilakukan sebelum sholat. 3. Tiga adalah sebuah angka.
11
4. Sakit bisa dialami semua orang.
3. Objek (O) Objek bukan unsur wajib dalam kalimat. Keberadaanya umumnya terletak setelah predikat yang berkatagori verbal transitif. Objek pada kalimat aktif akan berubah menjadi subjek jika kalimatnya dipasifkan. Demikian pula, objek pada kalimat pasif akan menjadi subjek jika kalimatnya dijadikan kalimat aktif. Objek umumnya berkatagori nomina. Berikut contoh objek dalam kalimat: a. Dr. Ammar memanggil suster Ane. b. Adik dibelikan ayah sebuah buku. c. Kami telah memicarakan hal itu Suster ane, ayah, sebuah buku, dan hal itu pada tiga kalimat di atas adalah contoh objek. Khusus pada kalimat b. Terdapat dua objek yaitu ayah (objek 1) dan sebuah buku (objek 2)
4. Pelengkap (PEL) Pelengkap atau komplemen mirip dengan objek. Perbedaan pelengkap dengan objek adalah ketidakmampuannya menjadi subjek jika kalimatnya yang semula aktif dijadikan pasif. Perhatikan katakata yang dicetak miring pada kalimat-kalimat di bawah ini. Kata-kata tersebut berfungsi sebagai pelengkap bukan objek. Contoh: a. Indonesia berdasarkan Pancasila b. Ardi ingin selalu berbuat kebaikan c. Kaki Cecep tersandung batu.
5. Keterangan (K) Unsur kalimat yang tidak menduduki subjek, predidkat, objek, maupun pelengkap dapat diperkirakan menduduki fungsi keterangan. Berbeda dengan O dan PEL. yang pada kalimat selalu terletak
12
dibelakang P, unsur yang berfungsi sebagai keterangan (K) bisa terletak di depan S atau P. Contoh: a. Di perpustakaan kami membaca buku itu. b. Kami membaca buku itu di perpustakaan. c. Kami /di perpustakaan/ membaca buku itu. d. Tono mencabut paku dengan tang. e. Dengan tang Tono mencabut paku. f. Tono /dengan tang/ mencabut paku. Pada enam kalimat di atas, tampak bahwa frasa di perpustakaan dan dengan tang yang berfungsi sebagai keterangan mampu ditempatkan di awal maupun di akhir. Khusus jika ditempatkan antara S dan P, cara membacanya (intonasi) harus diubah sedemikian rupa (terutama jeda) agar pemaknaan kalimat tidak keliru. Dilihat dari bentuknya, keterangan pada sebuah kalimat bisa dikenali dari adanya penggunaan preposisi dan konjungsi (di, ke, dari, kepada, sehingga, supaya, dan sejenisnya.). Akan tetapi, tidak semua keterangan berciri demikian, ada pula keterangan yang berbentuk kata, seperti pada contoh berikut: a. Kami telah mengengoknya kemarin. b. Tiga tahun kami telah bekerja sama dengannya.
2.3 Bahasa Pemrograman Java
2.3.1
Pengertian Dan Definisi Java adalah teknologi yang diperkenalkan oleh Sun Microsystem
pada pertengahan tahun 1990. Menurut definisi dari Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perngkat lunak pada computer standalone ataupun pada lingkungan jaringan. Kita lebih menyukai menyebut Java sebagai sebuah teknologi dibanding hanya sebuah bahasa pemrograman, karena Java
13
lebih lengkap dibanding sebuah bahasa pemrograman konvensional. Teknologi java memiliki tiga komponen penting, yaitu: -
Programming
-
Language specification
-
Application-programming interface
-
Virtual-machine specification
Kelebihan Java : -
Berorientasi objek, memudahkan untuk mendesain dan mengembangkan program dengan cepat dan teliti, sehingga mudah digunakan. Salah satu bahasa pemrograman berorientasi objek secara murni.
-
Mirip c++, mempunyai sintaks yang mirip dengan bahasa pemrograman c++. Sehingga para pengguna c++ banyak yang hijrah menggunakan java.
-
Multiplatform, dapat digunakan dibanyak sistem operasi.
-
Perkembangan yang luas, dari game sampai sistem operasi handphone menggunakan program java. Misalnya handphone Sonny Ericsson dan Opera Mini 3 yang bertipe .jar (Java Archive).
-
Mempunyai pengumpulan sampah otomatis.
Kekurangan Java : -
Proses
compile,
mengharuskan
pengguna
mengcompile sebelum dijalankan. Berbeda dengan bahasa pemrograman python yang tidak perlu mengcompile terlebih dahulu. -
Penggunaan memori yang besar, berbeda dengan bahasa pemrograman lain yang hanya membutuhkan sedikit memori.
14
Java API Application Programming Interface (API) adalah kumpulan dari pustaka class atau komponen atau library, yang sudah disediakan oleh Sistem Operasi, yang berupa kumpulan perintah yang membentuk sbuah komonen, sehingga akan membantu para programmer dalam membangun sebuah aplikasi. Pemrograman berorientasi objek menuntut kita untuk selalu menggunakan paradigma object oriented dalam membuat program. Segala sesuatu harus kita pandang dalam konsep class dan object. Class adalah template atau prototipe yang mendefenisikan atributatribut, type atribut, method dan objek. Bentuk Umum: Class nama_class Method digunakan untuk memodularisasi program melalui pemisahan satu tugas menjadi satu unit sendiri. Konstruktor adalah method yang mempunyai nama yang sama dengan nama class. Modifier adalah sifat yang dimiliki oleh atribut, method maupun class dalam java. Contoh : 1. Public 2. Abstrak, diimplementasikan secara parsial yang tujuannya untuk kenyamanan perancangan. 3. Protektif (dilindungi). 4. Private (lebih dilindungi). Attributes merupakan nilai data yang terdapat pada suatu object yang berasal dari class. Attributes merepresentasikan karakteristik dari suatu object. Atau Atribut adalah sesuatu yang dimiliki oleh objek. Setiap objek yang dibuat dari kelas yang sama akan memiliki atribut yang sama. Contoh : pada Class Fruit terdapat attribute : warna, berat pada object mangga : warna berisi kuning dan berat misalkan 0.25 kg pada object apel : warna berisi
15
merah dan berat misalkan 0.30 kg. Implementasi pada Pemrograman Java : class Mahasiswa{ String nama; String jenkel; Mahasiswa(){ //konstruktor nama = “unknown”; //atribut jenkel = “unknown”; //atribut } Method adalah sesuatu yang dapat dilakukan oleh objek. Method dalam implementasi program ditulis dalam bentuk fungsi. Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya. Metode memiliki 4 (empat) bagian dasar : 1. Nama metode 2. Tipe Objek atau tipe primitive yang dikembalikan metode. 3. Daftar parameter. 4. Badan atau isi metode. Tiga bagian pertama mengindikasikan informasi penting tentang metode itu sendiri. Dengan kata lain, nama metode tersebut=metode lain dalam program. Dalam java kita dapat memiliki metode-metode berbeda yang memiliki nama sama tetapi berbeda tipe kembalian atau daftar argumennya, sehingga bagian-bagian definisi metode ini menjadi penting. Ini disebut overloading metode. Untuk menjalankan program yang memiliki sifat polymorphism tersebut, diperlukan suatu kemampuan overloading, yaitu suatu kemampuan untuk menentukan fungsi yang mana yang harus digunakan atau dijalankan jika terdapat nama fungsi yang sama. Polimorfisme bisa diartikan seperti kemampuan suatu variable untuk mengubah perangai sesuai dengan objek hasil instansiasi yang digunakan. Polimorfisme membiarkan lebih dari 1 objek dari sub class sub class dan diperlakukan sebagai objek dari super class tunggal.
16
Ada 2 jenis method: 1. Method yang tidak mengembalikan data (diberi tipe void) Ex: static void bernaz(); //method static bernama bernaz yang tidak mengembalikan nilai 2. Method yang bisa mengembalilkan nilai menggunakan statement return dan tipe data Ex: static int bernaz(int b); return b; //method bernama bernaz yang mengembalikan nilai integer //mempunyai 1 parameter yaitu b dan bertipe integer //return adalah keyword untuk mengembalikan nilai.
2.3.2
Komponen Grid Layout Grid Layout pada pemrograman java merupakan salah satu layout
yang digunakan untuk mengatur tata letak komponen pada panel. Grid Layout merupakan bagian dari library AWT. Metode grid layout akan membagi area layar menjadi sejumlah tempat dalam bentuk matriks ukuran yang sama. Area layar dibagi dalam format baris dan kolom, sehingga setiap komponen akan memiliki ukuran yang sama, tidak melihat dari ukuran yang sebenarnya. Setiap terjadi ukuran pada frame, ukuran setiap komponen pun akan berubah. Pada prinsipnya yang dipertahankan adalah jumlah baris dan kolom yang telah ditentukan. Grid layout menempatkan komponen dengan urutan dari kiri kekanan, dari atas kebawah dan memaksa setiap komponen untuk menempati space container yang kosong serta membagi rata ukuran setiap space tersebut. Gridlayout paling cocok digunakan untuk menyusun komponen yang berukuran sama, misal 2 buah JPanel berukuran sama di dalam sebuah frame. Ada 3 konstruktor untuk grid layout:
17
a. GridLayout() adalah membuat layout dengan satu kolom perkomponen. Hanya satu baris yang digunakan. b. GridLayout(int rows, int cols) adalah membuat satu layout berdasarkan jumlah baris dan kolom yang digunakan. c. GridLayout(int rows, int cols, int hgap, int vgap) adalah membuat layout berdasarkan jumlah baris dan kolom yang diinginkan, serta ukuran jarak (gap) horinzontal maupun vertical untuk setiap baris dan kolom tersebut. Untuk menggunakan grid layout perlu dilakukan beberapa hal berikut: a. Import Library : import java.awt.GridLayout; b. Membuat obyek layout : GridLayout namaLayout =
new
GridLayout(nRow, nCol) c. Mengarahkan
layout
panel
ke
objek
layout
:
namaPanel.setLayout(namaLayout)
2.3.3
JtextPane JTextPane adalah sub class dari JEditorPane. JTextPane dapat
dipergunakan tidak sekedar plain text, namun bisa juga menampilkan dalam bentuk styled text tanpa menyediakan konstruktor. Berikut contohnya: public final void initUI() {
JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20));
20,
18
JScrollPane pane = new JScrollPane(); JTextPane textpane = new JTextPane();
textpane.setContentType("text/html"); textpane.setEditable(false);
String cd = System.getProperty("user.dir") + "/";//mengambil file .html dari user.dir (default tempat direktori netbeans)
try { textpane.setPage("File:///" + cd + "test.html");//membuka file .html di textpane } catch (IOException e) { System.out.println("Exception: " + e); }
textpane.setBorder(BorderFactory.createEmptyBorder(8, 8, 8));
pane.getViewport().add(textpane); panel.add(pane);
add(panel);
8,
19
setTitle("JTextPane"); setSize(new Dimension(380, 320)); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); }
2.3.4
Thread
Thread merupakan kemampuan yang disediakan oleh Java untuk membuat aplikasi yang tangguh, karena thread dalam program memiliki fungsi dan tugas tersendiri. Dengan adanya thread, dapat membuat program yang lebih efisien dalam hal kecepatan maupun penggunaan sumber daya, karena kita dapat membagi proses dalm aplikasi kita pada waktu yang sama. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan sumber daya secara konkuren.
Membuat subclass dari thread
Untuk menjalankan thread, dapat dilakukan dapat memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run() pada definisi class. Konstruktor dari cara ini adalah : ClassThread namavar = new ClassThread(); namavar.start(); atau dapat langsung dengan cara : New.ClassThread().start();
20
Mengimplementasikan interface Runnable
Cara ini adalah cara paling sederhana dalam membuat thread. Runnable
merupakan
mengimplementasikan
unit
abstrak,
interface
yaitu
ini
kelas
hanya
yang cukup
mengimplementasikan fungsi run(). Dalam mengimplementasikan fungsi run(), kita akan mendefinisikan instruksi yang membangun sebuah thread. Konstruktor dari cara ini adalah : ObjekRunnable objek = new ObjekRunnable(); Thread namavar = new Thread(Objek Runnable); Atau dengan cara singkat seperti : New Thread(new ObjekRunnable()); Berikut beberapa istilah yang sering kita jumpai jika membahas tentang Threads : 1. Sleep Mengatur thread untuk menghentikan prosesnya sejenak dan memberi kesempatan pada thread atau proses lain. Sleep dilakukan dengan cara memanggil method : Sleep(long waktu); Waktu untuk method ini merupakan tipe long dalam milisekon. 2. Interrupt Apabila menginginkan suatu thread untuk menghentikan proses, maka perlu memanggil method interrupt. Interrupt digunakan untuk memberi signal pada thread untuk menghentikan prosesnya. Berikut contoh SourceCode-nya Threads.java: class ThreadBaru extends Thread {
21
public ThreadBaru(String id) { super(id); start(); //Mulai eksekusi thread baru } public void run() { for(int i=0;i<5;i++){ try{ Thread.sleep(100); }catch(InterruptedException e) {} } } } class DemoThread { public static void main(String[] args) { ThreadBaru thread1 = new ThreadBaru("Thread1"); ThreadBaru thread2 = new ThreadBaru("Thread2"); ThreadBaru thread3 = new ThreadBaru("Thread3"); System.out.println("Thread1
masih
dieksekusi
:
"
+
masih
dieksekusi
:
"
+
masih
dieksekusi
:
"
+
thread1.isAlive()); System.out.println("Thread2 thread2.isAlive()); System.out.println("Thread3 thread3.isAlive());
22
//tunggu hingga semua child thread selesai dieksekusi try{ thread1.join(); System.out.println("Thread1 selesai dieksekusi"); thread2.join(); System.out.println("Thread2 selesai dieksekusi"); thread3.join(); System.out.println("Thread3 selesai dieksekusi"); }catch(InterruptedException e) { System.out.println("Thread utama diinterupsi " + e); } System.out.println("Thread utama selesai dieksekusi"); } } Sinkronisasi adalah method atau blok yang memiliki tambahan keyword synchronized, sehingga apabila dijalankan maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program.
Thread
lain
akan
menunggu
thread
yang
sedang
mengeksekusi method ini hingga selesai. Mekanisme sinkronisasi penting apabila terjadi pembagian sumber daya maupun data antara thread-thread. Sinkronisasi juga melakukan penguncian pada sumber daya atau data yang sedang diproses. Berikut SourceCodenya ThreadSinkronisasi.java. class TestSinkronisasi { private java.util.Random random = new java.util.Random();
23
public void callMe(String data) { System.out.print("["); try{ Thread.sleep(random.nextInt(200)); }catch(InterruptedException e) { e.printStackTrace(); } System.out.print(data); try{ Thread.sleep(random.nextInt(200)); }catch(InterruptedException e) { e.printStackTrace(); } System.out.println("]"); } } class ThreadBaru extends Thread { private String data; private TestSinkronisasi obj; public ThreadBaru(TestSinkronisasi obj,String data) { this.obj = obj; this.data = data;
24
start(); } public void run() { obj.callMe(data); } } class DemoThread { public static void main(String[] args) { TestSinkronisasi obj = new TestSinkronisasi(); ThreadBaru thread1 = new ThreadBaru(obj,"Superman"); ThreadBaru thread2 = new ThreadBaru(obj,"Batman"); ThreadBaru thread3 = new ThreadBaru(obj,"Spiderman"); //tunggu hingga semua child thread selesai dieksekusi try{ thread1.join(); thread2.join(); thread3.join(); }catch(InterruptedException e) { System.out.println("Thread utama diinterupsi " + e); } } }
25
2.3.5
HttpURLConnection
Class URL digunakan untuk
merepresentasikan suatu sumber
pada Web. Setiap sumber memiliki alamat yang unik (tidak bisa sama) dan memiliki informasi yang cukup sehingga web browser bisa mencari sumber tersebut dan mengambilnya. Alamat ini disebut “url” atau “universal resource locater”. Suatu class bertipe kelas URL melambangkan alamat tersebut. Jika kita sudah memiliki objek bertipe URL, maka kita bisa membuka URLConnection ke alamat tersebut. Suatu url biasanya berupa string, misalnya
“http://java.lyracc.com/belajar/java-untuk-pemula/bab-i-
pendahuluan”. Ada juga yang disebut url relatif. url relatif adalah lokasi suatu sumber relatif terhadapa url lain, yang biasa disebut landasan (base) atau konteks (context) dari url relatif tersebut. Misalnya jika konteksnya adalah http://java.lyracc.com/belajar/javauntuk-pemula maka url relatif dari bab-i-pendahuluan menunjukkan
pada
akan
http://java.lyracc.com/belajar/java-untuk-
pemula/bab-i-pendahuluan. Suatu objek bertipe URL bukan string sederhana, akan tetapi dibangun dari kumpulan string yang membentuk suatu url. Objek URL juga bisa dibuat dari objek URL lain yang merupakan konteksnya dan string lain yang berisi relatif urlnya. Konstruktornya memiliki bentuk seperti : public URL(String alamatURL) throws MalformedURLException dan public
URL(URL
konteks,
String
alamatRelatif)
throws
MalformedURLException lihat bahwa kedua konstruktor akan melempar pengecualian bertipe MalformedURLException jika string yang diberikan bukan nama url legal. Kelas MalformedURLException merupakan kelas turunan dari IOException yang wajib ditangani, sehingga konstruktor
26
diatas harus dipanggil dalam pernyataan try…catch atau ditulis di dalam subrutin yang melempar pengecualian ini. Konstruktor jenis kedua akan lebih nyaman digunakan dalam applet. Dalam applet tersedia dua metode yang bisa digunakan untuk mengambil konteks URL. Metode getDocumentBase() pada kelas applet mengembalikan objek bertipe URL. Objek URL ini adalah lokasi tempat halaman HTML yang berisi applet tersebut berada. Dengan ini, kita bisa memerintahkan applet untuk kembali dan mengambil file lain yang disimpan di tempat yang sama. Misalnya : URL url = new URL(getDocumentBase(), "data.txt"); Membuat URL baru yang merujuk pada file bernama data.txt pada computer yang sama dan pada direktori yang sama pada halaman web dimana applet tersebut sedang berjalan. Metode lainnya yaitu, getCodeBase(), mengembalikan URL yang merupakan lokasi dimana applet tersebut berada (belum tentu sama dengan lokasi HTML-nya). Setelah kita memiliki objek URL yang benar, kita bisa memanggil openConnection() untuk membuka koneksi pada URL tersebut. Metode ini mengembalikan objek bertipe URLConnection. Objek URLConnection bisa digunakan untuk membuka InputStream untuk membacan halaman atau file pada alamat
URL
tersebut,
yaitu
dengan
menggunakan
metode
getInputStream(). Misalnya : URL url = new URL(alamatURL); URLConnection koneksi = url.openConnection(); InputStream dataURL = connection.getInputStream(); Metode openConnection() dan getInputStream dapat melempar pengecualian IOException. Jika InputStream berhasil dibuka, kita bisa menggunakannya dengan cara biasa, termasuk membungkusnya
27
dalam aliran input jenis lain, misalnya BufferedReader. Membaca dari aliran ini tentunya juga bisa melemparkan pengecualian. Salah
satu
metode
instansi
yang
berguna
dalam
kelas
URLConnection adalah getContentType(), yang mengembalikan String yang menjelaskan jenis informasi pada URL yang ditunjuk. Hasilnya bisa bernilai null jika jenisnya belum diketahui, atau tidak bisa ditentukan. Jenis dokumen bisa saja belum tersedia hingga aliran input
berhasil
dibuat,
sehingga
lebih
baik
menggunakan
getContentType() setelah getInputStream() berhasil dilakukan. String yang dikembalikan oleh getContentType() ditulis dalam format yang disebut MIME, misalnya "text/plain", "text/html", "image/jpeg", "image/gif", dan banyak lagi lainnya. Semua jenis MIME terdiri dari dua bagian, yaitu bagian umum, seperti "text" atau "image", dan bagian khususnya, misalnya "html" atau "gif". Jika kita hanya tertarik pada data teks misalnya, kita hanya perlu menguji apakah hasil keluaran getContentType() dimulai dengan "text". (Jenis MIME pertama kali dimaksudkan untuk menjelaskan isi email. Namanya adalah singkatan dari "Multipurpose Internet Mail Extensions". Kini, MIME digunakan secara umum untuk menjelaskan jenis suatu informasi atau file pada suatu sumber). Mari kita lihat contoh singkat bagaimana membaca data dari suatu URL. Subrutin berikut akan membuka koneksi ke URL tertentu, mengecek apakah jenisnya berupa teks, kemudian mengkopi hasilnya ke layar. Beberapa operasi dalam subrutin ini mungkin melempar pengecualian. Kita akan menambahkan "throws Exception" di kepala subrutin untuk meneruskan penanganan pengecualian ini kepada program utama yang memanggil subrutin ini. static void bacaTeksDariURL( String alamatURL ) throws Exception { // Subrutin ini mencetak isi dari alamat URL yang
28
// diberikan ke layar. Semua kesalahan akan ditangani // oleh program yang memanggil subrutin ini
/* Buka koneksi ke URL, dan ambil aliran input * untuk membaca data dari URL. */
URL url = new URL(alamatURL); URLConnection koneksi = url.openConnection(); InputStream dataURL = koneksi.getInputStream();
/* Cek apakah konten bertipe teks */
String jenisKonten = koneksi.getContentType(); if (jenisKonten == null || jenisKonten.startsWith("text") == false) throw new Exception("URL tidak bertipe teks.");
/* Kopi karakter dari aliran input ke layar * hingga akhir file ditemukan (atau kesalahan ditemui) */
while (true) { int data = dataURL.read();
29
if (data < 0) break; System.out.print((char)data); } } // akhir bacaTeksDariURL()
2.3.6
Regular Expression (Isak Rickyanto, 2003)
Regular Expression sangat dikenal khususnya oleh programmer Perl karena kemampuan dan keampuhannya dalam menangani dan mengolah teks. Sejak JDK versi 1.4 terdapat fasilitas untuk menangani regular expression yang sering disingkat regex pada package java.util.regex. Regular Expression sebenarnya
adalah
ekspresi
berbentuk
semacam pola pattern yang dapat ditemukan dari string atau teks. Ada beberapa elemen yang penting dalam regular expression. 1. Tanda Titik (.) Tanda titik mewakili satu karakter sembarang dari string yang dijadikan target parsing.
2.1 Tabel Tanda Titik Regular
Contoh String Hasil
Expression .
a
A
.
ab
a atau b (bila parsing dari kanan)
30
..
abcd
aba tau cd (bila parsing dari kanan)
2. Kualifier (*) dan (+) Tanda +, bila diletakkan setelah regular expression berarti satu atau lebih karakter yang menyamai ekpresi itu. Tabel 2.2 Tabel Kualifier Regular Expression
Contoh String
Hasil
a*
aaa
aaa
a*b*
aaaabbbb
aaaabbbb
.*
m
m
.*
“” string kosong
“” string kosong
.*
abcd
abcd
.+
bcde
bcde
3. Grouping(()) Tanda kurung dapat ditempatkan pada regular expression untuk menjadikannya sebagai satu unit. Ini tidak mengubah artinya tetapi menginzinkan penggunaan semacam kuantifier (tanda * dan +) untuk keseluruhan ekspresi dan bukan hanya satu karakter. Sebagai contoh, bila a* berarti nol atau lebih karakter a, sedangkan (ab)+ berarti apabila terdapat satu atau lebih pola karakter ab. Tabel 2.3 Tabel Grouping Regular Expression
Contoh String
Hasil
(abc)*
Abcabcdef
abcabc
(a(bc)*)*
Abcbcabcbc
Abcbcabcbc
4. Character Class
31
Character class mendefinisikan sekumpulan karakter individual. Sebagai contoh regex, seperti [abc] berarti sama dengan a,a b atau a c; regex [abc]+ berarti sama atau lebih dari salah satu karakter a, b atau c. anda juga dapat menggunakan notasi a-z untuk semua karakter berhuruf kecil dari a sampai z. Tabel 2.4 Tabel Character Class Regular Expression
Contoh String
Hasil
[abc]
A
a
[a-d]*
Abcdef
abcd
[a-zA-Z_][a-zA-Z0-9_]*
semuaNYA
semuaNYA
[abc] memiliki arti semua string yang terdiri dari karakter a, b dan c saja. Sedangkan [a-zA-Z_] memiliki arti semua karakter under score (_). Bagian kedua memiliki arti ukuran alphabet, numerik atau under score. Ekpresi ini sama dengan definisi dari identifier Java, yang harus diawali karakter bukan angka kemudian dapat diikuti karakter bauk angka maupun alphabet. Apabila kita menambahkan tanda (^) di awal ekpresi berarti membalikkan arti di mana ekspresi cocok apabila tidak ada karakter yang terdapat pada set regular ekspresi yang didefinisikan. Sehingga [^abc] untuk string abcdefgh maka bagian dari string yang sesuai dengan ekspresi ini adalah efgh karena ekspresi ini menyatakan string yang tidak terdiri dari karakter a, b atau c. 5. Predefined Character Classes Ada ekspresi tertentu yang sudah didefinisikan untuk sebagian character classes yang umum, misalnya \d adalah ekspresi yang menyamai semua digit angka atau [0-9]. Sedangkan \D merupakan kependekan daru [^0-9]. Sedangkan \s menyamai semua spasi sedangkan \S berarti semua yang bukan spasi.
32
Tabel 2.5 Tabel Predefined Character Classes Pertama Regular Expression
Contoh String
Hasil
\d
0
0
\d\D\d
0A0
0A0
A\sA
AA
AA
\S\s\S
AA
AA
Tabel 2.6 Tabel Predefined Character Classes Kedua Predefined Contoh String
Ekspresi
Character
sama
yang
berarti
Classes .
Semua karakter
Tidak ada
\d
Semua digit decimal
[0-9]
\D
Semua
karakter
selain [^0-9]
digit decimal \s
Semua karakter spasi
\S
Semua
karakter
[\t\n\x0B\f\r]
selain [^\t\n\x0B\f\r]
spasi \w
Semua karakter termasuk [a-zA-Z_0-9] underscore
\W
Semua
karakter
selain [^a-zA-Z_0-9]
karakter angka, alphabet maupun underscore
6. Gabungan Dan Alternatif Menggabungkan dua ekspresi memiliki arti yang samayang sebenarnya dengan gabungan dua ekspresi tersebut. Misalnya (ab)* dari string abab memiliki hasill abab, dan (cd)* dari string cdcd memiliki hasil cdcd sehingga dari gabungan ekspresi
33
(ab)*(cd)
dari
string
gabungan
juga
yaitu
ababcdcd
akan
menghasilkan yang sama juga, yaitu ababcdcd. Anda dapat menggunakan dua ekspresi menhadi dua subsekspresi dengan tanda |. Untuk menghasilkan kecocokan, string harus menyamai salah satu subekspresi. Tabel 2.7 Tabel Gabungan Dan Alternatif Regular Expression
Contoh String
Hasil
((ab)|(cd))*
abcdabcdcdab
abcdabcdcdab
7. Posisi Awal Dan Akhir Symbol khusus ^ dan $ dapat digunakan untuk menentukan posisi dari ekspresi yang diinginkan pada string. Tanda ^ merupakan posisi awal dari string sedangkan $ menyamai akhir dari string. Misalnya ekspresi abc menyamai tiga karakter dari string yyyabcyyY maka ^abc tidak karena ^abc memiliki arti bahwa huruf abc harus terdapat pada awal string.
8. Pattern Dan Matcher Fasilitas regex pada java.util.regex didefinisikan oleh tiga class: -
Pattern mewakili regular expression
-
Matcher mewakili Paterrn terhadap string
-
PatternSyntaxExpression Exception yang dihasilkan saat mengkompilasi regular ekspression.
34
2.4 Google Translate Untuk membuka membuka website pada alamat google translate diperlukan
url
halaman
web
google
translate
"https://translate.google.com/translate_a/t?client=j&text=". Kemudian
memberikan
target
bahasa
pada
url
tersebut
"&hl=en&sl=en&tl=id". Kita harus mengirimkan string ke url tersebut akan dapat menerjemahkan ke bahasa lain. Setelah string dikirim ke url tersebut, url tersebut menghasilkan respon berupa terjemahan ke bahasa yang sudah kita kirimkan pada url. url tersebut membutuhkan user agent untuk bisa lewat, artinya kita harus mengelabui url supaya seolah-olah browser yang sedang mengakses url. Setelah itu string yang sudah diterjemahkan akan dikirim kembali oleh url tersebut.
2.5 Metodologi Rekayasa Perangkat Lunak Rekayasa perangkat lunak merupakan disiplin ilmu
yang
digunakan untuk memahami proses desain atau siklus hidup desain. Tingkat kegunaan terjadi pada semua tingkat siklus hidup, bukan hanya pada aktifitas tunggal yang terisolasi. Desain perangkat lunak adalah suatu proses interaktif yang harus melalui persyaratan yang diterjemahkan ke dalam bentuk “cetak biru”. Pada dasarnya cetak biru menggambarkan suatu pandangan menyeluruh dari perangkat lunak yang akan dibangun yang meliputi proses desain pada tingkat abstraksi yang tinggi, yang dapat ditelusuri sampai data spesifik, fungsional dan lainnya (Sudamarwan dan Ariyus, 2007). Pada dasarnya siklus hidup perangkat lunak merupakan suatu proses desain atas program yang akan dibangun untuk mendapatkan hasil yang workable. Model-model desain perangkat lunak adalah sebagai berikut: 1.
Requirements analysis and definition : Mengumpulkan apa
yang dibutuhkan secara lengkap untuk kemudian dianalisis guna
35
mendefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap. 2.
System and software design : Setelah apa yang dibutuhkan
selesai dikumpulkan dan sudah lengkap maka desain kemudian dikerjakan. 3.
Implementation and unit testing : Desain program
diterjemahkan ke dalam kode-kode program dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji secara unit, apakah sudah bekerja dengan baik. 4.
Integration and system testing : Penyatuan unit-unit
program untuk kemudian diuji secara keseluruhan (system testing). 5.
Operation and maintenance : Mengoperasikan program di
lingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan untuk adaptasi dengan situasi yang sebenarnya. Berikut ini adalah gambar lengkap dari model waterfall :
Gambar 2.1. Model Waterfall (Sudamarwan dan Ariyus, 2007)
36
2.6 UML (Munawar, 2005) UML (Unified Modeling Language) adalah sebuah “bahasa” yang telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak (Dahrwiyanti dan wahono, 2003). UML juga dapat diartikan sebagai salah satu alat bantu yang sangat handal di dunia pengembangan sistem yang berorientasi objek (Munawar, 2005). Pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang merupakan tiga tokoh yang metodologinya banyak digunakan mempelopori usaha untuk penyatuan metodologi pendesainan berorientasi objek. Pada tahun 1995 diluncurkan rancangan pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG). Setelah itu pada tahun 1997 UML versi 1.1 muncul dan pada bulan Maret 2003 dirilis lagi versi terbaru UML yaitu versi 1.5. Dan pada tahun 1999 Booch, Rumbaugh dan Jacobson menyusun tiga buku serial tentang UML , sejak saat itulah UML telah menjelma menjadi standart bahasa pemodelan untuk aplikasi berorientasi objek. UML menyediakan bahasa pemodelan visual yang memungkinkan bagi pengembangan sistem untuk membuat “cetak biru” atau visi mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi (sharing) dan mengkomunikasikan rancangan mereka dengan yang lain. Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana palikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun.
37
Gambar 2.2 UML (Munawar, 2005) Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax atau semantic. Notasi UML merupakan sekumpulan bentuk khusus untuk mengambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML sintak mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Berikut ini adalah jenis tipe diagram UML diantaranya: Tabel 2.8 Tipe diagram UML. Diagram Tujuan Activity Perilaku procedural dan paralel Class Class, fitur dan relasinya Communication Interaksi diantara objek. Lebih menekankan ke link Component Struktur dan koneksimdari komponen Composite Dekomposisi sebuah class saat runtime Structure Deployment Penyebaran/instalasi ke klien Interaction Gabungan antara activity & sequence diagram Overview Object Contoh konfigurasi instance Package Struktur hierarki saat kompilasi Sequence Interaksi antar objek. Lebih menekankan pada urutan State Machine Bagaimana event mengubah sebuah objek Timing Interaksi antar objek. Lebih menekankan pada waktu Use Case Bagaimana user berinteraksi dengan sebuah sistem.
38
2.6.1
Use Case Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif
pengguna atau bisa disebut juga abstraksi dari interaksi antara sistem dan actor. Use case bekerja dengan cara mendeskripsikan tipikal interaksi antar user (pengguna) sebuah sistem dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah sistem dipakai. Urutan langkah-langkah yang menerangkan antara pengguna dan sistem disebut scenario. Setiap scenario mendeskripsikan urutan kejadian. Setiap urutan diinisialisasi oleh orang, sistem yang lain, perangkat keras atau urutan waktu. Dengan demikian secara singkat bisa
dikatakan use
case
adalah
serangkaian scenario
yang
digabungkan bersama-sama oleh tujuan umum pengguna. Pada use case, pengguna biasanya disebut dengan actor. Actor adalah sebuah peran yang bisa dimainkan oleh pengguna dalam interaksinya dengan sistem. Model use case adalah bagian dari model requirement (Jacobson et all, 1992). Termasuk disini adalah problem domain objek model dan penjelasan tentang user interface. Use case memberikan spesifikasi fungsi-fungsi yang ditawarkan oleh sistem dari perspektif user. Use case adalah alat bantu terbaik guna menstimulasi pengguna potensial untuk mengatakan tentang suatu sistem dari sudut pandangnya. Berikut ini adalah simbol use case diagram: Tabel 2.9. Notasi use case. Notasi
Deskripsi Actor, yang digunakan untuk menggambarkan pelaku atau pengguna. Pelaku ini meliputi manusia atau sistem komputer atau subsistem lain yang memiliki metode untuk melakukan sesuatu. Use case, digunakan untuk menggambarkan spesifikasi pekerjaan (job specification) dan deskripsi pekerjaan (job description), serta keterkaitan antar pekerjaan (job).
39
Aliran proses (relationship), digunakan untuk menggambarkan hubungan antara use case dengan use case lain. Aliran perpanjangan (extension point), digunakan untuk menggambarkan hubungan antara use case dengan use case yang diperpanjang (extension use case) maupun dengan use case yang dimasukkan (include use case). Aliran yang digunakan untuk menggambarkan hubungan antara actor dengan use case. Kondisi yang mendeskripsikan apa yang terjadi antara use case dengan use case lain. Kondisi aliran proses langsung (directed relationship) antara dua use case yang secara tak langsung menyatakan kelakuan (behavior dari use case yang dimasukkan. Kondisi yang mendeskripsikan apa yang terjadi antara actor dengan use case.
<<extended>>
<
>
<>
a. Notasi Use Case Diagram use case menunjukkan 3 aspek dari sistem yaitu: actor, use case dan system/sub system boundary. Actor mewakili peran orang, sistem yang lain atau alat ketika berkomunikasi dengan use case.
Gambar 2.3. Diagram Use Case (Munawar, 2005)
40
2.6.2
Diagram Activity
Diagram Aktifitas adalah teknik untuk menggambarkan logika prosedural, proses bisnis, dan jalur kerja. Dalam beberapa hal, diagram ini memainkan peran mirip sebuah diagram alir, tetapi perbedaan prinsip antara diagram ini dan notasi diagram alir adalah diagram ini mendukung behavior paralel (Fowler, 2005:163). Diagram Aktifitas memungkinkan siapapun yang melakukan proses untuk memilih urutan dalam melakukannya. Dengan kata lain, diagram hanya menyebutkan aturan-aturan rangkaian dasar yang harus diikuti. Hal ini penting untuk permodelan bisnis, karena proses-proses sering muncul secara paralel. Ini juga berguna pada algoritma yang bersamaan, dimana urutan-urutan independen dapat melakukan hal-hal secara paralel.
Tabel 2.10 Notasi Activity Diagram No 1.
Notasi
Keterangan Aktivitas, digunakan untuk menggambarkan aktifitas dalam diagram aktifitas.
2.
Node keputusan (decision node), digunakan untuk menggambarkan kelakuan pada kondisi tertentu.
3.
Titik awal, digunakan untuk menggambarkan awal dari diagram aktifitas.
4.
Titik akhir, digunakan untuk menggambarkan akhir dari diagram aktifitas.
5.
Akhir alur (flow final), digunakan untuk menghancurkan semua tanda yang datang dan
41
tak memiliki efek alur dalam aktifitas. 6.
Aksi (action), digunakan untuk menggambarkan alur antara aksi dengan aksi, titik awal dengan aksi, atau aksi dengan titik akhir.
7.
Aksi penerimaan kejadian(accept event action), sebuah aksi yang menunggu kejadian dari suatu peristiwa bertemu kondisi yang spesifikasi.
8.
Datastore digunakan untuk menjaga agar semua <>
tanda yang masuk dan menduplikasikannya saat mereka dipilih untuk pindah ke alur selanjutnya (downstream).
9.
Node fork memiliki satu aksi yang masuk dan beberapa aksi yang keluar.
10.
Join node digunakan untuk menggambarkan beberapa aksi yang masuk dan satu aksi yang keluar.
2.7 Teknik Pengujian Perangkat Lunak Pada aplikasi ini teknik pengujian yang dilakukan menggunakan satu macam pengujian, yaitu black box.
2.7.1
Black Box Pengujian black-box berfokus pada persyaratan fungsional
perangkat lunak. Pengujian ini
memungkinkan analis sistem
memperoleh kumpulan kondisi input yang akan mengerjakan seluruh keperluan fungsional program. Tujuan metode ini mencari kesalahan pada:
Fungsi yang salah atau hilang
42
Kesalahan pada interface
Kesalahan pada struktur data atau akses database
Kesalahan performansi
Kesalahan inisialisasi dan tujuan akhir