Zayed Elfasa
LABORATORIUM KOMPUTER
2017
Modul Praktikum Pemrograman Dasar
EDO YONATAN
ONG LU YA
MODUL SEBELUMNYA
BERASAL DARI DUA PENULIS INI
Halaman 2
DAFTAR ISI
PETUNJUK UMUM...................................................................................................................... 3
Cara Setting Path Java, Compile, dan Run Program Java ...................................................... 3
Variabel ................................................................................................................................ 10
Operator............................................................................................................................... 12
Perintah IF ............................................................................................................................ 21
Operator “?”......................................................................................................................... 25
Model ................................................................................................................................... 43
View ..................................................................................................................................... 43
Controller ............................................................................................................................. 43
Class ..................................................................................................................................... 45
Atribut .................................................................................................................................. 46
Method ................................................................................................................................ 46
This ....................................................................................................................................... 47
Constructor .......................................................................................................................... 55
Overloading Constructor...................................................................................................... 57
Latihan.................................................................................................................................. 59
Inheritance ........................................................................................................................... 70
Polymorphism ...................................................................................................................... 72
Halaman 1
Modul Praktikum Pemrograman Dasar
Halaman 2
Modul Praktikum Pemrograman Dasar
PETUNJUK UMUM
Praktikun pemrograman dasar merupakan praktikum paling dasar yang berasal dari program
studi S1 Sistem Informasi Institut Bisnis dan Informatika Stikom Surabaya sebelum anda
melangkah menuju praktikum selanjutnya yang bersifat lebih susah (advance). Praktikum
pemrograman dasar bersifat programming untuk mengasah logika dan algoritma yang telah
dipelajari oleh praktikan.
Praktikum pemrograman dasar kali ini akan menggunakan bahasa pemrgoraman Java dan
membutuhkan file Java Development Kit (JDK) yang di-install sebagai compiler java pada PC.
http://www.oracle.com/technetwork/Java/Javase/download
Untuk latihan-latihan yang ada di dalam modul ini terdapat pada halaman terakhir, namu
diharapkan Anda mencoba sendiri dulu latihan-latihan yang ada pada modul ini.
Sebelum memasuki praktikum, maka yang perlu Anda lakukan adalah setting path agar
program java yang Anda buat dapat di-compile pada PC Anda.
Gambar 1
Halaman 3
Modul Praktikum Pemrograman Dasar
Gambar 2
Gambar 3
Halaman 4
Modul Praktikum Pemrograman Dasar
4. Pada bagian “user variable for PC” silahkan klik tombol “New”
Gambar 4
Gambar 5
6. Kemudian pada “System Variable” carilah variable “Path” kemudian masukkan path-
nya : C:\Program Files\Java\jdk1.8.0_121\bin kemudian klik tombol “OK”
Halaman 5
Modul Praktikum Pemrograman Dasar
Gambar 6
8. Ketik “java –version” dan apabila berhasil akan menghasilkan output sebagai berikut
Gambar 7
9. Ketika javac –version” dan apabila berhasil akan menghasilkan output sebagai berikut
Gambar 8
10. Selesai.
Setting konfigurasi dan verifikasi pada Windows 7 berbeda dengan Windows 10. Untuk
melakukan setting path java pada Windows 7 sebagai berikut :
1. Klik start kemudian klik kanan pada “My Computer” kemudian pilih “properties”
2. Pilih ”Advance”
3. Klik tombol “Environment Variable”
4. Pada bagian “user variable for PC” silahkan klik tombol “New”
5. Kemudian pada “System Variable” carilah variable “Path” kemudian masukkan path-
nya : C:\Program Files\Java\jdk1.8.0_121\bin kemudian klik tombol “OK”
6. Setelah selesai memasukkan path silahkan PC Anda di-restart kemudian mencoba
untuk menjalan perintah pada command promt.
Halaman 6
Modul Praktikum Pemrograman Dasar
7. Ketik “java –version” dan apabila berhasil akan menghasilkan output sebagai berikut
8. Ketika javac –version” dan apabila berhasil akan menghasilkan output sebagai berikut
9. Selesai.
Setelah selesai semuanya dilakukan tentunya Anda akan melakukan compiling program java
yang telah dibuat. Tentukan letak file java yang akan di-compile. Misal anda menaruh file java
pada C:\tes maka Anda harus masuk ke dalam folder tersebut. Untuk masuk ke dalam folder
tes melalui cmd maka ikuti perintah di bawah ini :
cd c:\[folder_target]
dir
cd..
javac [nama_file].java
Setelah di compile kemudian jalankan program java dengan cara sebagai berikut :
java [nama_file] ingat! Tulis nama file tanpa ada tulisan “java” dibelakangnya.
Selesai.
Halaman 7
Modul Praktikum Pemrograman Dasar
Materi :
1. Dasar Syntax Pemrograman Java
2. Variabel
3. Tipe Data
4. Operator
Gambar 1. 1
Pada gambar di atas merupakan gambar struktur paling dasar pada pemrograman java
dimana class [nama_kelas] harus sama dengan nama file *.java kemudian diikuti dengan void
main yang berfungsi sebagai perintah yang pertama kali akan dijalankan.
Anda lebih baik memberikan nama file yang mudah agar mudah ketika di-compile. Jika nama
file berbeda maka program java tidak akan bisa dijalankan.
Halaman 8
Modul Praktikum Pemrograman Dasar
Penjelasan perintah :
Kolom komentar akan banyak digunakan/dibutuhkan ketika program yang telah dibuat telah
masuk dalam skala besar dan kompleks.
1. Dokumentasi
2. Debugging
3. Maintenance
Karakter “//” digunakan untuk mengawali penulisan komentar hanya dalam satu baris.
Contoh :
Karakter “/*” digunakan untuk mengawali penulisan komentar satu baris atau lebih kemudian
diakhiri dengan “*/”.
Halaman 9
Modul Praktikum Pemrograman Dasar
Contoh :
Gambar 1. 2
Variabel
Variabel digunakan untuk menampung data yang ingin Anda simpan. Cara penulisannya
adalah sebelah kiri tuliskan tipe data kemudian diikuti dengan nama variabelnya. Variabel
dapat bertipe lokal ataupun global yang disesuaikan dengan kebutuhan program.
Contohnya:
String nama;
Gambar 1. 3
Halaman 10
Modul Praktikum Pemrograman Dasar
Tipe Data
Tipe data bisa dikatakan sebagai sifat dari suatu variabel. Sebuah variabel tidak bisa
menyimpan lebih dari satu jenis tipe data.
Secara umum tipe data memiliki tiga jenis yang dikenal oleh komputer
Numerik yaitu data yang berbentuk bilangan, baik bilangan bulat maupun bilangan
pecahan. Misalnya double, int, float.
Karakter yaitu data yang berbentuk karakter tunggal atau deretan karakter.
Logika yaitu data yang berbentuk status benar atau salah.
Tipe data primitif yaitu tipe data yang diadopsi dari tipe data klasik. Tipe data ini
diadopsi dari berbagai bahasa pendahulu java yaitu C++ dan pascal.
Tipe data objek yaitu tipe data berbentuk class yang merupakan ciri khas dari
pemrograman berorientasi objek. Banyak dari tipe data ini yang diselesaikan untuk
mendukung operasional data primitive.
Tabel dibawah ini akan menjelaskan bagaimana tipe data dan rentang nilainya yang nantinya
dapat dipergunakan sesuai dengan kebutuhan programmer dan user nantinya.
Tabel 1. 1
Halaman 11
Modul Praktikum Pemrograman Dasar
Operator
Operator digunakan untuk melakukan operasi sejumlah operand yang disesuaikan dengan
tipe data.
Berikut ini adalah beberapa contoh operator pada java yang sering digunakan :
Tabel 1. 2
Operator Hasil
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Modulus
++ Increment
-- Decrement
+= Persamaan penjumlahan
-= Persamaan pengurangan
Tabel 1. 3
Operator Hasil
&& AND
|| OR
! NOT
Halaman 12
Modul Praktikum Pemrograman Dasar
Tabel 1. 4
Operator Hasil
== Sama dengan
!= Tidak sama dengan
> Lebih besar dari
< Lebih kecil dari
>= Lebih besar dari atau sama dengan
1. Proses konvensional
Proses konvensional dilakukan melalui class yang disediakan untuk tipe data yang akan
diproses. Class ini menyediakan method khusus yang bertugas mengkonversi data dari
tipe lain menjadi data dengan tipe yang ditanganinya. Sebagai contoh method
Integer.parseInt(String) digunakan untuk mengkonversi data String menjadi Int.
Contohnya :
Gambar 1. 4
Halaman 13
Modul Praktikum Pemrograman Dasar
Gambar 1. 5
2. Type Casting
Type casting digunakan dengan cara memaksa perubahan dari tipe data yang satu ke
tipe data yang diinginkan. Jika yang mengalami type-casting adalah variabel, maka
data aslinya tetap tersimpan dengan tipe asal meskipun ketika akan diproses data
tersebut berubah tipe.
Contohnya :
Gambar 1. 6
Halaman 14
Modul Praktikum Pemrograman Dasar
Gambar 1. 7
Proses type-casting pada gambar di atas terlihat pada bagian (double)a/b yakni data
yang terlibat adalah variabel a dan b bertipe integer akan tetapi menjelang proses
pembagian dilakukan, isi variabel a diubah saat menjadi double, sehingga hasil akhir
yang ditampilkan ke layar menjadi tipe pecahan.
Gambar 1. 8
Gambar 1. 9
Untuk melakukan penggabungan kata dengan kata yang lainnya maka menggunakan tanda
“+”. Contoh :
Halaman 15
Modul Praktikum Pemrograman Dasar
Tabel 1. 5
Kode Keterangan
\b Backspace
\f Form Feed
\n Baris Baru
\r Carriage Return
\t Tabulasi
\` Single Quote
\” Double Quote
\\ Garis Miring
\ddd Karakter Oktal
\xdd Heksadesimal
import java.io.*;
Tidak ada batasan berapa jumlah yang dapat dipakai tetapi yang perlu diketahui adalah
tulislah library bila hanya benar-benar dibutuhkan. Jika tidak dibutuhkan, maka hapus library
tersebut.
Halaman 16
Modul Praktikum Pemrograman Dasar
Halaman 17
Modul Praktikum Pemrograman Dasar
Gambar 1. 10
Dari gambar tersebut dapat disimpulkan beberapa langkah yang dilakukan untuk menangkap
inputan dari keyboard yaitu :
Buatlah terlebih dahulu sebuah file input.java dan membuat sebuah class input
beserta strukturnya dasarnya.
Jika Anda menggunakan bufferedReader maka anda perlu import library yaitu “import
java.io.*;”
Kemudian di public static void main ditambah kan kode throws IOException yang
digunakan untuk melempar kesalahan/error dalam input-output data.
Mendefinisikan sebuah objek BufferedReader untuk melakukan proses pembacaan
data, contohnya :
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Membuat sebuah variabel untuk menampung inputan keyboard contohnya kali ini memasukkan
sebuah nama bertipe data String yang dengan cara
String nama;
Halaman 18
Modul Praktikum Pemrograman Dasar
Gambar 1. 11
Untuk mengatasi error tersebut Anda dapat menggunakan try catch seperti contohnya
dibawah ini :
Gambar 1. 12
Penjelasan :
Langkah pertama membuat file dengan nama input.java setelah itu membuat struktur
dasar class input.
Halaman 19
Modul Praktikum Pemrograman Dasar
Gambar 1. 13
Sedangkan jika inputan yang diberikan bukan merupakan angka maka akan muncul
pesan hasil dari instruksi
Catch {
System.out.println(“Inputan Harus Berupa Angka”);
}
Halaman 20
Modul Praktikum Pemrograman Dasar
Materi :
1. Perintah IF
2. Perintah IF-ELSE
3. Perintah Switch-Case
4. Operator
Pada pembuatan program tidak hanya membuat pernyataan yang dijalankan secara urut dari
baris demi baris sampai mendapatkan output. Pembuatan program pastinya akan
menemukan suatu kasus yang membutuhkan kondisi-kondisi tertentu. Program yang baik
memerlukan syarat khusus untuk menjalankan suatu pernyataan. Oleh karena itu
percabangan pada suatu program sangat dibutuhkan untuk menyelesaikan solusi.
Perintah IF
Pernyataan IF merupakan pernyataan percabangan yang paling umum digunakan untuk
menyatakan percabangan. Ada dua macam pernyataan if yaitu pernyataan if tunggal dan if
majemuk.
Perintah IF yang paling umum atau paling dasar digunakan ada pada syntax dibawah ini :
if(kondisi) {
Statement here;
}
1. Perintah if tunggal
Bentuk umum dari pernyataan if tunggal dapat dilihat pada contoh syntax di bawah ini :
if (Kondisi_1 [&& / || Kondisi_2]) {
// intruksi jika hasil logika bernilai true;
}
Halaman 21
Modul Praktikum Pemrograman Dasar
Blok instruksi yang terletak setelah if akan dikerjakan apabila kondisi tersebut bernilai true.
Hasil logika bisa dibentuk dari satu kondisi hingga bermacam-macam kondisi yang diikuti
dengan operator. Tanda kurung kurawal buka dan tutup digunakan untuk menjalankan
sejumlah blok perintah yang ada di dalamnya. Jika hanya satu baris perintah saja, maka if
tersebut bisa ditulis tanpa tanda kurung kurawal.
2. Perintah If majemuk
Perintah if majemuk digunakan apabila hasil logika blok pertama yang berjalan tidak
bernilai true kemudian perintah if akan langsung menuju kondisi berikutnya sampai
akhirnya kondisi if bernilai true. Contoh pernyataan if seperti syntax dibawah ini :
if (Kondisi_1 [&& / || Kondisi_2]) {
// intruksi jika hasil logika bernilai false;
}
else {
// intruksi jika hasil logika bernilai true;
}
Kata kunci else merupakan penghubung antar pernyataan if yang akan diseleksi dalam satu
tingkat. Jika hasil logika dari kondisi_1 dan kondisi_2 menghasilkan nilai false maka instruksi
yang berada diantara kurung kurawal setelah else yang akan dijalankan.
Gambar 2. 1
Halaman 22
Modul Praktikum Pemrograman Dasar
Pada gambar di atas adalah program untuk mencetak apakah nilai dari variabel angka adalah
bilangan genap ataukah bilangan ganjil. Apabila angka habis dibagi menjadi dua maka angka
tersebut adalah bilangan genap dan apabila angka tidak habis dibagi menjadi dua maka angka
tersebut adalah bilangan ganjil.
Bentuk lain dari pernyataan if adalah susunan if secara bertingkat. Di dalam blok instruksi if
dapat dimasukkan instruksi if yang baru. Keberadaan blok if terdalam ditentukan oleh blok if
di luarnya. Contoh salah satu model susunan if secara bertingkat dapat dilihat pada contoh
syntax di bawah ini :
if (Kondisi_1) {
if (Kondisi_2) {
// intruksi jika hasil logika bernilai false;
}
else {
// intruksi jika hasil logika bernilai true;
}
}
else {
if (Kondisi_3) {
// intruksi jika hasil logika bernilai false;
}
else {
// intruksi jika hasil logika bernilai true;
}
}
Perintah Switch-Case
Perintah switch-case memungkinkan untuk melakukan sejumlah tindakan berbeda terhadap
sejumlah kemungkinan nilai. Pada perintah switch-case terdapat perintah break yang berguna
untuk keluar dari kondisi pada case. Meskipun perintah ini hampir sama dengan if else tetapi
switch case memiliki batasan yaitu :
1. Data yang ada dalam kondisi case harus memiliki tipe data int atau char.
2. Range data yang bisa diperiksa bernilai 0 s/d 255.
Halaman 23
Modul Praktikum Pemrograman Dasar
Bentuk umum dari perintah switch case ada pada contoh syntax di bawah ini :
Switch(expresi) {
Case nilai_1:
// pernyataan 1
Break;
Case nilai_2:
// pernyataan 2
Break;
default:
// pernyataan 3
Break;
}
Case yang ada di sebelah kanan perintah switch-case adalah data yang dicocokkan dengan
expresi yang ada di dalam kurung switch. Perintah break adalah perintah untuk menyatakan
berakhirnya perintah yang ada di dalam case. Tanpa break, maka perintah akan dilanjutkan
ke bawah. Perintah default bersifat optional apabila eksekusi case nilai_1 dan case nilai_2
bernilai false maka akan masuk ke dalam default. Sebagai contoh ada di bawah ini :
Gambar 2. 2
Halaman 24
Modul Praktikum Pemrograman Dasar
Operator “?”
Operator “?” disediakan untuk menggantikan if-else yang bertujuan untuk mengisi nilai ke
dalam variabel berdasarkan kondisi tertentu. Bentuk umum penggunaan operator “?” ada di
bawah ini :
varX = kondisi? Nilai1 : nilai2;
Kasusnya misalkan menentukan apakah seseorang boleh mengambil SIM atau tidak jika umur
di atas 20 tahun.
Gambar 2. 3
Gambar 2. 4
Untuk membandingkan kondisi string dengan menghiraukan besar kecil huruf dapat
menggunakan :
equalsIgnoreCase(“isi string”);
Halaman 25
Modul Praktikum Pemrograman Dasar
Materi :
1. For
2. Do-While
3. While-Do
Dalam bahasa pemrograman ada yang disebut dengan istilah “looping” dimana tujuan dari
looping ini adalah perintah untuk mengulang perintah yang dibuat dalam satu blok tanpa
harus mengetik syntax berulang-ulang.
for(inisialisasi;kondisi;penaikan/penurunan) {
// pernyataan yang diinginkan
}
Bagian inisialisasi digunakan untuk memberikan nilai pada variabel yang digunakan
untuk mengendalikan perulangan.
Bagian kondisi digunakan untuk mengendalikan seberapa banyak kondisi diulang.
Bagian penaikan/penurunan digunakan untuk menaikkan atau menurunkan dari nilai
variabel inisialisasi.
Halaman 26
Modul Praktikum Pemrograman Dasar
Gambar 3. 1
Int i = 0 adalah deklarasi inisialisasi variabel untuk melakukan perulangan yang dimulai
dari nilai 1.
i <= 5 adalah banyak variabel i untuk melakukan perulangan.
i++ adalah variabel dijumlahkan secara berkala sebanyak 1 sampai kondisi i = 5 telah
terpenuhi.
Gambar 3. 2
Halaman 27
Modul Praktikum Pemrograman Dasar
Poin penjelasan sama dengan penjelasan pada for. Sama halnya juga dengan for, penggunaan
looping while di dalam while juga bisa terjadi tergantung pada kasus yang diberikan.
do {
// pernyataan-pernyataan dalam blok..
} while (kondisi);
Gambar 3. 3
Halaman 28
Modul Praktikum Pemrograman Dasar
Tetapi apakah yang terjadi apabila sebuah kasus program membutuhkan lebih dari 100 ? Atau
bahkan ribuan variabel? Apakah Anda akan mendeklarasikan ratusan atau bahkan ribuan
variabel tersebut?
Gambar 4. 1
Indeks adalah sebuah angka yang menyatakan urutan elemen pada suatu variabel array 1
dimensi. Data merupakan nama variabel array. Elemen array merupakan isi dari array.
Perlu diketahui bahwa indeks array selalu dimulai dari indeks ke-0, sehingga nomor indeks
bagi elemen terakhir adalah sebesar (N-1), dimana N adalah jumlah total elemen.
Halaman 29
Modul Praktikum Pemrograman Dasar
Variabel angka pada gambar dideklarasikan dalam bentuk array 1 dimensi bertipe Int. Akan
tetapi variabel ini belum bisa digunakan karena perlu diberikan jumlah array yang dibutuhkan
seperti ini :
Mendeklarasikan variabel array 1 dimensi secara otomatis beserta isi variabel tersebut
Anda tidak langsung menyebutkan sejumlah elemen yang dipesan akan tetapi Anda langsung
mengisi data ke dalam array tersbut.
Contohnya :
Cara kedua yaitu dengan cara mengisi elemen array satu-persatu secara terpisah antara
indeks ke-0 ke indeks yang lainnya.
Gambar 4. 2
Untuk contoh di atas masih memiliki range yang sedikit. Tetapi bagaiman jika data yang
dibutuhkan 50x dan data nya tidak tentu? Anda bisa menginputkan melalui keyboard seperti
cara dibawah ini :
Halaman 30
Modul Praktikum Pemrograman Dasar
Gambar 4. 3
Gambar 4. 4
Penjelasan :
Pertama kali tentunya Anda perlu mendeklarasikan array.
int angka[] = new int[5];
Halaman 31
Modul Praktikum Pemrograman Dasar
angka[1] = 7;
angka[2] = 4;
angka[3] = 7;
angka[4] = 2;
angka[5] = 9;
kemudian untuk mencetak semua indeks anda perlu menggunakan konsep looping agar
semua indeks tercetak.
for (int i = 0;i<angka.length ;i++ ) {
Gambar 4. 5
N adalah nilai yang menyatakan jumlah baris dari array, sedangkan M menyatakan jumlah
kolom dari array. Indeks array 2 dimensi sama dengan array 1 dimensi dimulai dari indeks ke-
0.
Halaman 32
Modul Praktikum Pemrograman Dasar
Dua contoh array 2D ini bertipe int dengan ordo baris sebanyak 5 dan kolom sebanyak 3.
Untuk contoh yang ke-2 tidak harus memiliki kolom yang sama banyak untuk setiap barisnya.
Pengguna diberikan kebebasan untuk mengisi banyak kolom yang dibutuhkan contohnya
sebagai berikut :
{6,4,6},
{3,6,},
{8,6,2},
{3,6,1,6,7,2}};
Gambar 4. 6
Halaman 33
Modul Praktikum Pemrograman Dasar
Penjelasan :
3. Kemudian Anda menampilkan banyak kolom pada baris indeks ke-2 seperti ini :
Gambar 4. 7
Akan tetapi bagaimana cara untuk meng-input-kan data apabila data array 2D memiliki data
hingga 1000 data? Maka Anda perlu meng-input-kan melalui keyboard menggunakan konsep
nested-looping yang sama dengan konsep array 1D.
Halaman 34
Modul Praktikum Pemrograman Dasar
Gambar 4. 8
Penjelasan :
Halaman 35
Modul Praktikum Pemrograman Dasar
Gambar 4. 9
Halaman 36
Modul Praktikum Pemrograman Dasar
Materi :
Pengantar Sub Program
Sub Program berjenis prosedur
Sub Program berjenis fungsi
Sub program dengan parameter berupa variabel biasa
Sub program dengan parameter berupa variabel array
Sub program yang ditulis ulang dengan function overloading
Sub program yang dikerjakan berulang-ulang (recursive function)
Halaman 37
Modul Praktikum Pemrograman Dasar
Gambar 5. 1
Penjelasan :
1. Pada bagian bawah void main terdapat “private static void garis()” dimana hal tersebut
adalah prosedur. Prosedur tersebut akan dipanggil berulang-ulang pada void main().
Prosedur tersebut memanggil perintah untuk menampilkan “====================”
secara berulang-ulang.
private static void garis() {
System.out.println("===================================");
}
2. Cara memanggil prosedur adalah menuliskan ulang nama prosedur diikuti dengan tanda
titik koma “;”. Contohnya seperti di bawah ini :
garis(); case sensitive sehingga perhatikan baik-baik besar kecil
hurufnya.
Halaman 38
Modul Praktikum Pemrograman Dasar
Gambar 5. 2
Penjelasan :
Halaman 39
Modul Praktikum Pemrograman Dasar
Gambar 5. 3
Halaman 40
Modul Praktikum Pemrograman Dasar
Gambar 5. 4
Halaman 41
Modul Praktikum Pemrograman Dasar
Gambar 5. 5
Gambar 5. 6
Halaman 42
Modul Praktikum Pemrograman Dasar
Materi :
Model-View-Controller terstrukur
Model
Model pada pemrograman terstrukur dapat mempresentasikan dari proses-proses yang akan
dilakukan di dalam function ataupun procedure.
Contoh dari model pada pemrograman terstrukur yaitu proses untuk penjumlahan,
pengurangan, pembagian, perkalian, proses pengurutan angka dan lain-lain dimana proses
tersebut dikemas dalam sebuah fungsi atau prosedur.
View
View pada pemrgoraman terstrukur mempresentasikan tampilan dari aplikasi. View pada
pemrograman terstrukur langsung menunjukkan dari tampilan program itu sendiri.
Contoh dari view pada terstruktur adalah menampilkan menu-menu yang dibutuhkan untuk
pengguna yang kemudian dapat dieksekusi.
Controller
Controller pada pemrograman terstrutur mempresentasikan hubungan antara view dengan
model sehingga apabila sebuah view ingin memanggil fungsi atau prosedur harus melalui
controller.
Halaman 43
Modul Praktikum Pemrograman Dasar
Contoh dari controller adalah mengakses sebuah fungsi atau prosedur yang akan dieksekusi
di dalam view.
Model:
Melihat tampilan.
Controller :
Gambar 6. 1
Halaman 44
Modul Praktikum Pemrograman Dasar
Materi :
Class
Object
Constructor
Sebelum masuk Class dan Object, banyak orang yang memberi istilah pada pemrograman
ini yang disebut OOP (Object Oriented Programming) atau dalam bahasa Indonesia
“Pemrograman Berorientasi Objek”. Sebagai bahasa pemrgoraman yang modern, bahasa
pemrograman java hadir sebagai yang dapat mengimplementasikan OOP dalam
perkembangan software. OOP sendiri dalam pengertian mudahnya merupakan cara untuk
membungkus sebuah objek yang mana di dalamnya terdapat identitas, sifat, dan keinginan.
Misal manusia, memiliki identitas dalam bentuk nama, umur, jenis kelamin, berat badan dan
lain-lain. Kemudian manusia juga memiliki sifat seperti membaca, menulis, ataupun bermain
bola dan lain lain.
Pada pengertian aslinya bahwa OOP adalah pemrograman berorientasi objek dimana
dalam objek terdapat atribut dan operasi (method) yang dapat diakses oleh objek lainnya
sesuai dengan kebutuhan bahkan ada juga objek yang hanya boleh digunakan oleh objek itu
sendiri.
Setiap objek memiliki nilai identifikasi dan sifat yang berbeda-beda namun tetap dapat
dikelompokkan dalam bentuk atribut dan method kemudian diberi nama “Class”.
Class
Class adalah sekumpulan atribut dan method yang menggambarkan ciri-ciri objek secara
umum. Struktur class dalam bahasa java sebagai berikut :
Halaman 45
Modul Praktikum Pemrograman Dasar
Gambar
Penjelasan :
Atribut
Atribut bisa diartikan sebuat sifat yang melekat pada sebuah objek. Pada bahasa java dapat
dituliskan sebagai berikut :
Penjelasan :
Method
Method merupakan fungsi-fungsi yang digunakan untuk manipulasi nilai-nilai pada atribut
dan/atau untuk melakukan hal-hal yang dapat dilakukan oleh objek itu sendiri. Method
dengan arti lain bahwa method berisi sekumpulan program yang telah terbungkus. Method
memudahkan dalam hal pemrograman karena hanya perlu memanggil nama methodnya saja
selain itu pekerjaan jadi lebih singkat, tidak boros, praktis, dan efisien dalam menuliskan
program. Contohnya setWarna(string warna), getWarna().
Secara umum method dibagi menjadi dua macam yaitu method yang mengembalikan nilai
dan tidak mengembalikan nilai. Method yang tidak mengembalikan nilai disebut dengan
prosedur dan method yang mengembalikan nilai yaitu fungsi (function).
Contoh dari pembuatan method dapat dilihat seperti syntas di bawah ini :
Halaman 46
Modul Praktikum Pemrograman Dasar
// isi method
Penjelasan :
This
This digunakan untuk membedakan variabel yang dideklarasikan pada paramter di dalam
method dengan variabel yang dideklarasikan pada class.
Contohnya :
this.warna = warna;
Penjelasan :
Access Modifier
Seperti yang telah dijelaskan di atas, access modifier digunakan untuk memberi batasan hak
class maupun method. Terdapat empat akses yang tersedia pada java yaitu
Halaman 47
Modul Praktikum Pemrograman Dasar
Tabel di bawah ini akan menjelaskan hak akses dari access modifier.
Instance Of Class
Instance of class merupakan objek yang diinstan atau dibuat dari class. Berikut adalah contoh
syntax dari instance of class :
Untuk contoh penggunaan instance of class akan dijelaskan pada contoh soal di bawah ini.
Contoh Soal
Buatlah sebuah objek handphone yang memiliki atribut merk, tipe, warna, dan harga
kemudian tampilkan semua detil spesifikasi dari atribut yang ada pada handphone.
Handphone tersebut memliki harga diskon sebesar 10% dan handphone tersebut memiliki
keterangan / statement tentang harga sesuai diskon.
Berdasarkan perintah di atas maka akan ada dua class yang akan kita buat. Class pertama
yaitu class handphone dan yang kedua adalah class utama. Class utama digunakan untuk
memanggil class handphone.
Halaman 48
Modul Praktikum Pemrograman Dasar
Langkah selanjutnya adalah anda perlu untuk membuat sebuah skema diagram untuk
membantu logika untuk pembuatan program. Tanda minus “-“ dilambangkan sebagai private
sedangkan tanda “+” dilambangkan sebagai public. Skema diagram berisi method dan atribut.
Berikut adalah skema diagramnya:
Handphone
- merk: String
- tipe: String
- warna: String
- harga: Double
+ setMerk(String) : void
+ setTipe(String) : void
+ setWarna(String) : void
+ setHarga(Double) : void
+ getMerk(String) : String
+ getTipe() : String
+ getWarna() : String
+ getHarga() : String
+ HargaDiskon() : Double
+ Keterangan() : void
Langkah kedua yaitu membuat kerangka class handphone. Contohnya seperti dibawah ini :
Halaman 49
Modul Praktikum Pemrograman Dasar
Setelah membuat class handphone, simpan file tersebut dalam bentuk handphone.java. Di
dalam class juga disediakan untuk mendeklarasikan variabel, setter, dan getter.
Setelah membuat kerangka class, maka diperlukan pendeklarasian variabel yang nantinya
digunakan sebagai tempat penyimpanan data yang bersifat sementara. Contohnya seperti
dibawah ini :
Setelah membuat variabel, maka saatnya untuk membuat setter. Hal ini bertujuan untuk set
nilai yang diperoleh dari class utama. Cara untuk membuat setter harus sesuai dengan tipe
data pada variabel yang dideklarasikan di class. Contohnya ada pada gambar di bawah ini :
Halaman 50
Modul Praktikum Pemrograman Dasar
Pembuatan method setter menggunakan sub program berjenis prosedur. Hal ini dikarenakan
data yang akan kita set, tidak terdapat umpan balik ke dalam program.
Halaman 51
Modul Praktikum Pemrograman Dasar
Ketika Anda perhatikan kembali script di atas, terdapat method setter yang ada keyword
“this”. Penggunaan keyword this akan mengacu pada variabel yang telah dideklarasikan pada
class handphone. Apabila variabel tersebut tidak diberi keyword “this” maka variabel tersebut
akan mengacu pada variabel yang dideklarasikan pada parameter method. Anda bisa
menggunakan keyword “this” atau tidak apabila ada perbedaan deklarasi nama variabel pada
class handphone dengan parameter pada method setter.
Setelah membuat method setter, maka diperlukan method getter untuk mengambil nilai dari
masing-masing variabel. Hal ini bertujuan untuk mengambil nilai dari variabel pada class
handphone yang nantinya akan dikembalikan pada class utama. Sama halnya dengan method
setter, method getter harus sesuai dengan tipe data pada variabel yang dideklarasikan di
class. Contohnya ada pada gambar di bawah ini :
Penggunaan method getter menggunakan sub program berjenis fungsi karena dibutuhkan
umpan balik (pengembalian nilai) dalam pengambilan data.
Setelah itu membuat method tambahan karena pada soal dibutuhkan method tambahan
untuk mengolah data-data yang telah di-set dan di-get ke dalam bentuk informasi. Seperti
soal yang diminta untuk menghitung dan mencetak harga handphone setelah diskon. Gambar
di bawah in contoh method tambahan :
Halaman 52
Modul Praktikum Pemrograman Dasar
Langkah selanjutnya adalah membuat class utama yang berfungsi untuk menjalankan class
yang telah dibuat.
Class utama akan ada main prosedur untuk menjalankan program java.
Setelah itu buatlah instance of class. Instance of class ditandai dengan cara membuat sebuah
class baru yang telah dibuat sebelumnya. Class tersebut adalah class handphone. Contoh
untuk mengidentifikasi/mendefinisikan dari class handphone pada class utama adalah
sebagai berikut :
Setelah objek dibuat maka saat ini membuat input dari keyboard menggunakan buffered
reader. Data yang diinputkan adalah merk handphone, tipe, warna, dan harga handphone.
Setelah diinputkan, maka setelah itu data yang diinputkan tadi di-set menggunakan setter
pada class handphone. Cara untuk memanggil method yang ada pada class handphone adalah
dengan memanggil alias dari class dan diikuti dengan nama method setter. Sama halnya
ketika ingin memanggil method getter. Contohnya sebagai berikut :
Halaman 53
Modul Praktikum Pemrograman Dasar
Penjelasan :
Setelah menulis kode di atas maka sudah bisa dijalankan program tersebut. Pada komentar
“input” merupakan input yang dimasukkan melalui keyboard. Data yang diinputkan sesuai
dengan apa yang diminta sesuai dengan program. Setelah data di-inputkan setelah itu data
yang akan diinputkan akan di-set menggunakan method setter yang telah dibuat pada class
handphone. Setelah semua di-set kemudian data tersebut di cetak. Data dicetak dengan
menggunakan method getter yang telah dibuat pada class handphone.
Data dicetak diatas hanya method getter, masih ada 2 method tambahan lagi yang yang
belum dicetak yaitu method untuk mencetak harga diskon dan method sesudah harga diskon.
Kedua method tersebut silahkan dicetak dengan cara menambahkan kode seperti di bawah
ini pada output-nya :
Halaman 54
Modul Praktikum Pemrograman Dasar
Penjelasan :
Pada method “hp.HargaDiskon()” merupakan method yang memiliki nilai kembali sehingga
perlu adanya Syntax untuk mencetak nilai tersebut. Pada method “hp.keterangan()”
merupakan method void yang artinya tidak ada nilai kembalian. Oleh karena itu method
tersebut langsung ditulis tanpa harus ada syntax cetak sebelumnya. Hasil dari kode program
ketika dijalankan sebagai berikut :
Constructor
Analogi constructor misalkan seorang manusia yang memiliki nama. Ketika ada orang yang
yang memperkenalkan diri pasti dengan sendirinya menyebutkan nama, alamat, tanggal lahir,
hobi, dan sebagainya. Namun tanpa disadari pasti yang pertama kali ketika orang dikenal yaitu
mengenal nama orangnya daripada mengenal alamat, tanggal lahir dan sebagainya. Itu
dikarenakan identifikasi utama dari orang adalah nama walaupun ada banyak nama yang
sama di dunia ini. Bagaimana jika anda tidak memiliki nama? Pasti Anda akan susah untuk
diidentifikasi karena tidak memiliki nama.
Demikian dengan constructor. Ketika Anda membuat sebuah objek dari class manusia dengan
identifikasi “Orang1” kemudian anda set nilai berupa nama, alamat, tanggal lahir, dan hobi
menggunakan method setter(). Berbeda halnya dengan constructor. Ketika objek “Orang1”
Halaman 55
Modul Praktikum Pemrograman Dasar
telah terbentuk, Anda langsung memberikan nilai berupa nama, alamat, tanggal lahir, dan
hobi. Hal itu ibarat anda baru lahir di dunia ini dan langsung diberi nama. Itulah merupakan
konsep dari Constructor. Untuk lebih jelas tentang konsep Constructor dan penerapannya
maka akan dipelajari Constructor pada bagian ini.
Pengertian Constructor
Contstructor adalah method yang berfungsi untuk menginisialisasi variabel – variabel instans
yang akan dimiliki oleh objek. Constructor dipanggil pada saat proses instansiasi kelas menjadi
objek. Jika kelas tidak memiliki method constructor, maka seluruh variabel objek akan
diinisialisasikan kepada nilai default, sesuai dengan tipe datanya masing-masing. Struktur dari
constructor adalah :
Karakter Constructor
Halaman 56
Modul Praktikum Pemrograman Dasar
Overloading Constructor
Salah satu karakteristik constructor adalah dalam satu class diperbolehkan memiliki lebih
dari satu constructor. Perbedaan dari contructor satu dengan yang lainnya yaitu jumlah
parameter dan tipe data di dalamnya. Struktur overloading constructor contoh ada pada
gambar di bawah ini.
Penjelasan :
Pada struktur di atas terdapat 3 constructor yang memiliki perbedaan jumlah parameter di
setiap constructor. Constructor “nama_kelas()” yang pertama tidak memiliki parameter
apapun, constructor “nama_kelas(parameter)” yang kedua memiliki satu parameter dan
constructor yang ketiga memiliki dua parameter.
Contoh implementasi dari overloading constructor ada pada contoh di bawah ini :
Penjelasan :
Pada contoh diatas terdapat Overloading Constructor yang terdiri dari dua constructor.
Contstructor yang pertama yaitu “login()” dimana constructor ini tidak memiliki parameter
sama sekali sehingga variabel username dan password langsung di-set default tanpa diisi
Halaman 57
Modul Praktikum Pemrograman Dasar
Pembuatan objek di atas akan memberikan set default nilai karena tidak diisi parameter
apapun sehingga username akan bernilai “zayedelfasa” dan password akan bernilai
“1234567890”. Sedangkan jika ingin membuat username dan password sendiri perlu
menggunakan overloading constructor yang kedua yang memiliki parameter username dan
password seperti contoh di bawah ini :
Pembuatan objek pada gambar dia atas terdapat parameter pada constructor sehingga objek
tersebut akan memberikan nilai username yaitu “arin” dan password-nya “0801”.
Halaman 58
Modul Praktikum Pemrograman Dasar
Latihan
Berdasarkan contoh di atas buatlah buatlah dua buah class yang terdiri dari class login dan
class utama dimana class login memiliki ketentuan sebagai berikut :
Sedangkan ada class utama digunakan untuk memanggil class login. Ketika class utama
dijalankan, hasilnya akan tampak seperti di bawah ini :
Halaman 59
Modul Praktikum Pemrograman Dasar
Halaman 60
Modul Praktikum Pemrograman Dasar
Jawaban :
Langkah pertama yaitu Skema diagram digunakan untuk membantu dalam membantu
logika anda untuk pembuatan program. Tanda “-“ dilambangkan sebagai private.
Sedangkan tanda “+” dilambangkan sebagai public. Berikut adalah skema diagramnya.
Langkah kedua yaitu membuat kerangka class login. Setelah membuat class login, simpan
file tersebut dengan nama login.java. Pada class login perlu disediakan untuk
mendeklarasikan variabel, setter, dan getter.
Halaman 61
Modul Praktikum Pemrograman Dasar
Coba perhatikan kembali script yang telah dibuat seperti pada gambar di atas. Seperti halnya
dengan penggunaan method setter(), di dalam pembuatan consctructor login dengan
parameter, dapat menggunakan keyword “this”. Penggunaan keyword tersebut mengacu
pada variabel yang di deklarasikan pada class login. Apabila variabel tersebut tidak diberi
keyword “this”, maka variabel tersebut akan mengacu pada variabel yang di deklarasikan
pada parameter constructor. Penggunaan keyword “this” dapat digunakan atau tidak
(optional) apabila ada perbedaan deklarasi nama variabel pada class login.
Setelah membuat variabel yang dibutuhkan pada class login, langkah selanjutnya membuat
method setter untuk masing-masing variabel. Hal ini bertujuan untuk set atau merubah nilai
variabel username dan password sesuai dengan permintaan soal pada menu ke – 2 di class
utama nanti. Perlu diketahui bahwa bahwa dalam pembuatan variabel pada paramter di
method setter, harus sesuai dengan tipe data pada variabel yang di deklarasikan di kelas.
Gambar di bawah ini menunjukkan deklarasi setter.
Halaman 62
Modul Praktikum Pemrograman Dasar
Setelah membuat method setter maka yang perlu dibuat adalah method getter untuk
mengambil nilai dari masing-masing variabel. Hal ini bertujuan untuk mengambil nilai dari
variabel pada class login yang nantinya akan dikembalikan pada class utama. Perlu diketahui
bahwa dalam pembuatan variabel pada parameter di method getter, harus sesuai dengan
tipe data pada variabel yang dideklarasikan di kelas. Gambar di bawah ini menunjukkan
deklarasi getter.
Langkah selanjutnya adalah membuat class utama. Simpan file class utama dalam
bentuk file utama.java pada folder yang sama. Di dalam class inilah program akan
dijalankan. Contoh pembuatan class utama ada pada gambar di bawah ini.
Halaman 63
Modul Praktikum Pemrograman Dasar
Perhatikan pada pembuatan instance of class pada “user1” dan “user2”. Pada “user1” telah
terbentuk akan mereference ke constructor login tanpa parameter ke constructor login tanpa
parameter. Sedangkan pada “user2” bertipe class login, dimana nilai yang kita berikan masih
belum diketahui. Karena tipe data username dan password bertipe string, maka paramater
menggunakan tanda petik ganda (“ ”) untuk memberi nilai awal berupa String yang kosong.
Variabel “user2” yang telah dibuat nantinya akan digunakan pada case 3.
Halaman 64
Modul Praktikum Pemrograman Dasar
Menu digunakan untuk melakukan transaksi. Dalam pmembuatan menu, diperlukan tombol
klik “next” dan “back” sehingga user dapat leluasa memposisikan diri pada transaksi yang
ingin dilakukan. Untuk itulah diperlukan perulangan menu guna mengantisipasi hal itu.
Gambar dibawah ini menunjukkan pembuatan menu dan perulangan menu.
Pada baris 13-20 merupakan pilihan menu yang dapat dipilih sesuai dengan inputan dari
keyboard (akan dijelaskan setelah ini). Sedangkan proses perulangan menu, dapat
menggunakan while yang berada di luar menu. Selain menggunakan while dapat
menggunakan do..while jika tidak terbiasa. While memiliki nilai “true” dimana program
tersebut akan mengulang menu tersebut berulang kali.
Setelah menu dan perulangan menu selesai dibuat maka dibutuhkan inputan user untuk
memilih menu tersebut. Berikut adalah scriptnya :
Halaman 65
Modul Praktikum Pemrograman Dasar
Inputan user nantinya akan diisi, akan menentukan pilihan yang dieksekusi. Untuk dibuthkan,
pengecekan inputan user dengan menu yang dipilih. Pengecekan tersebut dapat
menggunakan switch..case dikarenakan penggunaannya lebih mudah dalam mengecek
sebuah menu.
Halaman 66
Modul Praktikum Pemrograman Dasar
Jika dilihat pada code di atas, dalam setiap case perlu ditambahkan break yang bertugas untuk
menghentikan proses pengecekan menu apabila salah satu case sudah terpenuhi dan telah
dieksekusi. Penggunaan deault ditujukan apabila inputan 1,2,3, atau 4 tidak terpenuhi.
Kemudian isi dari default adalah “System.exit(0)” bertujuan untuk keluar dari menu dan
mengakhiri program.
Pada case 1 berisi untuk melakukan login. Untuk melakukan login dapat mengisi username
dan password kemudian langsung akan ada proses untuk pengecekan. Syntax ada pada
contoh program di bawah ini :
Kode di atas adalah kode untuk melakukan login sekaligus pengecekan username dan
password. Jika username dan password bernilai true maka program akan mencetak tulisan
“***LOGIN SUKSES***”. Jika usernam dan password bernilai false maka akan mencetak
tulisan “*** LOGIN GAGAL ***”.
Pada line ke 52-55 merupakan cara untuk menginputkan password lama dan password baru.
Pada line 58-65 merupakan cara untuk pengecekan password apakah password lama pada
class login sesuai dengan password yang diinputkan oleh user. Jika hasil pengecekan bernilai
true maka program akan mengubah password lama dengan password baru kemudian akan
menampilkan pesan “PASSWORD BERHASIL DIUBAH”. Sedangkan jika hasil pengecekan
bernilai false maka program akan menampilkan pesan “ANDA SALAH MEMASUKKAN
PASSWORD LAMA”. Syntax ada pada gambar di bawah ini :
Halaman 67
Modul Praktikum Pemrograman Dasar
Ketika user memilih inputan nomor 3 maka dilakukan beberapa proses sebagai berikut :
Pada line ke 73 – 76 adalah syntax untuk inputan username dan password yang diisi melaui
keyboard.
Pada line 78 adalah cara untuk membuat user baru. Proses pembuatan user baru dimulai dari
membuat objek baru yang ditandai dengan ‘new login(“”, “”)’. Objek login tersebut
merupakan overloading constructor yang memiliki parameter username dan password yang
diisi dengan inputan dari user yaitu “create_username” dan “create_password”. Setelah
membuat username dan password baru, program akan menampilkan pesan “*** User telah
berhasil dibuat ***”.
Case 4 merupakan menu pilihan untuk menampilkan data user 1 dan user 2.
Halaman 68
Modul Praktikum Pemrograman Dasar
Pada line 91 – 92 adalah cara untuk menampilkan username dan password dari user 1. Apabila
anda melakukan perubahan password admin dari nilai defaultnya “12345” pada case 2,
berarti data yang akan ditampilkan adalah username admin dengan password yang telah
dirubah.
Pada line 99 – 100 adalah cara untuk menampilkan username dan password dari user 2 yang
telah dibuat pada case 3.
Halaman 69
Modul Praktikum Pemrograman Dasar
Materi
Inheritance
Keyword Super
Polymorphism
Overriding Method
Pada kehidupan manusia kita semua pasti memiliki orang tua yang memiliki karakter mirip
dengan kita. Lantas mengapa disebut dengan “hampir”? Karena sifat orang tua tidak pasti
100% akan turun ke anaknya. Selain bentuk fisik yang memiliki keseragaman yang hampir
sama, tentunya kita juga memiliki beberapa karakter yang hampir sama dengan orang tua
kita. Contohnya pada film kartun Doraemon, Ayah Nobita adalah orang yang penyabar.
Artinya ada kemungkinan bahwa Nobita juga memiliki sifat yang penyabar. Tapi dibalik semua
itu pasti Nobita punya sifat yang tidak dimiliki oleh ayahnya yaitu “pemalas”.
Sama halnya dalam pemrograman, sifat orang tua yang diturunkan kepada anaknya
dikenal dengan nama “pewarisan” (inheritance). Untuk lebih jelasnya apa itu inheritance akan
dijelaskan pada bab ini.
Inheritance
Inheritance merupakan proses pewarisan data dan method dari suatu class yang telah
ada pada class baru. Class yang mewariskan disebut dengan class super, sedangkan kelas yang
mendapat warisan tersebut atau class yang diwariskan disebut dengan subclass. Ibarat
contoh pada Nobita, artinya Ayah Nobita berpesan sebagai class super dan Nobita sebagai
subclass.
Halaman 70
Modul Praktikum Pemrograman Dasar
Penjelasan :
Pada contoh syntax di atas terdapat kata “extends” yang artinya class tersebut ada pewarisan
dari class di atasnya.
Contoh kasus :
Misalkan kita memiliki beberapa software di komputer. Software tersebut memiliki banyak
macam. Ada software game, edukasi, perkantoran, dan masih banyak lagi yang lainnya.
Walaupun berbeda jenisnya, software-software tersebut memiliki kesamaan dengan
software sejenisnya. Dengan kata lain, apabila dilihat dari segi pemrogramana, maka class
software adalah superclass, sedangkan class game adalah turunan dari class software
(subclass). Jadi penulisan script pada pemrograman java adalah sebagai berikut :
Halaman 71
Modul Praktikum Pemrograman Dasar
Keyword “super”
Keyword super digunakan oleh subclass untuk memanggil constructor atau method yang ada
pada subclassnya. Berikut adalah cara penulisan “super” pada subclass untuk memanggil
constructor pada superclass.
Sedangkan cara penulisan “super” pada subclass untuk memanggil method pada superclass
adalah sebagai berikut :
Polymorphism
Polymorphism merupakan konsep OOP dimana variable/method dari sebuah kelas dipanggil
ulang pada class turunan yang berbeda-beda dengan perilaku yang berbeda-beda antar tiap
kelas. Contoh nya seperti gambar dibawah ini :
HEWAN
Suara:……...
Kucing
Anjing Bebek
Suara:meong
Suara:guk guk! Suara:kwek kwek
meong
Setiap hewan memiliki suara. Namun suara pada masing-masing hewan berbeda-beda.
Perilaku yang berbeda-beda itulah yang menjadi ciri khas polymorphism. Penggunaan teknik
polymorphism dapat diketahui melalui pembuatan instance-of-class pada class utama.
Seperti halnya pada gambar di atas, maka pendeklarasian objek yang dibuat berasal dari class
induknya, yakni class hewan. Sehingga objek tersebut berbentuk array-of-class.
Halaman 72
Modul Praktikum Pemrograman Dasar
a. Method dari class turunan yang akan dieksekusi, dipanggil oleh objek dari class induk.
b. Nama method yang digunakan pada kelas induk harus ditulis ulang (overriding method)
pada class turunannya, dengan asumsi nama dan tipe data method harus sama.
Overriding Method
Overriding method adalah proses pendeklarasian ulang nama method pada kelas utama
kepada kelas turunannya. Dalam pembuatan overriding method, nama dan tipe metho harus
sama dengan kelas induknya guna pembuatan polymorphism.
Atribut berisi jenis dan tipe kemudian diberikan nilai default “unknown”.
Terdapat dua buah constructor.
- Constructor pertama memiliki parameter untuk set nilai kode, nama, dan lisensi
(freeware/shareware) diambil dari constructor kedua pada class software
(gunakan keyword super).
- Sedangkan constructor kedua memiliki parameter untuk set nilai kode, nama,
lisensi (freeware/shareware), jenis (online/offline), dan tipe (action/ arcade/
adventure/ sport/ puzzle) berdasarkan inputan user. Data kode, nama, dan lisensi
diambil dari setter pada class software (gunakan keyword super).
Halaman 73
Modul Praktikum Pemrograman Dasar
Terdapat method getter untuk mengambil nilai dari variabel kode, nama, dan lisensi
(freeware/shareware) pada class software serta mengambil nilai dari variabel jenis
(offline/online) dan tipe (action/ arcade/ adventures/ sport/ puzzle).
Ketika class utama dijalankan, hasilnya akan tampak seperti di bawah ini :
Halaman 74
Modul Praktikum Pemrograman Dasar
Jawaban :
Setelah anda membaca soal tersebut dengan baik dan seksama, langkah pertama yang harus
dilakukan adalah menganalisa soal dengan tujuan untuk membuat skema diagram dari soal
tersebut. Skema ini nantinya dapat membantu dalam pembuatan program. Berikut adalah
pembuatan skemanya :
Skema diagram digunakan untuk membantu dalam memahami logika pembuatan objek.
Tanda “-“ dilambangkan sebagai private. Sedangkan tanda “+” dilambangkan sebagai public.
Berikut adalah skema diagramnya :
Softw are
Game
- Kode: String
- Nama: String - jenis: String
- Lisensi: String - tipe: String
Halaman 75
Modul Praktikum Pemrograman Dasar
Anak panah menjelaskan adanya konsep inheritance, dimana class game merupakan turunan
dari class software. Sehingga variabel kode, nama, dan lisensi pada class software tidak perlu
dideklarasikan ulang lagi.
Setelah Membuat class Software, simpan file tersebut dengan nama Software.java.
b. Mendeklarasi variabel yang dibutuhkan
Setelah membuat kerangka class, maka diperlukan pendeklarasian variabel yang
nantinya digunakan sebagai tempat penyimpanan data yang bersifat sementara
(temporary). Gambar di bawah ini menunjukkan pendeklarasian variabel.
c. Mendeklarasi constructor
Setelah membuat variabel yang dibutuhkan pada class software, langkah selanjutnya
adalah membuat constructor software. Constructor ini nantinya akan digunakan dalam
class game. Gambar di bawah ini menunjukkan deklarasi constructor.
Halaman 76
Modul Praktikum Pemrograman Dasar
Halaman 77
Modul Praktikum Pemrograman Dasar
Halaman 78
Modul Praktikum Pemrograman Dasar
Halaman 79
Modul Praktikum Pemrograman Dasar
Perlu diketahui bahwa dalam pembuatan class game, tidak diperlukan pendeklarasian
variabel kode, nama, dan lisensi.
c. Mendeklarasi Constructor
Setelah membuat variabel yang dibutuhkan pada class game, langkah selanjutnya adalah
membuat constructor untuk game. Constructor ini nantinya akan digunakan pada class
utama. Gambar di bawah ini menunjukkan deklarasi constructor.
Halaman 80
Modul Praktikum Pemrograman Dasar
Jika ingin mengambil setter/getter pada class induknya dapat menggunakan keyword
“super” yang kemudian dilanjutkan dengan nama method yang dipanggil seprerti
constructor kedua pada class Game (lihat pada kotak yang berwarna biru pada gambar
Halaman 81
Modul Praktikum Pemrograman Dasar
script di atas). Artinya penggunaan keyword “super” akan mengarah pada constructor
class induknya (script yang diberi kotak berwarna merah pada gambar di atas).
d. Membuat method getter
Setelah membuat constructor kemudian akan membuat method getter untuk mengambil
nilai dari masing-masing variabel. Perlu diketahui bahwa dalam pembuatan variabel pada
parameter di method getter, harus sesuai dengan tipe data dan variabel yang
dideklarasikan di kelas tersebut maupun di kelas induknya. Gambar di bawah ini
menunjukkan pembuatan getter pada class Game.
Seperti halnya penggunaan constructor kedua pada class Game yang menggunakan
super.[nama_method], maka untuk method getKode(), getNama(), dan getLisensi()
menggunakan keyword super.[nama_method_getter] dikarenakan dideklarasikan pada
class Software.
Langkah 3 – Membuat class Utama
a. Membuat kerangka class utama
Setelah membuat class utama, simpan file tersebut dengan nama Utama.java di dalam
class inilah program akan dijalankan.
Halaman 82
Modul Praktikum Pemrograman Dasar
Jika diperhatikan ketika pembuatan instance of class, pada baris ke 9 objek GameA yang
terbentuk akan mereferensikan pada constructor pertama class Game. Sedangkan pada
baris ke 10 GameB akan akan mereferensikan pada constructor kedua pada class Game.
Game Adan GameB masih belum diketahui nilainya karena nilai awalnya diberi kosongan
yang ditandai dengan ( “ ” ).
c. Membuat menu dan perulangan menu
Pembuatan menu dapat dilakukan dengan menggunakan konsep do..while dimana di
dalamnya terdapat pilihan-pilihan menu. Gambar dari scriptnya dapat dilihat di bawah
ini :
Halaman 83
Modul Praktikum Pemrograman Dasar
Halaman 84
Modul Praktikum Pemrograman Dasar
Halaman 85
Modul Praktikum Pemrograman Dasar
Pada switch..case terdapat syntax “default” yang bertujuan untuk keluar dari program
apabila menu yang dipilih bukan antara 1,2,3, atau 4.
f. Mengisi case 1 (Input Game A)
Ketika user memilih inputan nomor 1, maka akan melakukan proses yang berada pada
case 1. Syntax pemrogramannya sebagai berikut :
- Pada baris ke 28 – 36 adalah permintaan untuk mengisikan kode, nama, dan lisensi
dari inputan user.
- Pada baris ke 38 adalah transfer data kode, nama, dan lisensi pada tiap variabel
dalam constructor pertama class Game. Setelah berhasil akan mencetak tulisan
### DATA GAME A TELAH DISIMPAN! ###.
Halaman 86
Modul Praktikum Pemrograman Dasar
Halaman 87
Modul Praktikum Pemrograman Dasar
Manusia
- tinggiBadan: Double
+ Manusia(Double) : Constructor
+ getter()
+ HtgBBI() : Double
Lakilaki Perempuan
Buatlah class untuk menghitung berat badan ideal sesuai rancangan gambar di atas! Rumus
hitung berat badan ideal adalah sebagai berikut :
Tambahkan pula class utama yang digunakan untuk memanggil class manusia. Ketika class
utama dijalankan, hasilnya akan tampak seperti di bawah ini :
Halaman 88
Modul Praktikum Pemrograman Dasar
Jawaban
Halaman 89
Modul Praktikum Pemrograman Dasar
balik (return), maka diberi nilai default 0.0. Gambar di bawah ini menunjukkan deklarasi
method HtgBBI().
Setelah membuat class Lakilaki, simpan file tersebut dengan nama Lakilaki.java. Di dalam class
Lakilaki, terdapat penggunaan extends yang menunjukkan bahwa class Lakilaki merupakan
turunan dari class Manusia.
Coba perhatikan pada script di atas, pada constructor Lakilaki terdapat keyword “super”.
Keyword ini akan memanggil konstructor Manusia (sesuai dengan isi parameter) yang
merupakan class induk. Sedangkan pada method HtgBBI() dilakukan pendeklarasian kembali
(overriding method) sesuai dengan class induknya, dimana method HtgBBI() diberi rumus
untuk menghitung berat bada ideal laki-laki.
Halaman 90
Modul Praktikum Pemrograman Dasar
Setelah membuat class perempuan, simpan file tersebut dengan nama Perempuan.java. Di
dalam class perempuan terdapat penggunaan extends yang menandakan bahwa class
Perempuan adalah turunan dari class Manusia.
Seperti halnya dengan class Lakilaki, class Perempuan memiliki constructor dan method
HtgBBI() yang sama. Perbedannya terletak pada nama class constructor da nisi rumus dari
method HtgBBI().
Setelah membuat class utama, simpan file tersebut dengan nama Utama.java kemudian
buatlah instance of class seperti di bawah ini. Tidak lupa dibuatkan BufferedReader
dengan tujuan untuk menerima inputan dari pengguna.
b. Membuat instance of class
Halaman 91
Modul Praktikum Pemrograman Dasar
Setelah membuat class Utama dengan struktur seperti di atas, setelah itu membuat
sebuah object Manusia seperti yang dilakukan di atas. Inilah yang dimaksud dengan
konsep polymorphism. Karena Class Manusia memiliki dua kelas turunan. Setelah itu
class Manusia tersebut dijadikan array-of-class. Tujuannya adalah menampung data yang
terdapat pada class Lakilaki dan class Perempuan. Perlu diketahui bahwa panjang array
ada dua karena inputan yang diinginkan karena ada dua, bukan karena banyak class
turunannya.
c. Mendeklarasikan variabel dan perulangan inputan user
Selanjutnya yaitu membuat perulangan yang di dalamnya terdapat perintah untuk meng-
input-kan data dari pengguna. Pada baris ke – 21 terdapat proses untuk penambahan isi
sebanyak 1 (increament) untuk variabel x.
Halaman 92
Modul Praktikum Pemrograman Dasar
Setelah membuat inputan pengguna, maka dilakukan pengecekan apakah jenis kelamin
yang dipilih adalah laki-laki atau perempuan. Hal ini akan menentukan kelas turunan
mana yang akan diakses.
Halaman 93
Modul Praktikum Pemrograman Dasar
Materi :
Abstract Class
Keyword final
Interface
Implementasi Interface
Abstract Class
Abstract class merupakan kelas yang absolut dari sebuah hirarki class. Jika dilihat dalam
diagram dapat dilihat seperti ini :
Abstract class dapat didefinisikan menggunakan nama abstract class itu sendiri. Berikut
adalah cara untuk mendeklarasikan nama class itu sendiri :
Contoh
PENTING:
Apabila dalam abstract class terdapat abstract method dan kelas tersebut diturunkan ke
kelas turunannya, maka method tersebut harus dideklarasikan ulang (overriding method)
dengan diberi statement pada isi methodnya. Lebih jelasnya akan dilihat pada latihan.
Halaman 94
Modul Praktikum Pemrograman Dasar
Apabila class tersebut merupakan abstract class, maka class tersebut bisa terdapat
abstract method atau tidak (optional). Sedangkan apabila kelas tersebut terdapat
abstract method, maka kelas tersebut wajib berbentuk abstract class.
Keyword “final”
Keyword final digunakan untuk mencegah suatu class diturunkan atau suatu method
dilakukan pendeklarasian ulang (overriding method). Berikut adalah cara mendeklarasikan
final dalam class :
Untuk lebih detil penggunaan keyword “final” akan dibahsa pada soal latihan.
Soal Latihan
Seperti halnya dnegan soal latihan modul 9 tentang “Polymorphism”, soal latihan pada modul
ini tidak jauh berbeda. Perhatihan gambar di bawah ini :
Halaman 95
Modul Praktikum Pemrograman Dasar
Manusia (Abstract)
- tinggiBadan: double
+ Manusia(double) : Constructor
+ getter() : void
+ abstract HtgBBI() : double
Buatlah class untuk menghitung Berat Badan Ideal sesuai dengan rancangan gambar di atas!
Rumus hitung berat badan ideal adalah sebagai berikut :
Tambahkan juga class utama yang digunakan untuk memanggil class Manusia. Ketika class
Utama dijalankan, hasilnya akan tampak seperti di bawah ini :
Jawabannya :
Halaman 96
Modul Praktikum Pemrograman Dasar
Setelah membuat kerangka seperti di atas untuk class manusia, simpan file tersebut dengan
nama Manusia.java. Di dalam class abstract ini juga disediakan tempat untuk
mendeklarasikan variabel, constructor, getter, dan method HtgBBI untuk menghitung berat
badan ideal.
Setelah membuat kerangka class, maka dibutuhkan pendeklrasian variabel yang digunakan
untuk menyimpan data sementara (temporary).
3. Mendeklarasikan constructor
Setelah membuat variabel yang dibutuhkan pada class Manusia, langkah selanjutnya
membuat constructor Manusia. Constructor ini digunakan untuk dalam class Lakilaki dan class
Perempuan.
Halaman 97
Modul Praktikum Pemrograman Dasar
Setelah membuat constructor, kemudian membuat method getter untuk mengambil nilai dari
constructor. Hal ini bertujuan untuk mengambil nilai dari variabel pada class Manusia yang
nantinya akan digunakan ke dalam class Lakilaki maupun class Perempuan.
Setelah membuat method getter(), kemudian membuat method HtgBBI() yang bertugas
untuk menghitung berat badan ideal berdasarkan tinggi badan. Karena method HtgBBI()
merupakan abstract method, maka method tersebut tidak terdapat isi method.
Halaman 98
Modul Praktikum Pemrograman Dasar
Setelah dibuat seperti di atas, simpan file tersebut dalam bentuk Lakilaki.java. Di dalam class
tersebut terdapat pennggunaan extends yang menunjukkan bahwa class Lakilaki merupakan
turunan dari abstract class Manusia. Jika diperhatikan terdapat keyword “super”. Keyword ini
akan memanggil constructor Manusia (sesuai dengan isi parameter) yang merupakan class
induk. Sedangkan method HtgBBI() dilakukan pendeklarasian kembali (overriding method)
sesuai dengan kelass induknya, dimana method HtgBBI() diberi rumus untuk menghitung
berat badan ideal laki-laki.
Setelah membuat class Perempuan, simpan file tersebut dengan nama Perempuan.java. Di
dalam class Perempuan terdapat penggunaan extends yang menunjukkan bahwa class
Perempuan turunan dari class Manusia. Seperti halnya dengan class Lakilaki, class Perempuan
memiliki constructor dan method HtgBBI() yang sama. Perbedaanya terletak pada nama class,
nama constructor dan isi rumus method HtgBBI().
Keyword “final” pada line 1 digunakan untuk mencegah pembuatan kelas baru dari kelas
turunan Perempuan. Sedangkan keyword “final” pada line 10 digunakan untuk mencegah
pendeklarasian ulang (overriding method) pada kelas turunannya.
Halaman 99
Modul Praktikum Pemrograman Dasar
Setelah membuat kode seperti di atas, simpan file tersebut dalam bentuk Utama.java.
Kemudian silahkan untuk di compile untuk melihat hasil dari program di atas.
Interface
Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method tanpa
detail implementasinya. Cara mendeklarasikan interface adalah sebagai berikut :
Class Kalkulator
- bil1: Double
Interface Operasi - bil2: Double
Pada contoh di atas, method yang dideklarasikan pada interface Operasi tidak terdapat
statement apapun, baik itu rumus atau hanya sebuah nilai balik di dalamnya. Hal ini
dikarenakan interface hanyalah sebuah isi kumpulan konstanta maupun method tanpa
menyertakan/ menulis bofy methodnya.
Halaman 100
Modul Praktikum Pemrograman Dasar
Perlu diketahui pula bahwa sebuah interface bukanlah sebuah class dan class hanya bisa
mengimplementasi interface.
Implementasi Interface
Penggunaan interface dalam sebuah class dapat anda lihat melalui skema OOP di bawha ini :
Coba anda lihat anak panah yang berwarna ungu tersebut. Anak panah itu merupakan
gambaran bahwa class Kalkulator merupakan implementasi dari interface operasi, dimana
method-method yang terdapat pada interface Operasi harus dideklarasi ulang (overriding
method) pada class Kalkulator. Interface dilambangkan dengan anak panah dengan garis
putus-putus, sedangkan inheritance dilambangkan dengan anak panah dengan garis lurus.
Contoh
Halaman 101
Modul Praktikum Pemrograman Dasar
Materi :
AWT
Swing
Java AWT
AWT adalah Abstract Window Toolkit dimana sebuah form nantinya akan di-extend-kan pada
sebuah class (frame) yang dimiliki oleh java itu sendiri. AWT menggunakan frame yang berasal
sistem operasi, misalkan Anda menggunakan Windows maka frame yang akan ditampilkan
adalah milik windows. Agar dapat menampilkan AWT dapat menggunakan library sebagai
berikut :
import java.awt.*;
Di dalam library tersebut dapat menampilkan frame yang dibutuhkan untuk membuat
sebuah form. Selain bisa di-extend-kan pada class, AWT juga dapat dibuat dalam bentuk
objek. Untuk lebih jelasnya lihat contoh di bawah ini :
Halaman 102
Modul Praktikum Pemrograman Dasar
Halaman 103
Modul Praktikum Pemrograman Dasar
Setelah di-klik maka label button akan berubah tampilannya seperti di bawah ini :
Untuk lebih mudah, Anda dapat menggunakan fitur drag-drop pada Netbeans. Fitur drag-
drop ini dapat menggunakan library java swing.
Java SWING
Swing merupakan graphical user interface (GUI) untuk membuat form yang library form-nya
terbuat dari java itu sendiri. Sebelumnya dapat dilihat jika menggunakan AWT, untuk
membuat form harus lewat syntax java. Sedangkan jika menggunakan swing Anda dapat
menggunakan fitur drag-drop yang ada pada netbeans. Caranya sebagai berikut :
Setelah anda membuat project, arahkan project anda pada Java Source Package
seperti contoh di bawah ini :
Halaman 104
Modul Praktikum Pemrograman Dasar
Kemudian Klik Kanan pada mouse kemudian pilih “New” -> “JFrame Form…”
Setelah itu silahkan isi nama file java yang akan disiapkan untuk membuat form
menggunakan java Swing / JFrame Form.
Halaman 105
Modul Praktikum Pemrograman Dasar
Source : Berisi syntax java yang diisi untuk method-method yang ingin diperlukan.
Halaman 106
Modul Praktikum Pemrograman Dasar
Halaman 107
Modul Praktikum Pemrograman Dasar
Setelah itu klik “simpan” kemudian di bawahnya akan tampil seperti di bawah ini :
JAWABAN :
Langkah pertama yaitu membuat form seperti pada soal yang telah disebutkan di atas. Untuk
membuat form seperti di atas silahkan untuk menuju Tab “Palette” yang letaknya ada di
sebelah kanan.
Halaman 108
Modul Praktikum Pemrograman Dasar
1 2
3 4
5 6
Untuk membuat label NIM, NAMA, ALAMAT, JENIS KELAMIN, PROGRAM STUDI, dan
TANGGAL LAHIR gunakan swing control yang ditandai nomor 1.
Untuk membuat inputan NIM, NAMA, ALAMAT, dan TANGGAL LAHIR gunakan swing control
yang ditandai nomor 6 -> “Text Field”.
Untuk bagian program studi ada beberapa pilihan gunakan swing control “Combo Box” yang
ditandai nomor 5.
Halaman 109
Modul Praktikum Pemrograman Dasar
Untuk bagian jenis kelamin gunakan swing control “Button Group” yang ditandai dengan
nomor 4 setelah itu masukkan juga radio button pada nomor 3. Setelah dimasukkan radio
button tersebut klik kanan pada radio button kemudian pilih properties. Setelah itu carilah
baris buttonGroup. Contohnya seperti di bawah ini :
Setelah itu ganti isi field dari buttonGroup menjadi buttonGroup1. buttonGroup1 merupakan
nama dari ButtonGroup.
Untuk tombol SIMPAN dapat menggunakan “Button” yang ditandai dengan nomor 2. Untuk
menganti nama menjadi “SIMPAN” klik kanan pada tombol tersebut kemudian pilih “edit
text”.
Langkah kedua merubah nama variabel (change variabel name / set ID)
Langkah kedua yaitu memberikan ID. ID diberikan di setiap swing control yang dibutuhkan
untuk dimasukkan ke dalam syntax. Pada NetBeans ID berbeda dengan IDE yang lainnya
karena mengubah nama ID pada NetBeans namanya adalah “Change Variable Name”.
Caranya adalah klik kanan pada salah satu swing control kemudian pilih “Change Variable
Name”.
Halaman 110
Modul Praktikum Pemrograman Dasar
Langkah ketiga ini adalah langkah untuk menuliskan syntax agar semua inputan dari Text
Field, Combo Box, dan Radio Button dapat dibaca pada label di bawah.
2. Setelah itu di dalam constructor isi dengan syntax sebagai berikut yang ditaruh di
bawahnya syntax “initComponents();”:
inisialisasiComboBox();
Halaman 111
Modul Praktikum Pemrograman Dasar
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (Exception e) {
e.getMessage();
}
3. Setelah itu kembali ke “Design” -> arahkah mouse pada Button “SIMPAN” kemudian double
klik dengan tujuan agar event tercipta dengan sendirinya. Setelah itu isikan event dengan
syntax di bawah ini :
label_nim.setText(txt_nim.getText());
label_nama.setText(txt_nama.getText());
label_alamat.setText(txt_alamat.getText());
label_program_studi.setText(cmbProgramStudi.getSelectedItem().toString());
label_tanggal_lahir.setText(txt_tgl_lahir.getText());
if(rb_pria.isSelected()) {
label_jenis_kelamin.setText("Pria");
}
else if(rb_wanita.isSelected()) {
label_jenis_kelamin.setText("Wanita");
}
else {
label_jenis_kelamin.setText("Tidak dipilih");
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package awt;
import javax.swing.UIManager;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
/**
*
* @author Lab
*/
public class swing extends javax.swing.JFrame {
/**
* Creates new form swing
Halaman 112
Modul Praktikum Pemrograman Dasar
*/
public swing() {
initComponents();
inisialisasiComboBox();
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (Exception e) {
e.getMessage();
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Halaman 113
Modul Praktikum Pemrograman Dasar
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("NIM");
jLabel2.setText("NAMA");
jLabel3.setText("ALAMAT");
jLabel4.setText("PROGRAM STUDI");
jLabel5.setText("TANGGAL LAHIR");
jToolBar1.setFloatable(false);
jToolBar1.setRollover(true);
txt_nim.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txt_nimActionPerformed(evt);
}
});
txt_nama.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txt_namaActionPerformed(evt);
}
});
txt_alamat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txt_alamatActionPerformed(evt);
}
});
jLabel7.setText("JENIS KELAMIN");
buttonGroup1.add(rb_pria);
rb_pria.setText("PRIA");
rb_pria.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
rb_priaActionPerformed(evt);
}
});
Halaman 114
Modul Praktikum Pemrograman Dasar
buttonGroup1.add(rb_wanita);
rb_wanita.setText("WANITA");
btn_simpan.setText("SIMPAN");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});
label_nim.setText("NIM");
label_nama.setText("NAMA");
label_alamat.setText("ALAMAT");
label_jenis_kelamin.setText("JENIS KELAMIN");
label_program_studi.setText("PROGRAM STUDI");
label_tanggal_lahir.setText("TANGGAL LAHIR");
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label_jenis_kelamin, javax.swing.GroupLayout.PREFERRED_SIZE,
270, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label_program_studi, javax.swing.GroupLayout.PREFERRED_SIZE,
270, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label_tanggal_lahir, javax.swing.GroupLayout.PREFERRED_SIZE,
270, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label_nim, javax.swing.GroupLayout.PREFERRED_SIZE, 270,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label_nama, javax.swing.GroupLayout.PREFERRED_SIZE, 270,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label_alamat, javax.swing.GroupLayout.PREFERRED_SIZE, 270,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel7)
Halaman 115
Modul Praktikum Pemrograman Dasar
.addComponent(jLabel4)
.addComponent(jLabel5))
.addGap(53, 53, 53)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_alamat, javax.swing.GroupLayout.PREFERRED_SIZE,
589, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(rb_pria)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(rb_wanita))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(cmbProgramStudi, 0,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txt_tgl_lahir,
javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_simpan))
.addComponent(txt_nim, javax.swing.GroupLayout.PREFERRED_SIZE,
177, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_nama, javax.swing.GroupLayout.PREFERRED_SIZE,
177, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(68, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txt_nim, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txt_nama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txt_alamat, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
Halaman 116
Modul Praktikum Pemrograman Dasar
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(rb_pria)
.addComponent(rb_wanita))
.addGap(9, 9, 9)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(cmbProgramStudi, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(txt_tgl_lahir, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_simpan))
.addGap(18, 18, 18)
.addComponent(label_nim)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(label_nama)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label_alamat)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label_jenis_kelamin)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label_program_studi)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label_tanggal_lahir)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 101,
Short.MAX_VALUE)
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>
Halaman 117
Modul Praktikum Pemrograman Dasar
if(rb_pria.isSelected()) {
label_jenis_kelamin.setText("Pria");
}
else if(rb_wanita.isSelected()) {
label_jenis_kelamin.setText("Wanita");
}
else {
label_jenis_kelamin.setText("Tidak dipilih");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and
feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(swing.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
Halaman 118
Modul Praktikum Pemrograman Dasar
java.util.logging.Logger.getLogger(swing.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(swing.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(swing.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
Halaman 119
Modul Praktikum Pemrograman Dasar
Materi :
Model View Controller Berorientasi Objek
Pola pemrograman di era saat ini perkembangannya sangat baik. Ada banyak pola
pemrograman yang telah dikembangkan oleh para programmer di dunia. Pola pemrograman
ini diciptakan dengan tujuan untuk memudahkan para programmer untuk pengembangan
aplikasi selanjutnya jika ada versi aplikasi terbaru. Selain itu pola pemrograman digunakan
untuk kolaborasi antar programmer dalam sebuh tim yang ingin membuat sebuah aplikasi.
Ada beberapa pola pemrograman yang dikenal di dunia yaitu Façade, Model-View-Presenter,
dan yang paling di kenal adalah Model-View-Controller. Pada modul ini akan dibahas pola
pemrograman dengan mennggunakan pola Model-View-Controller. Pola MVC ini secara
berorientasi objek digunakan pada pengembangan aplikasi yang bersifat dimana sebuah
method digunakan berulang-ulang pada sebuah proses. Contohnya adalah ketika membuat
aplikasi Sistem Pendukung Keputusan dimana SPK membutuhkan method untuk melakukan
proses perhitungan matematika dan algoritma secara berulang-ulang untuk mendapatkan
kesimpulan.
Model
Model pada OOP berisikan method setter dan getter dari sebuah objek. Model ini akab
berkomunikasi dengan Controller untuk mengambil method model yang ditaruh pada View.
Contohnya model seperti di bawah ini :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul11;
/**
*
* @author Lab
*/
Halaman 120
Modul Praktikum Pemrograman Dasar
public modelHP() {
View
View adalah syntax tampilan. View ini akan berkomunikasi dengan controller untuk
mengambil method yang dibutuhkan pada view.
Halaman 121
Modul Praktikum Pemrograman Dasar
Controller
Contorller pada OOP berisikan method-method yang dibutuhkan untuk melakukan semua
proses yang ada di view. Controller juga berfungsi sebagai jembatan antara model dan view.
Contohnya sebaga berikut :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul11;
import java.util.ArrayList;
/**
*
* @author Lab
*/
public class controllerHP {
ArrayList<modelHP> listHP = new ArrayList<>();
Latihan
Buatlah sebuah form seperti di bawah ini yang berisi data mahasiswa kemudian disimpan di
dalam tabel.
Halaman 122
Modul Praktikum Pemrograman Dasar
Halaman 123
Modul Praktikum Pemrograman Dasar
Untuk update silahkan klik di salah satu kolom kemudian isi dari kolom tersebut tampil pada
form pengisian data. Contohnya seperti di bawah ini :
Untuk melakukan update, double klik pada salah satu baris yang ada pada tabel.
Halaman 124
Modul Praktikum Pemrograman Dasar
Untuk delete silahkan klik salah satu kolom kemudian isi dari kolom tersebut tampil pada form
pengisian data. Contohnya seperti di bawah ini :
Setelah itu klik button “delete” maka salah satu akan hilang.
Halaman 125
Modul Praktikum Pemrograman Dasar
JAWABAN
Langkah pertama yaitu membuat form dan mengubah nama variabel “change variabel
name” seperti di bawah ini.
1. Gunakan Swing Control Text Field untuk membuat input-an NIM, NAMA, dan TANGGAL
LAHIR.
2. Gunakan Swing Control Button group dan Radio Button untuk jenis kelamin.
Setelah itu ubah nama variabel untuk Nim, Nama, Radio Button Pria, Radio Button Wanita,
Tanggal Lahir, button “SIMPAN”, button “UPDATE”, button “HAPUS”, dan tabel.
Halaman 126
Modul Praktikum Pemrograman Dasar
Setelah form telah selesai dibuat, langkah selanjutnya yaitu membuat modelMahasiswa yang
berisi setter dan getter. Silahkan ikuti syntax di bawah ini :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul11;
/**
*
* @author Lab
*/
public class modelMahasiswa {
private String nim, nama, jenisKelamin, tanggalLahir;
public modelMahasiswa() {
}
Halaman 127
Modul Praktikum Pemrograman Dasar
modelMahasiswa, input data ke dalam tabel, update data ke dalam tabel, dan hapus data ke
dalam tabel.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul11;
import java.util.ArrayList;
/**
*
* @author Lab
*/
public class controllerMahasiswa {
public controllerMahasiswa() {}
public void updateMahasiswa(int index, String nim, String nama, String jenisKelamin, String
tanggalLahir) {
modelMahasiswa mMahasiswa = new modelMahasiswa(nim, nama, jenisKelamin, tanggalLahir);
listMahasiswa.get(index).setNim(mMahasiswa.getNim());
listMahasiswa.get(index).setNama(mMahasiswa.getNama());
listMahasiswa.get(index).setJenisKelamin(mMahasiswa.getJenisKelamin());
listMahasiswa.get(index).setTanggalLahir(mMahasiswa.getTanggalLahir());
System.out.println("DATA TELAH DIPERBARUI");
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul11;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Lab
*/
public class formMahasiswa extends javax.swing.JFrame {
/**
* Creates new form formMahasiswa
*/
public formMahasiswa() {
initComponents();
tampilData();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
Halaman 129
Modul Praktikum Pemrograman Dasar
jScrollPane1.setViewportView(jTable1);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("NIM");
jLabel2.setText("NAMA");
jLabel3.setText("JENIS KELAMIN");
jLabel4.setText("TANGGAL LAHIR");
btn_simpan.setText("SIMPAN");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});
btn_update.setText("UPDATE");
btn_update.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_updateActionPerformed(evt);
}
});
btn_hapus.setText("HAPUS");
btn_hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapusActionPerformed(evt);
}
});
tabel_mahasiswa.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabel_mahasiswa.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_mahasiswaMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_mahasiswa);
buttonGroup1.add(rb_pria);
rb_pria.setText("PRIA");
buttonGroup1.add(rb_wanita);
rb_wanita.setText("WANITA");
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btn_simpan)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_update)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_hapus))
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(57, 57, 57)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
Halaman 130
Modul Praktikum Pemrograman Dasar
.addComponent(jLabel2)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_nim, javax.swing.GroupLayout.PREFERRED_SIZE,
123, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_nama, javax.swing.GroupLayout.PREFERRED_SIZE,
215, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(jLabel3)
.addGap(11, 11, 11))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(rb_pria)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(rb_wanita))
.addComponent(txt_tanggal_lahir,
javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txt_nim, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txt_nama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(rb_pria)
.addComponent(rb_wanita))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(txt_tanggal_lahir, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btn_simpan)
.addComponent(btn_update)
.addComponent(btn_hapus))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 294,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
Halaman 131
Modul Praktikum Pemrograman Dasar
if(rb_pria.isSelected()) {
jnskel = "Pria";
}
else {
jnskel = "Wanita";
}
cr.insertMahasiswa(txt_nim.getText().toString(), txt_nama.getText().toString(),
jnskel, txt_tanggal_lahir.getText().toString());
JOptionPane.showMessageDialog(this, "DATA BERHASIL DI SIMPAN");
tampilData();
}
if(rb_pria.isSelected()) {
jnskel = "Pria";
}
else {
jnskel = "Wanita";
}
txt_nim.setText(cr.getListMahasiswa().get(tabel_mahasiswa.getSelectedRow()).getNim());
txt_nama.setText(cr.getListMahasiswa().get(tabel_mahasiswa.getSelectedRow()).getNama());
txt_tanggal_lahir.setText(cr.getListMahasiswa().get(tabel_mahasiswa.getSelectedRow()).getTangg
alLahir());
if(cr.getListMahasiswa().get(tabel_mahasiswa.getSelectedRow()).getJenisKelamin().equals("Pria"
)) {
rb_pria.setSelected(true);
}
else {
rb_wanita.setSelected(true);
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and
feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
Halaman 132
Modul Praktikum Pemrograman Dasar
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(formMahasiswa.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(formMahasiswa.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(formMahasiswa.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(formMahasiswa.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
}
//</editor-fold>
data[i] = arrayData;
i++;
}
tabelModel = new DefaultTableModel(data,kolom){
@Override
public boolean isCellEditable(int rowIndex, int colIndex) {
return false;
}
};
tabel_mahasiswa.setModel(tabelModel);
reset();
}
Halaman 133
Modul Praktikum Pemrograman Dasar
Halaman 134