Jumat, 30 Januari 2009

Menggunakan Session untuk menangani validasi halaman JSP

Menggunakan Session untuk menangani validasi halaman JSP

Dalam aplikasi web, terkadang kita memerlukan UI (User Interface), untuk mengkontrol aplikasi web, terutama aplikasi web yang konfigurasinya memakai database. Pengaturan kontrol aplikasi web yang memakai UI, tentunya tidak bisa sembarangan, artinya hanya user yang diberikan ijin saja yang bisa memakai UI tersebut untuk mengkontrol suatu aplikasi web. Sebab jika semua user bisa memakai UI tsb, maka aplikasi web pun akan menjadi berantakan jika masing-masing user tidak punya kesepahaman.

Perpindahan antar halaman web dalam UI untuk mengkonfigurasi suatu web pastinya harus ada suatu otentifikasi, pendeknya semua halaman UI baru bisa di akses jika otentifikasi user dinyatakan boleh mengakses halaman web yang di request, sehingga semua perubahan pada konfigurasi aplikasi web dapat dipertanggungjawabkan.

Dalam aplikasi web kita kenal cookie dan session sebagai sebuah cara untuk menangani suatu otentikasi ketika mengakses sebuah halaman web. Pada kesempatan kali ini kita akan menggunakan session sebagai sebuah otentikasi akses halaman web. Penggunaan session sebagai otentikasi akses halaman web ini disebut dengan session tracking.

Dalam pemrograman Java, session diatur dalam beberapa kelas yang ada dalam package javax.servlet.http.*, dalam package inilah kita bisa memanajemen session dalam suatu aplikasi web yang kita buat. Untuk mempermudah pemahaman akan manajemen session ini, kita akan mempersempit pembahasan hanya pada attribut session saja. Attribut session ini akan kita pakai sebagai otentikasi akses halaman web. Dalam penanganan session menggunakan attribut, java menyebutnya sebagai Session Bounded-Object, artinya ada sembarang objek java yang dipakai untuk mengeset attribut session ataupun menghancurkan attribute session. Objek ini terikat pada suatu session, sehingga kita bisa menggunakannya sebagai otentikasi akses halaman web.

Kita langsung saja pada contoh.

Kali ini kita akan membuat sebuah aplikasi web dimana aplikasi tersebut menggunakan login untuk bisa mengakses ke semua halaman yang ada pada aplikasi web kita. Karena pembahasan kali ini ke arah session tracking, maka kita hanya akan menekankan penggunaan attribut session pada aplikasi web kita kali ini.

Dibawah ini adalah plan/bussines flow project kita :

1.

User login menggunakan username dan password untuk mengakses aplikasi web.
2.

Jika username dan password benar, attribut session akan di set pada session yang ada. Kemudian user akan dilempar kehalaman utama.
3.

Setiap halaman yang akan diakses oleh user harus divalidasi oleh session, jika ada user yang mencoba mengakses sebuah halaman tanpa validasi, maka user akan langsung dilempar ke halaman login.
4.

Jika user ingin keluar dari session yang ada, user bisa mengakses sebuah halaman dimana didalam halaman tsb, session yang dipegang oleh aplikasi web, dihancurkan.

Untuk mendukung business flow project ini kita akan membuat beberapa file, yaitu:

File WebAccount.java, file ini adalah file obyek java yang nantinya akan kita pakai sebagai obyek yang menyertai session. Atau objek ini akan kita pakai sebagai sebuah objeck yang nantinya akan diikat oleh session dan kemudian dihancurkan ketika user melakukan logout. Karena ini sebuah percobaan, kita akan membuat username dan password yang statis, artinya kita definisikan langsung didalam kelas, untuk pengembangan selanjutanya kita bisa mengambil nilai username dan password bisa dari database, property file dan lain-lain.

File WebSession.java, file ini adalah sebuah kelas yang kita buat sebagai sebuah cara untuk mengikat atau melepaskan ikatan sebuah obyek terhadap session yang ada, oleh karena obyek yang akan kita pakai adalah obyek buatan kita sendiri, maka kita membuat kelas ini dengan meng-implements kelas dari HttpSessionBindingListener. Dalam kelas ini kita juga hanya akan membuat dua method yang merupakan implement dari kelas HttpSessionBindingListener, yang berguna untuk melacak apakah attribut session sudah terpasang atau dihancurkan. Methode tsb adalah valueBond, dan valueUnbound, dalam pengembangan lebih lanjut kita bisa menggunakan dua method ini sebagai penyimpanan session dalam database, baik ketika user login maupun ketika user logout, sehingga user yang login dan logout bisa diketahui siapa dan kapan dia beraktifitas dalam aplikasi web kita.

File index.jsp, file ini adalah sebuah halaman form html yang berisi dua input yaitu username dan password dan sebuah tombol submit yang ketika tombol submit itu ditekan, maka form akan memposting username dan password yang diinputkan user ke halaman validate.jsp

File validate.jsp, file inilah yang akan mengecek apakah username dan password sudah benar sesuai dengan nilai yang terdapat pada kelas WebAccount. File ini akan melempar user ke halaman tertentu tergantung pada benar tidaknya username dan password yang dimasukkan.

File loginfail.jsp, file inilah yang akan menangani jika username atau password salah, pada prosesnya file ini akan kembali melempar user ke halaman index.jsp dimana halaman index.jsp berisi form login.

File main.jsp, file ini adalah sebuah file yang akan bisa dimasuki atau di akses oleh user jika validasi session untuk user tsb benar. Dalam file ini, session akan diperiksa, jika attribute dari session tsb ada maka akan ditampilkan suatu halaman yang berisi welcome , namun jika session tsb tidak ada maka user akan dilempar ke halaman login.

File logout.jsp, file ini adalah sebuah file yang berisi kode untuk menghancurkan session yang ada sehingga user yang terikat pada session sebelumnya tidak terikat lagi.

Demikian file-file yang kita buat untuk bisa lebih memahami penggunaan session dalam validasi akses user ke halaman-halaman yang diakses. Untuk penjelasannya kita hanya akan membahas beberapa file saja dari file yang ada diatas yang menjadi bagian penting dari pembahasan session-tracking ini. File pertama yang kita bahas adalah file WebSession.java. perhatikan kode didalam file ini.

package org.mojo.web.util;

import org.mojo.web.model.WebAccount;

import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;

/**
* Created by IntelliJ IDEA.
* User: Mojo
* Date: 09 Nov 08
* Time: 0:17:10
* To change this template use File | Settings | File Templates.
*/
public class WebSession implements HttpSessionBindingListener {
private WebAccount account;
private String remoteAddress;

public WebSession(WebAccount account, String remoteAddress) {
System.out.println("WebSession Instantiated...");
this.account = account;
this.remoteAddress = remoteAddress;
}

public void valueBound(HttpSessionBindingEvent event) {
System.out.println("New WebSession created: " + remoteAddress + "/" + account);
}

public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("WebSession Destryoyed");
}

public WebAccount getWebAccount() {
return account;
}
}

Pada kode, diatas variabel account didefinisikan sebagai sebuah obyek WebAccount, kemudian konstruktor dari WebSession tsb didefinisikan dengan mengikutsertakan obyek account dan String remoteAddress sebagai parameternya. Pada dasarnya ketika konstruktor obyek ini dipanggil maka obyek WebSession ini akan mengikat obyek account, sehingga untuk kemudian ketika attribute session di set, maka obyek account ini akan terpasang sebagai sebuah obyek session. Namun yang harus diperhatikan adalah sebelum attribut session di set, obyek ini belum terikat ke sessionnya. Ketika attribut session di set dengan menggunakan perintah session.setAttribut(,); maka baris method public void valueBound(HttpSessionBindingEvent event) terpanggil secara otomatis. Lantas kapan method public void valueUnbound(HttpSessionBindingEvent event) dipanggil? Method ini akan dipanggil secara otomatis pula ketika session di hancurkan, atau waktu session yang di set sudah habis.

File kedua yang akan kita bahas adalah file validate.jsp. Dalam file ini ada konsep penting yang harus kita perhatikan. Silahkan lihat barisan potongan kode yang kita ambil dari validate.jsp ini:

String URLtoDisplay ="";
String username = request.getParameter("username").trim();
String password = request.getParameter("password").trim();
if (username.equals(null) || password.equals(null)) {
request.sendRedirect("index.jsp");
}

WebAccount wa = new WebAccount();

//validating account
if(username.equals(wa.getUserName()) && password.equals(wa.getPassword())){
session.setMaxInactiveInterval( 900 );
URLtoDisplay = "main.jsp";
WebSession ws = new WebSession( wa, request.getRemoteAddr());
session.setAttribute( "onlineUser", ws );
}else {
URLtoDisplay = "loginfail.jsp";
}

request.sendRedirect(URLtoDisplay);

Pada baris kode tsb diatas kita bisa melihat variabel username dan password diambil dari parameter yang dilempar oleh form login. Kemudian ada statement branching dengan pernyataan bila username dan password adalah null maka user akan dilempar kembali ke halaman login. Jika username dan passwordnya ada maka akan kembali diprosess pada statement branching, namun pada branching yang kedua ini kita bisa melihat ada pointing ke halaman tertentu tergantung pada syarat yang masuk dalam proses tsb.

Sebelum branching ke dua kita bisa melihat bahwa ada pemanggilan obyek WebAccount disana, dimana untuk kasus ini username dan password yang ada pada WebAccount kita hardcode. Setelah itu kita bisa melihat bahwa ada proses pencabangan yang memeriksa variabel username dan password apakah sama dengan username dan password yang diperoleh dari obyek WebAccount. Perhatikan diatas jika username dan password yang diinputkan, sama dengan nilai username dan password yang ada pada obyek WebAccount, maka disana akan dimulai setting attribut session. Setting attribut session yang pertama adalah setting waktu session seperti terlihat pada kode:

session.setMaxInactiveInterval( 900 );

Baris ini memerintahkan aplikasi untuk men-setting session selama 900 detik atau sekitar 15 menit. Artinya jika tidak ada aktifitas user selama waktu 900 detik, maka secara otomatis session akan dihancurkan, dan user harus login kembali untuk bisa mengakses halaman-halaman yang diinginkan pada aplikasi web kita. Kemudian baris berikutnya adalah:

URLtoDisplay = “main.jsp”;

Baris ini menyatakan bahwa variabel URLtoDisplay di isi dengan nilai main.jsp, yang nantinya akan berguna untuk melempar user ke halaman main.jsp jika attribut session telah berhasil di set.

Setelah itu baris berikutnya memanggil konstruktor WebSession yang berguna untuk mengikat obyek WebAccount ke pada obyek WebSession. Seperti baris berikut ini:

WebSession ws = new WebSession( wa, request.getRemoteAddr());

Setelah WebAccount terikat pada obyek WebSession, maka langkah selanjutnya adalah mengikat obyek WebSession ini kedalam attribut session. Dengan baris kode seperti dibawah ini:

session.setAttribute( "onlineUser", ws );

perhatikan bahwa kita mengikat obyek WebSession dengan ID sebuah string yaitu onlineUser, ID inilah yang nantinya akan menjadi titik validasi attribut session pada halaman-halaman berikutnya.

Setelah peryataan else pada branching ke dua kita melihat ada sebuah fungsi jsp yang berguna melempar user ke halaman yang memang sudah di set didalam variabel URLtoDisplay.

Sampai disini kita sudah menyelesaikan algoritma form login sampai dengan validasinya. Tinggal bagaimana kita menggunakan session-tracking, dan algoritma menghancurkan session ketika user melakukan logout.

Untuk kode menghancurkan session kita bisa langsung melihat halaman logout.jsp, karena memang sedemikian mudah menghancurkan session yang ada. Sekarang kita akan membahas bagaimana session-tracking ini di pakai pada halaman-halaman selanjutnya.

Sebagai bahan pembahasan mari kita lihat kode pada halaman main.jsp dimana selanjutnya untuk membuat halaman lain yang dapat memeriksa session yang ada kita bisa meng – copy paste saja kode utama dari pemeriksaan session ini. Perhatikan potongan kode pada halaman main.jsp di bawah ini :

WebSession ws = (WebSession)session.getAttribute ("onlineUser");
WebAccount acc = null;
if( ws != null ) {
acc = ws.getWebAccount();
}
if (acc == null) {
response.sendRedirect(“logout.jsp”);
}


Pada code diatas kita dapat melihat bahwa pemeriksaan session di lakukan dengan cara menginisialisasi WebSession dengan mengambil nilai dari session yang ada. Kode :

WebSession ws = (WebSession)session.getAttribute ("onlineUser");

Kemudian obyek WebSession diperiksa, jika isi dari WebSession tidak sama dengan null maka obyek Account akan diambil dari obyek WebSession untuk diproses selanjutnya, karena dalam obyek WebAccount ada suatu method yang mengambil nilai-nilai dari obyek Account. Kemudian pemeriksaan dilanjutkan dengan cara memeriksa kembali jika obyek Account adalah Null maka user akan dilempar kembali ke halaman login.

Diatas bisa kita lihat bahwa pemeriksaan session hanya dilakukan oleh baris kode yang sedikit sekali sehingga kode diatas bisa copy paste kedalam halaman-halaman lain yang nantinya akan kita buat lagi, algoritmanya pun cukup sederhana, jika user tsb tidak valid maka lempar user ke halaman login, jika valid teruskan baris proses berikutnya, itu saja algoritma yang kita pakai dalam session-tracking kali ini.

Demikianlah pembahasan session-tracking dengan halaman jsp kita kali ini, dengan tulisan ini kita berharap kita dapat lebih memahami session dan penggunaannya sebagai sebuah session-tracking pada aplikasi web.

Ada catatan: jika kita langsung menggunakan file-file contoh yang kita lampirkan dalam tulisan ini, kita harus memperhatikan baris-baris package yang terdapat pada header file seperti yang ada pada file WebAccount.java dan WebSession.java. File-file tsb harus ditempatkan pada package yang benar sesuai dengan yang dideklarasikan pada header file-file tsb. Jika mendownload langsung, harus diperhatikan ekstension yang dipakai pada file tsb. Silahkan dicoba dan dikembangkan

Integrated JAVA

Beberapa Fitur Penting Dalam Bahasa Java

* Bahasa Sederhana

Java dirancang untuk mudah dipelajari dan digunakan dengan secara efektif. Java tidak mendukung fitur-fitur rumit seperti:
o Explicit pointer manipulation
o Implicit type casting
o Structures atau union
o Operator overloading
o Templates
o Header files
o Multiple inheritance

Rancangan bahasa Java telah berdasar teknologi yang telah terbukti dan dikembangkan di bahasa-bahasa pemrograman lainnya.
* Bahasa berororientasi objek

Java bukan turunan langsung dari bahasa pemrograman manapun, juga sama sekali tidak kompatibel dengan semuanya. Model objek Java adalah sederhana dan mudah dikembangkan, namun sejalan dengan itu, nilangan dan tipe data sederhana lain dianggap sebagai non-objek berkinerja tinggi.

OOP (object oriented programming) adalah cara ampuh dalam pengorganisasian dan pengembangan perangkat lunak. Pada OOP, program komputer sebagai sekelompok objek yang saling berinteraksi. Objek-objek ini ada secara secara independent yang mempunyai aturan-aturan berkomunikasi dengan objek lain dan untuk memerinthakan objek lain guna meminta informasi tertentu atau meminta objek lain mengerjakan sesuatu.
* Bahasa statically typed

Semua objek dideklarasikan terlebih dahulu sebelum digunakan. Melalui fitur ini kode program lebih dapat dioptmasi untuk menghasilkan program berkinerja tinggi.
* Bahasa dikompilasi

Sebelum menjalankan program di bahasa Java, program dikompilasi menggunakan Java Compiler. Kompilais akan menghasilkan file bytecode yang serupa fungsinya dengan file kode mesin. Program bytecode yang dihasilkan dapat di eksekusi di sembarang Java Interpreter. Java Interpreter membaca file bytecode dan menterjemahkan perintah bytecode menjadi perintah-perintah bahasa mesin yang dapat di eksekusi mesin.
* Bahasa yang aman

Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari Untrusted Java Code.
1. Bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan-aturan dasar bahasa Java
2. Class loader menangani pemuatan kelas Java ke runtime interpreter.
3. Manajer keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing.

Selain itu Java menyediakan beragam teknik pengaman, yaitu:
1. Bahasa dirancang untuk mempersulit eksekusi kode perusak
2. Program Java dikompilasi menajdi serangkaian bytecode.
3. Java mempunyai pengamanan terhadap applet.
* Bahasa indpenden terhadap platform

Platform independence merupakan kemampuan program bekerja di sistem operasi atau sistem komputer berbeda. Bahasa Java adalah bahasa yang secara sempurna tidak bergantung platform.
* Bahasa multithreading

Thread adalah menyatakan program komputer melakukan lebih dari satu tugas di satu waktu yang sama. Java menyediakan kakas untuk menulis program multithread, program mempunyai lebih dari 1 thread eksekusi pada saat yang sama sehingga memungkinkan program menagani beberapa tugas secara konkuren.
* Bahasa yang didukung garbage collector

Artinya, program tidak perlu menghapus sendiri objek-objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh pemrogram dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat di bahasa yang memungkinkanalokasi dinamis.
* Bahasa yang tegar

Java interpreter memeriksa semua akses sistem yang dilakukan. Program java tidak dapat menyebabkan crash terhadap sistem. Java mempunyai mekanisme exception handling yang ampuh. Exception-handling menyediakan cara untuk memisahkan antara bagian penanganan kesalahan dengan bagian kode normal sehingga menuntun ke struktur kode program yang lebih bersih dan menjadikan aplikasi lebih tegar.

sejarah perkembangan java

ava adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Dikembangkan oleh Sun Microsystem dan diterbitkan tahun 1995.

Bahasa pemrogramanJava pertama lahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan,James Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystem. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.

Pertemuan proyek berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo Park. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java Oak pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (touch screen), seperti pada PDA sekarang ini. Teknologi baru ini dinamai “*7″ (Star Seven). [More...]

Setelah era Star Seven selesai, sebuah anak perusahaan TV kabel tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue, Palo Alto.

Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian Internet sebagai medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, Internet masih merupakan rintisan, yang dipakai hanya di kalangan akademisi dan militer.

Mereka menjadikan perambah (browser) Mosaic sebagai landasan awal untuk membuat perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.

Pada sekitar bulan Maret 1995, untuk pertama kali kode sumber Java versi 1.0a2 dibuka. Kesuksesan mereka diikuti dengan untuk pemberitaan pertama kali pada surat kabar San Jose Mercury News pada tanggal 23 Mei 1995.

Sayang terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek, Eric Schmidt dan George Paolini dari Sun Microsystems bersama Marc Andreessen, membentuk Netscape.

Nama Oak, diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja “bapak java”, James Gosling. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi “Java”. Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling.
Versi Awal

Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:

*

java.lang: Peruntukan kelas elemen-elemen dasar.
*

java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
*

java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
*

java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
*

java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
* java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.

Kelebihan

* Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.

* OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis oebjek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.

* Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/Perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.

*

Bergaya C++, memiliki sintaks seperti bahasa pemrograman [C++] sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.

* Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).

Kekurangan

* Tulis sekali, perbaiki di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. UntukJ2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada MAc OS X.

* Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena koe jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft.NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.

* Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal(lebih spesifik lagi, Delphi dan Objectc Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

Pengenalan JAVA

Pengenalan Java

Dalam Java ada 2 jenis program berbeda, yaitu aplikasi dan applet. Keduanya merupakan bagian dari execute, dimana execute merupakan salah satu fase kelima dalam siklus program Java. Aplikasi adalah program yang biasanya disimpan dan di eksekusi dari komputer lokal. Applet adalah program yang biasanya disimpan pada komputer yang jauh,yang dikoneksikan pemakai lewat web browser. Komputer jauh menjalakan web server yang memberi layanan terhadap permintaan web browser.

Kebanyakan bahasa pemrograman modern berdiri di atas pustaka-pustaka kelas yang telah ada untuk mendukung fungsionalitas bahasanya. Pada bahasa Java, kelompok-kelompok kelas yang berkaitan erat dimasukkan dalam satu paket, bervariasi sesuai edisi Java.

Java adalah bahasa yang dapat dijalankan dimanapun dan di sembarang platform apapun, di beragam lingkungan: Internet, intranets, consumer electronic products, dan computer applications. Untuk beragam aplikasi yang dibuat dengan bahasa Java, Java dipaketkan dalam edisi-edisi berikut:

*

Java 2 Standar Edition (J2SE), J2SE menyediakan lingkungan pengembangan yang kaya fitur, stabil, aman, dan cross-platform. Edisi ini mendukung konektivitas basis data, rancangan user interface, masukkan/ keluaran (input/ output), dan pemrograman jaringan (network programming), dan termasuk sebagai paket-paket dasar bahasa Java.
*

Java 2 Enterpise Edition (J2EE), J2EE menyediakan tempat untuk membangun dan menjalankan multitier enterprise editions. J2EE berisi paket-paket di J2SE ditambah paket-paket untuk mendukung pengembangan Enterprise JavaBeans, Java Servlets, JavaServer Pages, XML, dan kendali transaksi yang fleksibel.
*

Java 2 Micro Edition (J2ME), J2ME selain menyedikan bahasa Java yang sama, unggul dalam portabilitas (kemampuan dapat dijalankan dimanapun), safe network delivery, seperti J2SE dan J2EE. Aplikasi-aplikasi dapat diskalakan (dimampukan) agar dapat bekerja dengan J2SE dan J2EE. J2ME adalah untuk beragam consumer electronic product, seperti pager, smart card, cell phone, handheld PDA, dan set-top box.

Ada 3 kombinasi kunci yang membuat Java menjadi teknologi yang secara fundamental berbeda dari yang lain, yang ada saat ini. Pertama, semua orang dapat menggunakan applet yang kecil, aman, dinamik, lintas-platform, aktif, dan siap dijalankan di jaringan sejak awal. Kedua, Java adalah bahasa pemrograman yang ampuh, memiliki kekuatan desain berorientasi objek dengan sintaks yang sederhana dan mudah dikenal. Ketiga, Java adalah kumpulan class object yang ampuh, yang melayani programmer dengan uraian yang jelas untuk banyak fungsi sistem umum, seperti pembuatan window, penggunaan jaringan, dan input/ output.

Tools Pemodelan Berorientasi Objek

Tools Pemodelan Berorientasi Objek

StarUMl merupakan tools yang bersifat OpenSource

Dari sekian banyak tools yang digunakan untuk memodelkan dalam membangun sebuah software kampus STIKOM Bali akhirnya memilih aplikasi StarUML. Pemilihan ini dilakukan dengan pertimbangan starUML ringan, open source, dan simbol-simbol yang digunakan mudah dimengerti. Selain tools StarUML yang dibangun dari Borland Delphi ini, Anda juga dapat menggunakan tools Jude, Poseidon, Rational Rose, ArgoUML, Visual Paradigm, dan masih banyak lagi tools yang dapat digunakan untuk memodelkan pra pembangunan perangkat lunak

• Rational Rose (www.rational.com)
• Together (www.togethersoft.com)
• Object Domain (www.objectdomain.com)
• Jvision (www.object-insight.com)
• Objecteering (www.objecteering.com)
• MagicDraw (www.nomagic.com/magicdrawuml)
• Visual Object Modeller (www.visualobject.com)
Star UML
Anda dapat mengunduh Aplikasi StarUML dengan cuma-cuma dari situs resminya . Download File »
E-books

Di link dibawah ini disediakan beberapa E-book dari pihak luar yang dapat digunakan sebagai ilmu tambahan. Sebagai referensi dalam mempelajari dan menggunakan UML, situs-situs yang merupakan pointer penting adalah:
• http://www.cetus-links.org/oo_uml.html
• http://www.omg.org
• http://www.omg.org/technology/uml/
• http://www.rational.com/uml
• http://www.uml.org/

*
"(Software Engineering) MIT Press - How To Design Programs"
"This introduction to programming places computer science in the core of a liberal arts education. Unlike other introductory books, it focuses on the program design process. This approach fosters a variety of skills critical reading, analytical thinking, creative synthesis, and attention to detail that are important for everyone, not just future computer programmers."
*
"Pengenalan UML dari Sri Dharwiyanti"
"Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak bisa lagi dibuat asal-asalan. Piranti lunak saat ini seharusnya dirancang dengan memperhatikan hal-hal seperti scalability, security, dan eksekusi yang robust walaupun dalam kondisi yang sulit. Selain itu arsitekturnya harus didefinisikan dengan jelas, agar bug mudah ditemukan dan diperbaiki, bahkan oleh orang lain selain programmer aslinya. Keuntungan lain dari perencanaan arsitektur yang matang adalah dimungkinkannya penggunaan kembali modul atau komponen untuk aplikasi piranti lunak lain yang membutuhkan fungsionalitas yang sama.."

*
Addison Wesley - The UML User Guide
"In The Unified Modeling Language User Guide, the original developers of the UML Grady Booch, James Rumbaugh, and Ivar Jacobson -- provide a tutorial to the core aspects of the language in a two-color format designed to facilitate learning. Starting with a conceptual model of the UML, the book progressively applies the UML to a series of increasingly complex modeling problems across a variety of application domains"

*
Addison Wesley - UML Reference Manual
"This book is intended to be a complete and useful reference to the Unified Modeling Language (UML) for the developer, architect, project manager, system engineer, programmer, analyst, contracting officer, customer, and anyone else who needs to specify, design, build, or understand complex software systems. It provides a full reference to the concepts and constructs of UML, including their semantics, syntax, notation, and purpose."

Pemrograman Berorientasi Objek Menggunakan Java

Pemrograman Berorientasi Objek Menggunakan Java
Object Oriented Programming using Java


Modul Kuliah I


Disusun Oleh
samsul arifin





http://www.geocities.com/mmsomantri
Teknik Elektro – Fak. Teknik
Universitas Diponegoro

Pemrograman Berorientasi Objek
Program Magister Sistem Informasi
Universitas AKI
Semarang @2004
Daftar Isi
Mengenal Java
Karakteristik Java
Pengenalan Objek: Paradigma Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek (PBO)
Abstraksi
Elemen sebuah Objek: state dan behaviour
Konsep Pemrograman Berorientasi Objek
Enkapsulasi
Pewarisan (Inheritance)
Polymorphism
Instalasi Java
Penjelasan Program
Identifier
Scope dari Variabel
Class
Object vs Class
Tipe Data
Tipe Data Primitive
Operator
Operator Penugasan
Operator Matematika
Operator Penaikan dan Penurunan
Operator Bitwise (manipulasi bit)
Kontrol Alur Eksekusi Program
Seleksi
If













Mengenal Java
Java adalah sebuah platform teknologi pemrograman yang dikembangkan oleh Sun Microsystem. Pertama kali di-release tahun 1991 dengan nama kode Oak. Kemudian tahun 1995 nama kode Oak diganti menjadi Java. Yang memotivasi Java dibuat adalah untuk membuat sebuah bahasa pemrograman yang portable dan independent terhadap platform (platform independent). Java dapat membuat perangkat lunak yang dapat ditanamkan (embedded) pada berbagai mesin dan peralatan konsumer, seperti handphone, microwave, remote control, dan lain-lain. Hal ini kemudian Java memiliki konsep yang disebut write once run anywhere.
Untuk membangun perangkat lunak menggunakan Java maka dibutuhkan Java Development Kit (JDK). JDK release pertama tahun 1996 yaitu JDK 1.1 yang diadopsi oleh Netscape. JDK terbaru sekarang (September-tahun 2004, ketika modul ini ditulis) adalah JDK 1.4.2_3. Semua program dan dokumentasi dari JDK ini bisa di-dwonload secara gratis disitus www.sun.java.com.
Karakteristik Java
Sintaks Java merupakan pengembangan dari bahasa C/C++. Berikut adalah beberapa hal tentang pemrograman Java:
1. Bersifat protable dan platform independent. Program Java yang telah ditulis akan dapat dieksekusi di mesin apapun dan sistem operasi apapun tanpa harus mengubah sedikitpun dari program tersebut.
2. memiliki garbage collection yang dapat mendealokasikan memori secara otomatis.
3. menghilangkan sifat pewarisan berganda yang terdapat pafa C++.
4. Mengurangi pointer aritmetika. Pengaksesan lokasi memori secara langsung dengan menggunakan pointer memungkinakn program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi kemungkinan kesalahan seperti ini penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.
5. memiliki array sejati.
6. mengurangi kerancuan antara pemberian nilai pada statement conditional.
Selain itu Java memiliki karakteristik:
1. Berorientasi Objek
2. Robust
3. Portable
4. Multithreading
5. Dinamis
6. Sederhana
7. Tredistribusi
8. Aman
9. Netral secar arsitektur
10. Interpreter
11. Berkinerja tinggi
12. free / bebas licence
Pengenalan Objek: Paradigma Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek (PBO)
Pemrograman Berorientasi Objek dimulai pertama kali dengan bahasa Simula yang dikembangkan di Scandinavia di pertengahan tahun 60-an. Simula utamanya digunakan untuk pemrograman simulasi, dimana adalah alamiah untuk memodelkan suatu entitas eksternal / diluar sistem perangkat lunak dan untuk memilih istilah-istilah untuk entitas-entitas tersebut dan tingkah lakunya. Simula memiliki sintak yang mirip dengan Pascal, tetapi programmer berfikir sedikit lebih berbeda ketika merancang suatu program yang akan dibuat dengan Simula. Sebuah ide dasar yang diperkenalkan dalam Simula adalah inheritance (pewarisan). Dalam Simula juga sudah dikenal objek (entitas) yang ada dalam sistem yang dimodelkan. Ada beberapa objek yang dikumpulkan kemudian disebut ”Class”, dan tugas utama dari seorang perancang program dengan Simula adalah menentukan behaviour dari class tersebut.
Setelah Simula, bahasa berikutnya yang diketahui mendukung untuk mengadopsi pemrograman berorientasi objek adalah Smalltalk yang dikembangkan tahun 70-an di Xerox PARC. Simula dan Smalltalk dirancang secara elegan, dan menawarkan sejumlah konep yang powerful yang memudahkan untuk dipelajari.
Abstraksi
Abstraksi adalah suatu cara melihat suatu objek dalam bentuk yang sederhana. Sebagai contoh jika kita melihat sepeda motor. Kita tidak perlu melihat susunan komponen mesin dan dukungan elektriknya yang cukup kompleks dan rumit, namun kita bisa melihat sepeda motor itu sebagai sebuah entitas / satuan tunggal (single entity) yang merupakan sebuah objek yang mempunyai sifat dan karakteristik tersendiri. Dengan pemikiran yang sederhana ini maka ketika kita mengendarai sepeda motor tersebut kita tidak perlu tahu betapa rumit komponen dan rangkaian yang menyusun sepeda motor. Karena untuk mengendarai sepeda motor yang perlu diketahui adalah bagaimana sepeda motor itu bisa dikendalikan.
Sehingga dengan konsep abstraksi ini kita bisa melihat suatu sistem yang kompleks yang terdiri dari subsistem-subsistem yang rumit dan banyak bisa dipandang menjadi sebuah paket sistem yang sederhana.
Pemahaman objek disekitar kita inilah yang akan mendasari pemahaman tentang pemrograman berorientasi objek. Yang paling penting adalah bagaimana mentransformasikan apa yang anda ketahui tentang suatu objek menjadi suatu program.
Elemen sebuah Objek: state dan behaviour
Setiap objek selalu memiliki state dan behaviour yang dapat mengubah state tersebut. Sebagai contoh manusia memiliki state: umur, tinggi, berat dan sebagainya. Demikian pula manusia memiliki behaviour: menua, meninggi, makan (menambah berat badan) dan sebagainya. Behaviour juga dapat tidak mengubah sama sekali state dari objek tersebut, baik secara langsung maupun tidak langsung. Secara sederhana state bisa dianggap sebagai suatu kata benda karena sifatnya yang pasif, benda tersebut tidak melakukan operasi tetapi justru menjadi target atau bahan operasi. Demikian pul behaviour bisa dianggap sebagai kata kerja, karena ia berfungsi untuk menujukkan operasi apa yang dilakukan.
Konsep Pemrograman Berorientasi Objek
Ciri khas pemrograman berorintasi objek adalah: Enkapsulasi, Pewarisan dan Polymorphism.
Enkapsulasi
Enkapsulasi adalah suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem sekaligus menyederhanakan penggunaan system itu sendiri. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface. Contoh kasus sepeda motor tadi, pada sistem pemindahan gigi transmisi, maka pengendara tidak perlu tahu detail dari bagaimana proses pemindahan gigi itu dilakukan oleh mesin, cukup tahu bagaimana menekan gigi transmisi itu. Pedal gigi transmisi yang diinjak pengendara itu merupakan interface (antar muka) pengendara dengan sistem transmisi sepeda motor.
Dalam bahasa Java segala sesuatu adalah objek (everything is object). Setiap baris program yang ditulis programmer adalah merupakan bagian dari sebuah objek. Programmer juga dapat membangun sebuah objek yang disusun oleh objek-objek kecil, dimana masing-masing objek yang menyusunnya memiliki fungsi sendiri-sendiri.
Pewarisan (Inheritance)
Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita tersusun secara hierarki berdasarkan class-nya masing-masing. Dari sini kemudian timbul suatu konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkkan cirri atau sifat dari class tersebut. Perhatikan contoh hirarki berikut ini:

Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya juga Anjing, kucing dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia. Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan didefinisikan dalam class binatang saja. Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga dengan class anjing, kucing dan monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya masing-masing. Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia diturunkan.
Polymorphism
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi. Contoh yang konkrit dalam dunia nyata yaitu mobil. Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama. Harus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama. Missal pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi bagaiman proses peningkatan kecepatan ini dapat berbeda-beda untuk setiap jenis mobil.
Instalasi Java
Pada bagian iniakan dibahas langkah-langkha untuk instalasi dan konfigurasi Java Development Kit (JDK):
1. Mulai dari windows explorer double click pada icon j2sdk-1.4.2.win didirektori yang berisi program-program pendukung Java.
2. berikutnya adalah tahapan-tahapan yang harus diperhatikan sesuai dengan kotak dialog yang muncul.
3. pada pilihan komponen-komponen, pilihlah sesuai dengan kebutuhan yang diinginkan untuk diinstalasi.
4. pilihlah juga direktori yang diinginkan untuk tempat instalasi JDK, misal di C:\Java.
5. setelah itu proses instalasi akan berlangsung, tunggulah hingga selesai.
6. jika instalasi telah lengkap / selesai maka akan muncul kotak dialog yang menunjukkan bahwa instalasi komplit.
7. langkah berikutnya, biasanya instalasi JDK akan menghasilkan library yang dibutuhkan masih dalam bentuk file yang terkompres, yaitu src.zip, maka yang harus dilakukan adalah men-decompress file itu dengan winzip atau extractor yang lainnya.
8. hal yang perlu disetting selanjutnya adalah classpath, java home dan path. Untuk setting ketiganya adalah sebagai berikut:
9. untuk system operasi windows 98 maka setting dilakukan di autoexec.bat dengan menuliskan sintaks sebagai berikut : misal java diinstalasi di c:\java
PATH = C:\java\bin
CLASSPATH = c:\java\lib\tools.jar;c:\java\ext\lib\rt.jar
JAVA_HOME = c:\java
Untuk system operasi windows 2000 atau windows XP, maka bisa di-setting melalui Environment Variable.
Sintaks Bahasa dan Tipe Data
Contoh program yang sederhana
Setelah mendapatkan gambaran yang cukup mengenai dasar-dasar PBO, kini saatnya memasuki dunia Java yang sebenarnya. Berikut adalah sebuah contoh program yang sederhana:

/*
contoh program Java sederhana
------------------------------------------
*/
class sederhana {
//awal program selau dimulai dari main()
public static void main(String[] args) {
System.out.println(“Hello …. Ini Program Pertamaku”);
}
}
Hal yang perlu dicatat:
Java bersifat case sensitive. Huruf besar dan kecil adalah berbeda dalam Java, karena itu pastikan anda mengetik kode diatas sama persis, tanpa mengubah besar kecil hurufnya. Selain itu dalam Java white space seperti karakter spasi, tab, pindah baris dan karakter lainnya yang berfungsi untuk memformat tampilan, tidak memiliki arti apapun selain untuk memudahkan programmer membaca kode yang ditulis. Karena itu karakter white space dapat digunakan sesukanya untuk memudahkn programmer membacanya.
Ketik program diatas dengan menggunakan text editor (misalnya notepad, atau di linux dengan gedit) dan simpan dengan nama sederhana.java. nama file ini harus sama dengan nama class. Kemudian lakukan kompilasi dengan mengetikkan perintah di c-prompt:
C:\javawork> javac sederhana.java

Jika berhasil, hasil kompilasi ini akan membangkitkan sebuah bytecode dengan nama file sederhana.class. untuk mengeksekusi file ini maka bisa menggunakan perintah:
C:\javawork> java sederhana
Hasil dari eksekusi tersebut maka akan menghasilkan tampilan :
Hello .... Ini Program Pertamaku
Penjelasan Program
Program diatas merupakan program paling sederhana, namun memiliki beberapa bagian penting.
/*
contoh program Java sederhana
------------------------------------------
*/
bagian ini merupakan bagian yang dikenal sebagai komentar. Komentar dalam Java seperti halnya dalam pemrograman yang lainnyabukan merupakan bagain dari program. Karenanya komentar ini tidak akan dikompilasi oleh compiler Java dan tidak akan mempengaruhi alur program. Komentar ini lebih diperuntukkan untuk memperjelas source code yang ditulis sehingga kode program dapat lebih mudah untuk diteliti ualng atau dibaca. Komentar harus selalu ditulis diantara tanda /* dan */.
class sederhana
baris ini mendeklarasikan sebuah class dengan nama sederhana. Jika diperhatikan keseluruhan deklarasi class ini diawali dengan { dan diakhir dengan }. Hal ini berarti bahwa semu yang berada didalam tanda tersebut merupakan bagain dari class ini. Penjelasan tentang class dibahas secara tersendiri dibagian class setelah pembahasan ini.
//awal program selau dimulai dari main()
baris kode ini juga merupakan komentar. Perbedaan dengan /* */ adalah bahwa ia hanya berlaku untuk satu baris ini saja dan semua kata-kata setelah tanda // adalah komentar.
public static void main(String[] args) {
baris ini mendeklarasikan suatu method dengan nama main. Nama main disini merupakan suatu keharusan dalam Java karena Java akan mencari method yang bernama main ini sebagai awal eksekusi program. Keyword public merupakan access specifier yang menentukan visibility level dari method ini. Public berarti method ini dapat diakses darimanapun dari luar class. Method main() akan dipanggil dari luar oleh runtime Java pada saat program akan dieksekusi sehingga access specifier-nya harus menggunakan public. Keyword static memungkinkan method main() diapnggil tanpa harus terlebih dahulu membuat instance dari class sederhana. Ini diperlukan karena method main() akan dieksekusi sebelum objek apapun dibuat dalam memori. Keyword void berarti bahwa method main() tidak mengembalikan nilai apapun setelah diapnggil/dieksekusi.
System.out.println(“Hello …. Ini Program Pertamaku”);
Baris ini memiliki beberapa bagian penting:
 System adalah nama dari salah satu class standar yang dimiliki oleh Java
 Out merupakan anggota dari class system dan juga merupakan objek tersendiri. Out mewakili standard output stream yang dalam hal ini digunakan layar komputer. Seperti halnya method main() diatas, objek out juga dideklarasikan dengan menggunakan keyword static didalam classnya sehingga ia dapat langsung dipanggil tanpa perlu terlebih dahulu membuat instance dari class system.
 Prinltn merupakan method yang terdapat dalam objek out. Berfungsi untuk mencetak keluaran ke standard output. Mthod ini juga mencetak karakter pindah baris. Untuk mencetak tanpa pindah baris bisa menggunakan print().
 “Hello …. Ini Program Pertamaku” merupakan parameter darimethod println yang diterima oleh internal method ini dan dicetak ke standard output yang dalam hal ini adalah layer computer anda. Oleh karena itu sewaktu menjalankan program ini dilayar computer akan tercetak : Hello …. Ini Program Pertamaku.
 Tanda ; diperlukan untuk menandai akhir dari suatu statement / pernyataan / perintah.
Identifier
Identifier merupakan nama yang digunakan untuk menamai class, interface, variable dan method. Programmer dapat menentukan sendiri identifier yang akan digunakan. Hanya yang perlu diperhatikan adalah:
- tidak ada batasan panjang, jadi identifier dapat dibuat dengan panjang karakter yang tidak terbatas.
- Identifier harus diawali dengan huruf, underscore / garis bawah ( _ ) atau lambang dollar ($). Untuk selebihnya dapat digunakan karakter apapun, kecuali karakter yang digunakan sebagai operator oleh Java (*, +, -, /).
- Bukan merupakan keyword yang telah dikenal oleh Java.
Pada contoh sebelumnya sederhana merupakan identifier yang digunakan untuk menamai class yang dibuat.
Reserved Word / keywords
Ini merupakan kata-kata yang telah dikenal oleh Java dengan memiliki arti khusus dalam program. Berikut ini adalah daftar kata-kata tersebut.
Table 1 Daftar Kata (Keyword) yang dikenal dalam Java
abstract boolean break byte case
catch char Class const continue
default do Double else extends
false final finally float For
goto if Implements import instanceof
int interface long native new
null package Private protected public
return short Static strictfp super
switch synchronized this throw throws
transient true Try void volatile
while
Variabel
Variable merupakan lokasi penyimpanan dalam memori. Setiap variable memiliki kemampuan menyimpan suatu informasi sesuai dengan tipe data yang dideklarasikan untuk variable tersebut. Sintaks pendeklarasian varaibel secara umum adalah sebagai berikut:
Tipe_data nama_variable;
Tipe_data meliputi semua tipe data yang dikenal dalam Java, sedangkan nama_variabel adalah identifier yang akan digunakan untuk menunjuk ke variable tersebut didalam program.
Contoh :
int hitung;
kode diatas mendeklarasikan suatu varaibel bernama hitung dengan tipe data integer.
Scope dari Variabel
Dalam Java, secara garis besar scope dari variabel dapat dibedakan menjadi dua bagian, yaitu variabel yang dideklarasikan didalam blok class (dikenal juga sebagai property) dan variabel yang dideklarasikan didalam blok kode.
Variabel yang dideklarasikan dalam blok class akan dikenal dibagian manapun dama blok kelas tersebut. Variabel ini juga bahkan dapat diakses dari luar class dengan menggunakan referensi objek atau instance dari class tersebut, namun hal ini akan dipengaruhi oleh penggunaan access specifier. Access specifier akan dibahas berikutnya.
Pada dasarnya variabel dapat dideklarasikan didalam blok kode manapun. Yang dimaksud dengan blok kode disini adalah bagian dari kode yang dimulai dengan karakter { dan ditutup dengan karakter }. Blok ini menentukan scope dari suatu variabel, yaitu apakah suatu variabel akan dikenal dibagian lain dari program atau tidak. Kita juga bisa membuat nested blok, yaitu blok yang berada didalam blok lainnya. Aturan sederhana yang perlu diingat hanyalah pendeklarasian suatu variabel dalam suatu blok kode akan dikenal oleh nesteted blok yang ada didalam blok kode tersebut, namun tidak berlaku sebaliknya.
Class
Dalam dunia nyata, kita sering memiliki beberapa objek yang berjenis sama, contohnya, sepeda motor yang kita miliki hanya satu dari banyak sepeda motor di dunia. Menggunakan istilah orientasi objek, kita bisa mengatakan bahwa sepeda motor itu adalah sebuah instance dari sebuah class dari objek-objek yang diketahui sebagai sepeda motor. Sepeda motor-sepeda motor umumnya memiliki beberapa status (state) (seperti: gear, 2roda, rantai, jok) dan tingkah laku (behaviour) (merubah gear, dan rem). Namun setiap sepeda motor adalah independen / bebas dan bisa berbeda dari sepeda motor lainnya.
Ketika membuat sepeda motor, pabrik / industri pembuatnya mengambil keuntungan dari kenyataan bahwa sepeda motor memiliki karakteristik yang sama, sehingga untuk membuat sepeda bisa mulai dari satu cetak biru / blue print. Sangat tidak efisien jika membuat sepeda dengan blue print yang berbeda-beda untuk setiap sepeda.
Dalam perangkat lunak berorientasi objek dimungkinkan untuk memiliki banyak objek yang sama yang menggabungkan karakteristik-karakteristik seperti: sudut, employee records, video clips, dan seterusnya. Seperti pabrik sepeda motor kita dapat mengambil keuntungan dari kenyataan bahwa objek-objek dari jenis yang sama adalah serupa dan kita dapat membuatnya dari blue print yang sama. Blue print perangkat lunak itulah yang disebut Class.
Definisi: sebuah Class adalah sebuah blue print , atau prototipe, yang mendefiniskan variabel-variabel dan metode-metode yang umum untuk semua objek dari njenis tertentu.

Class untuk sepeda motor tadi akan mendefinisikan variabel-variabel instan yang diperlukan untuk memuat karakteristik-karakteristik dari objek yang bersangkutan. Class akan dideklarasikan dan menyediakan implementasi-implementasi untuk metode-metode instan yang akaan memungkinkan untuk pengendara sepeda motor tersebut mengubah gear, rem, dan mengubah pedal gas, sebagaimana ditunjukkan pada gambar berikut.

setelah kita membuat kelas sepeda motor, kita dapat membuat sejumlah objek sepeda motor dari Class tersebut. Ketika kita membuat sebuah Class instan, maka system akan mengalokasikan sejumlah memori yang cukup untuk objek-objek dan semua variable instan. Tiap istan mendapat copy-nya sendiri dari semua instan variable yang didefinisikan dalam Class.

tambahan untuk variable instant, class-class dapat mendefinisikan class variable. Sebuah class varaibel memuat informasi yang digabung dengan semua instan dari class. Contohnya, anggaplah sepeda motor memiliki sejumlah gear. Dalam kasus ini, mendefinisikan sebuah variabel instan untuk memegang angka gear adalah sesuatu yang tidak efisien; tiap instan akan memiliki copy dari variabelnya, tetapi nilainya akan sama untuk semua instan. Dalam situasi tersebut, kita dapat mendefinisikan sebuah class variable yang memuat angka-angka gear. Semua instan menggabungkan semua variable ini. Jika satu objek mengubah variabelnya, maka ini akan mengubah semua objek tipe tersebut. Sebuah class juga mendeklarasikan metode class-nya. Kita dapat mengambil sebuah metode class secara langsung dari class, dimanapun kita dapat mengambil metode class pada suatu instan tertentu.

Object vs Class
Kita mungkin memperhatikan bahwa gambaran-gambaran dari objek-objek dan class-class kelihatan hampir sama. Dan lebih mendalam, perbedaan antara class dan objek sering membingungkan. Dalam kenyataannya, hal ini telah nyata bahwa class bukanlah sendirinya objek yang mereka gambarkan. Sebuah blue print dari sebuah sepeda motor adalah bukan sepeda motor. Namun, hal ini sedikit sulit untuk membedakan class-class dan objek dalam system perangkat lunak. Ini memang terpisah karena objek-objek dalam perangkat lunak adalah model elektronik dari model yang ada dalam dunia nyata atau konsep abstraknya. Tetapi hal ini juga karena istilah “objek” kadang-kadang digunakan untuk menunjuk baik class maupun instan-nya.
Tipe Data
Setiap variabel harus memiliki tipe data. Sebuah variabel tipe datanya menentukan nilai dari variabel yang dapat memuat dan operasi-operasi yang dapat dilakukannya. Contohnya sebuah tipe data integer (int) dapat memuat hanya nilai-nilai integer (baik positif maupun negative). Kita dapat melakukan operasi aritmetik seperti penjumlahan atau perkalian dan lainnya pada variable integer.
Bahasa pemrograman java memiliki 2 katagori tipe data: primitive dan reference. Sebuah variabel tipe primitive memuat sebuah nilai tunggal dengan format dan ukuran yang sesuai tipenya: sebuah angka, sebuah karakter, atau sebuah nilai boolean, contohnya sebuah nilai integer 32 bit data dalam sebuah format diketahui sebagai komplemen 2, sebuah nilai char 16 bit data yang di format sebagai sebuah karakter Unicode, dan seterusnya.

tabel berikut disusun berdasar kata kunci, semua tipe data primitive yang didukung oleh Java, ukuran dan formatnya, dan sebuah penjelasan ringkas untuk masing-masing tipe data.
Tipe Data Primitive
Kata Kunci Keterangan Size/Format
(integers)
byte Byte-length integer 8-bit two's complement
short Short integer 16-bit two's complement
int Integer 32-bit two's complement
long Long integer 64-bit two's complement
(real numbers)
float Single-precision floating point 32-bit IEEE 754
double Double-precision floating point 64-bit IEEE 754
(other types)
char A single character 16-bit Unicode character
boolean A boolean value (true or false) true or false
Purity Tip: dalam bahasa yanglain, format dan ukurannya tergantung pada platform dimana program tersebut dijalankan. Hal yang lain, bahasa pemrograman Java menspesifikasi ukuran dan format dari tipe data primitifnya. Dari sini kita tidak perlu khawatir tentang ketergantungan sistem.
Berikut adalah beberapa conoth tipe data:
Contoh Tipe Data
178 Int
8864L long
37.266 double
37.266D double
87.363F float
26.77e3 double
' c ' char
True boolean
False boolean
Secara umum, sederet digit dengan tanpa titik decimal (dalam notasi Internasional) atau koma decimal (notasi Indonesia) ditipekan sebagai sebuah integer. Kita juga dapat menspesifikasi sebuah integer Long dengan menempatkan 'L' atau 'l' setelah angkanya. 'L' ditunjukkan agar tidak membingungkan dengan didgit '1'. Sebuah deretan digit dengan ada sebuah titik desimalnya adalah bertipe double. Kita juga dapat menspesifikasi sebuah float dengan menempatkan 'f' atau 'F' setelah angka. Sebuah karakter harfiah adalah sebuah karakter Unicode tunggal diantara tanda petik. Dua karakter Boolean adalah true dan false (benar dan salah)
Arrays, class, dan interface adalah tipe-tipe referensi. Nilai dari variable tipe referensi, berbeda dengan tipe primitive, adalah sebuah referensi untuk (sebuah alamat dari) nilai atau kumpulan nilai dari nilai-nilai yang ditunjukkan oleh variable.
Sebuah referensi (reference) disebut sebagai sebuah pointer, atau alamat memory dalam bahasa lain. Bahasa pemrogrman Java tidak mendukung penggunaan alamat secara eksplisit seperti bahasa pemrograman lain lakukan.. You use the variable's name instead.

Operator
Operator merupakan simbol yang biasa digunakan dalam menulis suatu penyataan (statement) dalam bahasa pemrograman apapun. Operator akan melakukan suatu operasi terhadap operand sesuai dengan fungsinya. Contoh operasi antara lain penjumlahan, pengurangan, pembagian dan sebagainya.
3 + 8 * 4
3 8 4 adalah operand
+ * adalah Operator
Operator Penugasan
Operator ini adalah operator yang paling sederhana dan hanya dilambangkan dengan karakter ’=’. Operator ini digunakan untuk menugaskan suatu nilai ke suatu variabel. Contoh :
int hitung = 4;
yang unik dari operator ini dalam Java adalah kita dapat menggunakan operator ini secara berantai dalam suatu ekspresi, contoh:
int a, b, c;
a = b = c = 99;
Operator Matematika
Operator ini digunakan dalam ekspresi matematika. Berikut ini daftar operator matematika yang dikenal dalam Java:
Operator Keterangan
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Modulus (sisa bagi)
Operator Penaikan dan Penurunan
Operator ini digunakan untuk menaikkan atau menurunkan suatu nilai integer (bilangan bulat) sebanyak satu satuan, dan hanya digunakan pada variabel.
Operator Keterangan
++ Penambahan dengan nilai satu
-- Pengurangan dengan nilai satu
Sebagai contoh :
x = x + 1;
y = y -1;
dapat ditulis menjadi:
x++ ;
y-- ;
atau
++x ;
--y ;
Operator Bitwise (manipulasi bit)
Operator ini digunakan untuk operasi secara langsung terhadap bit yang menyusun suatu bilangan. Daftar operator bitwise dalam Java adalah sebagai berikut :
Operator Arti
- Bitwise negasi (NOT)
& Bitwise AND
| Bitwise OR
^ Bitwise XOR
>> Geser kanan
>>> Geser kanan tanpa mempertahankan sign (dengan nilai 0 sebagai pengisi bit paling kiri)
<< Geser kiri
Karena operasi bitwise memanipulasi hingga ke bagian yang paling kecil dari suatu bilangan, yaitu bit maka diperlukan penjelasan lebih lanjut tentang bagaimana Java menyimpan reprsentasi suatu bilangan dalam bit, terutama sekali untuk representasi bilangan negatif.
Java menyimpan representasi dari suatu bilangan sebagai bilangan basis dua (binary) yang tersusun atas bit. Contoh bilangan binary : 000100111. angka 0 dan 1 yang membentuk bilangan binary inilah yang disebut bit.
Kontrol Alur Eksekusi Program
Sebagai bahasa pemrograman, Java memiliki cara untuk mengontrol alur eksekusi program bergantung pada kondisi yang telah dietentukan. Secara garis besar, kontrol alur eksekusi ini dapat dikelompokkan ke dalam tiga bagian besar, yaitu seleksi, iterasi / perulangan, dan jump.
Seleksi
Terdapt dua kunci (keyword) yang dapat digunakan untuk melakukan seleksi dalam Java, yaitu if dan switch. Keduanya menentukan alur eksekusi program maman yang akan dijalankan pada suatu percabangan.
If
Secara umum penggunaan if mengikuti ketentuan sebagai berikut:
If (kondisi)
Pernyataan1;
Else
Pernyataan2;
Kondisi harus berupa ekspresi yang menghasilkan nilai Boolean (true atau false), sedangkan pernyataan1 dan pernyataan2 merupakan kode atau blok kode yang akan dieksekusi sesuai dengan nilai yang dihasilkan oleh kondisi. Jika kondisi bernilai true maka pernyataan1 yang akan dieksekusi dan sebaliknya jika nilai kondisi adalah false maka pernyataan2 lah yang akan dieksekusi.
Dalam penerapannya penggunaan else bersifat opsional, boleh menggunakannya atau tidak sesuai dengan kebutuhan, seperti berikut:
If (kondisi)
Pernyataan;
Dengan demikian pernyataan hanya akan dieksekusi jika kondisi bernilai true.
If – else bertingkat (nested)
Pada prinsipnya penggunaan if – else adalah sama, namun untuk yang bertingkat dapat mengkombinasikan penggunaannya menjadi bertingkat seperti berikut:
If (kondisi1)
Pernyataan1;
Else if (kondisi2)
Pernyataan2;
Else if (kondisi3)
Pernyataan3;
:
:
else if (kondisiN)
pernyataanN;
else
pernyataanLain;
switch
penggunaan switch sebenarnya hamper sama dengan if bertingkat, dimana kita bisa menggunakan switch untuk percabangan yang berjumlah lebih darisatu. Karena itu switch bisa dijadikan alternative lain dibandingkan menggunakan if bertingkat. Secara umum bentuk penggunaannya sebagai berikut:
switch (ekspresi) {
case nilai1: pernyataan1;
break;
case nilai2: pernyataan2;
break;
case nilai3: pernyataan3;
break;
:
:
case nilaiN: pernyataanN;
break;
default : pernyataanDefault;
}


Class dalam Java
Class adalah inti dan hal yang penting dalam java. Class adalah konstruksi logika dimana seluruh program bahasa java akan dibuat karena class mendefinsikan bentuk dan sifat dari sebuah objek.
Bentuk umum Class
Class nama_class {
Type instance_variable1;
Type instance_variable2;
// …
Type instance_variableN;
Type nama_method1(daftar_parameter) {
// isi method
}
Type nama_method2(daftar_parameter) {
// isi method
}
//...
Type nama_methodN(daftar_parameter) {
// isi method
}
Data atau variabel-variable yang didefinisikan dalam class disebut instance variable. Kode dimuat didalam sebuah method. Variable dan method yang didefinsikan didalam class disebut anggota class (members of class). Pada kenamyakan class, instance variable dimanfaatkan dan diakses oleh method yang didefinsikan oleh class itu. Maka method-lah yang menentukan bagaimana sebuah data class dapat digunakan.
Variable-variable yang didefinsikan dalam class disebut varaibel instance karena tipa instant dari class (objek dari class) memuat copy-an dari varaibel-variable tersebut.
Data dari sutau objek adalah terpisah dan unik darai data untuk objek yang lainnya.
Semua method memiliki bentuk umum yang sama seperti main() yang telah sering kita gunakan di modul I dan II. Tetapi class Java tidak selalu harus memakai method main().
Class sederhana
Class balok {
double panjang;
double lebar;
double tinggi;
}
class box memiliki 3 variable instat yaitu panjang, lebar dan tinggi. Hal yang penting adalah bahwa deklarasi class (seperti diatas) hanya untuk membuat sebuah template.
Untuk membuat sebuah objek balok yang sebenarnya digunakan statemen sebagai berikut :
balok baloksaya = new balok() ;
// membuat sebuah objek balok yang disebut baloksaya
setelah dieksekusi maka baloksaya akan menjadi instan dari balok. Setiap kali kita membuat sebuah instan dari class, maka kita akan membuat sebuah objek membuat sebuah objek yang meng-copy setiap varaibel instance yang didefinisikan didalam class. Untuk objek baloksaya yang dibuat maka akan memiliki copy-an variabel instant panjang, lebar dan tinggi. Untuk mengakse variabel tersebut maka digunakan operataor titik (dot). Operator titik akan membuat link ke nama objek dengan nama sebuah variabel instan.
Contoh:
baloksaya.panjang = 100;
berikut adalah conoth programnya:
class balok {
double panjang;
double lebar;
double tinggi;
}
class demobalok {
public static vodi main(String[] args) {
balok baloksaya= new balok();
double volume;

baloksaya.panjang = 20;
baloksaya.lebar = 12;
baloksaya.tinggi = 25;
volume = baloksaya.panjang * baloksaya.lebar * baloksaya.tinggi;
System.out.println(“ Volume adalah : “ + volume);
}
}
hal penting: mengubah varaibel instant suatu objek tidak akan mempengaruhi variable instant objek yang lain. Dan copy-an dari sebuah objek bisa lebih dari satu. Contoh:
class balok {
double panjang;
double lebar;
double tinggi;
}
class demobalok2 {
public static void main(String[] args) {
balok baloksaya1 = new balok();
balok baloksaya2 = new balok();
double volume;

baloksaya1.panjang = 20;
baloksaya1.lebar = 12;
baloksaya1.tinggi = 25;
baloksaya2.panjang = 100;
baloksaya2.lebar = 120;
baloksaya2.tinggi = 250;
volume = baloksaya1.panjang * baloksaya1.lebar * baloksaya1.tinggi;
System.out.println(“ Volume adalah : “ + volume);
volume = baloksaya2.panjang * baloksaya2.lebar * baloksaya2.tinggi;
System.out.println(“ Volume adalah : “ + volume);
}
}
Mendeklarasikan Objek
Contoh pada program diatas kita telah menggunakan:
balok baloksaya = new balok();
statemen diatas sebenarnya menggabungkan dua tahap yaitu:
balok baloksaya ; // mendeklarasikan referensi ke objek
baloksaya = new balok(); // mengalokasikan ke sebuah objek
mengenal method
pembicaraan tenag method dalam Java sangatlah luas, karena Java memberi method-method itu fleksibiltas dan kekuatan. Bentuk umum sebuah method adalah :
type nama_method (daftar_parameter) {
// isi method
}
Menambah sebuah method ke dalam objek balok
Berikut kita akan coba menambah sebuah method ke program yang telahkita tulis diatas:
class balok {
double panjang;
double lebar;
double tinggi;
void volume() {
System.out.print(“ Volume adalah : “ );
System.out.println(panjang*lebar*tinggi);
}
}
class demobalok3 {
public static void main(String[] args) {
balok baloksaya1 = new balok();
balok baloksaya2 = new balok();

baloksaya1.panjang = 20;
baloksaya1.lebar = 12;
baloksaya1.tinggi = 25;
baloksaya2.panjang = 100;
baloksaya2.lebar = 120;
baloksaya2.tinggi = 250;
baloksaya1.volume();
baloksaya2.volume();
// untuk latihan tambah satu objek baloksaya
}
}
Kembalian (return) sebuah nilai
Bagaimana jika bagian lain dari program ingin tahu juga nilai volume itu tetapi tidak ingin menampilkannya (mencetaknya). Contoh penggunaan return:
class balok {
double panjang;
double lebar;
double tinggi;
double volume() {
return panjang*lebar*tinggi;
}
}
class demobalok4 {
public static void main(String[] args) {
balok baloksaya1 = new balok();
balok baloksaya2 = new balok();
double vol;

baloksaya1.panjang = 20;
baloksaya1.lebar = 12;
baloksaya1.tinggi = 25;
baloksaya2.panjang = 100;
baloksaya2.lebar = 120;
baloksaya2.tinggi = 250;
vol = baloksaya1.volume();
System.out.println(“Volume = “ + vol);
vol = baloksaya2.volume();
System.out.println(“Volume adalah = “ + vol);
}
}
menambah sebuah method untuk mendapatkan parameter
untuk mendapatkan sebuah method lebih berguna,maka method bisa digunakan untuk memodifikasi parameter. Contoh:
int square()
{
return 10 * 10:
}
hasil dari method diatas hanya bisa untuk menghitung 10*10 = 100, sedangkan untuk parameter lain tidak bisa. Maka jika method tersebut dirubah menjadi:
int square (int i )
{
return i * i;
}
sekarang method square(0- tersebut bisa digunakan untuk menghitung nilai berapapun yang diinputkan. Pada bagian lain dari lanjutan program diatas bisa diberikan input data:
int x, y;
x = square(5);
x = square(9);
y = 2;
x = square(y);
contoh program balok diatas juga bisa menggunakan parameter yang umum, seperti contoh berikut:
class balok {
double panjang;
double lebar;
double tinggi;
double volume() {
return panjang*lebar*tinggi;
}
void setDimensi(double p, double l, double t) {
panjang = p;
lebar = l;
tinggi = t;
}
}
class demobalok5 {
public static void main(String[] args) {
balok baloksaya1 = new balok();
balok baloksaya2 = new balok();
double vol;

baloksaya1.setDimensi(20, 15, 25);
vol = baloksaya1.volume();
System.out.println(“Volume = “ + vol);

baloksaya2.setDimensi(200, 150, 250);
vol = baloksaya2.volume();
System.out.println(“Volume = “ + vol);
}
}
Konstruktor
Sebuah konstruktor menginisialisasi sebuah objek untuk kreasi/perubahan. Kontruktor memiliki nama yang mirip seperti class tempat kontsruktor berada dan secara syntac mirip dengan sebuah method.
Sementara sampai sini, nanti yang lain nyusul…………

PEMPROGRAMAN OBYEK MENGGUNKAN JAVA

PEMROGRAMAN BERBASIS OBYEK
(JAVA)

LOGIN ADMIN
• Beberapa komputer depan :
– Login : teknisi
– Password : tcdua
• Beberapa komputer belakang (putih) :
– Login : teknisi / administrator
– Password : elkabong
SHERE MATERI JAVA
• Pilih run pada Start ketikkan :
\\10.252.250.23
• Jika gagal :klik Local Area Connection Status, pilih properti, pilih IP, pilih properti,rubah ip xx.xx.250.xx
• Jika berhasil, buka folder MatrikulasiJava folder Day1

MATERI MATRIKULASI OOP
1. Dasar Pemrograman dan Algoritma
2. Pemrograman prosedural vs pemrograman berorientasi obyek
3. Mengorganisasi program menjadi element yang disebut sebagai class, dan bagaimana class ini digunakan untuk membuat obyek.
3. Struktur class: tingkah laku (behavior) dan atribut (attributes).
4. Konsep OOP
5. Cara kompile dan menjalankan aplikasi Java
6. Membedakan antara valid dan invalid identifiers.
7. Mengetahui Java technology keywords.
8. Mengetahui 8 tipe data primitif.
9. Mendefinisikan literal value untuk tipe data numerik dan tekstual.
10. Mendefinisikan primitive dan reference variable.
11. Mendeklarasikan variabel bertipe class.
12. Mengetahui nilai inisialisasi default.
13. Konversi dan casting tipe data primitif.
14. Unary operator
15. Arithmetic operator
16. Comparison operator
17. Short – Circuit operator
18. Conditional operator : ?
19. Assignment operator
20. Operator lain : new, instance of
21. Urutan pemrosesan
22. Flow Control dan Looping
23. Array



TAHAPAN PEMBUATAN PROGRAM

1. Mengerti permasalahan yang akan diselesaikan.
– Input layout
– Proses-proses
– Output layout
2. Menganalisa penyelesaian masalah.
3. Membuat algoritma dan flowchart.
4. Menulis program.
5. Melakukan testing setelah program selesai.
6. Membuat dokumentasi

TAHAPAN PEMBUATAN PROGRAM
1. Mendefinisikan masalah dan menganalisanya.Mencakup: tujuan pembuatan program, parameter yang digunakan,fasilitasyang disediakan, algoritmayang diterapkan dan bahasa program yang digunakan.
2. Merealisasikan dengan langkah-langkah sebagai berikut :



ALGORITMA
• Adalah inti dari ilmu komputer.
• Algoritma adalah urutan-urutan dari instruksi atau langkah-langkah untuk menyelesaikan suatu masalah.
• Algoritma adalah blueprint dariprogram.
• Sebaiknya disusun sebelum membuat program.
• Kriteria suatu algoritma:
- Ada input dan output
- Efektivitas dan efisien
- Terstruktur

CONTOH ALGORITMA 1
Mengirim surat kepada teman:
1. Tulis surat pada secarik kertas surat.
2. Ambil sampul surat.
3. Masukkan surat kedalam sampul.
4. Tutup sampul surat menggunakan perekat.
5. Jika kita ingat alamat teman tersebut, maka Tulis alamat pada sampul surat.
6. Jika tidak ingat, lihat buku alamat, kemudian Tulis alamat pada sampul surat.
7. Tempel perangko pada surat.
8. Bawa surat ke kantor pos untuk diposkan

Menghitung nilai Keuntungan Produksi
1. Definisi variabel:
– jual, jumlah, harga, awal, hargasat, biaya dan untung
2. Pasang konstanta nilai dari:
– harga, hargasat dan awal
3. Masukkan nilai jumlah
4. Hitung:
– jual=jumlah*harga
– biaya=awal+jumlah*hargasat
– untung=jual-biaya
5. Tampilkan untung
Menghitung nilai Keuntungan Produksi
1. Definisi variabel:
– jual, jumlah, harga, awal, hargasat, biaya dan untung
2. Pasang konstanta nilai dari:
– harga, hargasat dan awal
3. Masukkan nilai jumlah
4. Hitung:
– jual=jumlah*harga
– biaya=awal+jumlah*hargasat
– untung=jual-biaya
5. Tampilkan untung
Menghitung Tinggi Pohon :
d = jarak orang dengan pohon
p = jarang orang dengan penggaris
h = panjang penggaris
t = tinggi pohon


FLOWCHART
Algoritma
• Definisikan variabel: p, t, d, h
• Masukkan nilai p, d dan h
• Hitung: t=h*d/p
• Tampilkan t
• Bagan-bagan yang mempunyai arus yang menggambarkan langkah- langkah penyelesaian suatu masalah.
• Merupakan cara penyajian dari suatu algoritma.
• Ada2 macamFlowchart :

–System Flowchart : urutan proses dalam system dengan menunjukkan alat media input, output serta Jenis media penyimpanan dalam proses Pengolahan data.
–Program Flowchart : urutan instruksi yang digambarkan dengan symbol tertentu untuk memecahkan masalah dalam suatu program.


SIMBOL-SIMBOL FLOWCHART
• Flow Direction Symbols (Simbol penghubung alur)
• Processing Symbols (Simbol proses).
• Input-output Symbols (Simbol input-output)
PEMBUATAN FLOWCHART
• Tidak ada kaidah yang baku.
• Flowchart = gambaran hasil analisa suatu masalah
• Flowchart dapat bervariasi antara satu pemrogram dengan pemrogram lainnya.
• Secara garis besar ada 3 bagian utama:
–Input
–Proses
–Output
• Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga jalannya proses menjadi singkat.
• Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas.
• Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END


PEMROGRAMAN BERBASIS OBYEK
• Fungsi dan data bukan menjadi dua hal yang terpisah.
• Fungsi dan data menjadi satu kesatuan yang disebut sebagai obyek aktif.
• Cara pandang -> program adalah serangkaian obyek yang bekerjasama untuk menyelesaikan suatu problem

PROSEDURAL VS OOP
Prosedural
• Focusing on the way a computer handles tasks
OOP
• Focusing on the task you are using the computer for

Apakah Obyek ?
• Semua benda yang ada di dunia nyata dapat dianggap sebagai obyek.
• Contoh : rumah, mobil, sepeda motor, gelas, komputer, meja dll.

Karakteristik Obyek
Setiap obyek memiliki atribut sebagai status (state).
Setiap obyek memiliki tingkah laku (behavior)
Contoh: obyek sepeda
• Memiliki atribut (state) : pedal, roda, jeruji, warna, jumlah roda.
• Memiliki tingkah laku (behavior) : kecepatanya menaik, kecepatannya menurun, perpindahan gigi sepeda.
• Penggambaran pemrograman berorientasi obyek = penggambaran pada dunia nyata.
• Pada pemrograman berorientasi obyek:
- State disimpan pada variabel
- Tingkah laku disimpan pada method
Apakah Class?
• Definisi class: merupakan template untuk membuat obyek.
• Definisi class: merupakan prototipe / blue prints yang mendefinisikan variabel – variabel dan method – method secara umum.
• Obyek merupakan hasil instansiasi dari suatu kelas.
• Proses pembentukan obyek dari suatu class disebut dengan instantiation.
• Obyek disebut juga instances.
Attributes
• Definisi atribut : adalah data yang membedakan antara obyek satu dengan yang lain.
• Contoh: VolcanoRobot à A volcanic exploration vehicle, mempunyai atribut sebagai berikut:
– Status à exploring, moving, returning home
– Speed à in miles per hour
– Temperature, in Fahrenheit degrees
• Dalam class atribut disebut sebagai variabel.
• Instance variable: adalah atribut untuk tiap obyek dari class yang sama.
• Tiap obyek mempunyai dan menyimpan nilai atributnya sendiri.
• Jadi tiap obyek dari class yang sama boleh mempunyai nilai yang sama atau beda.

• Class variable: adalah atribut untuk semua obyek yang dibuat dari class yang sama.
• Semua obyek mempunyai nilai atribut yang sama.
• Jadi semua obyek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
Behavior

• Behavior / tingkah laku adalah hal – hal yang bisa dilakukan oleh obyek dari suatu class.
• Behavior dapat digunakan untuk mengubah nilai atribut suatu obyek, menerima informasi dari obyek lain, dan mengirim informasi ke obyek lain untuk melakukan suatu task.
• Contoh: VolcanoRobot
– Check current temperature
– Begin a survey
– Report its current location
• Dalam class, behavior disebut juga sebagai methods
• Methods: adalah serangkaian statements dalam suatu class yang menghandle suatu task tertentu.
• Cara obyek berkomunikasi dengan obyek lain adalah dengan menggunakan method.
Konsep Dasar OOP
• Enkapsulasi (Encapsulation)
• Penurunan (Inheritance)
• Polimorfisme (Polymorphism)
Enkapsulasi
• Definisi enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang terlindungi serta menyediakan interface untuk mengakses variabel tersebut.
• Variabel dan method yang dipunyai suatu obyek, bisa ditentukan hak aksesnya
• Contoh: jam tangan
• Penting sekali untuk mengetahui waktu.
• Cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
• Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari struktur dalam bahasa C
Pewarisan
• Definisi : merupakan pewarisan atribut dan method dari sebuah class ke class lainnya.
• Class yang mewarisi à superclass
• Class yang diwarisi à subclass
• Subclass bisa berlaku sebagai superclass bagi class lainya à multilevel inheritance.
Contoh : terdapat class sepeda dan sepeda gunung.
– Sepeda à superclass
– Sepeda gunung à subclass
– Sepeda gunung memiliki variabel dan method yang dimiliki oleh sepeda.
• Prinsip : Persamaan-persamaan yang dimiliki oleh beberapa kelas dapat digabungkan dalam sebuah class induk sehingga setiap kelas yang diturunkannya memuat hal-hal yang spesifik untuk kelas yang bersangkutan
Keuntungan pewarisan
• Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass à memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
• Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan tingkah laku dan state secara umum
Single dan multiple inheritance
• C à multiple inheritance
• Suatu class diperbolehkan untuk mempunyai lebih dari satu superclass.
• Variabel dan method yang diwariskan merupakan kombinasi dari superclass-nya.

• Java à single inheritance
• Suatu class hanya boleh mempunyai satu superclass.
Multilevel inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain
Polimorfisme
Definisi: Kemampuan suatu obyek untuk mempunyai lebih dari satu bentuk
Teknologi Java2Platform
• Enterprise Edition(J2EE)
• Standard Edition (J2SE)
• Micro Edition (J2ME)
What is the Java Technology?
• A programming language
• A development environment
• An application environment
• A deployment environment
A programming language
Sintak bahasa pemrograman java mirip dengan bahasa C++
A development environment
Teknologi java menyediakan: kompiler, interpreter, documentation generator, class file packaging
An application environment
• Merupakan standalone program yang tidak memerlukan web browser untuk mengeksekusi program (applet).
A deployment environment
• Terdapat 2 deployment environment utama:
– JRE (Java Runtime Environment) yang menyediakan class-class yang tersimpan dalam package-package, komponen GUI class, dan Collection API.
– Web browser à banyak web browser komersial yang menyediakan lingkungan Java Technology interpreter dan runtime.

tutorial qt java

Tutorial Qt (bagian 1)
The limits of my language means the limits of my world.
-- Ludwig Wittgenstein (Tractatus Logico-Philosophicus)
Seri tulisan ini mencoba menghantarkan topik seputar pemrograman aplikasi GUI di Linux dengan menggunakan Qt. Untuk itu, diasumsikan bahwa pembaca telah memahami C++, pemrograman berorientasi objek (OOP), dan tidak asing dengan GNU C/C++ Compiler untuk pengembangan aplikasi Unix. Sebagai gambaran kasar, mula-mula akan diulas dahulu mengenai penggunaan Qt dan kelak akan perlahan-lahan menuju KDE.
Membangun aplikasi berbasis GUI di Unix mengharuskan penggunaan Application Programming Interface (API) dari X Window. Bertahun-tahun yang silam, hanya API ini yang tersedia. Tidak heran bahwa API yang lengkap namun relatif ekstensif dan berat menyebabkan tidak semua programmer mempunyai cukup energi untuk mempelajarinya. Dus, mengembangkan aplikasi untuk X bukanlah hal yang menyenangkan bagi tiap orang.
Belakangan muncul toolkit yang memang dirancang untuk memudahkan pembuatan aplikasi dengan bertindak selaku lapis abstraksi, selain juga untuk memicu upaya konsistensi look-and-feel antara satu program dengan program lainnya. Dengan menggunakan toolkit, API X Window yang rumit menjadi disembunyikan melalui sekumpulan fungsi-fungsi yang lebih sederhana. Lebih jauh, setelah kehadiran toolkit, muncul pula desktop environment seperti CDE, KDE, dan GNOME yang meningkatkan derajat abstraksi pengembangan aplikasi menjadi lebih dari sekedar user interface semata.
Qt adalah toolkit yang digunakan untuk membangun aplikasi berbasis GUI di Unix. Qt dikembangkan oleh Trolltech [1] dan menjadi fondasi untuk K Desktop Environment (KDE), selain juga telah dipergunakan dalam berbagai aplikasi komersial. Qt digolongkan sebagai software open-source karena dilisensi dual: dengan General Public License (GPL) dan Qt Public License (QPL). Khusus untuk tulisan ini, yang akan dibahas adalah Qt versi 2.x.
Qt dirancang untuk pengembangan aplikasi dengan C++. Oleh karenanya, Qt berisi sekumpulan kelas-kelas yang tinggal dimanfaatkan saja, mulai dari urusan antarmuka (user interface), operasi input ouput, networking, timer, template library, dan lain-lain. Qt mendukung penuh Unicode (mulai versi 2.0) sehingga urusan internationalization (I18N) dan encoding teks bukan menjadi masalah. Walaupun merupakan free software, Qt terbukti stabil dan lengkap. Dibandingkan toolkit lain, Qt juga mudah untuk dipelajari dan dipersenjatai dengan dokumentasi dan tutorial yang ekstensif dan rinci.
Untuk dapat mempelajari Qt, syarat utama adalah tersedia Qt pada sistem Anda. Bila tidak, maka Qt bisa didownload terlebih dahulu dari situs web Qt di Trolltech.com. Selanjutnya, Anda bisa mengikuti instruksi yang diberikan untuk melakukan compile dan instalasi. Qt dirancang cocok untuk digunakan di lingkungan Unix, oleh karenanya Anda seharusnya tidak akan menemui hambatan dalam proses kompilasi.
Cara lain yang lebih menghemat waktu dan tenaga (dan juga bandwidth) adalah dengan mengambil Qt yang sudah dipaket dalam RPM atau DEB. Tentunya paket yang diambil harus sesuai dengan distribusi Linux yang digunakan. Lokasi paling gampang untuk memperoleh Qt versi RPM adalah pada server FTP untuk KDE 2, hal ini karena Qt 2.x selalu tersedia bersama KDE [2].
Hello World !
Sudah menjadi tradisi, bahwa untuk memulai mempelajari penggunaan sebuah bahasa pemrograman maupun library, contoh aplikasi pertama selalu yang berkenaan dengan "Hello World". Mengikuti kebiasaan ini, berikut adalah program berbasis Qt untuk menampilkan pesan yang sangat terkenal ini:
1: // qhello.cpp - Qt Hello world
2:
3: #include
4: #include
5:
6: int main( int argc, char **argv )
7: {
8: QApplication app( argc, argv );
9: QString msg( "Hello world !" );
10:
11: QLabel txt( "Hello world !", 0 );
12: txt.resize( 250,50 );
13: txt.setAlignment( Qt::AlignCenter );
14:
15: app.setMainWidget( &txt );
16: txt.show();
17:
18: return app.exec();
19: }
Listing 1: qhello.cpp
Mengasumsikan Qt terinstal di /usr/lib/qt2, maka contoh program di atas dapat dikompilasi dengan perintah berikut ini:
g++ -o qhello qhello.cpp -lqt -I /usr/lib/qt2/include -L /usr/lib/qt2/lib
(Belakangan Makefile akan digunakan untuk memudahkan proses kompilasi sehingga tidak perlu melalui perintah yang panjang seperti di atas).
Pada perintah di atas, option -I menentukan lokasi pencarian file header yang akan di-include dalam program sementara option -L untuk memberi informasi lokasi library untuk proses link, dalam hal ini adalah libqt.so. Bisa dilihat, bahwa dengan option -l, contoh program ini dilink dengan library qt.
Bila tidak ada yang salah, maka program qhello akan dihasilkan dan siap dijalankan (dengan ./qhello). Anda memperoleh hasil kira-kira seperti:

Gambar 1: Screenshot qhello
Tentu saja Anda mungkin mendapatkan hasil yang berbeda karena baik dekorasi window dan style dari program akan sangat tergantung kepada window manager yang digunakan. Walaupun demikian, secara fungsional, program qhello ini tidak akan berubah. Contoh di atas adalah qhello yang dijalankan pada KDE dengan theme dari SuSE. Berikut adalah qhello yang berjalan pada WindowMaker dan GNOME:

Gambar 2: Screenshot qhello pada WindowMaker

Gambar 3: Screenshot qhello pada GNOME
Untuk memberikan gambaran dengan jelas akan apa yang terjadi, berikut akan diuraikan penjelasan mengenai source code program qhello ini.
Dua kelas utama yang digunakan di sini adalah QApplication dan QLabel. Yang pertama adalah untuk membangun sebuah aplikasi generik, sedangkan yang kedua dibutuhkan sebagai elemen user interface untuk menampilkan label, yaitu sebuah teks dalam window. Kedua kelas ini terlebih digunakan dengan meng-include-kan file header yang bersesuaian, yaitu qapplication.h dan qlabel.h.
Objek app adalah dari kelas QApplication. Dapat dilihat di sini bahwa QApplication selalu diinisialisasi dengan memberikan seluruh argumen program. Lebih rinci mengenai hal ini bisa dirujuk ke dokumentasi Qt.
Objek txt adalah label yang berasal dari kelas QLabel. Objek ini dikonstruksi dengan memberikan string yang akan ditambilkan. Argumen kedua pada konstruktornya, yaitu 0, bermakna bahwa QLabel ini tidak diikatkan ke objek lainnya.
Fungsi setMainWidget diperlukan agar label yang barus saja dibuat dijadikan widget utama window aplikasi. Dalam terminologi Qt, widget berarti objek yang berhubungan dengan user interface. Label adalah hanya salah satu jenis widget. Menu, button, kotak dialog, dan lain-lain adalah juga widget. Walaupun tidak harus, biasanya sebuah aplikasi memiliki widget utama, yang dalam hal ini diset dengan setMainWidget. Perhatikan bahwa setelahnya fungsi show perlu dipanggil secara eksplisit. Tanpa ini, widget tidak akan tampak (alias hidden).
Signal dan Slot
Salah satu karakteristik dari Qt adalah penggunaan signal dan slot. Karena Qt dibangun dengan C++, maka baik signal maupun slot terintegrasi sebagai bagian dari kelas-kelas yang terdapat pada Qt. Lebih jauh, signal/slot menjadi bagian dari object model yang digunakan Qt. Object model ini didesain khusus untuk memudahkan pemrograman aplikasi yang berbasis GUI.
Sebuah signal menandakan bahwa sesuatu telah terjadi. Signal dibangkitkan manakala terjadi interaksi antara user dan program, seperti misalnya ketika user mengklik mouse atau mengetikkan sesuatu di keyboard. Signal juga bisa dipicu oleh hal-hal yang merupakan internal program, misalnya karena sebuah timer yang diaktifkan sebagai alarm.
Slot adalah fungsi yang berespon terhadap signal tertentu. Untuk dapat melakukan hal ini, sebelumnya slot harus dikoneksikan dengan signal yang dimaksud.
Contoh program berikut menggambarkan penggunaan signal dan slot yang sederhana. Coba Anda cermati listing pogramnya berikut ini:
1: // qclick.cpp - Qt Click-to-quit example
2:
3: #include
4: #include
5:
6: int main( int argc, char **argv )
7: {
8: QApplication app( argc, argv );
9:
10: QPushButton button( "Click to quit !", 0 );
11: button.resize(250,50);
12:
13:
14: QObject::connect( &button, SIGNAL(clicked()),
15: &app, SLOT(quit()) );
16:
17: app.setMainWidget( &button );
18: button.show();
19:
20: return app.exec();
21: }
Listing 2: qclick.cpp
Anda dapat mencoba dahulu untuk menjalankan program qclick. Lakukan compile dengan perintah berikut ini:
g++ -o qclick qclick.cpp -lqt -I /usr/lib/qt2/include -L /usr/lib/qt2/lib
Tampilan program jika dieksekusi kira-kira seperti berikut:

Gambar 4: Screenshot qclick
Program qclick tidak banyak berbeda dengan contoh sebelumnya. Di sini dimanfaatkan QPushButton untuk menghasilkan sebuah button pada window aplikasi, karenanya digunakan file header qpushbutton.h. Objek button dikonstruksi dengan memberikan string yang menjadi caption dari button tersebut.
Berbeda dengan contoh sebelumnya, program qclick ini sudah dapat sedikit berespons. Bila tombol "Click to quit" diklik, maka program akan segera diakhiri. Dapat dilihat pada source codenya, bahwa hal ini terjadi karena signal QPushButton::clicked() dari objek button dihubungkan dengan slot QApplication::quit() dari object app. Dalam dokumentasi Qt disebutkan bahwa QPushButton akan memicu (emit) signal clicked() kalau user mengklik tombol tersebut. Sementara itu, slot QApplication bernama quit(), manakala dieksekusi akan menyebabkan program utama berakhir.
Jelas bahwa fungsi QObject::connect() akan menyambungkan satu signal dengan sebuah slot tertentu. Baik signal maupun slot dapat saja dimiliki oleh objek yang berbeda. Pada contoh di atas, signal QPushButton::clicked() dihubungkan dengan slot QApplication::quit().
Pagelaran Widget
User-interface yang hanya dibangun dari tombol (alias button) semata tentu saja tidak menarik. Pada ulasan di bawah, akan ditunjukkan beberapa widget yang paling sering digunakan untuk sebuah program aplikasi yang umum. Beberapa di antaranya adalah label, edit box, list box, check box, radio button, dan slider. Mari perhatikan sama-sama screenshot dari program ilustratif Gallery:

Gambar 5: Screenshot Program Gallery
Untuk menghasilkan program Gallery ini, dibutuhkan beberapa file yaitu gallery.cpp, main.cpp, dan sebuah Makefile.
Bagaimana widget-widget tersebut dirangkaikan menjadi satu ? Lihat file header gallery.h dan file gallery.cpp di bawah ini:
1: // gallery.h
2:
3: #ifndef __GALLERY_H
4: #define __GALLERY_H
5:
6: #include
7:
8: class Gallery: public QWidget
9: {
10: Q_OBJECT
11:
12: public:
13: Gallery();
14:
15: private:
16: };
17:
18: #endif
Listing 3: gallery.h
Perhatikan bahwa pada pendefinisiannya, digunakan Q_OBJECT yang berarti kelas ini menjadi bagian dari object model yang digunakan Qt. Dengan demikian, file header ini harus diproses dengan Meta Object Compiler (moc).
1: // gallery.cpp - Gallery of some Qt widgets
2:
3: #include "gallery.moc"
4:
5: #include
6: #include
7: #include
8: #include
9: #include
10: #include
11: #include
12: #include
13:
14: // this is pixmap for a button
15: const static char * floppy_xpm[] = {
16: "16 16 11 1",
17: " c None",
18: ". c #5D5D5D",
19: "+ c #000000",
20: "@ c #303030",
21: "# c #FFFFFF",
22: "$ c #800080",
23: "% c #DCDCDC",
24: "& c #C3C3C3",
25: "* c #000080",
26: "= c #0000FF",
27: "- c #585858",
28: "++++++++++++++++",
29: "+@+$=$*$=$*$=+@+",
30: "+#+##########+++",
31: "+@+##########+@+",
32: "+@+#$*$=$*$=#+@+",
33: "+@+##########+@+",
34: "+@+#$*$=$*$*#+@+",
35: "+@+##########+@+",
36: "+@@++++++++++@@+",
37: "+@@@@@@@@@@@@@@+",
38: "+@@@++++++++@@@+",
39: "+@@+#%#%%%&%+@@+",
40: "+@@+%@-&%&%&+@@+",
41: "+@@+#@-%&%&&+@@+",
42: "++@+%&%&%&&&+@@+",
43: " +++++++++++++++"};
44:
45:
46: Gallery::Gallery(): QWidget( 0, "Widget" )
47: {
48: setCaption("Gallery of Widgets");
49: resize( 260, 330 );
50:
51: // label
52: QLabel* name_label = new QLabel ( "Name", this );
53: name_label->move ( 5, 5 );
54:
55: // edit box
56: QLineEdit* name_editbox = new QLineEdit ( "(type your name)", this );
57: name_editbox->move ( 50, 7 );
58: name_editbox->resize ( 200, 24 );
59:
60: // another label
61: QLabel* prof_label = new QLabel ( "Profession", this );
62: prof_label->move ( 5, 35 );
63:
64: // combo box
65: QComboBox* prof = new QComboBox ( this );
66: prof->insertItem ( "Engineer" );
67: prof->insertItem ( "Student" );
68: prof->insertItem ( "Professor" );
69: prof->resize ( 180, 24 );
70: prof->move ( 70, 35 );
71:
72: // some check boxes
73: QButtonGroup* bg = new QButtonGroup ( 3, Qt::Vertical, "Known Unix systems", this );
74: QCheckBox* linux_check = new QCheckBox ( "Linux", bg );
75: QCheckBox* bsd_check = new QCheckBox ( "BSD", bg );
76: QCheckBox* solaris_check = new QCheckBox ( "Solaris", bg );
77: bg->resize ( 250, 100 );
78: bg->move( 5, 70 );
79: linux_check->setChecked( TRUE );
80:
81: // radio buttons in a group, arranged horizontally
82: QButtonGroup* browserbg = new QButtonGroup ( 3, Qt::Horizontal,
83: "Browser of choice", this );
84: QRadioButton* netscape_button = new QRadioButton( "Netscape", browserbg );
85: QRadioButton* konq_button = new QRadioButton( "&Konqueror", browserbg );
86: QRadioButton* mozilla_button = new QRadioButton( "Mozilla", browserbg );
87: browserbg->resize ( 250, 50 );
88: browserbg->move( 5, 180 );
89: konq_button->setChecked( TRUE );
90:
91: // horizontal slider
92: QSlider* vol = new QSlider ( QSlider::Horizontal, this );
93: vol->resize ( 250, 30 );
94: vol->move ( 5, 240 );
95: vol->setRange ( 0, 100 );
96: vol->setValue ( 35 );
97: vol->setTickmarks ( QSlider::Below );
98:
99:
100: // normal button
101: QPushButton* normal_button = new QPushButton ( "Normal &Button", this );
102: normal_button->move( 5, 290 );
103:
104: // toggle button
105: QPushButton* toggle_button = new QPushButton ( "Toggle", this );
106: toggle_button->setToggleButton( TRUE );
107: toggle_button->move( 110, 290 );
108:
109: // button with picture
110: QPushButton* pic_button = new QPushButton ( "Floppy", this );
111: pic_button->resize( 29, 29 );
112: pic_button->move( 220, 290 );
113: pic_button->setPixmap( floppy_xpm );
114:
115: }
Listing 4: gallery.cpp
Penting diingat bahwa widget diturunkan dari kelas QWidget. Kelas ini memiliki beberapa fungsi dasar penanganan widget yang umum. Dua diantaranya digunakan di gallery.cpp, yaitu move dan resize, masing-masing untuk memindahkan widget ke lokasi yang baru dan untuk memodifikasi ukuran (dimensi) widget tersebut. Untuk lebih rincinya, silakan merujuk ke dokumentasi Qt [3].
Sebuah label adalah teks statik yang diletakkan begitu saja, biasanya untuk memberikan keterangan widget lain. Pada contoh di atas misalnya, terdapat dua buah label: "Name" dan "Profession" yang masing-masing menjelaskan sedikit makna dari widget-widget di sebelahnya. Label dibentuk dengan kelas QLabel (dan akibatnya membutuhkan file qlabel.h supaya ter-include-kan). Contoh pembuatan QLabel pada listing program yang diberikan relatif sederhana, menggunakan konstruktor:
QLabel::QLabel ( const QString & text, QWidget * parent, const char * name, WFlags f )
Di sini text menyatakan string yang ditampilkan sementara parent selalu menunjuk ke widget yang menjadi empunya label tersebut. Berikut-berikutnya akan jelas bahwa ketika mengkonstruksi sebuah widget dari sebuah window, argument parent hampir selalu this. Baik name dan flag f adalah opsional dan dapat diabaikan untuk sementara.
Perhatikan bahwa sebuah label dapat saja terdiri atas beberapa baris. Bagaimana cara membuatnya ? Cukup dengan mengatur text pada konstruktornya. Bila misalnya text ini adalah "dua baris\n teks, nih!", maka hasilnya adalah string yang disajikan dalam dua baris, semata-mata karena adanya karakter '\n' yang berfungsi sebagai line feed. Anda dapat mencobanya sendiri kalau penasaran.
Sebuah edit box adalah kotak isian yang lazimnya dimanfaatkan untuk menerima masukan dari user. Edit box ini biasanya hanya untuk string dalam satu baris saja. Dengan Qt, edit box dibuat menggunakan kelas QLineEdit dari file header qlineedit.h. Panjang maksimum string yang bisa dimasukkan adalah 32767 karakter.
Konstruksi QLineEdit malah lebih sederhana dibandingkan QLabel:
QLineEdit::QLineEdit ( QWidget * parent, const char * name )
Lagi-lagi di sini parent menentukan pemilik objek QLineEdit yang dibuat dan diisi this). Argumen name, karena tidak wajib, maka diacuhkan saja.
Kalaulah Anda cermat, maka bentuk konstruktor yang sebenarnya digunakan oleh program Gallery adalah:
QLineEdit::QLineEdit ( const QString & contents, QWidget * parent, const char * name )
Tambahan argument contents menentukan isian awal dari edit box ini. Dengan cara ini, edit box yang baru dibuat tidak akan kosong begitu saja, seperti ditunjukkan pada contoh program yang diberikan.
Sebuah combo box juga berfungsi untuk menerima masukan dari user sebagaimana edit box. Bedanya adalah bahwa combo box biasanya menawarkan pilihan untuk user, biasanya dengan tombol panah di ujungnya yang jikalau diklik akan mendaftarkan item-item yang dapat dipilih. Bahkan, bisa jadi sebuah combo box cuma mengijinkan masukan dari pilihan item yang tersedia dan tidak memungkinkan input sembarang.
Bagaimana menghasilkan combo box ? Gunakan kelas QComboBox dari file header qcombobox.h dengan pilihan konstruktor:
QComboBox::QComboBox ( bool rw, QWidget * parent=0, const char * name )
atau yang lebih pendek:
QComboBox::QComboBox ( QWidget * parent=0, const char * name )
Argumen rw menentukan apakah combo box yang dibuat bersifat read-and-write. Bila diisi FALSE, maka yang terjadi adalah read-only, yaitu bahwa combo box hanya menerima input dari pilihan item yang disediakan saja.
Salah satu fungsi anggota paling penting dari QComboBox adalah insertItem. Sebagaimana dicontohkan pada gallery.cpp di atas, fungsi ini digunakan untuk menambahkan (atau lebih tepatnya menyisipkan) item baru pada daftar pilihan combo box tersebut.
Dua widget lain yang tidak kalah seringnya dipergunakan adalah radio button dan check box. Masing-masing sering digunakan untuk mengaktifkan atau menonaktifkan pilihan tertentu, dengan perbedaan kecil bahwa umumnya radio button berlaku untuk pilihan yang eksklusif (hanya satu di antaranya yang aktif). Masing-masing widget ini dibentuk dari kelas QRadioButton (file header qradiobutton.h) dan kelas QCheckBox (file header qcheckbox.h). Perhatikan konstruktornya di bawah ini:
QRadioButton::QRadioButton ( const QString & text, QWidget * parent, const char * name )
QCheckBox::QCheckBox ( const QString & text, QWidget * parent, const char * name )
Sering sekali secara visual sejumlah radio button atau check box digabungkan dalam kelompok tertentu. Dengan Qt, hal ini dapat dilakukan menggunakan kelas QButtonGroup dengan konstruktor:
QButtonGroup::QButtonGroup ( int strips, Orientation orientation, QWidget * parent, const char * name )
(Jangan lupa untuk menyertakan file header qbuttongroup.h).
Di sini strip menentukan jumlah radio button atau check box yang dikelompokkan, orientation mengatur orientasi, bisa bernilai Qt::horizontal atau Qt::vertical, masing-masing untuk arah mendatar dan tegak.
Dengan mengumpulkan radio button atau check box dalam sebuah grup, maka argument parent pada konstruksi objeknya tidak bisa lagi menunjuk this. Hal ini jelas misalnya dari pembuatan check box dengan caption "Linux" pada contoh program yang diberikan:
QCheckBox* linux_check = new QCheckBox ( "Linux", bg );
Jelas bahwa parent kini adalah bg yang tidak lain tidak bukan adalah objek dari kelas QButtonGroup yang digunakan untuk mengumpulkan tiga buah check box, masing-masing dengan caption "Linux", "BSD", dan "Solaris". Hal yang sama berlaku juga untuk group Browser, yang kali ini membawahi tiga buat radio button yang tersusun horizontal.
Fungsi setChecked dari kelas QRadioButton dan QCheckBox dapat digunakan untuk mengaktifkan ataupun menonaktifkan widget yang dimaksud. Khusus untuk radio button, bila salah satunya (dalam kelompok yang sama) diaktifkan (setChecked( TRUE )), maka yang lainnya akan otomatis dinonaktifkan.
Widget penting lainnya adalah slider, yaitu sebuah penggeser yang memberikan nilai berdasarkan sebuah skala ukuran yang tetap. Slider semacam ini cocok misalnya untuk pengatur volume audio. Qt menyediakan kelas QSlider (dan file header qslider.h) untuk menghasilkan objek berupa sebuah slider. Simak konstruktornya:
QSlider::QSlider ( Orientation orientation, QWidget * parent, const char * name )
Di sini orientation menentukan apakah slider tersebut mendatar (bila bernilai QSlider::Horizontal) ataukah tegak (untuk QSlider::Vertical).
Setelah objek slider dikonstruksi, fungsi setRange dapat dijalankan untuk mengatur rentang nilai yang bisa diatur dari penunjuk slider. Menempatkan penunjuk pada posisi awal bisa dilakukan dengan fungsi setValue.
Widget terakhir yang ditunjukkan program Gallery adalah button. Terdapat tiga variasi dari button yang disajikan, yaitu normal, toggle, serta button dengan bitmap. Button yang normal tentulah tidak asing lagi, mengingat button ini telah diperkenalkan sebelumnya (program qclick). Button dengan kemampuan toggle dibuat dengan cara memanggil fungsi setToggleButton( TRUE ). Jadi cukup sederhana dan tidak ada tambahan sesuatu yang lain. Pun button dengan pixmap tidak lain adalah button biasa yang diberikan bitmap, kali ini dengan fungsi setPixmap. Program Gallery mencontohkan pixmap (berupa gambar disket) dalam format XPM, namun sesungguhnya Qt mendukung pula format-format lain seperti BMP, PNG, GIF, dan JPEG.
Sekedar informasi tambahan, XPM adalah format pixmap untuk X. Tidak umum seperti GIF, BMP, JPEG, dan PNG yang merupakan format data binary, XPM adalah dalam teks ASCII biasa (Anda dapat memodifikasinya dengan editor teks). Hal ini menyebabkan file *.xpm dapat begitu saja di-include-kan dalam program dan pixmapnya bisa langsung digunakan (dan karenanya menjadi pilihan tepat untuk sebuah icon ataupun pixmap kecil pada button). Untuk mengkonversi dari format lain ke XPM ataupun sebaliknya, paling gampang menggunakan GIMP [4].
Patut dicatat bahwa file program gallery.cpp memerlukan file gallery.moc. File terakhir yang akan di-include-kan dalam program ini dapat dengan menjalankan MOC (Meta Object Compiler). Akan dilihat bahwa file .moc akan dihasilkan secara otomatik pada saat kompilasi.
File main.cpp akan merangkaikan user interface yang dibuat sebelumnya ke dalam sebuah program utuh, sebagaimana ditunjukkan berikut ini:
1: // main.cpp - part of Gallery
2: #include :
3: #include "gallery.h"
4:
5: int main( int argc, char ** argv )
6: {
7: QApplication a( argc, argv );
8: Gallery g;
9: a.setMainWidget( &g );
10: g.show();
11: return a.exec();
12: }
Listing 5: main.cpp
Melakukan Kompilasi
Melakukan proses compile dan link secara manual akan amat menjemukan. Dengan bantuan make, semuanya bisa menjadi lebih sederhana. Makefile yang diberikan di sini relatif generik dan bisa diadaptasi dengan mudah untuk program-program Qt lainnya:
1: QTDIR = /usr/lib/qt2
2: QTLIB = $(QTDIR)/lib
3: QTINCLUDE = $(QTDIR)/include
4: QTMOC = $(QTDIR)/bin/moc
5:
6: TARGET = gallery
7: OBJECTS = gallery.o main.o
8: MOCS = gallery.moc
9:
10: CC = g++
11: CFLAGS = -Wall -O2
12: LIBS = -lqt
13:
14: $(TARGET): $(MOCS) $(OBJECTS)
15: $(CC) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) -L$(QTLIB) -I$(QTINCLUDE)
16:
17: %.o: %.cpp
18: $(CC) $(CFLAGS) -I$(QTINCLUDE) -c $< -o $@
19:
20: %.moc: %.h
21: $(QTMOC) $< -o $@
22:
23: clean:
24: rm $(OBJECTS) $(TARGET) $(MOCS)
Listing 6: Makefile untuk Gallery
Bila Anda masih kurang jelas tentang penggunaan Makefile, silakan merujuk ke manual GNU Make [5] (atau dengan menggunakan perintah info make). Bagi yang ingin lebih canggih lagi, kelak akan digunakan autoconf dan automake sebagai pengganti Makefile
Sekarang kompilasi program Gallery dengan mengetikkan: make. Bila tidak ada sesuatu yang salah, maka akan segera tercipta file executable gallery. Jika file ini dieksekusi, akan tampil sebuah window yang kira-kira serupa sebagaimana screenshot yang telah ditunjukkan.
Bagi yang teliti, dari Makefile di atas, terlihat aturan (rule) yang digunakan untuk menghasilkan file gallery.moc yang sudah disinggung sebelumnya. Secara manual, file ini bisa dihasilkan dengan menjalankan perintah:
moc gallery.h -o gallery.moc
Utility moc sendiri merupakan bagian dari Qt dan sudah tersedia ketika Qt pertama kali diinstal.
Selamat ber-Qt-ria !
Tanya Jawab
Tanya: Mengapa Qt dan bukan GTK ?
Jawab: Karena Qt adalah fondasi dari KDE. Bila sebaliknya Anda ingin menguasai pemrograman di GNOME, maka gunakanlah GTK. Lepas dari hal ini, karena Qt sendiri tersedia untuk Unix/X11, Windows, dan Mac(segera), maka Qt adalah pilihan tepat untuk mengembangkan aplikasi yang cross-platform. Keuntungan Qt lainnya adalah API yang beragam dan mudah dipelajari, serta ketersediaan dokumentasi yang lengkap.
Tanya: Bila saya membuat program dengan Qt, apakah program ini hanya dapat dijalankan di KDE ?
Jawab: Tidak. Selama terdapat library Qt pada sistem yang digunakan, maka program tersebut tetap dapat dijalankan, tidak perduli apakah user menggunakan KDE, GNOME, WindowMaker, twm, atau window manager lainnya.
Tanya: Setahu saya KDE 2 menggunakan Qt 2.x. Kalau demikian, apakah program saya yang juga berbasis Qt 2.x bisa dijalankan di KDE 1.x ?
Jawab: Bila Anda cukup cermat, berdasarkan pertanyaan sebelumnya, maka jawabannya adalah: ya. Perhatikan bahwa screenshot contoh program qhello pada tulisan ini diambil di SuSE Linux 7.0, masih dengan KDE 1.1.2.
Tanya: Nah, sekarang bila program Qt saya mau digunakan oleh user yang tidak mempunyai library Qt, bagaimana caranya ?
Jawab: Gunakan static-linking yang akan memaksa Qt ikut serta pada executable yang dihasilkan (ini adalah salah satu yang digunakan di Opera for Linux).
Tanya: Alih-alih C++, bisakah saya menggunakan ANSI C untuk memanfaatkan Qt ?
Jawab: Tentu saja, karena sudah tersedia binding dari Qt untuk C "murni" (bukan C++). Jangankan C, Anda pun bisa menggunakan Perl, Python, Ruby, dan bahkan Java.
Tanya: Bagaimana perbedaan konsep signal/slot dengan callback ?
Jawab: Signal/slot mempunyai keuntungan bahwa penggunaannya lebih sederhana dibandingkan callback. Untuk pemrograman berorientasi objek (OOP), hal ini menjadi lebih menyederhanakan persoalan. Lagipula, signal/slot bersifat typesafe dalam arti bahwa slot hanya akan menerima signal yang mempunyai nama serta argumen yang sama persis dengan yang sebelumnya didaftarkan.
Tanya: Dapatkah lebih dari satu slot dihubungkan ke satu signal ?
Jawab: Tidak ada batasan mengenai hal ini. Satu signal dapat saja digunakan untuk memicu beberapa slot (dan kemudian menghasilkan sejumlah event). Demikian juga, satu slot boleh saja diaktifkan oleh sejumlah signal yang berbeda.
Tanya: Pada contoh program qhello dan qclick, mengapa Meta Object Compiler tidak digunakan ?
Jawab: Hal ini karena tidak ada Q_OBJECT pada source codenya. Mudah dipahami bahwa untuk program sesederhana qhello, tidak perlu dibuat sebuah widget baru, yang berarti juga tidak ada kelas baru yang memanfaatkan Q_OBJECT.
Tanya: Saya terus gagal untuk melakukan compile.
Jawab: Periksa source code Anda (file gallery.cpp). Kemungkinan Anda meng-include-kan gallery.h, seharusnya adalah gallery.moc.
Tanya: Mengapa tidak digunakan tmake yang sudah tersedia pada Qt untuk menghasilkan Makefile ?
Jawab: Program Gallery relatif sederhana sehingga Makefile mudah saja dibuat secara manual. Tentu bila Anda menginginkan, tmake dapat saja dipergunakan dengan sedikit penyesuaian.
Tanya: Ada begitu banyak widget yang disediakan Qt. Bagaimanakah saya bisa mempelajari semuanya ?
Jawab: Gampangnya adalah dengan merujuk ke dokumentasi Qt. Biasanya ini bisa dijumpai di /usr/lib/qt2/doc (atau di tempat lain, sesuai lokasi instalasi Qt). Tips: untuk cepat mencapai lokasi ini, gunakan fasilitas Bookmark di Konqueror.
Referensi
[1] Trolltech http://www.trolltech.com
[2] K Desktop Environment http://www.kde.org
[3] Dokumentasi Qt http://doc.trolltech.com
[4] GIMP http://www.gimp.org
[5] GNU Make http://www.gnu.org/software/make/make.htm
Proposal Warnet 1

PANDUAN SUKSES USAHA WARNET
(File BCA NET)
BEYOND CYBER ACCESS

Animo masyarakat terhadap Internet cukup besar. Tak jarang orang harus sabar antre di warnet untuk bisa memakai Internet dan mengirimkan e-mail. Warnet menjamur di mana-mana di Indonesia. Bahkan tak jarang dalam ruas jalan raya sepanjang satu kilometer di Surabaya atau pun Jakarta Anda bisa temukan dua sampai empat warnet .

Di negara-negara Asia Tenggara, warnet telah menjadi ajang investasi yang cukup menguntungkan. Fenomena yang terjadi di Thailand, misalnya, tak berbeda dengan di Indonesia. Harian The Nation menulis, masyarakat Thailand memiliki kesadaran yang tinggi mengenai besarnya fungsi Internet dalam komunikasi, tetapi tak semua orang di Negeri Gajah itu mampu memiliki komputer.

Namun membuka warnet bukan sekedar membeli beberapa perangkat komputer lalu menyediakan sejumlah kursi. Ada beberapa hal yang perlu diperhatikan ketika mendirikan warnet. Pendirian warnet tergantung pada seberapa banyak anggaran yang dimiliki pemilik warnet dan tujuan mendirikannya, serta bagaimana perilaku khusus konsumen di lokasi di mana warnet berada.

Biasanya membuat warnet yang seadanya tidak membutuhkan biaya besar. Cukup sediakan beberapa PC, dana untuk dekorasi ruangan, biaya listrik, dan biaya untuk membayar pegawai yang menjaga warnet. Kalau Anda bermaksud membuka warnet di pusat pertokoan tentu harus memiliki dana yang lebih besar karena harus menyewa lokasi di pertokoan tersebut. Dekorasinya juga biasanya lebih bagus dengan fasilitas yang cukup mewah.
Kalau warnet milik Anda berlokasi dekat dengan kampus atau sekolah, maka Anda harus selalu memperbarui versi games yang ada karena pelajar dan mahasiswa sangat suka bermain games.

Selain warnet seadanya yang mudah dijumpai di wilayah-wilayah pinggiran Jakarta ataupun di kota Surabaya, ada juga warnet yang menyediakan minuman dan makanan atau kue kecil. Itu berarti juga ada penambahan biaya untuk kulkas dan tenaga yang menyediakannya. Mungkin lebih baik jika hal itu diterapkan secara self service. Di Negara Maju misalnya, untuk mengambil minuman ringan, makanan, atau kue kecil, tak perlu pakai pelayan. Anda cukup mengambil barang yang Anda butuhkan lalu pergi ke kasir untuk membayar. Atau bisa juga menggunakan mesin otomatis, tinggal anda masukan coin/uang receh lalu pilih makanan/minuman yang anda suka pencet tombol dan keluar lah barang yang anda inginkan.
Bagi pengusaha warnet pelajarilah komputer, karena anda juga bisa menghemat kalau Anda, sebagai pemilik warnet, tahu cukup banyak mengenai seluk beluk komputer. Dengan demikian Anda tak perlu harus memanggil teknisi khusus setiap kali terjadi kerusakan pada komputer karena biaya teknisi tidak murah. Cukup sederhana, cobalah anda pergi ke toko buku. Sekarang banyak sekali buku mengenai komputer. Pelajarilah. Buku-buku itu bahkan mengajarkan bagaimana membuat program komputer sendiri secara instant. Atau lebih praktisnya lagi, coba anda browsing ke situs-situs komputer, disana akan lebih banyak lagi informasi teknis mengenai perbaikan dan troubleshooting masalah komputer.
Beranjak dari hal diatas Penulis mencoba membahas Pengetahuan lebih mendalam mengenai usaha warnet yang rata-rata telah mencapai BEP (Break Event Point). Keberhasilan itu sendiri bisa diukur dengan masih eksis perusahaan sampai saat ini. Bahkan ada kecenderungan jika memiliki modal atau investor baru, usaha ini akan terus dikembangkan sampai ke kota-kota lain.
Penulis berharap dengan disusunnya Data panduan ini bisa membantu dan menjawab pertanyaan-pertanyaan sehubungan dengan pendirian usaha warnet dan atau game center.
Dalam Data ini membahas lengkap dari Awal dan akhir pendirian suatu warnet/game center, seperti
• Pembahasan masalah Perijinan
• Masalah Perpajakan
• Masalah Pengontrolan Usaha
• Masalah Laporan keuangan
Membuka pasar BISNIS WARNET
Warnet, warung internet, mungkin mulai populer sejak tahun 2000-an Tahun-tahun sebelumnya memang sudah ada, tapi jarang sekali bisa dijumpai. Saat ini karena internet berkembang pesat, maka pengusaha kecil, menengah maupun besar melihat peluang pasar dengan mendirikan warung internet.
Pengertian Warung Internet (Warnet)
Mungkin tidak jelas siapa penyelenggara WARNET pertama kali di Indonesia. Tampaknya aktifitas pembuatan WARNET mulai sekitar tahun 1996-1998. Wasantara dari PT. POS Indonesia dan POINTER yang merupakan spin-off dari CNRG ITG merupakan segelintir pionir WARNET di Indonesia. POINTER bahkan sempat berexperimen dengan VW Combi untuk WARNET keliling.
Istilah Warnet
Warung Internet adalah sebuah kata yang berkembang diantara para aktifis Internet Indonesia di tahun 1997-1998 untuk sebuah kios yang memiliki banyak komputer untuk di sewakan bagi pengakses Internet. Pada masa itu, secara tidak sadar terjadi perebutan singkatan dari Warung Internet antara WARIN dan WARNET. Seharusnya jika kita konsisten dengan proses menyingkat kata, seperti WARTEG (Warung Tegal) dan WARTEL (Warung Telekomunikasi), maka yang seharusnya di pilih adalah WARIN.
Karena Internet, .NET, menjadi akhiran yang sangat menarik dalam jaringan Internet, maka kebanyakan rekan-rekan di masa itu lebih memilih istilah WARNET daripada WARIN. Oleh karena itu tidak heran hingga saat ini WARNET diadopsi oleh masyarakat Indonesia.
Mailing List Asosiasi-Warnet@yahoogroups.com
Awalnya, semua aktifitas dilakukan di mailing list asosiasi-warnet@itb.ac.id di server ITB. Dengan pertimbangan bandwidth ITB yang terbatas ke Internet, pada tanggal 14 April 2000, diskusi rekan-rekan WARNET pindah ke asosiasi-warnet@egroups.com yang kemudian menjadi asosiasi-warnet@yahoogroups.com
Asosiasi Warnet Indonesia
Pada tanggal 25 Mei 2000 merupakan hari bersejarah bagi rekan-rekan w:WARNET – karena telah lahir Asosiasi Warnet Indonesia yang ada secara fisik dalam pertemuan di kantor w:DIKMENJUR. Dalam sebuah rapat untuk melihat kemungkinan kerjasama antara rekan-rekan WARNET dengan SMK, yang di pimpin oleh DR. Gatot HP Direktur Menengah Kejuruan DIKNAS pada saat itu. Asosiasi WARNET Indonesia kemudian di kenal sebagai AWARI.
Ketua Asosiasi Warnet pertama adalah rekan Rudy Rusdiah, Bendahara rekan Adlinsyah dan Sekretaris Abdullah Koro. Tampaknya aktifias ketua AWARI waktu itu dirasakan tidak terlalu transparan kepada teman-teman WARNET. Di akhir 2001, di lakukan pertemuan rekan-rekan aktifis WARNET yang berakhir dengan di gantinya pengurus lama dengan presidium AWARI yang dipimpin oleh Judith MS, Michael Sunggiardi dan Abdullah Koro.
Analisa Prospek Warnet
Jika dipelajari lebih jauh, munculnya warnet di Indonesia disebabkan dua faktor:
1. Terbatas dan mahalnya akses internet
2. PC sebagai alat akses utama internet juga masih terhitung mahal bagi mayoritas penduduk di Indonesia.
Melihat kenyataan itu, maka bermunculan warnet-warnet yang memberikan solusi kepada kebutuhan akses internet yang terjangkau. Kedua faktor inilah yang sebenarnya harus diperhatikan oleh pebisnis warnet dalam melihat prospek usaha warnet.
Pertanyaan berikutnya adalah: apakah akses internet dan pc saat ini sudah terhitung murah? Untuk Indonesia yang (sangat) luas ini, maka jawabannya bisa ya bisa tidak. Bagi mereka yang tinggal di kota-kota besar (ex: Surabaya) harga berlangganan internet sudah sampai pada harga Rp 99.000/bulan/384Kbps/unlimited akses. Namun bagi mereka yang berada di ujung Papua sana bisa senilai 3 juta rupiah untuk 64kbps via VSAT.
Sehingga kesimpulan akhirnya adalah: harga akses internet belum terhitung murah untuk seluruh daerah di Indonesia.
Bagaimana dengan PC? Ini pun masih bisa menjadi perdebatan panjang. Namun harga PC masih berkutat di atas Rp2,5 juta yang menurut saya masih cukup mahal untuk mayoritas masyarakat Indonesia. Melihat dari jumlah kepemilikan PC dibanding jumlah penduduk pun terlihat jelas kenyataan ini. Kesimpulannya: PC juga belum terhitung murah bagi sebagian besar penduduk Indonesia.
Apakah ini berarti bisnis warnet masih prospek? Untuk menjawab ini, mari kita lihat lagi beberapa faktor yang bisa berpengaruh pada warnet:
• Mulai tersedianya akses Free Wifi/hotspot dimana-mana
• Penyediaan akses internet di Kampus
• Penyediaan akses internet di Kantor-kantor
• Mulai beroperasinya Jardiknas (Jaringan Pendidikan Nasional)
Faktor-faktor di atas jika dilihat secara pesimistis bisa dianggap sebagai faktor yang akan menurunkan prospek bisnis warnet. Tapi bagi mereka yang optimis, hal-hal di atas justru memperkuat keberadaan prospek warnet sebagai bisnis. Mereka yang optimis ini menyadari keterbatasan dari akses internet di free wifi, kantor, kampus maupun sekolah (jardiknas) sehingga keterbatasan tersebut bisa dijadikan warnet sebagai daya tarik tersendiri agar pengakses tetap memilih warnet sebagai tempat akses internet. Berita di detikinet tentang ratusan hotspot yang ternyata tidak mampu memikat pengguna bisa menjadi acuan. Walau gratis, hotspot, akses di kantor, Kampus dan sekolah toh tidak bisa digunakan setiap saat, hanya pada jam tertentu saja.
Kembali ke warnet; bagaimana jadinya prospek bisnis warnet ini? Saya melihat musuh utama Warnet adalah dirinya sendiri. Kurangnya visi dalam mengelola bisnis dan terjebak kepada asumsi-asumsi dan akhirnya terjebak ke lemahnya daya saing yang berujung ke bangkrut/tutupnya warnet. Lemahnya visi bisa dilihat dari tidak berubahnya model bisnis warnet dari tahun ke tahun. Sejak mulai kita mengenal warnet hingga sekarang, model bisnisnya tidak lebih dari menjual kembali/reseller akses internet.
Dari sisi pelayanan pun tidak berubah, bahkan cenderung statis. Ini tentu kontras dengan kenyataan bahwa internet sendiri adalah tempat dimana individu-individu saling terhubung, berinteraksi, berkolaborasi dan menghasilkan sesuatu layanan yang sulit dikerjakan secara individualistis. Kata “net” yang berarti jaringan tidak dihayati oleh warnet-warnet, mereka asik dengan keterkungkungan di tempat mereka (secara tidak sadar) justru terhubung dengan mudahnya.
Prospek atau tidak warnet bukanlah dari bisnis warnet itu sendiri, tapi bagaimana mengelola dan membawa bisnis itu menjadi sebuah layanan yang tetap dibutuhkan masyarakat. Inilah yang kurang digali oleh warnet-warnet. Sekali warnet mampu memberikan layanan (berbasis IP) yang bagus dan dibutuhkan oleh masyarakat maka prospek bisnis pun akan cerah.
Cuma syaratnya adalah: terhubung, interaksi, dan kolaborasi. Bukan berjalan secara individual.
Rencana Bisnis
Data ini berisikan 100 halaman lebih dalam format PDF, beberapa hal penting yang tercakup pada Data ini adalah sebagai berikut :
• Teori dasar mengenai Internet
• Perijinan mendirikan warnet
• Tips menentukan nama dan logo perusahaan
• Tips memilih ISP yang baik
• Tips perekrutan karyawan
• Tips menentukan lokasi usaha
• Daftar hardware dan software client yang dibutuhkan
• Memilih Program Billing yang terbaik
• Anggaran biaya yang dibutuhkan
• Cara membuat Laporan dan mengontrol Keuangan
• Membuat Standard Operating Procedure dan Job Description
• Bagaimana mengatur keuangan usaha warnet
• Aspek menentukan harga dan promosi warnet
• Kode etik Warnet
Format-format laporan dalam bentuk Excel (tinggal di edit ulang)
• Contoh Perhitungan Modal Awal Usaha Warnet
• Billing sederhana dari Ms. Excel
• Contoh Form Stock Penjualan
• Contoh Form untuk Teknisi
• Contoh Pengaturan Jadwal Kerja Karyawan
• Contoh Form Laporan Shift & Laporan Harian
• Contoh Laporan Keuangan Bulanan, Cashflow, Rugi Laba dan Perhitungan Accupancy
• Contoh Desain Penomoran Komputer Client
• Contoh Formulir Pandaftaran Member
• Contoh Brosur Produk Pelatihan
• Contoh Brosur/Pamplet Warnet
• Contoh Sturktur Organisasi Warnet
dan banyak lagi lainnya informasi yang bisa diambil dari ebook ini.

Bagaimana cara untuk memperoleh Data ini, silahkan klik Link Order diatas, dan anda diharapkan mentransfer sebesar 5 US$ melalui e-gold. atau anda dapat juga mentransfer melalui Bank BCA atau Bank Mandiri sejumlah Rp.50.000,-.
Untuk keterangan lebih lanjut dapat menghubungi ke email : thesecret@telkom.net.This e-mail address is being protected from spam bots, you need JavaScript enabled to view it

Legalitas warnet
Legalitas warnet secara umum dapat dibagi dua yaitu:
1. Legalitas Usaha
2. Legalitas Perangkat Lunak
Legalitas Usaha
Dalam menjalankan usaha, Warnet perlu mentaati berbagai peraturan perundangan. Setiap orang atau badan hukum wajib untuk melengkapi perizinan, kewajiban pajak serta retribusi.
Jenis, ragam dan besar biaya mengurus izin, berbeda dari satu tempat ketempat lain. Seirama tuntutan Reformasi, Otonomi Daerah dan Desentralisasi, masing-masing daerah berwenang menentukan sumber pendapatan asli daerah. Bahkan, dalam prosedur pengajuan, tidak jarang diperlukan rekomendasi dari berbagai instansi teknis yang berbeda. Rekomendasipun bukan hal sederhana dan segera dapat diperoleh. Sama seperti perizinan, rekomendasi memerlukan waktu dan tenaga untuk mengurusnya.
Seperti halnya bidang usaha lainnya contoh:Biro Perjalanan Wisata, Warung Tegal atau Kios di Pasar, harus memiliki izin sebelum menjalankan usaha, maka mendirikan Warnet juga tidak terkecualikan. Adapun jenis perizinan dan syarat perolehannya dapat dikategorikan:

No Tingkatan Perizinan Syarat
1 Pribadi/Perorangan KTP Kartu Keluarga
2 Tanah Hak milik/penguasaan atas tanah Patok/Girik
3 Bangunan Ijin Mendirikan Bangunan (IMB) Sertifikat Tanah
4 Gangguan Hinder Ordonantie (HO) Persetujuan tetangga
5 Badan Hukum CV/PT/NV/Koperasi Akta pendirian Notaris/Kantor Koperasi
6 Tempat usaha Surat Izin Tempat Usaha (SITU) Rekomendasi Dinas teknis
7 Usaha perdagangan Surat Izin Usaha Perdagangan/Perusahaan (SIUPP) Rekomendasi Dinas teknis
8 Usaha hiburan Surat Izin Keramaian
9 Peralatan teknologi Standar teknis Balai Monitoring
10 Perangkat lunak
Lisensi OEM
Dilapangan dapat ditemukan sebuah prosedur pengecekan untuk mengetahui fakta sebenarnya. Dalam proses pengajuan perizinan, instansi teknis berwenang untuk menguji kebenaran data dan informasi yang disampaikan pemohon secara tertulis. Disuatu daerah, pengujian materil dilakukan oleh Tim Kecil (dua Orang) atau Tim Besar (hingga tujuh orang), tergantung dari tingkat keraguan akan keabsahan data. Walau disebutkan biaya operasional Tim disediakan instansi, namun masih tidak menutup kemungkinan, bahwa praktek upeti, uang tip atau lelah menjadi kelaziman guna melancarkan penyelesaian.
Diakui, di daerah tertentu, biaya mengurus perizinan berbeda, dan cenderung tidak transparan atau tumpang tindih. Akibat prosedur yang berbelit, terbuka peluang penyalahgunaan kekuasaan, sehingga berakibat ekonomi biaya tinggi. Terkait dengan upaya efisiensi layanan publik, dalam forum Workshop Data base Wartel Warnet di Kalimantan Barat, Walikota Pontianak menyampaikan ide memangkas prosedur izin, serta menyederhanakannya. Khusus bagi Warnet dengan hak keutamaan Walikota, maka dapat diterbitkan izin usaha khusus (freiz ermessen verdict) hanya berbekal persyaratan melengkapi Surat Kontrak/ Keterangan Sewa. Prosedurnya tidak melalui jalur biasa, delegasi wewenang kepada pejabat instansi teknis, sebagaimana diatur Prosedur Operasional Standar, tetapi langsung oleh Walikota. Status syarat Surat Kontrak/ Keterangan Sewa sebagai pengganti Sertifikat Hak atas Gedung/ Bangunan.
Sebagai kegiatan usaha yang resmi diakui keberadaannya, maka untuk menjalankan usaha Warnet perlu mengindahkan berbagai ketentuan peraturan perundangan yang ada. Merupakan kewajiban setiap orang atau badan hukum untuk melengkapi persyaratan administrasi dan teknis yang berkaitan dengan perizinan, kewajiban pajak serta retribusi daerah dan lainnya
Sama seperti sebuah usaha ekonomis lainnya semisal Biro perjalanan Wisata, Warung Tegal atau Kios di Pasar, maka sebuah Warnet memerlukan izin dan memenuhi berbagai ketentuan peraturan hukum yang wajib dimiliki. Beberapa diantaranya adalah:
• Ijin RT dan RW
• NPWP pribadi / NPWP perusahaan (Dirjen Pajak).
• Surat Domisili Usaha (Kecamatan).
• Surat TDP (Tanda Daftar Perusahaan).
• Surat Ijin Usaha Perdagangan dan Perusahaan / SIUPP.
• Surat Ijin Gangguan Lingkungan / HO (Kepolisian).
• Surat Ijin Hiburan & Keramaian
• Surat Ijin Jasa Internet dari Dinas Perhubungan.
Jenis, ragam dan besarnya biaya untuk mengurus ijin tersebut bervariasi, dan berbeda dari satu tempat dengan tempat lain. Hal ini sesuai dengan tuntutan Reformasi dan Desentralisasi, dimana masing-masing daerah berwenang menentukan sesuai dengan landasan hukum yang ditetapkan oleh kepala daerah setempat.
Penulis sarankan untuk warnet dengan lokasi di dalam gang atau jalan kecil, tidak perlu memenuhi surat ijin seperti tersebut diatas, apalagi kalau warnet yang dikelola kecil berkisar 10-15 komputer. Tapi kalau posisinya berada di pinggir jalan raya dan pusat keramaian, surat ijin tersebut mutlak diperlukan, kecuali anda mau berepot-repot menghadapi petugas yang datang minta jatah.
Perpajakan
Selain kewajiban perizinan, pengusaha Warnet juga wajib membayar pajak, retribusi dan iuran daerah. Retribusi listrik, kebersihan, keamanan dan bahkan iuran RT/RW adalah hal lain yang harus ditunaikan pula. Apabila pengelola berharap dapat menjalankan bisnis dengan tertib dan aman, maka harus melaksanakan kewajiban, seperti memiliki:
• NPWP pribadi / NPWP perusahaan (Dirjen Pajak).
• Pengisian SPT untuk membayar Ppn/Pph.
Rincian
Warnet berdasarkan tempat duduk
a. Duduk standard. Disediakan bagi pelanggan dengan mobilitas tinggi dengan kursi yang nyaman.
b. Duduk lesehan.Lebih praktis, karena tidak memerlukan kursi hanya bantal-bantal lesehan. Disediakan bagi pelanggan yang santai, dan biasanya dengan pemakaian yang lama. Karena mereka harus membuka sepatu terlebih dahulu.
c. VVIP. Dilengkapi dengan: Webcam, Ruang AC, Headset, CD Writer, TV dan lain-lain
Warnet Berdasarkan Class
a. Standard. Merupakan layanan dengan fasilitas standard untuk browsing, chating dan email.
b. VIP.Dilengkapi dengan: Webcam, Ruang AC, Headset, dll
Software Internet
Internet Browser
• Internet Explorer
• Mozilla firefox
• Opera
• Netscape Communicator
Chat 'n Date
• Mirc
• Yahoo Massenger
• MSN Massenger
• Icq
• Skype
Target Pasar
Umumnya warnet paling banyak terdapat/tersebar terutama di kota-kota besar (ibukota propinsi, kabupaten, dan di kota-kota kecil sebagai penyedia jasa untuk melayani kebutuhan masyarakat di daerah tersebut dalam mengakses informasi. Kebanyakan warnet tersebar di dekat tempat pendidikan seperti Universitas atau SMA. Warnet juga banyak terdapat di tempat-tempat umum dimana orang bersosialisasi seperti Mal, town square, dan sejenisnya. Namun beberapa dari tempat ini atau kafe-kafe tertentu ditempat ini memberikan jasa internet berupa koneksi Wifi (hotspot) yang biasanya gratis karena sudah satu paket dengan biaya yang kita keluarkan saat minum atau makan. Biasanya pengunjung akan mendapat akun untuk memakai internet. Penyebaran warnet di Indonesia pernah dipresentasikan[1] dalam lokakarya [1] di Mexico City, 16-19 November 2004 sebagai persiapan data ICT readiness di negara berkembang pada tahun [2]

Warnet banyak dimanfaatkan oleh mahasiswa, pelajar, profesional dan wisatawan asing.

Warnet digunakan untuk bermacam-macam tujuan, bagi pelajar, dan mahasiswa warnet banyak digunakan untuk:
• Mengerjakan tugas atau pekerjaan rumah
• Melakukan riset
• Menulis skripsi
Bagi masyarakat umum warnet digunakan untuk:
• Memeriksa kiriman surat-e terbaru
• Melamar pekerjaan
• Bersosialisasi dan berkomunikasi (chatting) dan lain sebagainya.
Media Promo Warnet : Prosur, media cetak, komunikasi, radio
Harga Jual : Per jam
Pemilihan Lokasi : Strategis
Modal : Owner
Spesifikasi Komputer : Hardware / Software untuk warnet
Game Online : Terlampir

Etik Warnet
Dokumen ini adalah panduan bagi praktisi Warnet untuk melaksanakan komitmen etika yang mengikat secara moral dalam praktik penyelenggaraan usaha jasa Warung Internet Indonesia.
1. Aspek Kenyamanan Tempat Usaha dan Perlindungan Tamu
1. Menghindari tempat usaha yang berpotensi tinggi menimbulkan bahaya bagi kesehatan dan rawan ancaman bencana alam
2. Memiliki sirkulasi udara yang cukup dan stabil, tidak terlalu lembap atau terlalu kering sehingga sehat dan nyaman bagi pengelola dan tamu
3. Memiliki pintu keluar-masuk yang cukup dan atau pintu darurat untuk antisipasi kebakaran serta memiliki perangkat pengaman kebakaran yang memadai
4. Memiliki area bebas rokok yang terpisah dengan area perokok
5. Area perokok difasilitasi dengan peralatan sirkulasi udara yang proporsional
6. Memiliki kamar kecil, saluran pembuangan limbah dan ketersediaan air bersih dalam jumlah yang memadai dan senantiasa terjaga kebersihannya
7. Menggunakan sekat pembatas / bilik komputer yang wajar, tidak terlalu tinggi dan atau sebagian besar tertutup untuk memudahkan pengawasan dan mencegah terjadinya penyelewengan fungsi
8. Melakukan perawatan berkala dan pembersihan perangkat AC dan karpet untuk mencegah terjadinya gangguan pernapasan
9. Memiliki penerangan yang memadai dan nyaman untuk mendukung aktivitas di lingkungan Warnet.
2. Aspek Tanggung Jawab Sosial Pemilik Modal
1. Selain aspek ekonomi, pemilik modal memiliki tanggung jawab untuk mengkaji secara mendalam implikasi sosial pada masyarakat sekitar tempat usaha warnet
2. Menyesuaikan daya beli masyarakat dan memberikan kemudahan akses secara inklusif kepada seluruh strata sosial dan jenis komunitas di lingkungannya
3. Ikut mendorong peningkatan literasi masyarakat di lingkungan sekitarnya tentang pemanfaatan Internet yang tepat guna dan bertanggung jawab
4. Melakukan antisipasi dampak sosial yang mungkin terjadi akibat penggunaan Internet di Warnet secara proaktif
5. Melakukan upaya pencegahan eksploitasi akses Internet yang bertentangan dengan norma sosial, agama dan hukum
6. Memberikan edukasi dan arahan kepada tamu usia belia dan di bawah umur agar tidak melakukan pemborosan dengan melakukan aktifitas Internet yang kurang bermanfaat
7. Menciptakan lingkungan usaha yang nyaman bagi karyawan dan memberikan hak-hak karyawan dan fasilitas kerja yang memadai sesuai kelaziman, norma dan peraturan perundangan yang berlaku
8. Memberi fasilitas dan kesempatan bagi karyawan untuk mengembangkan diri dan menambah pengetahuan dan keterampilannya
9. Mempelajari dan melaksanakan dengan sungguh-sungguh aspek bisnis, strategis dan manajemen sehingga mampu terus menghasilkan inovasi layanan dan meningkatkan nilai tambah bisnis dan manfaat Warnet bagi lingkungan sekitarnya
10. Menyediakan perangkat keras dan perangkat lunak yang layak dan legal
11. Melengkapi legalitas usaha dan menuaikan kewajiban perpajakan

3. Aspek Tanggung Jawab Sosial Pengelola Manajemen

1. Menyusun program promosi dan marketing yang bersifat simpatik, edukatif dan positif untuk meningkatkan penetrasi pasar sekaligus membangun apresiasi terhadap Warnet dari lingkungan masyarakat sekitar
2.Memasang himbauan berupa pamflet atau brosur kepada tamu Warnet untuk tidak melakukan tindakan negatif dengan memanfaatkan fasilitas Warnet
3.Menyusun prosedur pengamanan fisik fasilitas Warnet dan mengupayakan asuransi
4.Melakukan inventarisasi fasilitas Warnet dan melakukan pencatatan yang akurat
5.Menyusun standar operasi yang dapat menjamin kenyamanan dan keamanan pelayanan serta melindungi kepentingan tamu.

4. Aspek Tanggung Jawab Sosial Teknisi dan Operator Warnet
1. Memastikan kualitas layanan fasilitas Warnet agar selalu dalam performa terbaik
2. Memberikan pelayanan yang ramah dan bantuan kepada tamu termasuk memberikan bimbingan, arahan, tips dan informasi positif yang dibutuhkan tamu untuk dapat memanfaatkan fasilitas Warnet secara optimal dan efisien
3. Tidak memberikan informasi negatif yang dapat mendorong tamu untuk mencoba dan memanfaatkan fasilitas Warnet untuk tujuan yang tidak wajar
4. Mampu memfungsikan dan mengatasi berbagai permasalahan yang terjadi pada perangkat lunak standar yang digunakan Warnet
5. Bersikap tegas kepada tamu agar tidak melakukan aktifitas negatif memanfaatkan fasilitas Warnet
6. Meminta dan mencatat identitas tamu termasuk waktu masuk dan keluar serta terminal yang digunakan
7. Senantiasa bersikap waspada terhadap kondisi lingkungan dan perilaku tamu untuk mengantisipasi maksud jahat pelaku tindak pidana.

PENDAHULUAN

1.1. Latar Belakang

Dengan semakin meningkatnya kebutuhan akan internet dan game online yang sekarang pasarnya mencakup mulai pebisnis hingga siswa SD maka diperlukan fasilitas yang cukup memadai di dalam mengikuti perkembangan jaman ini.

Seperti kita ketahui internet dan game online merupakan sesuatu yang akan menjadi kebutuhan pokok di masa yang akan datang, bukan hanya untuk sekedar memenuhi kebutuhan akan informasi dan ajang penyaluran hobi, sekarang ini dunia internet dan game online merupakan salah satu tempat untuk penyaluran aktualisasi diri, sedikit demi sedikit tanpa dapat dipungkiri bentuk sosialisasi dikalangan masyarakat, anak muda khusunya akan berpindah dari dunia nyata ke dunia maya, dan ini merupakan celah bagi dunia bisnis untuk memberikan fasilitas pelayanan yang sebaik-baiknya bagi para pengguna internet dan game online.

1.2. Tujuan

* Memberi fasilitas kepada masyarakat sekitar, mulai Pebisnis, Mahasiswa, hingga Siswa SMU, SMP, dan SD.
* Meningkatkan pengetahuan melalui internet.
* Menyediakan fasilitas bermain yang nyaman dan aman serta positi

1.3. Masalah

* Bagaimana menyediakan warnet dan game online yang baik
* Target pasar mana yang akan dibidik.

1.4. Manfaat

Diharapkan dengan adanya warnet banyak pihak yang mendapat nilai positif dari menggunakan fasilitas warnet ini. Dengan internet maka diharapkan para pengguna jadi lebih tahu tentang teknologi dan informasi terkini. Diharapkan warnet ini akan dapat digunakan sebagai sarana menggali informasi dan bermain dengan banyak nilai positif yang didapat.

DASAR TEORI

2.1. Computer

Computer adalah sebuah perangkat elektronik yang memiliki bagian utama yaitu monitor, CPU, keyboard dan mouse.

1. CPU
CPU adalah bagian terpenting dari computer, CPU adalah kumpulan dari berbagai part computer sehingga semua proses kerja computer dapat berjalan. Bagian-bagian dari CPU adalah :
o Processor

Processor adalah perangkat elektronik yang berfungsi sebagai otak dari computer, yang dasar perhitungannya berskala Hz, misalnya Intel Pentium 4 2,66Hz. Hingga sekarang Processor yang tersedia di indonesia ada 2 yaitu Intel dan AMD, kedua merek ini memang bersaing mulai pilihan harga, socket, kecepatan processor dan kecepatan cache memory yang disediakan di pasaran. Maka dari itu dalam pemilihan processor ini bergantung pada unsur kebutuhan dari pengguna computer tersebut, atau untuk keperluan apa komputer tersebut akan digunakan.

o MotherBoard

MotherBoard adalah Papan MCB yang berisikan transistor dan chip yang berfungsi mengatur jalannya informasi perintah dari input (Mouse & Keyboard) menuju processor hingga disimpan atau diproses melalui data dalam harddisk. Sama halnya dengan Processor, motherboard juga memiliki banyak pilihan mulai merek yang cukup banyak mulai ASUS, Gigabyte, ECS, Albatron, dll.


Merek disini pengaruhnya tidak berpengaruh besar, hanya masalah distributornya saja, maka dari itu disarankan memilih merek yang memiliki service after salesnya baik dan cepat dalam perbaikan2. dalam memilih motherboard lebih ditekankan pada pemilihan chipset yang digunakan. Setiap motherboard memiliki chipset untuk mengatur semua kinerja komponen2 lainnya agar berjalan sinergi dan stabil. Jika dapat diklasifikasi mulai yang terbaik hingga yang paling buruk performa dan usia pakai chipset adalah sebagai berikut : Nvidia, Intel, VIA, SIS.

Semakin baik chipset yang digunakan biasanya harganya juga semakin mahal. Begitu juga fasilitas yang diusung di motherboard tersebut jika semakin lengkap maka semakin mahal. Itu semua juga tergantung kebutuhan pengguna computer tersebut.

o Hardisk

Harddisk adalah komponen pada CPU yang fungsinya untuk menyimpan data atau pun system yang akan digunakan oleh processor untuk mengolah data ata perintah. Hardisk memiliki spesifikasi mulai dari kecepatan putar disc nya dan jenis socket yang digunakan. Biasanya setiap merek memiliki varian hardisk dengan dua spesifikasi kecepatan putar disc 5400 rpm dan 7200 rpm.

Ada 2 socket yan digunakan yaitu socket ATA 133 dan Socket SATA 150. karena beda socket maka kabel yang digunakan juga berbeda pula sehingga SATA mampu mentransfer data lebih cepat. Yang paling penting dari pemilihan hardisk adalah jumlah kapasitas yang dimiliki hardisk tersebut mulai 40 Gb – 200 Gb yang saat ini paling sering digunakan. Untuk memilih hardisk juga tergantung dari program apa saja yang akan dgunakan untuk system atau pun untuk aplikasi lainnya.

o Optical Drive

Optical Drive biasa disebut CD-rom atau DVD-rom hal ini tergantung dari kemampuan optic tersebut. Jika hanya mampu membaca disc dengan format CD ya berarti CD-rom tetapi jika mampu menulis atau burn pada kepingan CD maka dapat disebut CD-RW. Sama halnya dengan DVD tetapi jika DVD-RW dapat menulis di kepingan DVD sekaligus CD. Hingga sekarang terdapat 3 disc yang sering digunakan yaitu CD, DVD, dan BlueRay Disc yang masing2 memiliki kapasitas 700Mb, 4,2Gb dan 50Gb. Dalam pemilihan disc biasanya ditekankan pada kecepatan baca dan tulis dari optical tersebut. Biasanya disebut dengan skala X seperti 52X pada CD-rom, atau 32X16X32X pada CD-RW ini juga merupakan kecepatan baca, tulis dari optical tersebut.
o VGA (Virtual Graphic Adapter)

VGA adalah perangkat yang berbentuk seperti kartu yang ditancapkan pada motherboard melalui socket yang bernama socket AGP dan PCI-Express adalah yang terbaru. Biasanya VGA ini diukur berdasarkan Core Clock dan Memory Clock dan biasanya ditampilkan pada mereknya misalnya Gigabyte ATI Radeon X1550 256 MB. ini artinya merek Gigabyte dengan Chipset ATI Radeon dengan kecepatan kira kira 400-600Hz pada core clock dan Memory clocknya tergantung seri VGA tersebut SE, Pro Atau XT. Sedangkan 256 Mb adalah memori yang digunakan oleh VGA tersebut untuk memproses data dari Processor dan ditampilkan melalui layar monitor.

o Memory (RAM)

Memory adalah perangkat yang berbentuk seperti kartu yang di tancapkan pada slot memory pada motherboard yang biasanya disebut dengan slot SDRam, DDR, DDR2. memory ini berfungsi sebagai ruang pemindah data misalkan dari CD rom ke Hardisk jadi semakin besar kapasitas memorynya maka makin cepat pula transfer data atau proses data yang dilakukan. Untuk jenis memory SDR, DDR, dan DDR2 masing masing memiliki kecepatan transfer yang berbeda yang biasanya disebut dengan misalnya Kingston DDR2 512Mb (533) berarti merek kingston dengan jenis Slot DDR2 dengan kapasita 512Mb dengan kecepatan transfer 533 ini berhubungan dengan FSB pada spesifikasi motherboard dan processor yang tersedia.

o Casing

Casing adalah tempat motherboard diletakkan dan sekaligus tempat semua komponen mulai hardisk, Optical Drive, Power Supplay dan dilengkapi dengan fan untuk menjaga temperatur udara dalam casing agar selalu dalam kondisi normal.


2. Monitor

Monitor adalah sebuah alat elektronik untuk menampilkan secara visual apa yang sedang CPU kerjakan. Dalam kinerjanya monitor sangat dibantu oleh VGA dalam menampilkan gambar-gambar dengan resolusi besar dan dapat bergerak dengan halus tanpa putus-putus.

3. Keyboard dan Mouse

Keyboard adalah papan ketik berisi angka dan huruf yang digunakan untuk input, sama halnya dengan mouse.
BAB III

Perencanaan

1. Lokasi

Lokasi yang dipilih sesuai adalah ruko yang berada di daerah Gresik, dengan target pasar yang mayoritas pelajar maka lokasi yang dipilih adalah dekat dengan keramaian dan pusat aktivitas pelajar, dengan demikian target pasar dapat menggunakan fasilitas ini untuk mencari tugas dan bermain juga.

2. Spesifikasi Computer

Spesifikasi untuk game adalah menggunakan peralatan computer paling canggih yang disesuaikan dengan kebutuhan game yang akan diinstall di computer tersebut. Untuk mendapatkan harga yang tidak terlalu mahal maka digunakan part computer pada level yang paling laris saat ini dengan merek terbaik agar memiliki usia pakai yang panjang.

Spesifikasi yang digunakan adalah

o Processor AMD Athlon64 3200+

Untuk bermain game pada processor yang paling baik digunakan adalah processor yang memiliki L2 cache memory lebih besar daripada L1 Cache memory nya. Karena L1 Cache memory biasanya digunakan untuk memproses data seperti transfer data, loading, dan melakukan instalasi. Sedangkan L2 Cache memory lebih sering digunakan untuk memproses data visual. Biasanya game bermasalah di tengah-tengah permainan misalnya HANG, LAG, dan hal ini biasanya disebabkan karena proses data visual kurang baik. Jadi untuk spesifikasi game lebih baik menggunakan processor AMD, Karena AMD memilik L2 Cache memory yang lebih besar dari pada L1 Cache memory nya. memang jika menggunakan Processor ini proses loading akan berlangsung sedikit lebih lambat tapi saat bermain game performanya lebih baik sehingga mengurangi komplain dari pelanggan.

o MotherBoard Gigabyte

Service After sales yang paling cepat dibanding merek lain

o Memory Kingston DDR2 512Mb (533)

Karena game terbaik sekarang membutuhkan spesifikasi memory yang cukup besar maka diperlukan memory yang cukup bersar untuk menambah kinerja computer tersebut maka digunakan merek kingston dengan kapasitas memory 512Mb karena selain service after salesnya bagus serta memiliki usia pakai yang cukup lama dibanding merek lain.

o Hardisk Seagate Baracuda 120Gb 7200rpm

Rata2 game sekarang membutuhkan 4Gb Disk free untuk tiap gamenya. Jika dalam satu computer berisi sekitar 16 – 20 game maka diperlukan hardisk yang cukup besar agar bisa menampung semua game tersebut.

o VGA HIS X1550 256Mb

Agar tampilan saat bermain game tidak putus-putus serta dapat menggunakan resolusi yang tinggi sehingga terlihat indah dan dan realistis, hal ini menambah sensasi saat bermain game.

o Monitor LG Flat 17”

Untuk mengurangi radiasi ke mata serta menambah kenyamanan pemain game yang rata2 bermain lebih dari 2 jam, maka digunakan monitor yang menggunakan banyak layer di kacanya seperti light frame pada philips serta live view pada LG. Intinya semua menambah kenyamanan saat bermain game dan menambah indah tampilan computer itu sendiri.

o Speaker Creative SBS 2.1

Speaker biasanya digunakan yang biasa, padahal dari speaker ini sensasi bermain game menjadi semakin realistis. Maka dari itu digunakan speaker dengan 2 sattelite dan 1 Sub Woofer. Sehingga mulai suara tweeter hingga bass dapat terdengar dengan baik.
o KeyBoard & Mouse 1 Set Logitech Optical

Karena sekarang mouse dengan menggunakan bola sudah mulai ditinggalkan karena perawatan untuk membersihkan roller di dalam mouse tersebut dirasa merepotkan. Maka sekarang digunakan mouse dengan optical sebagai pengganti bola yang pada prakteknya hampir tidak memerlukan perawatan kebersihan pada alasnya, sehingga kini membersihkan hanya pada tombol mouse dan keyboard saja. Dengan demikian memudahkan operator untuk bekerja.


3. Program

* Operating System Windows XP Home ( System )

* Open Office 2.2
* Mozila Firefox ( browsing internet )
* Flash Get ( Download )
* Yahoo Messengger 8.1 ( Chatting )

o Game Online

* Seal indo Online ( Petualangan ), Kartun, Lucu, Mudah dimainkan
* Rising Force indo Online ( Petualangan ) Perang Robot, Tegang, Rumit
* Ayo Dance ( Ketangkasan ) Dansa, Mudah dimainkan
* Get Amped R ( Ketangkasan ) Fighting, lucu, mudah dimainkan
* Raknarok Online ( Petualangan ) Rumit, Game lama
* RAN Online ( Petualangan ) Perang, game menengah

o Game Offline

* Counter Strike ( Tembak Menembak ) tegang, mudah
* Warcraft III ( Strategy ) Tegang, rumit
* Generals Zero Hour ( Strategy ) perang dunia, mudah
* MotoGP 3 ( Balap Motor ) Tegang, menengah
* NFS Underground 2 ( Balap Mobil ) Seru, Tegang, Menengah
* NFS Carbon ( Balap Mobil ) Tegang, Menengah
* BattleField 2 ( Tembak Menembak ) Tegang, perang Paling lengkap.

4. Rencana Anggaran

Terlampir

5. Prediksi Pendapaptan
Terlampir.


Persetujuan Kontrak Perjanjian

PASAL 1

Investor dalam kontrak perjanjian ini selanjutnya disebut Pihak 1. Pengelola dalam kontrak perjanjian ini selanjutnya disebut Pihak 2

PASAL 2

Pihak 1 berhak penuh atas kepemilikan semua modal awal, hingga usaha yang dijalankan bersama-sama ini selesai.

PASAL 3

Pihak 2 bertanggung jawab atas semua modal yang digunakan untuk usaha bersama tersebut.

PASAL 4

Pihak 1 berhak atas 50% dari keuntungan bersih tiap bulan. Dalam hal ini keuntungan bersih adalah keuntungan kotor selama sebulan dikurangi pengeluaran operasional perbulan. Yang termasuk dalam pengeluaran operasional adalah :

1. Gaji karyawan.
2. Tagihan Listrik dan Air.
3. Abonemen Berlangganan Internet.
4. Penyusutan Modal Awal (25%).
5. Sewa Lokasi.
6. Biaya perawatan / perbaikan kerusakan.

PASAL 5

Pihak 2 berhak atas 50% dari keuntungan bersih setiap bulan.

PASAL 6

Perjanjian prosentase pembagian keuntungan usaha yang diatur pada Pasal 4 dan Pasal 5 berlaku setelah tercapainya BEP (semua modal awal kembali kepada Pihak 1). Untuk pencapaian BEP Pembagian yang berlaku adalah 60% untuk pihak 1 dan 40% untuk pihak 2 dari keuntungan bersih.

PIHAK 1 PIHAK 2
................. ............... .................
SAKSI 1 SAKSI 2 SAKSI 3
Daftar Investor Usaha Warnet

Di Gresik :...........

Alamat :..........................

Mulai tanggal :....,...............,2008

1. Nama Lengkap : ..........................

Alamat : ..........................

No Telp Rumah / Phone cell : ..........................

Prosentase Modal : …......................%

No Rekening untuk di transfer : Bank ..........................

: Nomor..........................

2. Nama Lengkap : ..........................

Alamat : ..........................

No Telp Rumah / Phone cell : ..........................

Prosentase Modal : …......................%

No Rekening untuk di transfer : Bank ..........................

: Nomor..........................


Daftar Pengelola Usaha Warnet

Di Gresik : ...........

Alamat : ...........................

Mulai tanggal : ....,...............,2008

1. Nama Lengkap : ..........................

Alamat : ..........................

No Telp Rumah / Phone cell : ..........................

No Rekening untuk di transfer : Bank ..........................

: Nomor..........................

2. Nama Lengkap : ..........................

Alamat : ..........................

No Telp Rumah / Phone cell : ..........................

No Rekening untuk di transfer : Bank ..........................

: Nomor..........................




PENDAHULUAN

1.1. Latar Belakang

Dengan semakin meningkatnya kebutuhan akan internet dan game online yang sekarang pasarnya mencakup mulai pebisnis hingga siswa SD maka diperlukan fasilitas yang cukup memadai di dalam mengikuti perkembangan jaman ini.

Seperti kita ketahui internet dan game online merupakan sesuatu yang akan menjadi kebutuhan pokok di masa yang akan datang, bukan hanya untuk sekedar memenuhi kebutuhan akan informasi dan ajang penyaluran hobi, sekarang ini dunia internet dan game online merupakan salah satu tempat untuk penyaluran aktualisasi diri, sedikit demi sedikit tanpa dapat dipungkiri bentuk sosialisasi dikalangan masyarakat, anak muda khusunya akan berpindah dari dunia nyata ke dunia maya, dan ini merupakan celah bagi dunia bisnis untuk memberikan fasilitas pelayanan yang sebaik-baiknya bagi para pengguna internet dan game online.

1.2. Tujuan

* Memberi fasilitas kepada masyarakat sekitar, mulai Pebisnis, Mahasiswa, hingga Siswa SMU, SMP, dan SD.
* Meningkatkan pengetahuan melalui internet.
* Menyediakan fasilitas bermain yang nyaman dan aman serta positi

1.3. Masalah

* Bagaimana menyediakan warnet dan game online yang baik
* Target pasar mana yang akan dibidik.

1.4. Manfaat

Diharapkan dengan adanya warnet banyak pihak yang mendapat nilai positif dari menggunakan fasilitas warnet ini. Dengan internet maka diharapkan para pengguna jadi lebih tahu tentang teknologi dan informasi terkini. Diharapkan warnet ini akan dapat digunakan sebagai sarana menggali informasi dan bermain dengan banyak nilai positif yang didapat.

DASAR TEORI

2.1. Computer

Computer adalah sebuah perangkat elektronik yang memiliki bagian utama yaitu monitor, CPU, keyboard dan mouse.

1. CPU

CPU adalah bagian terpenting dari computer, CPU adalah kumpulan dari berbagai part computer sehingga semua proses kerja computer dapat berjalan. Bagian-bagian dari CPU adalah :
o Processor

Processor adalah perangkat elektronik yang berfungsi sebagai otak dari computer, yang dasar perhitungannya berskala Hz, misalnya Intel Pentium 4 2,66Hz. Hingga sekarang Processor yang tersedia di indonesia ada 2 yaitu Intel dan AMD, kedua merek ini memang bersaing mulai pilihan harga, socket, kecepatan processor dan kecepatan cache memory yang disediakan di pasaran. Maka dari itu dalam pemilihan processor ini bergantung pada unsur kebutuhan dari pengguna computer tersebut, atau untuk keperluan apa komputer tersebut akan digunakan.

o MotherBoard

MotherBoard adalah Papan MCB yang berisikan transistor dan chip yang berfungsi mengatur jalannya informasi perintah dari input (Mouse & Keyboard) menuju processor hingga disimpan atau diproses melalui data dalam harddisk. Sama halnya dengan Processor, motherboard juga memiliki banyak pilihan mulai merek yang cukup banyak mulai ASUS, Gigabyte, ECS, Albatron, dll.


Merek disini pengaruhnya tidak berpengaruh besar, hanya masalah distributornya saja, maka dari itu disarankan memilih merek yang memiliki service after salesnya baik dan cepat dalam perbaikan2. dalam memilih motherboard lebih ditekankan pada pemilihan chipset yang digunakan. Setiap motherboard memiliki chipset untuk mengatur semua kinerja komponen2 lainnya agar berjalan sinergi dan stabil. Jika dapat diklasifikasi mulai yang terbaik hingga yang paling buruk performa dan usia pakai chipset adalah sebagai berikut : Nvidia, Intel, VIA, SIS.

Semakin baik chipset yang digunakan biasanya harganya juga semakin mahal. Begitu juga fasilitas yang diusung di motherboard tersebut jika semakin lengkap maka semakin mahal. Itu semua juga tergantung kebutuhan pengguna computer tersebut.

o Hardisk

Harddisk adalah komponen pada CPU yang fungsinya untuk menyimpan data atau pun system yang akan digunakan oleh processor untuk mengolah data ata perintah. Hardisk memiliki spesifikasi mulai dari kecepatan putar disc nya dan jenis socket yang digunakan. Biasanya setiap merek memiliki varian hardisk dengan dua spesifikasi kecepatan putar disc 5400 rpm dan 7200 rpm.

Ada 2 socket yan digunakan yaitu socket ATA 133 dan Socket SATA 150. karena beda socket maka kabel yang digunakan juga berbeda pula sehingga SATA mampu mentransfer data lebih cepat. Yang paling penting dari pemilihan hardisk adalah jumlah kapasitas yang dimiliki hardisk tersebut mulai 40 Gb – 200 Gb yang saat ini paling sering digunakan. Untuk memilih hardisk juga tergantung dari program apa saja yang akan dgunakan untuk system atau pun untuk aplikasi lainnya.

o Optical Drive

Optical Drive biasa disebut CD-rom atau DVD-rom hal ini tergantung dari kemampuan optic tersebut. Jika hanya mampu membaca disc dengan format CD ya berarti CD-rom tetapi jika mampu menulis atau burn pada kepingan CD maka dapat disebut CD-RW. Sama halnya dengan DVD tetapi jika DVD-RW dapat menulis di kepingan DVD sekaligus CD. Hingga sekarang terdapat 3 disc yang sering digunakan yaitu CD, DVD, dan BlueRay Disc yang masing2 memiliki kapasitas 700Mb, 4,2Gb dan 50Gb. Dalam pemilihan disc biasanya ditekankan pada kecepatan baca dan tulis dari optical tersebut. Biasanya disebut dengan skala X seperti 52X pada CD-rom, atau 32X16X32X pada CD-RW ini juga merupakan kecepatan baca, tulis dari optical tersebut.

o VGA (Virtual Graphic Adapter)

VGA adalah perangkat yang berbentuk seperti kartu yang ditancapkan pada motherboard melalui socket yang bernama socket AGP dan PCI-Express adalah yang terbaru. Biasanya VGA ini diukur berdasarkan Core Clock dan Memory Clock dan biasanya ditampilkan pada mereknya misalnya Gigabyte ATI Radeon X1550 256 MB. ini artinya merek Gigabyte dengan Chipset ATI Radeon dengan kecepatan kira kira 400-600Hz pada core clock dan Memory clocknya tergantung seri VGA tersebut SE, Pro Atau XT. Sedangkan 256 Mb adalah memori yang digunakan oleh VGA tersebut untuk memproses data dari Processor dan ditampilkan melalui layar monitor.

o Memory (RAM)

Memory adalah perangkat yang berbentuk seperti kartu yang di tancapkan pada slot memory pada motherboard yang biasanya disebut dengan slot SDRam, DDR, DDR2. memory ini berfungsi sebagai ruang pemindah data misalkan dari CD rom ke Hardisk jadi semakin besar kapasitas memorynya maka makin cepat pula transfer data atau proses data yang dilakukan. Untuk jenis memory SDR, DDR, dan DDR2 masing masing memiliki kecepatan transfer yang berbeda yang biasanya disebut dengan misalnya Kingston DDR2 512Mb (533) berarti merek kingston dengan jenis Slot DDR2 dengan kapasita 512Mb dengan kecepatan transfer 533 ini berhubungan dengan FSB pada spesifikasi motherboard dan processor yang tersedia.
o Casing
Casing adalah tempat motherboard diletakkan dan sekaligus tempat semua komponen mulai hardisk, Optical Drive, Power Supplay dan dilengkapi dengan fan untuk menjaga temperatur udara dalam casing agar selalu dalam kondisi normal.

2. Monitor
Monitor adalah sebuah alat elektronik untuk menampilkan secara visual apa yang sedang CPU kerjakan. Dalam kinerjanya monitor sangat dibantu oleh VGA dalam menampilkan gambar-gambar dengan resolusi besar dan dapat bergerak dengan halus tanpa putus-putus.
3. Keyboard dan Mouse

Keyboard adalah papan ketik berisi angka dan huruf yang digunakan untuk input, sama halnya dengan mouse





Java
________________________________________
- by : nchex/mideis -

Apakah Java itu ? Java merupakan bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystem, suatu perusahaan yang terkenal dengan Workstation UNIX high-end. (detilnya...)
Dasar pemrograman Java
Pada bab ini kita akan membahas bagaimana caranya setting path dan classpath, aturan - aturan dasar pada program berbasis Java. Cara untuk menkompilasi serta menjalankan program Java serta tipe -tipe data dan deklarasi variabel pada Java. (detilnya...)
Kontrol Pengulangan (Looping)
Loop digunakan untuk menghemat upaya dalam pengkodean dan waktu pemrograman. Sehingga untuk pembuatan kode yang berulang kita dapat menggunakan beberapa model looping dalam Java sesuai dengan kebutuhannya seperti While, Do - While, dan For. Untuk melihat contoh dan prinsip penggunaan dari masing - masing looping silahkan klik. (detilnya...)
Kondisi (If - Else dan Switch)
Pada bab ini kita akan belajar bagaimana Java dalam membuat keputusan. Java memiliki sejumlah bentuk keputusan tingkat tinggi yang membuat pemilihan dari beberapa opsi pemrosesan. Bentuk utama dalam pengambilan keputusan ini adalah if dan switch. Bagaimana konsep penggunaan dari bentuk if dan switch ini beserta contohnya silahkan anda klik. (detilnya...)
ARRAY
Array adalah sebuah grup beraturan dari variabel yang sama tipenya. Tiga operasi yang penting dalam pembuatan array adalah :
• Deklarasi array
• Pembuatan dan alokasi array
• Inisialisasi atau akses array
Untuk mempelajari array Java lebih lanjut silahkan klik. (detilnya...)
Grafik Java (AWT dan Swing)
Java memberikan class library untuk pemrograman dasar dengan GUI, yang lazim disebut Abstract Windowing Toolkit (AWT). Ide dasar dibalik AWT adalah bahwa graphical program Java merupakan kumpulan dari komponen bersarang (nested component), diawali dari bagian luar window kemudian melangkah ke komponen UI yang terkecil. Komponen-komponen tersebut dapat secara nyata dilihat di layar, seperti windows, menu bars, buttons dan text fields dan dapat juga terdiri dari containers yang bisa berisi komponen-komponen lain. (detilnya...)
Database
Disini kita akan membahas bagaimana cara membuat koneksi database dengan program Java mengunakan JDBC (Java Database Connectivity). (detilnya...