BAB 1 - Pemrograman Lanjut / PBO : CLASS DAN OBJECT

(1)

LAPORAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

FAKULTAS ILMU KOMPUTER

UNIVERSITAS BRAWIJAYA

BAB

: CLASS DAN OBJECT

NAMA

: MOH. ARIF ANDRIAN

NIM

: 156150600111002

TANGGAL

: 02/03/2016

ASISTEN

: - REZA SAPURTA

- REZKY DERMAWAN

A. DEFINISI MASALAH

Buatlah sebuah sistem sederhana yang menyerupai Sistem Informasi Akademik Mahasiswa (SIAM), dengan ketentuan user menginputkan Nama, Nim, IP serta jurusan.

Selain itu mahasiswa juga dapat memasukkan kode Mata kuliah, Nama Mata kuliah dan jumlah sks mata kuliah tersebut. Jumlah sks yang di ambil harus sesuai dengan IP yang didapat pada semester lalu. Buat skenario dengan banyak mahasiswa minimal 3 orang.

B. SOURCE CODE

Class Siam.java 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

package Praktikum1; public class Siam {

private String nama, nim, jurusan, kodeTerambil; private double ip;

String[] namaMk = new String[10]; String[] kode = new String[10]; int[] sks = new int[10];

int sksMaks = 0;

int[] hasil = new int[100]; int index = 0;

//membuat method bernama setNama dengan parameter String public void setNama(String s) {

nama = s; }

//membuat method bernama setNim dengan parameter String public void setNim(String s) {

nim = s; }

//membuat method bernama setJurusan dengan parameter String public void setJurusan(String s) {

jurusan = s; }

//membuat method bernama setIp dengan parameter double public void setIp(double d) {

ip = d; }


(2)

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

if (i == 9) {

kode[i] = "MK0" + (i + 1); } else {

kode[i] = "MK00" + (i + 1); }

} }

//membuat method yang menginisialisasi array namaMk public void namaMatkul() {

namaMk[0] = "Matematika Komputasi"; namaMk[1] = "Pemrograman Basis Objek";

namaMk[2] = "Arsitektur & Organisasi Komputer"; namaMk[3] = "Teori Belajar dan Pembelajaran"; namaMk[4] = "Bahasa Inggris";

namaMk[5] = "Sistem Operasi"; namaMk[6] = "Sistem Digital";

namaMk[7] = "Perkembangan Peserta Didik"; namaMk[8] = "Filsafat Ilmu Pendidikan"; namaMk[9] = "Pendidikan Agama";

}

//membuat method yang menginisialisasi array sks public int besarSKS() {

sks[0] = 4; sks[1] = 5; sks[2] = 4; sks[3] = 4; sks[4] = 3; sks[5] = 4; sks[6] = 3; sks[7] = 4; sks[8] = 3; sks[9] = 3; return 0; }

//membuat method yang menampilkan sebuah output public void header() {

kodeMk(); namaMatkul(); besarSKS();

System.out.println("Daftar mata kuliah yang dapat diambil :");

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", "No.", "KODE", "NAMA MATA KULIAH", "JUMLAH SKS");

for (int i = 0; i < sks.length; i++) {

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", i + 1, kode[i], namaMk[i], sks[i]);

} }

//membuat method untuk menentukan jumlah SKS yang dapat diambil


(3)

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 92 94 95 96 97 98 99 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 11 0 11

if (ip <= 1) { sksMaks = 12; } else if (ip <= 2) { sksMaks = 15; } else if (ip <= 3) { sksMaks = 18; } else if (ip <= 4) { sksMaks = 24; } else {

System.out.println("ERROR : IP maksimal adalah 4"); System.exit(0);

}

return sksMaks; }

//membuat method yang menampilkan pesan error public String setKodeAmbil(String kodeTerambil) { if (inputGanda(kodeTerambil) == true) {

System.out.println("ERROR : Mata kuliah sudah dipilih");

} else if (sksMaks < sksFromKode(kodeTerambil)) {

System.out.println("ERROR : Tidak bisa melebihi jumlah maksimal SKS");

System.out.println(" Sisa SKS adalah " + sksMaks);

} else {

this.kodeTerambil = kodeTerambil; proses(kodeTerambil);

}

return kodeTerambil; }

public String getNama() { return nama;

}

//method untuk mengembalikan or memanggil nilai nim public String getNim() {

return nim; }

//method untuk mengembalikan or memanggil nilai jurusan public String getJurusan() {

return jurusan; }

//method untuk mengembalikan or memanggil nilai ip public double getIp() {

return ip; }

//method untuk mengembalikan or memanggil nilai sksMaks public int getSKSMaks() {

return sksMaks; }


(4)

2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 12 0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9 13 0 13 1 13 2 13 3 13 4 13 5 13 6 13 7

if (kodeTerambil.equals(kode[0])) { sksMaks -= sks[0];

hasil[index] = 0; index++;

} else if (kodeTerambil.equals(kode[1])) { sksMaks -= sks[1];

hasil[index] = 1; index++;

} else if (kodeTerambil.equals(kode[2])) { sksMaks -= sks[2];

hasil[index] = 2; index++;

} else if (kodeTerambil.equals(kode[3])) { sksMaks -= sks[3];

hasil[index] = 3; index++;

} else if (kodeTerambil.equals(kode[4])) { sksMaks -= sks[4];

hasil[index] = 4; index++;

} else if (kodeTerambil.equals(kode[5])) { sksMaks -= sks[5];

hasil[index] = 5; index++;

} else if (kodeTerambil.equals(kode[6])) { sksMaks -= sks[6];

hasil[index] = 6; index++;

} else if (kodeTerambil.equals(kode[7])) { sksMaks -= sks[7];

hasil[index] = 7; index++;

} else if (kodeTerambil.equals(kode[8])) { sksMaks -= sks[8];

hasil[index] = 8; index++;

} else if (kodeTerambil.equals(kode[9])) { sksMaks -= sks[9];

hasil[index] = 9; index++;

} else {

System.out.println("Kode salah"); }

return sksMaks; }

//method untuk menentukan nilai sks dari input kode matkul public int sksFromKode(String kodeTerambil) {

int pilihSks = 0;

if (kodeTerambil.equals(kode[0])) { pilihSks = sks[0];


(5)

13 8 13 9 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 15 0 15 1 15 2 15 3 15 4 15 5 15 6 15 7 15 8 15 9 16 0 16 1 16

pilihSks = sks[1];

} else if (kodeTerambil.equals(kode[2])) { pilihSks = sks[2];

} else if (kodeTerambil.equals(kode[3])) { pilihSks = sks[3];

} else if (kodeTerambil.equals(kode[4])) { pilihSks = sks[4];

} else if (kodeTerambil.equals(kode[5])) { pilihSks = sks[5];

} else if (kodeTerambil.equals(kode[6])) { pilihSks = sks[6];

} else if (kodeTerambil.equals(kode[7])) { pilihSks = sks[7];

} else if (kodeTerambil.equals(kode[8])) { pilihSks = sks[8];

} else if (kodeTerambil.equals(kode[9])) { pilihSks = sks[9];

} else {

System.out.println("ERROR : Kode salah. Mata kuliah tidak tersedia");

}

return pilihSks; }

// method untuk menampilkan pesan kode sudah dimasukkan public boolean inputGanda(String kodeTerambil) {

boolean tentukan = false;

for (int i = 0; i < index; i++) {

if (kodeTerambil.equalsIgnoreCase(kode[hasil[i]])){ tentukan = true;

} else {

tentukan = false; }

}

return tentukan; }

//method untuk menampilkan hasil final pilihan SKS

public void output()

{ System.out.println("===================================== =====================================");

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", "No.", "Kode", "Nama Mata Kuliah", "SKS");

System.out.println("---");

int jumS = 0;

for (int i = 0; i < index; i++) {

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", i + 1, kode[hasil[i]], namaMk[hasil[i]], sks[hasil[i]]); jumS += sks[hasil[i]];


(6)

3 16 4 16 5 16 6 16 7 16 8 16 9 17 0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 18 0 18 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", "", "", "Jumlah SKS : ", jumS);

int maks = jumS + sksMaks;

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n", "", "", "", "Jumlah maksimal SKS : ", maks);

} }


(7)

18 9 19 0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 19 9 20 0 20 1 20 2 20 3 20 4 20 5 20 6 20 7 20 8 20 9 21 0 21 1 21 2


(8)

3 21 4 21 5 21 6 21 7 21 8 21 9 22 0 22 1 22 2 22 3 22 4 22 5

Class MainSiam.java 1

2 3 4

5 6 7 8 9 1 0 1 1 1 2 1

package Praktikum1; import java.io.*;

public class MainSiam {

public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

String nama, nim, prodi, kode; double ip;

String pilih = "Y";

Siam[] mhs = new Siam[3]; for (int j = 0; j < 3; j++) { mhs[j] = new Siam(); mhs[j].header();

System.out.println(""); System.out.println("");

System.out.println("Mahasiswa ke-" + (j + 1)); System.out.println("");


(9)

3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3

nama = in.readLine(); mhs[j].setNama(nama);

System.out.print("NIM\t: "); nim = in.readLine();

mhs[j].setNim(nim);

System.out.print("Jurusan\t: "); prodi = in.readLine();

mhs[j].setJurusan(prodi); System.out.print("IP\t: ");

ip = Double.parseDouble(in.readLine()); mhs[j].setIp(ip);

mhs[j].setSks();

System.out.println(""); do {

System.out.print("Masukkan kode mata kuliah :"); kode = in.readLine();

mhs[j].setKodeAmbil(kode); if (mhs[j].getSKSMaks() == 0) {

System.out.print("Jumlah maksimal SKS sudah terpenuhi. Tetap di sini? (Y/n) : ");

} else {

System.out.print("Tambah mata kuliah? (Y/n) : ");

}

pilih = in.readLine();

} while (!pilih.equalsIgnoreCase("n"));

System.out.println(""); System.out.println("============================================ ==============================");

System.out.println("");

System.out.println("Nama\t\t: " + mhs[j].getNama()); System.out.println("NIM\t\t: " + mhs[j].getNim()); System.out.println("Jurusan\t\t: " + mhs[j].getJurusan());

System.out.println("IP\t\t: " + mhs[j].getIp()); System.out.println("");

mhs[j].output();

System.out.printf("%-2s %-5s %-10s %-47s %-2s \n\n\n\n", "", "", "", "======================================================", ""); }

} }


(10)

3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1

5 2 5 3 5 4

C. PEMBAHASAN

Class Siam.java 1

2 3 4 5 6 7

Package dimana file java disimpan.

Deklarasi kelas Siam. Bukan merupakan main class

Deklarasi variabel-variabel bertipe String yang hanya dapat diakses oleh method-method dalam kelas Siam sendiri.

Deklarasi variabel bertipe double dengan nama ip, yang hanya dapat diakses oleh method-method dalam kelas Siam sendiri.

Deklarasi array bertipe String yang berjumlah 10 elemen. Dengan nama namaMk. Deklarasi array bertipe String yang berjumlah 10 elemen. Dengan nama kode. Deklarasi array bertipe int yang berjumlah 10 elemen. Dengan nama sks.


(11)

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Inisialisasi int sksMaks bernilai 0, yang nantinya digunakan untuk menyimpan sebuah nilai.

Deklarasi array bertipe int yang berjumlah 100 elemen. Dengan nama hasil. Inisialisasi int index bernilai 0, yang nantinya digunakan untuk menyimpan sebuah nilai.

Memberikan komentar pada program.

Deklarasi method setNama yang berfungsi memberi nilai String nama. Nilai berasal input user di MainClass (MainSiam).

Inisialisasi variabel String nama dengan nilai s (input user). Akhir dari method setNama().

Memberikan komentar pada program.

Deklarasi method setNimyang berfungsi memberi nilai String nim. Nilai berasal dari input user di MainClass (MainSiam).

Inisialisasi variabel String nim dengan nilai s (input user). Akhir dari method setNama().

Memberikan komentar pada program.

Deklarasi method setJurusan yang berfungsi memberi nilai String jurusan. Nilai berasal dari input user di MainClass (MainSiam).

Inisialisasi variabel String jurusan dengan nilai s (input user). Akhir dari method setNama().

Memberikan komentar pada program.

Deklarasi method seIpyang berfungsi memberi nilai double ip. Nilai berasal dari input user di MainClass (MainSiam).

Inisialisasi variabel double nama dengan nilai d (input user). Akhir dari method setNama().

Memberikan komentar pada program.

Deklarasi method kodeMk, untuk memberikan sebuah kode untuk mata kuliah. Perulangan yang dimulai dari 0, perulangan akan berhenti hingga i menyentuh banyaknya kode, dimana i terus bertambah tiap perulangan.

Pemilihan kondisi apabila i sama dengan 9....

Maka pemberian kode hanya menggunakan “MKO” yang ditambah nilai i+1. Kondisi dimana apabila nilai_i tidak samadengan 9....

Maka pemberian kode menggunakan “MKOO” yang ditambah nilai i+1. Akhir dari kondisi else.

Akhir dari fungsi looping. Akhir dari method kodeMk();

Memberikan komentar pada program.

Deklarasi method namaMatkul yang berisi inisialisasi dari array namaMk dengan nama mata kuliah.

Inisialisasi nama mata kuliah pertama adalah Matematika Komputasi. Inisialisasi nama mata kuliah kedua adalah Pemrograman Basis Objek.

Inisialisasi nama mata kuliah ketiga adalah Arsitektur & Organisasi Komputer. Inisialisasi nama mata kuliah keempat adalah Teori Belajar dan Pembelajaran. Inisialisasi nama mata kuliah kelima adalah Bahasa Inggris.


(12)

46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Inisialisasi nama mata kuliah kedelapan adaalah Pekembangan Peserta Didik Inisialisasi nama mata kuliah kesembilan adalah Filsafat Ilmu Pendidikan. Inisialisasi nama mata kuliah kesepuluh adalah Pendidikan Agama. Akhir dari method namaMatkul();.

Memberikan komentar pada program.

Deklarasi method besarSKS yang berisi penginisialisasian array sks. Inisialisasi sks[0] dengan nilai 4 (Matematika Komputasi)

Inisialisasi sks[1] dengan nilai 5 (Pemrograman Basis Objek)

Inisialisasi sks[2] dengan nilai 4 (Arsitektur & Organisasi Komputer) Inisialisasi sks[3] dengan nilai 4 (Teori Belajar dan Pembelajaran) Inisialisasi sks[4] dengan nilai 3 (Bahasa Inggris)

Inisialisasi sks[5] dengan nilai 4 (Sistem Operasi) Inisialisasi sks[6] dengan nilai 3 (Sistem Digital)

Inisialisasi sks[7] dengan nilai 4 (Perkembangan Peserta Didik) Inisialisasi sks[8] dengan nilai 3 (Filsafat Ilmu Pendidikan) Inisialisasi sks[9] dengan nilai 3 (Pendidikan Agama) Mengembalikan nilai menjadi 0.

Akhir dari method besarSKS.

Memberikan komentar pada program.

Deklarasi method header yang berisi daftar kode mata kuliah yang digunakan mahasiswa sebagai acuan dalam memilih mata kuliah.

Method header memanggil method kodeMk Method header memanggil method namaMatkul Method header memanggil method besarSKS

Menampilkan “Daftar mata kuliah yang dapat diambil : “. Menampilkan “No., Kode, Nama mata kuliah, Jumlah SKS”.

Perulangan yang dimulai dari_i = 0, dimana perulangan akan terus berjalan selama nilai_i kurang dari jumlah array sks, dalam setiap perulangan akan terjadi decrement pada nilai_i.

Menampilkan output berupa No. Urut, kode matkul, nama matkul, dan jumlah SKS tiap matkul.

Akhir dari fungsi looping. Akhir dari method header.

Memberikan komentar pada program.

Deklarasi method setSks yang berisi pemilihan kondisi, dimana ip mahasiswa menentukan jumlah maksimal SKS yang dapat diambil.

Pemilihan kondisi apabila ip kurang atau sama dengan 1, maka.... Jumlah maksimal SKS yang dapat diambil adalah 12.

Pemilihan kondisi apabila ip kurang atau sama dengan 2, maka.... Jumlah maksimal SKS yang dapat diambil adalah 15.

Pemilihan kondisi apabila ip kurang atau sama dengan 3, maka.... Jumlah maksimal SKS yang dapat diambil adalah 18

Pemilihan kondisi apabila ip kurang atau sama dengan 4, maka.... Jumlah maksimal SKS yang dapat diambil adalah 24. .

Apabila semua kondisi tidak terpenuhi, maka... Menampilkan pesan “ERROR : IP maksimal adalah 4”


(13)

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

Kemudian program akan berakhir secara otomatis. Akhir dari stetement else.

Mengembalikan nilai dari variabel sksMaks / atau batas sks yang dapat di ambil. Akhir dari method setSks.

Memberikan komentar pada program.

Deklarasi method String dengan parameter String yang menampilkan pesan error. Pemilihan kondisi apabila kode yang dimasukkan sama, maka....

Menampilkan pesan error, yaitu “ERROR : Mata kuliah sudah dipilih” Apabila jumlah Maks SKS kurang dari sksyang dipilih, maka... Akan muncul pesan error “Tida bisa melebihi jumlah maksimal SKS” Menampilkan “Sisa SKS adalah” yang diikuti jumlah SKS yang tersisa. Apabila semua kondisi sebelumnya tidak terpenuhi, maka ....

Mengisialisasi kodeTerambil dengan kode yang baru dipilih.

Akan memanggil method proses dengan parameter nilai dari kode yang dipilih. Akhir dari statement else.

Mengembalikan nilai kode yang dipilih. Akhir dari method setKodeAmbil. Deklarasi method getNama yang mengembalikan nilai nama. Akhir dari method getNama.

Memberikan komentar pada program. Deklarasi method getNim

yang mengembalikan nilai nim. Akhir dari method getNim.

Memberikan komentar pada program. Deklarasi method getJurusan

yang mengembalikan nilai jurusan. Akhir dari method getJurusan. Memberikan komentar pada program. Deklarasi method getIp

yang mengembalikan nilai ip. Akhir dari method getIp.

Memberikan komentar pada program. Deklarasi method getSKSMaks yang mengembalikan nilai sksMaks. Akhir dari method getSKSMaks. Memberikan komentar pada program.

Deklarasi method proses yang digunakan untuk menghitung SKS yang tersisa. Apabila kode yang dipilih sama dengan kode[0], maka....

Nilai sksMaks samadengan dikurangi nilai sks[0] Dimana nilai hasil[index] adalah 0

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[1], maka.... Nilai sksMaks samadengan dikurangi nilai sks[1]


(14)

133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176

Apabila kode yang dipilih sama dengan kode[2], maka.... Nilai sksMaks samadengan dikurangi nilai sks[2]

Dimana nilai hasil[index] adalah 2

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[3], maka.... Nilai sksMaks samadengan dikurangi nilai sks[3]

Dimana nilai hasil[index] adalah 3

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[4], maka.... Nilai sksMaks samadengan dikurangi nilai sks[4]

Dimana nilai hasil[index] adalah 4

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[5], maka.... Nilai sksMaks samadengan dikurangi nilai sks[5]

Dimana nilai hasil[index] adalah 5

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[6], maka.... Nilai sksMaks samadengan dikurangi nilai sks[6]

Dimana nilai hasil[index] adalah 6

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[7], maka.... Nilai sksMaks samadengan dikurangi nilai sks[7]

Dimana nilai hasil[index] adalah 7

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[8], maka.... Nilai sksMaks samadengan dikurangi nilai sks[8]

Dimana nilai hasil[index] adalah 8

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila kode yang dipilih sama dengan kode[9], maka.... Nilai sksMaks samadengan dikurangi nilai sks[9]

Dimana nilai hasil[index] adalah 9

Nilai index akan bertambah 1 apabila memenuhi kondisi ini. Apabila semua kondisi di atas tidak terpenuhi, maka... Akan menampilkan pesan “Kode salah”.

Akhir dari stetement else.

Method akan mengembalikan nilai hasil dari pengurangan-pengurangan di kondisi yang memenuhi.

Akhir dari method proses. Memberikan komentar

Deklarasi method int yang berparameter String.

Deklarasi dan inisialisasi variabel pilihSks = 0, yang nantinya akan terisi oleh nilai dari sks.

Apabila kode yang dipilih adalah kode[0], maka.... pilihSks akan terisi oleh sks[0].

Apabila kode yang dipilih adalah kode[1], maka.... pilihSks akan terisi oleh sks[1].


(15)

177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217

Apabila kode yang dipilih adalah kode[2], maka.... pilihSks akan terisi oleh sks[2].

Apabila kode yang dipilih adalah kode[3], maka.... pilihSks akan terisi oleh sks[3].

Apabila kode yang dipilih adalah kode[4], maka.... pilihSks akan terisi oleh sks[4].

Apabila kode yang dipilih adalah kode[5], maka.... pilihSks akan terisi oleh sks[5].

Apabila kode yang dipilih adalah kode[6], maka.... pilihSks akan terisi oleh sks[6].

Apabila kode yang dipilih adalah kode[7], maka.... pilihSks akan terisi oleh sks[7].

Apabila kode yang dipilih adalah kode[8], maka.... pilihSks akan terisi oleh sks[8].

Apabila kode yang dipilih adalah kode[9], maka.... pilihSks akan terisi oleh sks[9].

Apabila semua kondisi tidak memenuhi, maka....

Akan menampilkan pesan error “Kode salah, Mata kuliah tidak tersedia”. Akhir dari ststement else.

Mengembalikan nilai pilihSks. Akhir dari method sksFromKode. Memberikan komentar pada program.

Deklarasi method yang mengidentifikasi, apakah terjadi penumpukan data (data yang sama).

Deklarasi variabel boolean tentukan dengan inisialisasi yang bernilai false. Melakukan perulangan sampai kondisi mencapai nilai index.

Apabila kondisi kode matakuliah sudah terambil. Maka.... Variabel tentukan bernilai true.

Apabila selain kondisi diatas. Maka... Variabel tentukan akan tetap bernilai false. Akhir dari statement else.

Akhir dari fungsi perulangan.

Mengembalikan nilai dari variabel tentukan. Akhir dari method inputGanda.

Memberikan komentar pada program.

Deklarasi method output, yang berisi instruksi keluaran. Menampilkan “============================” Menampilkan “No. Kode, Nama Mata Kuliah, dan SKS” Menampilkan “---”

Deklarasi dan inisialisasi jumS dengan angka 0, dimana jumS digunakan unuk menyimpan sebuah nilai dari proses lain.

Melakukan perulangan untuk menampilkan semua mata kuliah yang telah diambil beserta keterangan kode dan jumlah sksnya.


(16)

220 221 222 223 224 225

Akhir dari proses perulangan.

Menampilkan “---” Menampilkan jumlah sks yang telah diambil.

Mendeklarasikan sebuah variabel yang bertipe integer yang digunakan untuk menyimpan jumlah sks maksimal yang dapat diambil.

Menampilkan jumlah maksimal SKS yang dapat diambil. Akhir dari method output.

Akhir dari kelas Siam. Class MainSiam.java 1

2 3 4

5 6 7 8 9 1 0 11 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1

Package dimana file java disimpan.

Mengimport dari package java.io. Yang di dalamnya sudah terdapat BufferedReader dan InputStreamReader.

Deklarasi dari calas yang bernama MainSiam.

Deklarasi method main yang digunakan untuk menjalakan program. otomatis akan dipanggil saat program dijalankan. Terdapat throws IOException agar BufferedReader dapat digunakan.

Deklarasi variabel BufferedReader dengan nama in.

Deklarasi variable bertipe String, yaitu nama, nim, prodi, dan kode. Deklarasi variabel bertipe double ip.

Deklarasi dan inisialisasi variabel pilih dengan Y. Deklarasi array mhs dengan jumlah 3.

Perulangan dengan nilai pertama adalah 0, dengan perulangan dilakukan tiga kali karena j akan bertambah di tiap perulangan.

Membuat objek baru dengan nama mhs[j] yang berasal dari kelas Siam. Memanggil method header.

Mencetak line baru. Mencetak line baru.

Mencetak “Mahasiswa ke-” yang diikuti j+1. Mencetak line baru.

Mencetak “Nama <tab> : ”

Inisialisasi nama dengan input dari user. Memasukkan nilai nama ke method setNama. Mencetak “NIM <tab> : ”

Inisialisasi nim dengan input dari user. Memasukkan nilai nim ke method setNim. Mencetak “Jurusan <tab> : ”

Inisialisasi prodi dengan input dari user. Memasukkan nilai prodi ke method setJurusan. Mencetak “IP <tab> : ”

Inisialisasi ip dengan input dari user. Memasukkan nilai ip ke method setIp.

Method main akan memanggil method setSks dari kelas Siam. Mencetak line baru.

Program akan melakukan...


(17)

2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3

Inisialisasi kode dengan input dari user.

Memasukan nilai inputan tersebut menjadi parameter dari method setKodeAmbil. Apabila kode sisa SKS 0, maka...

Mencetak “Jumlah maksimal SKS sudah terpenuhi. Tetap di sini?? (Y/n) : ” Apabila kondisi di atas tidak terpenuhi, maka...

Mencetak “Tambah mata kuliah? (Y/n) : ”. Akhir dari statement else.

Inisialisasi variabel pilihan dengan Inputan dari user.

Apabila pilih samadengan n, maka perulangan do while akan berhenti. Mencetak line baru.

Mencetak “====================================” Mencetak line baru.

Mencetak “Nama<tab><tab>:” dan diikuti nama. Mencetak “NIM<tab><tab>:” dan diikuti nim Mencetak “Jurusan<tab><tab>:” dan diikutijurusan. Mencetak “IP<tab><tab>:” dan diikuti ip.

Mencetak line baru.

Method main memanggil method output dari kelas Siam. Mencetak “=================================” Akhir dari proses perulangan.

Akhir dari method main. Akhur dari class MainSiam.


(18)

4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4

D. SCREENSHOT PROGRAM


(19)

Tampilan input dari mahasiswa dan saat sudah mencapai jumlah maksimal SKS..


(20)

(21)

E. PRAKTIKUM

A. Class

1.Apakah yang disebut dengan variabel instance dan lokal variabel? Jelaskan perbedaanya!

Jawaban :

Variabel instance adalah variabel yang dideklarasikan di dalam kelas, tetapi tidak di dalam method. Sementara lokal variabel adalah variabel yang dideklarasikan di dalam method. Jika dideklarasikan di dalam method, maka lokal variabel berada di dalam kelas, karena method sendiri ada di dalam sebuah kelas.

2.Lakukan percobaan diatas dan benahi jika menemukan kesalahan!

Jawaban :

Sudah dilakukan percobaan, tidak ditemukan sebuah kesalahan.

3.Rubah kode pada mainMobil di atas menjadi proses meminta masukan dari user dan buat menjadi interaktif!

Jawaban :

Dengan mengimport package dari java.io, kemudian dapat digunakan BufferedReader (dengan throws IOException) ataupun Scanner pada package java.util. Berikut adalah kode yang sudah diubah.

import java.io.*;

publicclass MainMobil {

publicstaticvoid main(String[] args) throws IOException {

BufferedReader tanya = new BufferedReader (new

InputStreamReader(System.in));

String plat, warna, manu;

int kecepatan;

double waktu;

Mobil m1 = new Mobil();

System.out.print("Masukkan plat nomor mobil anda : "); plat = tanya.readLine();

m1.setNoPlat(plat);

System.out.print("Masukkan warna mobil anda : "); warna = tanya.readLine();

m1.setWarna(warna);

System.out.print("Masukkan manufaktur mobil anda: "); manu = tanya.readLine();

m1.setManufaktur(manu);

System.out.print("Masukkan kecepatan maksimal mobil anda (km/h) : ");

kecepatan = Integer.parseInt(tanya.readLine()); m1.setKecepatan(kecepatan);

m1.displayMessage();


(22)

Mobil m2 = new Mobil();

System.out.print("Masukkan plat nomor mobil anda : "); plat = tanya.readLine();

m2.setNoPlat(plat);

System.out.print("Masukkan warna mobil anda : "); warna = tanya.readLine();

m2.setWarna(warna);

System.out.print("Masukkan manufaktur mobil anda: "); manu = tanya.readLine();

m2.setManufaktur(manu);

System.out.print("Masukkan kecepatan maksimal mobil anda (km/h) : ");

kecepatan = Int.parseInt(tanya.readLine()); m2.setKecepatan(kecepatan);

m2.displayMessage(); }

}

4.Tambahkan method pada class mobil bernama setWaktu yang berparameter double, yang kemudian disimpan pada variabel waktu! (Ketetuannya adalah user harus menginputkan dalam satuan jam).

Jawaban:

Kode pada class Mobil.

publicclass Mobil {

//variable lain (variable terdahulu)

privatedoublewaktu; //menambah variable waktu //method lain (method terdahulu)

//menambah method setWaktu (parameter double) publicvoid setWaktu(double d){

waktu = d; }

//method lain (method terdahulu)

}

Kode pada class Mainmobil.

import java.io.*;

publicclass MainMobil {

publicstaticvoid main(String[] args) throws IOException { //code lain (code yang sudah ada)

//Menambah kode pemanggil setWaktu

System.out.print("Masukkan waktu (jam) : "); waktu = Integer.parseInt(tanya.readLine()); m1.setWaktu(waktu);

//code yang sudah ada

m1.displayMessage();

System.out.println("================================= ===============");


(23)

//code lain (code yang sudah ada)

//Menambah kode pemanggil setWaktu

System.out.print("Masukkan waktu (jam) : "); waktu = Integer.parseInt(tanya.readLine()); m2.setWaktu(waktu);

//code yang sudah ada

m2.displayMessage(); }

}

5.Tambahkan method bernama rubahSekon mempunyai parameter bertipe double dan hanya dapat dipanggil pada class mobil. Method ini memiliki fungsi untuk merubah masukan user yaitu jam menjadi sekon. Method tersebut di panggil pada method setWaktu dengan nilai parameter adalah nilai dari variabel parameter method setWaktu!

Jawaban :

Dengan menyisipkan variabel double detik, kemudian menyisipkan kode berikut dalam kelas Mobil.

//membuat variable sekon u/ rubahSekon privatedoublewaktu, detik;

publicvoid setWaktu(double d){

waktu = d;

rubahSekon(waktu); //memanggil rubahSekon

}

//membuat method baru

publicvoid rubahSekon(double d){

detik = d;

detik *= 3600;

}

6.Tambahkan method pada class mobil dan hanya dapat dipanggil pada class mobil bernama rubahKecepatan yang mempunyai fungsi untuk merubah format kecepatan yang awalnya km/h menjadi m/s. Dipanggil di method setKecepatan!

Jawaban :

Menambahkan variabel double meter, kemudian menyisipkan kode berikut dalam kelas Mobil.

privateintkecepatan, mPs; //tambah variable mPs privatedoublewaktu, sekon, mPs2; //variable mPs2 publicvoid setKecepatan(int i){

kecepatan = i;

rubahKecepatan(kecepatan); //panggil rubahKecepatan

}

//buat method

publicvoid rubahKecepatan(int i){

this.mPs = i;


(24)

7.Tambahkan method pada class mobil bernama hitungJarak yang mempunyai aksi untuk menghitung jarak yang dapat di tempuh oleh mobil dengan rumus jarak = kecepatan * waktu!

Jawaban :

//tambah variable jarak

privatedouble waktu, sekon, mPs2, jarak;

//tambah method

publicvoid hitungJarak(){ jarak = mPs2*sekon; }

//Kemudian panggil method hitungJarak di method main

m1.setWaktu(waktu); //letakkan setelah kode di samping

m1.hitungJarak(); // agar nilai waktu tidak default

8.Tambahkan informasi jarak yang dapat ditempuh pada method displayMessage kemudian rubah satuannya yang awalnya m (meter) menjadi km (kilometer)!

Jawaban :

Tambahkan kode berikut ini pada method displayMessage.

//tambah variable double kilo u/ simpan nilai kilo privatedoublewaktu, sekon, mPs2, jarak, kilo;

publicvoid hitungJarak(){

jarak = mPs2*sekon;

kilo = jarak*1000; //konversi m >> km }

//tambahkan kode berikut di method displayMessage

System.out.println("Jarak yang dapat ditempuh adalah "+kilo);

9.Mahasiswa A ingin menulis pada sebuah buku tulis yang ingin dia miliki, isi lembar buku tersebut adalah 50 lembar. Setiap harinya ia menulis sebanyak 100 kata perhari yang cukup untuk 1/2 halaman buku. Buatlah rumus untuk menghitung berapa lama ia menghabiskan 1 buku tersebut serta identifikasilah objek, dan karakteristiknya kemudian implementasikan dalam bentuk class.

Jawaban :

Berikut merupakan kode yang telah dibuat.

publicclass NoSembilan {

staticintlembar, tulis, hasil;

publicstaticvoid main(String[] args){ buku();

hitungHari(); }

publicstaticvoid buku(){

lembar = 50; tulis = 4; }

publicstaticvoid hitungHari(){

hasil = lembar*tulis;

System.out.println("Mahasiswa A dapat menghabiskan 1 buku selama "+hasil+" hari");

} }


(25)

F.

KESIMPULAN

OOP adalah pemrograman yang berorientasi pada objek. Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh dalam program Mobil yang dijalankan di atas, dimana pada kelas MainMobil tidak begitu banyak kode yang ditulis di kelas tersebut, karena objek-objek yang akan digunakan berada pada kelas Mobil yang bisa dipanggil kapan saja.

Untuk menginstansiasi objek baru dari tipe kelas yang telah didefinisikan, secara eksplisit kita perlu melakukan dua tahap. Pertama, kita perlu mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari kelas bersangkutan. Kedua, kita perlu menginstansiasi kelas dengan menggunakan operator new dan memasukkan instance-nya ke dalam variabel referensi yang baru saja dideklarasikan.

Berikut ini ilustrasi dua tahap proses tersebut :

//Mendeklarasikan variabel sedan bertipe Mobil Mobil sedan;

//Melakukan instansiasi dan memasukkan referensi ke variabel sedan

sedan = new Mobil();

Atau kita bisa mengunakan cara kedua, biasanya ditulis dalam satu baris, seperti berikut:

//Mendeklarasikan variabel sedan bertipe Mobil dan Melakukan instansiasi dan memasukkan referensi ke variabel sedan.

Mobil sedan = new Mobil();

Class adalah merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari object.

Contoh: Class Mobil.

Objek adalah instance dari class. Jika class secara umum merepresentasikan (template) sebuah object, sebuah instance adalah representasi nyata dari class itu sendiri. Contoh : Dari class Mobil kita dapat membuat objek Sedan, Pick-up dan Truck.

Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior adalah kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.


(1)

(2)

E. PRAKTIKUM

A. Class

1.Apakah yang disebut dengan variabel instance dan lokal variabel? Jelaskan perbedaanya!

Jawaban :

Variabel instance adalah variabel yang dideklarasikan di dalam kelas, tetapi tidak di dalam method. Sementara lokal variabel adalah variabel yang dideklarasikan di dalam method. Jika dideklarasikan di dalam method, maka lokal variabel berada di dalam kelas, karena method sendiri ada di dalam sebuah kelas.

2.Lakukan percobaan diatas dan benahi jika menemukan kesalahan!

Jawaban :

Sudah dilakukan percobaan, tidak ditemukan sebuah kesalahan.

3.Rubah kode pada mainMobil di atas menjadi proses meminta masukan dari user dan buat menjadi interaktif!

Jawaban :

Dengan mengimport package dari java.io, kemudian dapat digunakan BufferedReader (dengan throws IOException) ataupun Scanner pada package java.util. Berikut adalah kode yang sudah diubah.

import java.io.*;

publicclass MainMobil {

publicstaticvoid main(String[] args) throws IOException {

BufferedReader tanya = new BufferedReader (new InputStreamReader(System.in));

String plat, warna, manu; int kecepatan;

double waktu;

Mobil m1 = new Mobil();

System.out.print("Masukkan plat nomor mobil anda : "); plat = tanya.readLine();

m1.setNoPlat(plat);

System.out.print("Masukkan warna mobil anda : "); warna = tanya.readLine();

m1.setWarna(warna);

System.out.print("Masukkan manufaktur mobil anda: "); manu = tanya.readLine();

m1.setManufaktur(manu);

System.out.print("Masukkan kecepatan maksimal mobil anda (km/h) : ");

kecepatan = Integer.parseInt(tanya.readLine()); m1.setKecepatan(kecepatan);

m1.displayMessage();

System.out.println("================================= ===============");


(3)

Mobil m2 = new Mobil();

System.out.print("Masukkan plat nomor mobil anda : "); plat = tanya.readLine();

m2.setNoPlat(plat);

System.out.print("Masukkan warna mobil anda : "); warna = tanya.readLine();

m2.setWarna(warna);

System.out.print("Masukkan manufaktur mobil anda: "); manu = tanya.readLine();

m2.setManufaktur(manu);

System.out.print("Masukkan kecepatan maksimal mobil anda (km/h) : ");

kecepatan = Int.parseInt(tanya.readLine()); m2.setKecepatan(kecepatan);

m2.displayMessage(); }

}

4.Tambahkan method pada class mobil bernama setWaktu yang berparameter double, yang kemudian disimpan pada variabel waktu! (Ketetuannya adalah user harus menginputkan dalam satuan jam).

Jawaban:

Kode pada class Mobil. publicclass Mobil {

//variable lain (variable terdahulu)

privatedoublewaktu; //menambah variable waktu //method lain (method terdahulu)

//menambah method setWaktu (parameter double)

publicvoid setWaktu(double d){ waktu = d;

}

//method lain (method terdahulu) }

Kode pada class Mainmobil. import java.io.*;

publicclass MainMobil {

publicstaticvoid main(String[] args) throws IOException { //code lain (code yang sudah ada)

//Menambah kode pemanggil setWaktu

System.out.print("Masukkan waktu (jam) : "); waktu = Integer.parseInt(tanya.readLine()); m1.setWaktu(waktu);

//code yang sudah ada m1.displayMessage();

System.out.println("================================= ===============");


(4)

//code lain (code yang sudah ada) //Menambah kode pemanggil setWaktu

System.out.print("Masukkan waktu (jam) : "); waktu = Integer.parseInt(tanya.readLine()); m2.setWaktu(waktu);

//code yang sudah ada m2.displayMessage(); }

}

5.Tambahkan method bernama rubahSekon mempunyai parameter bertipe double dan hanya dapat dipanggil pada class mobil. Method ini memiliki fungsi untuk merubah masukan user yaitu jam menjadi sekon. Method tersebut di panggil pada method setWaktu dengan nilai parameter adalah nilai dari variabel parameter method setWaktu!

Jawaban :

Dengan menyisipkan variabel double detik, kemudian menyisipkan kode berikut dalam kelas Mobil.

//membuat variable sekon u/ rubahSekon

privatedoublewaktu, detik;

publicvoid setWaktu(double d){ waktu = d;

rubahSekon(waktu); //memanggil rubahSekon }

//membuat method baru

publicvoid rubahSekon(double d){ detik = d;

detik *= 3600; }

6.Tambahkan method pada class mobil dan hanya dapat dipanggil pada class mobil bernama rubahKecepatan yang mempunyai fungsi untuk merubah format kecepatan yang awalnya km/h menjadi m/s. Dipanggil di method setKecepatan!

Jawaban :

Menambahkan variabel double meter, kemudian menyisipkan kode berikut dalam kelas Mobil.

privateintkecepatan, mPs; //tambah variable mPs

privatedoublewaktu, sekon, mPs2; //variable mPs2

publicvoid setKecepatan(int i){ kecepatan = i;

rubahKecepatan(kecepatan); //panggil rubahKecepatan }

//buat method

publicvoid rubahKecepatan(int i){ this.mPs = i;

mPs2 = (double) mPs; //konversi int >> double

mPs2 = (mPs2*10)/36; //konversi km/h >> m/s }


(5)

7.Tambahkan method pada class mobil bernama hitungJarak yang mempunyai aksi untuk menghitung jarak yang dapat di tempuh oleh mobil dengan rumus jarak = kecepatan * waktu!

Jawaban :

//tambah variable jarak

privatedouble waktu, sekon, mPs2, jarak; //tambah method

publicvoid hitungJarak(){ jarak = mPs2*sekon; }

//Kemudian panggil method hitungJarak di method main m1.setWaktu(waktu); //letakkan setelah kode di samping m1.hitungJarak(); // agar nilai waktu tidak default

8.Tambahkan informasi jarak yang dapat ditempuh pada method displayMessage kemudian rubah satuannya yang awalnya m (meter) menjadi km (kilometer)!

Jawaban :

Tambahkan kode berikut ini pada method displayMessage.

//tambah variable double kilo u/ simpan nilai kilo

privatedoublewaktu, sekon, mPs2, jarak, kilo; publicvoid hitungJarak(){

jarak = mPs2*sekon;

kilo = jarak*1000; //konversi m >> km } //tambahkan kode berikut di method displayMessage

System.out.println("Jarak yang dapat ditempuh adalah "+kilo);

9.Mahasiswa A ingin menulis pada sebuah buku tulis yang ingin dia miliki, isi lembar buku tersebut adalah 50 lembar. Setiap harinya ia menulis sebanyak 100 kata perhari yang cukup untuk 1/2 halaman buku. Buatlah rumus untuk menghitung berapa lama ia menghabiskan 1 buku tersebut serta identifikasilah objek, dan karakteristiknya kemudian implementasikan dalam bentuk class.

Jawaban :

Berikut merupakan kode yang telah dibuat. publicclass NoSembilan {

staticintlembar, tulis, hasil;

publicstaticvoid main(String[] args){ buku();

hitungHari(); } publicstaticvoid buku(){

lembar = 50; tulis = 4; } publicstaticvoid hitungHari(){

hasil = lembar*tulis;

System.out.println("Mahasiswa A dapat menghabiskan 1 buku selama "+hasil+" hari");

} }


(6)

F.

KESIMPULAN

OOP adalah pemrograman yang berorientasi pada objek. Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh dalam program Mobil yang dijalankan di atas, dimana pada kelas MainMobil tidak begitu banyak kode yang ditulis di kelas tersebut, karena objek-objek yang akan digunakan berada pada kelas Mobil yang bisa dipanggil kapan saja.

Untuk menginstansiasi objek baru dari tipe kelas yang telah didefinisikan, secara eksplisit kita perlu melakukan dua tahap. Pertama, kita perlu mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari kelas bersangkutan. Kedua, kita perlu menginstansiasi kelas dengan menggunakan operator new dan memasukkan instance-nya ke dalam variabel referensi yang baru saja dideklarasikan.

Berikut ini ilustrasi dua tahap proses tersebut :

//Mendeklarasikan variabel sedan bertipe Mobil

Mobil sedan;

//Melakukan instansiasi dan memasukkan referensi ke variabel sedan

sedan = new Mobil();

Atau kita bisa mengunakan cara kedua, biasanya ditulis dalam satu baris, seperti berikut:

//Mendeklarasikan variabel sedan bertipe Mobil dan Melakukan instansiasi dan memasukkan referensi ke variabel sedan.

Mobil sedan = new Mobil();

Class adalah merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari object.

Contoh: Class Mobil.

Objek adalah instance dari class. Jika class secara umum merepresentasikan (template) sebuah object, sebuah instance adalah representasi nyata dari class itu sendiri. Contoh : Dari class Mobil kita dapat membuat objek Sedan, Pick-up dan Truck.

Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior adalah kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.