• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

N/A
N/A
Anisa Putri Maharani

Academic year: 2024

Membagikan "LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK "

Copied!
29
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB : ENCAPSULATION

NAMA : ANISA PUTRI MAHARANI

NIM : 225150201111008

ASISTEN : Tengku Muhammad Rafi Rahardiansyah Muhammad Bin Djafar Almasyhur TGL PRAKTIKUM : 15 Maret 2023

A. Encapsulation 1 Pertanyaan

1. Lakukan percobaan diatas dan benahi jika menemukan kesalahan!

Source code

Student.java

1. package Laprak4aPBO;

2.

3. public class Student{

4. private String name;

5. private int mark;

6. public void setName(String n){

7. name = n;

8. }

9. public String getName(){

10. return name;

11. }

12. public void setMark(int m){

13. mark = m;

14. }

15. public int getMark(){

16. return mark;

17. } 18. }

Test.java

1. package Laprak4aPBO;

2.

3. public class Test {

4. public static void main(String[] args) { 5. Student s1 = new Student();

6. s1.setName("Enkapsulasi");

7. s1.setMark(90);//perbaikan dari s1.setMark("90") 8. System.out.println("s1Name is " +

s1.getName());//perbaikan dari method setName() 9. System.out.println("s1Mark is " +

s1.getMark());//perbaikan dari method setMark()

(2)

10. System.out.println("name dan mark " +

s1.getName() + " " + s1.getMark());//perbaikan dari penulisan variabel name dan mark

11. } 12. }

Output sebelum diperbaiki

Output sesudah diperbaiki

(3)

Penjelasan

Pada program di atas terdapat kesalahan pada kelas Test sehingga menyebabkan terjadinya error. Kesalahan pertama ada pada parameter yang diberikan pada method setMark(“90”).

Method ini menerima parameter berupa String yang seharusnya integer. Kesalahan kedua ada pada pemanggilan method setName() dan setMark(). Kedua method tersebut berguna untuk mengeset nilai dari variabel nama dan mark pada objek s1 tetapi malah digunakan untuk mendapatkan nilai. Seharusnya menggunakan method getName() dan getMark() untuk mendapatkan nilai dari variabel tersebut dengan cara s1.getName() dan s1.getMark().

Kesalahan ketiga ada pada penulisan variable nama dan mark yang belum didefinisikan di dalma method main() sehingga tidak dapat diakses secara langsung. Agar dapat mengakses nilai dari varibale name dan mark, dapat menggunakan method getter getName() dan getMark() yang sebelumnya sudah didefinisikan di dalam class Student.

Pertanyaan

2. Jika pada baris 6 s1.setName diubah menjadi s1.getName apa yang terjadi? jelaskan!

Source code Test.java

1. package Laprak4aPBO;

2.

3. public class Test {

4. public static void main(String[] args) { 5. Student s1 = new Student();

6. s1.setName("Enkapsulasi");

7. s1.setMark(90);//perbaikan dari s1.setMark("90") 8. System.out.println("s1Name is " +

s1.getName());//perbaikan dari method setName() 9. System.out.println("s1Mark is " +

s1.getMark());//perbaikan dari method setMark() 10. System.out.println("name dan mark " +

s1.getName() + " " + s1.getMark());//perbaikan dari penulisan variabel name dan mark

11. } 12. } Output

(4)

Penjelasan

Ketika s1.setName() diubah menjadi s1.getName(), maka akan mengatasi error yang terjadi sebelumnya. Method setName() digunakan hanya untuk memanggil saja. Sedangkan method getName() digunakan untuk mendapatkan nilai dari variabel name pada objek s1.

Pertanyaan

3. Setelah diperbaiki, ubahlah hak akses pada baris 4 (pada class Student) menjadi private apa yang terjadi jika class Test dijalankan? Jelaskan!

Source code

Student.java

1. package Laprak4aPBO;

2.

3. public class Student{

4. private String name;

5. private int mark;

6. private void setName(String n){

7. name = n;

8. }

9. public String getName(){

10. return name;

11. }

12. public void setMark(int m){

13. mark = m;

14. }

15. public int getMark(){

16. return mark;

17. } 18. } Output

(5)

Penjelasan

Ketika access modifier method setName() pada class Student diubah menjadi private, maka method tersebut tidak dapat diakses oleh class di luarnya. Hanya dapat diakses oleh class Student itu sendiri. Sehingga saat memanggil method setName() di class Test, akan terjadi error.

Pertanyaan

4. Jika kedua kelas diatas terdapat dalam package yang sama apakah konsep enkapsulasi tetap berfungsi? jelaskan!

Source code

Student.java

1. package Laprak4aPBO;

2.

3. public class Student{

4. private String name;

5. private int mark;

6. private void setName(String n){

7. name = n;

8. }

9. public String getName(){

10. return name;

11. }

12. public void setMark(int m){

13. mark = m;

14. }

15. public int getMark(){

16. return mark;

17. } 18. }

Test.java

1. package Laprak4aPBO;

2. public class Test {

3. public static void main(String[] args) { 4. Student s1 = new Student();

5. s1.setName("Enkapsulasi");

6. s1.setMark(90);

7. System.out.println("s1Name is " + s1.getName());

8. System.out.println("s1Mark is " + s1.getMark());

9. System.out.println("name dan mark " + s1.getName() + " " + s1.getMark());

10. } 11. }

(6)

Output

Penjelasan

Konsep enkapsulasi akan tetap berfungsi ketika dua kelas tersebut berada di package yang sama. Pada program di atas, kedua kelas berada di dalam package Laprak4aPBO.

Enkapsulasi merupakan konsep yang memungkinkan untuk membatasi akses data dalam sebuah class. Sehingga hanya method-method tertentu yang dapat mengakses atau emngubah data tersebut. Konsep ini dapat diterapkan melalui penggunaan access modifier.

(7)

B. Encapsulation 2 Pertanyaan

1. Method apakah yang menjadi accessor (getter) ? Source code

Vehicle1.java

1. package Laprak4bPBO;

2.

3. public class Vehicle1 {

4. private double load, maxLoad;

5. public Vehicle1 (double max){

6. this.maxLoad = max;

7. }

8. public double getLoad(){

9. return this.load;

10. }

11. public double getMaxLoad(){

12. return this.maxLoad;

13. }

14. public boolean addBox(double weight){

15. double temp = 0.0D;

16. temp = this.load + weight;

17. if(temp <= maxLoad){

18. this.load = this.load + weight;

19. return true;

20. }else{

21. return false;

22. } 23. } 24. }

TestVehicle1.java

1. package Laprak4bPBO;

2.

3. public class TestVehicle1{

4. public static void main(String[] args) {

5. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

6. Vehicle1 vehicle = new Vehicle1(10000);

7. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

8. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(250));

9. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(5000));

10. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(4000));

(8)

11. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(300));

12. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

13. } 14. } Output

Penjelasan

Accessor (getter) pada class Vehicle1 ada pada method public double getLoad() dan public double getMaxLoad(). Method getLoad() berguna untuk mengambil nilai dari variabel load di kelas Vehicle1 dan mengembalikan nilainya dalam bentuk tipe data double. Method ini untuk mengambil nilai beban saat ini pada kendaraan. Sedangkan method getMaxLoad() berguna untuk mengambil nilai dari variabel load di kelas Vehicle1 dan mengembalikan nilainya dalam bentuk tipe data double juga. Method ini untuk mengambil nilai beban maksimal yang dapat ditampung oleh kendaraan.

Pertanyaan

2. Tambahkan source code berikut dibawah baris ke 6 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

TestVehicle1.java

1. package Laprak4bPBO;

2.

3. public class TestVehicle1{

4. public static void main(String[] args) {

5. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

6. Vehicle1 vehicle = new Vehicle1(10000);

7. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

8. System.out.println("Add load(100kg) : " + (vehicle.load=500));

9. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(250));

(9)

10. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(5000));

11. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(4000));

12. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(300));

13. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

14. } 15. } Output

Penjelasan

Program akan error karena variabel load di class Vehicle1 dideklarasikan dengan access modifier private. Sehingga tidak dapat diakses dari luar class itu sendiri. Ketika nilai load diubah dengan menuliskan vehicle.load = 500, akan muncul pesan error karena access modifier variabel tersebut adalah private. Jika ingin mengunah nilai variabel load, maka perlu menggunakan method addBox yang ada pada class Vehicle1 agar dapat memenuhi prinsip enkapsulasi.

Pertanyaan

3. Ubahlah tipe data pada atribut load dan maxload pada class Vehicle1 menjadi public.

Jalankan program, apakah output dari program tersebut?

a) Tambahkan source kode berikut dibawah baris ke 6 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

Vehicle1.java

1. package Laprak4bPBO;

2.

3. public class Vehicle1 {

(10)

4. public double load, maxLoad;

5. public Vehicle1 (double max){

6. this.maxLoad = max;

7. }

8. public double getLoad(){

9. return this.load;

10. }

11. public double getMaxLoad(){

12. return this.maxLoad;

13. }

14. public boolean addBox(double weight){

15. double temp = 0.0D;

16. temp = this.load + weight;

17. if(temp <= maxLoad){

18. this.load = this.load + weight;

19. return true;

20. }else{

21. return false;

22. } 23. } 24. }

TestVehicle1.java

1. package Laprak4bPBO;

2.

3. public class TestVehicle1{

4. public static void main(String[] args) {

5. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

6. Vehicle1 vehicle = new Vehicle1(10000);

7. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

8. System.out.println("Add load(100kg) : " + (vehicle.load=500));

9. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

10. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

11. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

12. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

13. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

14. } 15. }

(11)

Output

Penjelasan

Setelah tipe data pada atribut load dan maxload diubah menjadi public, program dapat mengakses dan mengubah nilai secara langsung tanpa perlu menggunakan method getter dan setter. Sehingga, saat menambahkan kode vehicle.load = 500 bisa langsung dijalankan dan menghasilkan output seperti pada gambar screenshot di atas.

Pertanyaan

b) Tambahkan source kode berikut dibawah baris ke 12 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

TestVehicle1.java

1. package Laprak4bPBO;

2. public class TestVehicle1{

3. public static void main(String[] args) {

4. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

5. Vehicle1 vehicle = new Vehicle1(10000);

6. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

7. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

8. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

9. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

10. System.out.println("Add load(100kg) : " + (vehicle.load=500));

11. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

12. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

13. } 14. }

(12)

Output

Penjelasan

Setelah tipe data pada atribut load dan maxload diubah menjadi public, program dapat mengakses dan mengubah nilai secara langsung tanpa perlu menggunakan method getter dan setter. Sehingga, saat menambahkan kode vehicle.load = 500 bisa langsung dijalankan dan menghasilkan output seperti pada gambar screenshot di atas.

Pertanyaan

4. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan maxload pada class Vehicle1 menjadi protected.

a) Tambahkan source kode berikut dibawah baris ke 6 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

Vehicle1.java

1. package Laprak4bPBO;

2.

3. public class Vehicle1 {

4. protected double load, maxLoad;

5. public Vehicle1 (double max){

6. this.maxLoad = max;

7. }

8. public double getLoad(){

9. return this.load;

10. }

11. public double getMaxLoad(){

12. return this.maxLoad;

13. }

14. public boolean addBox(double weight){

15. double temp = 0.0D;

16. temp = this.load + weight;

17. if(temp <= maxLoad){

18. this.load = this.load + weight;

19. return true;

20. }else{

21. return false;

(13)

22. } 23. } 24. }

TestVehicle1.java

1. package Laprak4bPBO;

2.

3. public class TestVehicle1{

4. public static void main(String[] args) {

5. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

6. Vehicle1 vehicle = new Vehicle1(10000);

7. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

8. System.out.println("Add load(100kg) : " + (vehicle.load=500));

9. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

10. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

11. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

12. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

13. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

14. } 15. } Output

Penjelasan

Saat tipe data pada atribut load dan maxLoad diubah menjadi protected, maka mengaksesnya bisa melalui subclass turunan Vehicle1. Karena kelas TestVehicle1 berada dalam package yang sama dengan Vehicle1 di Laprak4bPBO, maka bisa mengakses atribut load dan maxLoad yang sudah diubah menjadi protected. Sehingga saat menambahkan kode System.out.println("Add load(100kg) : " + (vehicle.load=500)); program dapat dijalankan.

(14)

Pertanyaan

b) Tambahkan source kode berikut dibawah baris ke 12 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

TestVehicle1.java

1. package Laprak4bPBO;

2. public class TestVehicle1{

3. public static void main(String[] args) {

4. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

5. Vehicle1 vehicle = new Vehicle1(10000);

6. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

7. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

8. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

9. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

10. System.out.println("Add load(100kg) : " + (vehicle.load=500));

11. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

12. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

13. } 14. } Output

Penjelasan

Setelah tipe data pada atribut load dan maxload diubah menjadi public, program dapat mengakses dan mengubah nilai secara langsung tanpa perlu menggunakan method getter dan setter. Sehingga, saat menambahkan kode vehicle.load = 500 bisa langsung dijalankan dan menghasilkan output seperti pada gambar screenshot di atas.

(15)

Pertanyaan

5. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan maxload pada class Vehicle1 menjadi default.

a) Tambahkan source kode berikut dibawah baris ke 6 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

Vehicle1.java

1. package Laprak4bPBO;

2.

3. public class Vehicle1 { 4. double load, maxLoad;

5. public Vehicle1 (double max){

6. this.maxLoad = max;

7. }

8. public double getLoad(){

9. return this.load;

10. }

11. public double getMaxLoad(){

12. return this.maxLoad;

13. }

14. public boolean addBox(double weight){

15. double temp = 0.0D;

16. temp = this.load + weight;

17. if(temp <= maxLoad){

18. this.load = this.load + weight;

19. return true;

20. }else{

21. return false;

22. } 23. } 24. }

TestVehicle1.java

1. package Laprak4bPBO;

2.

3. public class TestVehicle1{

4. public static void main(String[] args) {

5. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

6. Vehicle1 vehicle = new Vehicle1(10000);

7. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

8. System.out.println("Add load(100kg) : " + (vehicle.load=500));

(16)

9. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

10. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

11. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

12. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

13. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

14. } 15. }

Output

Penjelasan

Saat access modifiernya diubah menjadi default, maka atribut-atribut tersebut masih bisa diakses oleh seluruh kelas yang berada di dalam package yang sama. Kelas Vehicle1 dan TestVehicle1 berada di dalam package yang sama. Sehingga atribut laod dan maxLoad bisa diakses dan tidak terjadi error. Saat menambahkan kode vehicle.load = 500, program bisa langsung dijalankan dan menghasilkan output seperti pada gambar screenshot di atas.

Pertanyaan

b) Tambahkan source kode berikut dibawah baris ke 12 pada class TestVehicle1.

System.out.println("Add load(100kg) : " + (vehicle.load=500));

Jalankan program, apakah output dari program tersebut?

Kembalikan program seperti semula.

Source code

TestVehicle1.java

1. package Laprak4bPBO;

2. public class TestVehicle1{

3. public static void main(String[] args) {

4. System.out.println("Creating a vehicle with a 10,000 kg maximumload.");

5. Vehicle1 vehicle = new Vehicle1(10000);

6. System.out.println("Add box #1 (500kg) : " + vehicle.addBox(500));

7. System.out.println("Add box #1 (250kg) : " + vehicle.addBox(250));

(17)

8. System.out.println("Add box #1 (5000kg) : " + vehicle.addBox(5000));

9. System.out.println("Add box #1 (4000kg) : " + vehicle.addBox(4000));

10. System.out.println("Add load(100kg) : " + (vehicle.load=500));

11. System.out.println("Add box #1 (300kg) : " + vehicle.addBox(300));

12. System.out.println("Vehicle load is " + vehicle.getLoad() + "kg");

13. } 14. }

Output

Penjelasan

Saat access modifiernya diubah menjadi default, maka atribut-atribut tersebut masih bisa diakses oleh seluruh kelas yang berada di dalam package yang sama. Kelas Vehicle1 dan TestVehicle1 berada di dalam package yang sama. Sehingga atribut laod dan maxLoad bisa diakses dan tidak terjadi error. Saat menambahkan kode vehicle.load = 500, program bisa langsung dijalankan dan menghasilkan output seperti pada gambar screenshot di atas.

(18)

Tugas Praktikum

Situasi : Apabila studi kasus KRS mempunyai hubungan dengan data mahasiswa (NIM, Nama, Alamat, No Telp, Jenis Kelamin, Program Studi, dst.)

Soal : Buatlah class diagram dan kode program agar dapat menerapkan sifat enkapsulasi untuk class Mahasiswa

Output : Data mahasiswa setelah diinputkan

Input : NIM, Nama, Alamat, No Telp, Jenis Kelamin, Program Studi, dst.

CLASS DIAGRAM

Source code KRS.java

1. package Laprak4cPBO;

2.

3. public class KRS {

4. private MataKuliah[] daftarMataKuliah;

5. private int jumlahMataKuliah;

6. public KRS() {

7. daftarMataKuliah = new MataKuliah[5];

8. jumlahMataKuliah = 0;

9. }

(19)

10. public void tambahMataKuliah(MataKuliah mk) { 11. if (jumlahMataKuliah < 5) {

12. daftarMataKuliah[jumlahMataKuliah] = mk;

13. jumlahMataKuliah++;

14. } 15. }

16. public void print() {

17. System.out.println("Daftar mata kuliah yang telah dimasukkan:");

18. for (int i = 0; i < jumlahMataKuliah; i++) { 19. System.out.println((i+1) + ". " +

daftarMataKuliah[i].getNama() + " - " + daftarMataKuliah[i].getKode());

20. } 21. } 22. }

MataKuliah.java

1. package Laprak4cPBO;

2.

3. public class MataKuliah { 4. private String kode;

5. private String nama;

6. public MataKuliah(String kode, String nama) { 7. this.kode = kode;

8. this.nama = nama;

9. }

10. public String getKode() { 11. return kode;

12. }

13. public String getNama() { 14. return nama;

15. } 16. }

Mahasiswa.java

1. package Laprak4cPBO;

2.

3. public class Mahasiswa {

4. String nama = "", nim = "", alamat = "",

nomorTelepon = "", jenisKelamin = "", programStudi = "", fakultas = "", jenjang = "", perguruanTinggi = "",

semesterAwal = "", statusAwalMahasiswa = "", statusMahasiswaSaatIni = "";

5. private KRS krsMahasiswa;

6.

7. public String getNama(){

8. return nama;

9. }

(20)

10. public void setNama(String nama){

11. this.nama = nama;

12. }

13. public String getNIM(){

14. return nim;

15. }

16. public void setNIM(String nim){

17. this.nim = nim;

18. }

19. public String getAlamat(){

20. return alamat;

21. }

22. public void setAlamat(String alamat){

23. this.alamat = alamat;

24. }

25. public String getNomorTelepon(){

26. return nomorTelepon;

27. }

28. public void setNomorTelepon(String nomorTelepon){

29. this.nomorTelepon = nomorTelepon;

30. }

31. public String getJenisKelamin(){

32. return jenisKelamin;

33. }

34. public void setJenisKelamin(String jenisKelamin){

35. this.jenisKelamin = jenisKelamin;

36. }

37. public String getProgramStudi(){

38. return programStudi;

39. }

40. public void setProgramStudi(String programStudi){

41. this.programStudi = programStudi;

42. }

43. public String getFakultas(){

44. return fakultas;

45. }

46. public void setFakultas(String fakultas){

47. this.fakultas = fakultas;

48. }

49. public String getJenjang(){

50. return jenjang;

51. }

52. public void setJenjang(String jenjang){

53. this.jenjang = jenjang;

54. }

55. public String getperguruanTinggi(){

56. return perguruanTinggi;

57. }

(21)

58. public void setPerguruanTinggi(String perguruanTinggi){

59. this.perguruanTinggi = perguruanTinggi;

60. }

61. public String getSemesterAwal(){

62. return semesterAwal;

63. }

64. public void setSemesterAwal(String semesterAwal){

65. this.semesterAwal = semesterAwal;

66. }

67. public String getStatusAwalMahasiswa(){

68. return statusAwalMahasiswa;

69. }

70. public void setStatusAwalMahasiswa(String statusAwalMahasiswa){

71. this.statusAwalMahasiswa = statusAwalMahasiswa;

72. }

73. public String getStatusMahasiswaSaatIni(){

74. return statusMahasiswaSaatIni;

75. }

76. public void setStatusMahasiswaSaatIni(String statusMahasiswaSaatIni){

77. this.statusMahasiswaSaatIni = statusMahasiswaSaatIni;

78. } 79.

80. public void printBiodata(){

81. System.out.println("Nama : " + nama);

82. System.out.println("NIM : " + nim);

83. System.out.println("Alamat : " + alamat);

84. System.out.println("Nomor Telepon : " + nomorTelepon);

85. System.out.println("Jenis Kelamin : " + jenisKelamin);

86. System.out.println("Program Studi : " + programStudi);

87. System.out.println("Fakultas : " + fakultas);

88. System.out.println("Jenjang : " + jenjang);

89. System.out.println("Perguruan Tinggi : " + perguruanTinggi);

90. System.out.println("Semester Awal : " + semesterAwal);

91. System.out.println("Status Awal Mahasiswa : " + statusAwalMahasiswa);

92. System.out.println("Status Mahasiswa Saat Ini : "

+ statusMahasiswaSaatIni);

93. System.out.println();

94. System.out.println("Daftar Mata Kuliah Mahasiswa

" + nama);

(22)

95.

System.out.println("====================================

========================");

96. krsMahasiswa.print();

97. } 98.

99. public void printKRS(){

100. System.out.println("Hasil KRS Mahasiswa " + nama + " sementara : ");

101. krsMahasiswa.print();

102. }

103. public void setKrsMahasiswa(KRS krsMahasiswa){

104. this.krsMahasiswa = krsMahasiswa;

105. }

106. public KRS getKrsMahasiswa(){

107. return krsMahasiswa;

108. } 109. }

MainKRS.java

1. package Laprak4cPBO;

2.

3. import java.util.Scanner;

4. public class MainKRS {

5. public static void main(String[] args) { 6. Scanner input = new Scanner(System.in);

7. System.out.print("Masukkan jumlah mahasiswa yang akan didata : ");

8. int jumlahMahasiswa = input.nextInt();

9. input.nextLine();

10.

11. Mahasiswa[] mahasiswa = new Mahasiswa[jumlahMahasiswa];

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

13. mahasiswa[i] = new Mahasiswa();

14. System.out.print("Nama mahasiswa ke-" + (i+1) + " : ");

15. mahasiswa[i].setNama(input.nextLine());

16.

17. System.out.print("NIM mahasiswa ke-" + (i+1) + " : ");

18. mahasiswa[i].setNIM(input.nextLine());

19.

20. System.out.print("Alamat mahasiswa ke-" + (i+1) + " : ");

21. mahasiswa[i].setAlamat(input.nextLine());

22.

(23)

23. System.out.print("Nomor telepon mahasiswa ke-

" + (i+1) + " : ");

24.

mahasiswa[i].setNomorTelepon(input.nextLine());

25.

26. System.out.print("Jenis kelamin mahasiswa ke-

" + (i+1) + " : ");

27.

mahasiswa[i].setJenisKelamin(input.nextLine());

28.

29. System.out.print("Program studi mahasiswa ke-

" + (i+1) + " : ");

30.

mahasiswa[i].setProgramStudi(input.nextLine());

31.

32. System.out.print("Fakultas mahasiswa ke-" + (i+1) + " : ");

33. mahasiswa[i].setFakultas(input.nextLine());

34.

35. System.out.print("Jenjang mahasiswa ke-" + (i+1) + " : ");

36. mahasiswa[i].setJenjang(input.nextLine());

37.

38. System.out.print("Perguruan tinggi mahasiswa ke-" + (i+1) + " : ");

39.

mahasiswa[i].setPerguruanTinggi(input.nextLine());

40.

41. System.out.print("Semester awal mahasiswa ke-

" + (i+1) + " : ");

42.

mahasiswa[i].setSemesterAwal(input.nextLine());

43.

44. System.out.print("Status awal mahasiswa mahasiswa ke-" + (i+1) + " : ");

45.

mahasiswa[i].setStatusAwalMahasiswa(input.nextLine());

46.

47. System.out.print("Status mahasiswa saat ini mahasiswa ke-" + (i+1) + " : ");

48.

mahasiswa[i].setStatusMahasiswaSaatIni(input.nextLine());

49.

50. KRS krs = new KRS();

51. mahasiswa[i].setKrsMahasiswa(krs);

52.

53. String command = "";

54. while(command != "selesai"){

55. System.out.print("\nPilihlah perintah yang diinginkan : \ntambah - menambah mata kuliah \nlihat

(24)

- lihat mata kuliah yang sudah berhasil ditambahkan

\nselesai - selesai menambahkan mata kuliah");

56. System.out.println();

57.

System.out.println("\n[tambah/lihat/selesai] : ");

58. command = input.next();

59. input.nextLine();

60. switch (command){

61. case "tambah":

62. System.out.println();

63. System.out.print("Masukkan kode mata kuliah : ");

64. String kodeMataKuliah = input.next();

65. input.nextLine();

66.

67. System.out.print("Masukkan nama mata kuliah : ");

68. String namaMataKuliah = input.nextLine();

69. MataKuliah mataKuliah = new MataKuliah(kodeMataKuliah, namaMataKuliah);

70. krs.tambahMataKuliah(mataKuliah);

71. break;

72. case "lihat":

73. mahasiswa[i].printKRS();

74. break;

75. case "selesai":

76. command = "selesai";

77. break;

78. default:

79. System.out.println("Pilihlah perintah [tambah/lihat/selesai]!");

80. break;

81. } 82. }

83. mahasiswa[i].printBiodata();

84. System.out.println();

85. }

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

87. System.out.println("\nData mahasiswa ke-" + (i+1) + " :\n");

88. mahasiswa[i].printBiodata();

89. System.out.println();

90. }

91. input.close();

92. } 93. }

(25)

Output

(26)
(27)
(28)
(29)

Penjelasan

Program di atas merupakan program untuk mengumpulkan biodata mahasiswa dan daftar mata kuliah yang diambil. Terdiri atas 4 class yaitu KRS, MataKuliah, Mahsiswa, dan MainKRS. Pada awal program, pengguna akan diminta untuk memasukkan jumlah mahasiswa yang akan dimasukkan. Kemudian pengguna akan diminta untuk mengisi biodata-biodata data mahasiswa tersebut.

Setelah semua biodata terisi, pengguna akan diminta untuk memilih perintah tambah, lihat, atau selesai. Jika pengguna memilih perintah “tambah”, maka pengguna harus memasukkan kode dan nama dari mata kuliah yang ingin ditambahkan ke dalam KRS. Proses ini akan terus diulang jika pengguna masih ingin menambahkan mata kuliah lainnya. Jika pengguna memilih perintah “lihat”, maka program akan menampilkan daftar mata kuliah yang sudah berhasil ditambahkan ke dalam KRS sementara. Jika pengguna memilih perintah

“selesai”, maka proses pengisian KRS akan selesai dan seluruh biodata mahasiswa beserta daftar mata kuliah yang sudah ditambahkan akan ditampilkan.

Dalam penggunaan looping while, pengguna bisa menambahkan mata kuliah baru, melihat daftar mata kuliah yang sudah berhasil ditambahkan, dan melihat seluruh biodata dan daftar mata kuliah yang sudah diamsukkan. Ketiga hal ini dapat dilakukan dengan memasukkan perintah masing-masing [tambah/lihat/selesai].

Konsep enkapsulasi pada program ini dapat dilihat pada masing-masing class yang atribut dan methodnya telah dienkapsulasi. Sehingga hanya dapat diakses dan diubah melalui method-method yang ada. Contohnya seperti pada class Mahasiswa terdapat atribut nama yang dapat diakses dan diubah melalui method setNama. Selain itu, seperti pada class KRS dan MataKuliah yang memiliki method tambahMataKuliah dan method print. Keduanya mengenkapsulasi data mata kuliah yang diambil oelh amahsiswa. Dengan memanfaatkan konsep enkapsulasi, program dapat meminimalisir terjadinya kesalahan dalam mengakses atau mengubah data. Hal ini juga mempermudah pengembangan program karena setiap class dapat berfungsi sendiri dan dapat diubah tanpa mempengaruhi class-class yang lain.

Referensi

Dokumen terkait

Contoh misal saat kita membuat sebuah parameter yang sama dengan nama atribut yang ada dalam sebuah kelas, maka jika kita menggunakanparameter tersebut untuk

* To change this template file, choose Tools | Templates * and open the template in the editor...

Pada kasus-kasus tertentu Anda dapat berharap untuk memaksa integer literal untuk menjadi tipe data long dengan menambahkan karakter “l” or “L”. tipe data long

Variabel adalah item yang digunakan data untuk menyimpan pernyataan objek. Variabel memiliki tipe  data  dan  nama.  Tipe  data  menandakan  tipe  nilai  yang 

Perintah untuk menampilkan output “Pegawai”lalu memanggil nilai yang telah di inputkan oleh user ke dalam atribut ‘Nama’ dari objek ‘pekerja1’, kemudian menampilkan output

Buatlah class Teacher (tanpa method main) yang merupakan subclass dari class Person.. Buatlah atribut/property/instance variable di class Teacher (deklarasikan dengan tipe

Contoh penggunaan form widget seperti dibawah: import 'package:flutter/material.dart'; void main { runAppMaterialApp title: "Latihan Form Flutter", home: LatihanForm, ; } class