• 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!
35
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB : CONSTRUCTOR DAN INSTANCE METHOD

NAMA : ANISA PUTRI MAHARANI

NIM : 225150201111008

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

A. Constructor Pertanyaan

1. Lakukan percobaan constructor diatas dan benahi jika menemukan kesalahan!

• Terdapat kesalahan code pada kelas Student bagian method student. Nama method seharusnya Student menggunakan huruf S kapital.

• Terdapat kesalahan code pada kelas MainJava bagian constructor student. Nama constructor seharusnya Student menggunakan huruf S kapital.

• Terdapat kekurangan kode ketika mengubah alamat dan umur anna. Seharusnya setter untuk rata-rata nilai anna tetap dipanggil agar tidak menghasilkan output nilai rata-rata 0.

Source code

Student.java

1. package Laprak2PBO;

2.

3. public class Student { 4. private String name;

5. private String address;

6. private int age;

7. private double mathGrade;

8. private double englishGrade;

9. private double scienceGrade;

10. private double average;

11.

12. public Student(){//perbaikan dari public student 13. name = " ";

14. address = " ";

15. age = 0;

16.

17. }

18. public Student(String n, String a, int ag){

19. name = n;

20. address = a;

21. age = ag;

22. }

23. public void setName(String n){

24. name = n;

25. }

26. public void setAddress(String a){

27. address = a;

(2)

28. }

29. public void setAge(int ag){

30. age = ag;

31. }

32. public void setMath(int math){

33. mathGrade = math;

34. }

35. public void setEnglish(int english){

36. englishGrade = english;

37. }

38. public void setScience(int science){

39. scienceGrade = science;

40. }

41. private double getAverage(){

42. double result = 0;

43. result = (mathGrade + scienceGrade + englishGrade)/3;

44. return result;

45. }

46. public void displayMessage(){

47. System.out.println("Siswa dengan nama " + name);

48. System.out.println("beralamat di " + address);

49. System.out.println("berumur " + age);

50. System.out.println("mempunyai nilai rata rata " + getAverage());

51. } 52. }

MainStudent.java

1. package Laprak2PBO;

2.

3. public class MainStudent {

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

6. anna.setName("Anna");

7. anna.setAddress("Malang");

8. anna.setAge(20);

9. anna.setMath(100);

10. anna.setScience(89);

11. anna.setEnglish(80);

12. anna.displayMessage();

13.

14. //menggunakan constructor lain

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

16. Student chris = new Student("Chris", "Kediri", 21);

17. chris.setMath(70);

18. chris.setScience(60);

19. chris.setEnglish(90);

20. chris.displayMessage();

(3)

21.

22. //siswa dengan nama anna dirubah informasi alamat dan umurnya melalui constructor

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

24. anna = new Student("anna", "Batu", 18);//perbaikan dari anna = new student

25. anna.setMath(100);//memanggil setter untuk nilai rata-rata karena sebelumnya tidak dituliskan sehingga outputnya 0

26. anna.setScience(89);

27. anna.setEnglish(80);

28. anna.displayMessage();

29.

30. //siswa dengan nama chris dirubah informasi alamat dan umurnya melalui method

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

32. chris.setAddress("Surabaya");

33. chris.setAge(22);

34. chris.displayMessage();

35. } 36. }

Output

Penjelasan

Output tersebut merupakan informasi tentang 2 siswa yang masing-masing memiliki nama, alamat, usia, dan nilai rata-rata berbeda. Terdapat perubahan alamat dan umur pada masing-masingnya. Perbedaan utama antara 2 pernyataan tersebut adalah objek yang dimodifikasi. Pada pernyataan pertama, objek "anna" dibuat dan diinisialisasi dengan nama

"anna", alamat "Batu", dan usia 18. Pernyataan ini menghasilkan objek baru yang kemudian dapat dimodifikasi. Sementara itu, pada pernyataan kedua, objek "chris" telah dibuat

(4)

sebelumnya dan pernyataan tersebut digunakan untuk memodifikasi objek yang telah ada.

Pernyataan ini mengubah alamat "chris" menjadi "Surabaya" dan usia "chris" menjadi 22.

Dengan kata lain, pernyataan pertama membuat objek baru dengan nilai-nilai yang ditentukan, sedangkan pernyataan kedua memodifikasi objek yang telah ada.

Pertanyaan

2. Tambahkan constructor pada class Student dengan parameter yang mempunyai parameter masing masing nilai dari mata pelajaran yang ada! Kemudian buat contoh objeknya pada main Class!

Source code

Student.java

1. package Laprak2PBO;

2.

3. public class Student { 4. private String name;

5. private String address;

6. private int age;

7. private double mathGrade;

8. private double englishGrade;

9. private double scienceGrade;

10. private double average;

11.

12. public Student(){

13. name = " ";

14. address = " ";

15. age = 0;

16.

17. }

18. public Student(String n, String a, int ag, double math, double eng, double sci){//menambahkan parameter nilai masing-masing pelajaran

19. name = n;

20. address = a;

21. age = ag;

22. mathGrade = math;

23. englishGrade = eng;

24. scienceGrade = sci;

25. }

26. public void setName(String n){

27. name = n;

28. }

29. public void setAddress(String a){

30. address = a;

31. }

32. public void setAge(int ag){

33. age = ag;

34. }

35. public void setMath(int math){

(5)

36. mathGrade = math;

37. }

38. public void setEnglish(int english){

39. englishGrade = english;

40. }

41. public void setScience(int science){

42. scienceGrade = science;

43. }

44. private double getAverage(){

45. double result = 0;

46. result = (mathGrade + scienceGrade + englishGrade)/3;

47. return result;

48. }

49. public void displayMessage(){

50. System.out.println("Siswa dengan nama " + name);

51. System.out.println("beralamat di " + address);

52. System.out.println("berumur " + age);

53. System.out.println("mempunyai nilai rata rata " + getAverage());

54. } 55. }

MainStudent.java

1. package Laprak2PBO;

2.

3. public class MainStudent {

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

6. anna.setName("Anna");

7. anna.setAddress("Malang");

8. anna.setAge(20);

9. anna.setMath(100);

10. anna.setScience(89);

11. anna.setEnglish(80);

12. anna.displayMessage();

13.

14. //menggunakan constructor lain

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

16. Student chris = new Student("Chris", "Kediri", 21, 70, 60, 90);

17. chris.displayMessage();

18.

19. //siswa dengan nama anna dirubah informasi alamat dan umurnya melalui constructor

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

21. anna = new Student("anna", "Batu", 18, 100, 80, 89);

22. anna.displayMessage();

23.

(6)

24. //siswa dengan nama chris dirubah informasi alamat dan umurnya melalui method

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

26. chris.setAddress("Surabaya");

27. chris.setAge(22);

28. chris.displayMessage();

29.

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

31. Student nisput = new Student("Nisput", "Bandung", 18, 98, 96, 93);//membuat constructor baru untuk objek nisput

32. nisput.displayMessage();

33. } 34. }

Output

Penjelasan

Pada code di atas, sebuah constructor baru ditambahkan pada class Student yang menerima beberapa parameter. Constructor tersebut memiliki parameter berupa String n (nama siswa), String a (alamat siswa), int ag (umur siswa), dan tiga parameter double (mathGrade, englishGrade, scienceGrade) yang masing-masing merepresentasikan nilai dari masing-masing mata pelajaran. Dengan penambahan constructor baru ini, ketika objek Student dibuat dengan constructor ini, nilai-nilai dari masing-masing mata pelajaran dapat langsung dimasukkan pada saat objek dibuat. Dalam code di atas, nilai-nilai pelajaran untuk objek baru "Nisput"

dimasukkan pada saat objek dibuat. Dengan cara ini, objek nisput sudah memiliki nilai-nilai mata pelajaran saat objek tersebut dibuat dan nilai rata-rata dapat dihitung menggunakan method getAverage() tanpa perlu memanggil method setter lagi.

(7)

Pertanyaan

3. Tambahkan method dengan nilai balikan berupa boolean pada class student bernama statusAkhir untuk menentukan apakah siswa tersebut remidi atau tidak. Ketentuannya adalah jika nilai lebih dari atau sama dengan 61 adalah lolos sedangkan nilai kurang dari atau sama dengan 60 adakah remidi. Nilai yang dicari adalah nilai rata rata untuk semua mapel. Kemudian nilai pada method statusAkhir tampilkan pada method displayMessage!

Source code

Student.java

1. package Laprak2PBO;

2.

3. public class Student { 4. private String name;

5. private String address;

6. private int age;

7. private double mathGrade;

8. private double englishGrade;

9. private double scienceGrade;

10. private double average;

11.

12. public Student(){

13. name = " ";

14. address = " ";

15. age = 0;

16.

17. }

18. public Student(String n, String a, int ag, double math, double eng, double sci){//menambahkan parameter nilai masing-masing pelajaran

19. name = n;

20. address = a;

21. age = ag;

22. mathGrade = math;

23. englishGrade = eng;

24. scienceGrade = sci;

25. }

26. public void setName(String n){

27. name = n;

28. }

29. public void setAddress(String a){

30. address = a;

31. }

32. public void setAge(int ag){

33. age = ag;

34. }

35. public void setMath(int math){

36. mathGrade = math;

37. }

38. public void setEnglish(int english){

(8)

39. englishGrade = english;

40. }

41. public void setScience(int science){

42. scienceGrade = science;

43. }

44. private double getAverage(){

45. double result = 0;

46. result = (mathGrade + scienceGrade + englishGrade)/3;

47. return result;

48. }

49. public boolean statusAkhir(){

50. if (getAverage() <= 60){

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

52. return false;

53. }else{

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

55. return true;

56. } 57. }

58. public void displayMessage(){

59. System.out.println("Siswa dengan nama " + name);

60. System.out.println("beralamat di " + address);

61. System.out.println("berumur " + age);

62. System.out.println("mempunyai nilai rata rata " + getAverage());

63. System.out.println("Status siswa: " + (statusAkhir() ? "Lolos" : "Remidi"));

64. } 65. }

Output

(9)

Penjelasan

Pada method statusAkhir(), jika nilai rata-rata lebih kecil atau sama dengan 60, maka akan mencetak "Remidi" dan method tersebut akan mengembalikan nilai false. Sedangkan jika nilai rata-rata lebih besar dari 60, maka akan mencetak "Lolos" dan method tersebut akan mengembalikan nilai true. Selanjutnya, pada method displayMessage(), hasil nilai dari method statusAkhir() akan ditampilkan setelah nilai rata-rata siswa. Jika nilai yang dikembalikan dari method statusAkhir() adalah true, maka akan menampilkan "Lolos". Namun jika nilai yang dikembalikan adalah false, maka akan menampilkan "Remidi". Tanda ? dan : pada baris kode tersebut adalah sebuah operator ternary yang artinya jika nilai yang dikembalikan dari method statusAkhir() adalah true (lolos), maka string "Lolos" akan dicetak, sedangkan jika nilai yang dikembalikan adalah false (remidi), maka string "Remidi" akan dicetak. Tidak ada perubahan source code pada kelas MainStudent.

Pertanyaan

4. Bagaimana cara memasukkan jumlah siswa sesuai dengan keinginan user? Tuliskan kodenya dengan inputan user yang interaktif! (key : menggunakan array)

Source code

Student.java

1. package Laprak2PBO;

2.

3. public class Student { 4. private String name;

5. private String address;

6. private int age;

7. private double mathGrade;

8. private double englishGrade;

9. private double scienceGrade;

10. private double average;

11.

12. public Student(){

13. name = " ";

14. address = " ";

15. age = 0;

16.

17. }

18. public Student(String n, String a, int ag, double math, double eng, double sci){//menambahkan parameter nilai masing-masing pelajaran

19. name = n;

20. address = a;

21. age = ag;

22. mathGrade = math;

23. englishGrade = eng;

24. scienceGrade = sci;

25. }

26. public void setName(String n){

27. name = n;

(10)

28. }

29. public void setAddress(String a){

30. address = a;

31. }

32. public void setAge(int ag){

33. age = ag;

34. }

35. public void setMath(int math){

36. mathGrade = math;

37. }

38. public void setEnglish(int english){

39. englishGrade = english;

40. }

41. public void setScience(int science){

42. scienceGrade = science;

43. }

44. private double getAverage(){

45. double result = 0;

46. result = (mathGrade + scienceGrade + englishGrade)/3;

47. return result;

48. }

49. public boolean statusAkhir(){

50. if (getAverage() <= 60){

51. return false;

52. }else{

53. return true;

54. } 55. }

56. public void displayMessage(){

57. System.out.println("Siswa dengan nama " + name);

58. System.out.println("beralamat di " + address);

59. System.out.println("berumur " + age);

60. System.out.println("mempunyai nilai rata rata " + getAverage());

61. System.out.println("Status siswa: " + (statusAkhir() ? "Lolos" : "Remidi"));

62. } 63. }

MainStudent.java

1. package Laprak2PBO;

2. import java.util.Scanner;

3. public class MainStudent {

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

6. anna.setName("Anna");

7. anna.setAddress("Malang");

8. anna.setAge(20);

9. anna.setMath(100);

(11)

10. anna.setScience(89);

11. anna.setEnglish(80);

12. anna.displayMessage();

13.

14. //menggunakan constructor lain

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

16. Student chris = new Student("Chris", "Kediri", 21, 70, 60, 90);

17. chris.displayMessage();

18.

19. //siswa dengan nama anna dirubah informasi alamat dan umurnya melalui constructor

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

21. anna = new Student("anna", "Batu", 18, 100, 80, 89);

22. anna.displayMessage();

23.

24. //siswa dengan nama chris dirubah informasi alamat dan umurnya melalui method

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

26. chris.setAddress("Surabaya");

27. chris.setAge(22);

28. chris.displayMessage();

29.

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

31. Student nisput = new Student("Nisput", "Bandung", 18, 98, 96, 93);

32. nisput.displayMessage();

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

34.

35. //INPUT JUMLAH SESUAI KEINGINAN

36. Scanner input = new Scanner(System.in);

37. System.out.print("Masukkan jumlah siswa : ");

38. int jumlahSiswa = input.nextInt();

39.

40. Student[] siswa = new Student[jumlahSiswa];

41.

42.

43. for(int i = 0; i < jumlahSiswa; i++){

44. System.out.println("Masukkan informasi siswa ke-" + (i+1));

45. System.out.print("Nama : ");

46. String nama = input.next();

47. System.out.print("Alamat : ");

48. String alamat = input.next();

49. System.out.print("Umur : ");

50. int umur = input.nextInt();

51. System.out.print("Nilai Math : ");

52. double nilaiMath = input.nextDouble();

53. System.out.print("Nilai English : ");

54. double nilaiEng = input.nextDouble();

(12)

55. System.out.print("Nilai Science : ");

56. double nilaiSci = input.nextDouble();

57. siswa[i] = new Student(nama, alamat, umur, nilaiMath, nilaiEng, nilaiSci);

58. double average = siswa[i].getAverage();

59. System.out.println("mempunyai nilai rata rata

" + average);

60. }

61. for(int i = 0; i < jumlahSiswa; i++){

62. System.out.println("Status akhir siswa ke-" + (i+1) + " : " + (siswa[i].statusAkhir()? "Lolos" :

"Remidi"));

63. } 64. } 65. }

Output

Penjelasan

Kode di atas meminta user untuk memasukkan jumlah siswa yang diinginkan menggunakan Scanner, kemudian membuat array siswa dengan ukuran sesuai dengan jumlah siswa yang diinputkan. Selanjutnya, menggunakan loop for untuk meminta input informasi siswa dari user sebanyak jumlah siswa yang diinputkan. Informasi siswa kemudian disimpan ke dalam array siswa. Setelah itu, menggunakan loop for lagi untuk menampilkan informasi dan status akhir setiap siswa.

(13)

Pertanyaan

5. Bagaimana cara menghitung banyaknya objek yang kita buat dari sebuah menginstance objek dari mein class? Tuliskan kodenya kemudian tampilkan informasinya dengan memanggil method jumlahObjek() bertipe void!

Source code

Student.java

1. package Laprak2PBO;

2.

3. public class Student { 4. private String name;

5. private String address;

6. private int age;

7. private double mathGrade;

8. private double englishGrade;

9. private double scienceGrade;

10. private double average;

11. private static int jumlahObjek = 0;

12.

13. public Student(){

14. name = " ";

15. address = " ";

16. age = 0;

17. }

18. public Student(String n, String a, int ag, double math, double eng, double sci){//menambahkan parameter nilai masing-masing pelajaran

19. name = n;

20. address = a;

21. age = ag;

22. mathGrade = math;

23. englishGrade = eng;

24. scienceGrade = sci;

25. jumlahObjek++;

26. }

27. public void setName(String n){

28. name = n;

29. }

30. public void setAddress(String a){

31. address = a;

32. }

33. public void setAge(int ag){

34. age = ag;

35. }

36. public void setMath(int math){

37. mathGrade = math;

38. }

39. public void setEnglish(int english){

40. englishGrade = english;

41. }

(14)

42. public void setScience(int science){

43. scienceGrade = science;

44. }

45. public double getAverage(){

46. double result = 0;

47. result = (mathGrade + scienceGrade + englishGrade)/3;

48. return result;

49. }

50. public boolean statusAkhir(){

51. if (getAverage() <= 60){

52. return false;

53. }else{

54. return true;

55. } 56. }

57. public static void jumlahObjek(){

58. System.out.println("Jumlah objek yang dibuat : "

+ jumlahObjek);

59. }

60. public void displayMessage(){

61. System.out.println("Siswa dengan nama " + name);

62. System.out.println("beralamat di " + address);

63. System.out.println("berumur " + age);

64. System.out.println("mempunyai nilai rata rata " + getAverage());

65. System.out.println("Status siswa: " + (statusAkhir() ? "Lolos" : "Remidi"));

66. } 67. }

MainStudent.java

1. package Laprak2PBO;

2. import java.util.Scanner;

3. public class MainStudent {

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

6. // anna.setName("Anna");

7. // anna.setAddress("Malang");

8. // anna.setAge(20);

9. // anna.setMath(100);

10. // anna.setScience(89);

11. // anna.setEnglish(80);

12. // anna.displayMessage();

13. //

14. // //menggunakan constructor lain

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

16. // Student chris = new Student("Chris", "Kediri", 21, 70, 60, 90);

17. // chris.displayMessage();

(15)

18. //

19. // //siswa dengan nama anna dirubah informasi alamat dan umurnya melalui constructor

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

21. // anna = new Student("anna", "Batu", 18, 100, 80, 89);

22. // anna.displayMessage();

23. //

24. // //siswa dengan nama chris dirubah informasi alamat dan umurnya melalui method

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

26. // chris.setAddress("Surabaya");

27. // chris.setAge(22);

28. // chris.displayMessage();

29. //

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

31. // Student nisput = new Student("Nisput",

"Bandung", 18, 98, 96, 93);

32. // nisput.displayMessage();

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

34.

35. //INPUT JUMLAH SESUAI KEINGINAN

36. Scanner input = new Scanner(System.in);

37. System.out.print("Masukkan jumlah siswa : ");

38. int jumlahSiswa = input.nextInt();

39.

40. Student[] siswa = new Student[jumlahSiswa];

41.

42.

43. for(int i = 0; i < jumlahSiswa; i++){

44. System.out.println("Masukkan informasi siswa ke-" + (i+1));

45. System.out.print("Nama : ");

46. String nama = input.next();

47. System.out.print("Alamat : ");

48. String alamat = input.next();

49. System.out.print("Umur : ");

50. int umur = input.nextInt();

51. System.out.print("Nilai Math : ");

52. double nilaiMath = input.nextDouble();

53. System.out.print("Nilai English : ");

54. double nilaiEng = input.nextDouble();

55. System.out.print("Nilai Science : ");

56. double nilaiSci = input.nextDouble();

57. siswa[i] = new Student(nama, alamat, umur, nilaiMath, nilaiEng, nilaiSci);

58. double average = siswa[i].getAverage();

59. System.out.println("mempunyai nilai rata rata

" + average);

60. }

61. for(int i = 0; i < jumlahSiswa; i++){

(16)

62. System.out.println("Status akhir siswa ke-" + (i+1) + " : " + (siswa[i].statusAkhir()? "Lolos" :

"Remidi"));

63. } 64.

65. for(int i = 0; i < 1; i++){

66. siswa[i].jumlahObjek();

67. } 68. } 69. }

Output

Penjelasan

Kode di atas mendapat tambahan sebuah static method jumlahObjek yang akan menampilkan jumlah objek yang telah dibuat. Setiap kali objek dibuat, maka nilai dari jumlahObjek akan bertambah satu karena jumlahObjek++ pada konstruktor tanpa parameter.

Lalu akan memanggil method jumlahObjek dengan Student.jumlahObjek() di kelas MainStudent setelah selesai membuat objek-objek dari class Student.

(17)

A. Instance Method Pertanyaan

1. Lakukan percobaan Instance Method diatas dan benahi jika menemukan kesalahan!

Source code

Rasional.java

1. package Laprak2bPBO;

2.

3. public class Rasional {

4. private int pembilang, penyebut;

5. public Rasional(){

6. pembilang = 0;

7. penyebut = 0;

8. }

9. public Rasional(int pbl, int pyb){

10. pembilang = pbl;

11. penyebut = pyb;

12. }

13. //mengecek suatu bilangan adalah rasional atau bukan

14. public boolean isRasional(){

15. return (penyebut != 0);

16. }

17. //menyederhanakan bilangan rasional 18. public void Sederhana(){

19. int temp, A, B;

20. if(penyebut == 0){

21. return;

22. }

23. A = (pembilang < penyebut) ? penyebut : pembilang;

24. B = (pembilang < penyebut) ? pembilang : penyebut;

25.

26. while (B != 0){

27. temp = A % B;

28. A = B;

29. B = temp;

30. }

31. pembilang /= A;

32. penyebut /=A;

33. }

34. public double Cast(){

35. return (penyebut == 0.0) ? 0.0 : (double)pembilang/(double)penyebut;

36. }

37. //oprator >

38. public boolean moreThan (Rasional A){

(18)

39. return (pembilang * A.penyebut > penyebut * A.pembilang);

40. }

41. //operator Unary ----> A = -A 42. public void negasi(){

43. pembilang = - pembilang;

44. }

45. //operator unary += \

46. public void unaryPlus(Rasional A){

47. pembilang = pembilang * A.penyebut + penyebut * A.pembilang;

48. penyebut *= A.penyebut;

49. }

50. public void cetak(){

51. System.out.println(pembilang + "/" + penyebut);

52. } 53. }

RasionalDemo.java

1. package Laprak2bPBO;

2.

3. public class RasionalDemo {

4. public static void main(String[] args) { 5. Rasional R1 = new Rasional(1,2);

6. Rasional R2 = new Rasional(1,3);

7.

8. System.out.println("R1.isRasional : " + R1.isRasional());

9. System.out.println("R2.isRasional : " + R1.isRasional());

10. System.out.println();

11.

12. System.out.println("R1 > R2 : " + R1.moreThan(R2));

13. System.out.println();

14.

15. System.out.println("R1 : ");

16. R1.cetak();

17. System.out.println("R2 : ");

18. R2.cetak();

19. System.out.println();

20.

21. R1.Sederhana();

22. R2.Sederhana();

23.

24. System.out.println("R1 : ");

25. R1.cetak();

26. System.out.println("R2 : ");

27. R2.cetak();

(19)

Output

Penjelasan

Tidak ada kesalahan pada kode tersebut. Output di atas merupakan hasil dari beberapa operasi pada objek pecahan R1 dan R2. Pada awalnya, objek R1 dan R2 dinyatakan sebagai objek pecahan dengan atribut isRasional bernilai true. Kemudian, nilai dari R1 dan R2 diberikan, dan terlihat bahwa R1 lebih besar dari R2. Setelah itu, dilakukan cast ke double pada R1 dan R2 sehingga nilai pecahan tersebut menjadi bilangan desimal. Kemudian, dilakukan operasi unary minus pada R1 sehingga nilainya menjadi -1/2. Terakhir, dilakukan operasi penjumlahan pecahan R1 += R2 dan ditemukan bahwa hasilnya adalah -1/6.

28. System.out.println();

29.

30. System.out.println("Setelah dilakukan Cast ke double menjadi : ");

31. System.out.println("R1 : " + R1.Cast());

32. System.out.println("R2 : " + R2.Cast());

33. System.out.println();

34. R1.negasi();

35. System.out.print("Unary- dari R1 : ");

36. R1.cetak();

37. System.out.println();

38. R1.unaryPlus(R2);

39. System.out.print("Nilai dari 'R1 += R2' : ");

40. R1.cetak();

41. System.out.println();

42. System.out.println("Setelah dilakukan Cast ke double menjadi : ");

43. } 44. }

(20)

Pertanyaan

2. Tambahkan method untuk operator <, <=, >=

Source code

Rasional.java

1. package Laprak2bPBO;

2.

3. public class Rasional {

4. private int pembilang, penyebut;

5. public Rasional(){

6. pembilang = 0;

7. penyebut = 0;

8. }

9. public Rasional(int pbl, int pyb){

10. pembilang = pbl;

11. penyebut = pyb;

12. }

13. //mengecek suatu bilangan adalah rasional atau bukan 14. public boolean isRasional(){

15. return (penyebut != 0);

16. }

17. //menyederhanakan bilangan rasional 18. public void Sederhana(){

19. int temp, A, B;

20. if(penyebut == 0){

21. return;

22. }

23. A = (pembilang < penyebut) ? penyebut : pembilang;

24. B = (pembilang < penyebut) ? pembilang : penyebut;

25.

26. while (B != 0){

27. temp = A % B;

28. A = B;

29. B = temp;

30. }

31. pembilang /= A;

32. penyebut /=A;

33. }

34. public double Cast(){

35. return (penyebut == 0.0) ? 0.0 : (double)pembilang/(double)penyebut;

36. }

37. //oprator >

38. public boolean moreThan (Rasional A){

39. return (pembilang * A.penyebut > penyebut * A.pembilang);

40. }

41. //operator Unary ----> A = -A

(21)

42. public void negasi(){

43. pembilang = - pembilang;

44. }

45. //operator unary += \

46. public void unaryPlus(Rasional A){

47. pembilang = pembilang * A.penyebut + penyebut * A.pembilang;

48. penyebut *= A.penyebut;

49. }

50. public boolean lessThan(Rasional A){

51. return (pembilang * A.penyebut < penyebut * A.pembilang);

52. }

53. public boolean lessEqual(Rasional A){

54. return (pembilang * A.penyebut <= penyebut * A.pembilang);

55. }

56. public boolean moreEqual(Rasional A){

57. return (pembilang * A.penyebut >= penyebut * A.pembilang);

58. }

59. public void cetak(){

60. System.out.println(pembilang + "/" + penyebut);

61. } 62. }

RasionalDemo.java

1. package Laprak2bPBO;

2. public class RasionalDemo {

3. public static void main(String[] args) { 4. Rasional R1 = new Rasional(1,2);

5. Rasional R2 = new Rasional(1,3);

6.

7. System.out.println("R1.isRasional : " + R1.isRasional());

8. System.out.println("R2.isRasional : " + R1.isRasional());

9. System.out.println();

10.

11. System.out.println("R1 > R2 : " + R1.moreThan(R2));

12. System.out.println("R1 < R2 : " + R1.lessThan(R2));

13. System.out.println("R1 <= R2 : " + R1.lessEqual(R2));

14. System.out.println("R1 >= R2 : " + R1.moreEqual(R2));

15. System.out.println();

16.

(22)

17. System.out.println("R1 : ");

18. R1.cetak();

19. System.out.println("R2 : ");

20. R2.cetak();

21. System.out.println();

22.

23. R1.Sederhana();

24. R2.Sederhana();

25.

26. System.out.println("R1 : ");

27. R1.cetak();

28. System.out.println("R2 : ");

29. R2.cetak();

30. System.out.println();

31.

32. System.out.println("Setelah dilakukan Cast ke double menjadi : ");

33. System.out.println("R1 : " + R1.Cast());

34. System.out.println("R2 : " + R2.Cast());

35. System.out.println();

36. R1.negasi();

37. System.out.print("Unary- dari R1 : ");

38. R1.cetak();

39. System.out.println();

40. R1.unaryPlus(R2);

41. System.out.print("Nilai dari 'R1 += R2' : ");

42. R1.cetak();

43. System.out.println();

44. System.out.println("Setelah dilakukan Cast ke double menjadi : ");

45. } 46. }

Output

(23)

Penjelasan

Penambahan method pada program di atas untuk operator <, <=, dan >= di kelas Rasional digunakan untuk membandingkan dua bilangan rasional. Method < mengembalikan nilai true jika bilangan rasional pemanggil kurang dari bilangan rasional parameter, dan false jika sebaliknya. Method <= mengembalikan nilai true jika bilangan rasional pemanggil kurang dari atau sama dengan bilangan rasional parameter, dan false jika sebaliknya. Method >=

mengembalikan nilai true jika bilangan rasional pemanggil lebih besar dari atau sama dengan bilangan rasional parameter, dan false jika sebaliknya. Pada contoh output di atas, R1 tidak kurang dari R2, sehingga method lessThan() mengembalikan nilai false, R1 juga tidak kurang dari atau sama dengan R2, sehingga method lessEqual() mengembalikan nilai false, namun R1 lebih besar dari atau sama dengan R2, sehingga method moreEqual() mengembalikan nilai true.

(24)

Pertanyaan

3. Ubah method sederhana pada baris 25 – 30 yang awalnya adalah menggunakan while menjadi for!

Source code

Rasional.java

1. package Laprak2bPBO;

2.

3. public class Rasional {

4. private int pembilang, penyebut;

5. public Rasional(){

6. pembilang = 0;

7. penyebut = 0;

8. }

9. public Rasional(int pbl, int pyb){

10. pembilang = pbl;

11. penyebut = pyb;

12. }

13. //mengecek suatu bilangan adalah rasional atau bukan 14. public boolean isRasional(){

15. return (penyebut != 0);

16. }

17. //menyederhanakan bilangan rasional 18. public void Sederhana(){

19. int temp, A, B;

20. if(penyebut == 0){

21. return;

22. }

23. A = (pembilang < penyebut) ? penyebut : pembilang;

24. B = (pembilang < penyebut) ? pembilang : penyebut;

25.

26. for (; B != 0;) { 27. temp = A % B;

28. A = B;

29. B = temp;

30. }

31. pembilang /= A;

32. penyebut /=A;

33. }

34. public double Cast(){

35. return (penyebut == 0.0) ? 0.0 : (double)pembilang/(double)penyebut;

36. }

37. //oprator >

38. public boolean moreThan (Rasional A){

39. return (pembilang * A.penyebut > penyebut * A.pembilang);

40. }

41. //operator Unary ----> A = -A 42. public void negasi(){

(25)

43. pembilang = - pembilang;

44. }

45. //operator unary += \

46. public void unaryPlus(Rasional A){

47. pembilang = pembilang * A.penyebut + penyebut * A.pembilang;

48. penyebut *= A.penyebut;

49. }

50. public boolean lessThan(Rasional A){

51. return (pembilang * A.penyebut < penyebut * A.pembilang);

52. }

53. public boolean lessEqual(Rasional A){

54. return (pembilang * A.penyebut <= penyebut * A.pembilang);

55. }

56. public boolean moreEqual(Rasional A){

57. return (pembilang * A.penyebut >= penyebut * A.pembilang);

58. }

59. public void cetak(){

60. System.out.println(pembilang + "/" + penyebut);

61. } 62. }

Output

Tidak ada perubahan output karena yang diubah hanyalah method yang mulanya while menjadi for.

(26)

Penjelasan

Pada program di atas terdapat perubahan pada method Sederhana(). Awalnya while- loop diganti dengan for-loop untuk melakukan iterasi selama nilai B bukan nol. Variabel i diinisialisasi dengan nilai B dan diperbarui pada setiap iterasi dengan nilai temp. Penggunaan for-loop lebih efisien dan ringkas dibandingkan dengan while-loop pada kasus ini karena tidak perlu menuliskan variabel luar dan penggunaan variabel sementara temp dapat disatukan pada variabel iterasi i.

Pertanyaan

4. Tambahkan method untuk operasi -, * , / ! Source code

Rasional.java

1. package Laprak2bPBO;

2. public class Rasional {

3. private int pembilang, penyebut;

4. public Rasional(){

5. pembilang = 0;

6. penyebut = 0;

7. }

8. public Rasional(int pbl, int pyb){

9. pembilang = pbl;

10. penyebut = pyb;

11. }

12. public boolean isRasional(){

13. return (penyebut != 0);

14. }

15. public void Sederhana(){

16. int temp, A, B;

17. if(penyebut == 0){

18. return;

19. }

20. A = (pembilang < penyebut) ? penyebut : pembilang;

21. B = (pembilang < penyebut) ? pembilang : penyebut;

22.

23. for (; B != 0;) { 24. temp = A % B;

25. A = B;

26. B = temp;

27. }

28. pembilang /= A;

29. penyebut /=A;

30. }

31. public double Cast(){

32. return (penyebut == 0.0) ? 0.0 : (double)pembilang/(double)penyebut;

(27)

33. }

34. public void negasi(){

35. pembilang = - pembilang;

36. }

37. public void unaryPlus(Rasional A){

38. pembilang = pembilang * A.penyebut + penyebut * A.pembilang;

39. penyebut *= A.penyebut;

40. }

41. public boolean moreThan (Rasional A){

42. return (pembilang * A.penyebut > penyebut * A.pembilang);

43. }

44. public boolean lessThan(Rasional A){

45. return (pembilang * A.penyebut < penyebut * A.pembilang);

46. }

47. public boolean lessEqual(Rasional A){

48. return (pembilang * A.penyebut <= penyebut * A.pembilang);

49. }

50. public boolean moreEqual(Rasional A){

51. return (pembilang * A.penyebut >= penyebut * A.pembilang);

52. }

53. public void unaryMinus(Rasional A){

54. pembilang = pembilang * A.penyebut - penyebut * A.pembilang;

55. penyebut *= A.penyebut;

56. Sederhana();

57. }

58. public void unaryMultiply(Rasional A) { 59. pembilang *= A.pembilang;

60. penyebut *= A.penyebut;

61. }

62. public void unaryDivide(Rasional A) { 63. pembilang *= A.penyebut;

64. penyebut *= A.pembilang;

65. Sederhana();

66. }

67. public void cetak(){

68. System.out.println(pembilang + "/" + penyebut);

69. Sederhana();

70. } 71. }

RasionalDemo.java

1. package Laprak2bPBO;

2.

3. public class RasionalDemo {

(28)

4. public static void main(String[] args) { 5. Rasional R1 = new Rasional(1, 2);

6. Rasional R2 = new Rasional(1, 3);

7.

8. System.out.println("R1.isRasional : " + R1.isRasional());

9. System.out.println("R2.isRasional : " + R1.isRasional());

10. System.out.println();

11. System.out.println("R1 > R2 : " + R1.moreThan(R2));

12. System.out.println("R1 < R2 : " + R1.lessThan(R2));

13. System.out.println("R1 <= R2 : " + R1.lessEqual(R2));

14. System.out.println("R1 >= R2 : " + R1.moreEqual(R2));

15. System.out.println();

16.

17. R1.Sederhana();

18. R2.Sederhana();

19.

20. System.out.print("R1 : ");

21. R1.cetak();

22. System.out.print("R2 : ");

23. R2.cetak();

24. System.out.println();

25.

26. System.out.println("Setelah dilakukan Cast ke double menjadi : ");

27. System.out.println("R1 : " + R1.Cast());

28. System.out.println("R2 : " + R2.Cast());

29. System.out.println();

30.

31. R1.negasi();

32. System.out.print("Unary- dari R1 : ");

33. R1.cetak();

34. System.out.println();

35.

36. R1.unaryPlus(R2);

37. System.out.print("Nilai dari 'R1 += R2' : ");

38. R1.cetak();

39. System.out.println();

40.

41. R1.unaryMinus(R2);

42. System.out.print("Nilai dari 'R1 -= R2' : ");

43. R1.cetak();

44. R1.Sederhana();

45. System.out.println();

46.

47. R1.unaryMultiply(R2);

(29)

48. System.out.print("Nilai dari 'R1 *= R2' : ");

49. R1.cetak();

50. System.out.println();

51.

52. R1.unaryDivide(R2);

53. System.out.print("Nilai dari 'R1 /= R2' : ");

54. R1.cetak();

55. System.out.println();

56. } 57. } Output

(30)

Penjelasan

Pada program di atas, method unaryMinus() mengembalikan hasil pengurangan antara bilangan rasional pemanggil dan parameter, method unaryMultiply() mengembalikan hasil perkalian antara bilangan rasional pemanggil dan parameter, dan method unaryDivide() mengembalikan hasil pembagian antara bilangan rasional pemanggil dan parameter. Setiap method ini akan menghasilkan sebuah bilangan rasional dalam bentuk yang sudah disederhanakan menggunakan method Sederhana().

(31)

Tugas Praktikum

Mata kuliah direpresenasikan dengan kelas MataKuliah sehingga bisa meyimpan kode dan nama mata kuliah. Kode dan nama mata kuliah dimasukkan melalui konstruktor.

Source code KRS.java

1. package Laprak1cPBO;

2. public class KRS {

3. private MataKuliah[] daftarMataKuliah;

4. private int jumlahMataKuliah;

5. public KRS() {

6. daftarMataKuliah = new MataKuliah[5];

7. jumlahMataKuliah = 0;

8. }

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

11. daftarMataKuliah[jumlahMataKuliah] = mk;

12. jumlahMataKuliah++;

13. } 14. }

15. public void print() {

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

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

daftarMataKuliah[i].getNama());

19. } 20. } 21. }

(32)

MataKuliah.java

1. package Laprak1cPBO;

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

4. private String nama;

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

7. this.nama = nama;

8. }

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

11. }

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

14. } 15. }

MainKRS.java

1. package Laprak1cPBO;

2. import java.util.Scanner;

3. public class MainKRS {

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

6. int jumlahMk;

7. do {

8. System.out.print("Masukkan jumlah mata kuliah (maksimal 5) : ");

9. jumlahMk = input.nextInt();

10. input.nextLine();

11. if (jumlahMk > 5) {

12. System.out.println("Error: Jumlah mata kuliah maksimal adalah 5. Silakan input kembali.");

13. }

14. } while (jumlahMk > 5);

15. MataKuliah[] mataKuliah = new MataKuliah[jumlahMk];

16.

17. for (int i = 0; i < jumlahMk; i++) {

18. System.out.print("Masukkan kode mata kuliah ke-" + (i+1) + ": ");

19. String kode = input.nextLine();

20.

21. System.out.print("Masukkan nama mata kuliah ke-" + (i+1) + ": ");

22. String nama = input.nextLine();

23.

24. mataKuliah[i] = new MataKuliah(kode, nama);

25. System.out.println();

26. }

(33)

27. System.out.println("==========DAFTAR KODE DAN NAMA MATA KULIAH==========");

28. for (int i = 0; i < jumlahMk; i++) {

29. System.out.println("Mata Kuliah " + (i+1) +

":");

30. System.out.println("Kode: " + mataKuliah[i].getKode());

31. System.out.println("Nama: " + mataKuliah[i].getNama());

32. System.out.println();

33. } 34. } 35. }

(34)

Output

Penjelasan

Program ini merupakan program untuk mengatur KRS (Kartu Rencana Studi) yang terdiri dari 3 kelas yaitu KRS, MataKuliah, dan MainKRS. Kelas KRS memiliki atribut array daftarMataKuliah yang berisi objek-objek MataKuliah. Selain itu juga memiliki atribut jumlahMataKuliah yang menyimpan jumlah mata kuliah dan telah dimasukkan ke dalam KRS.

Kelas ini memiliki 2 method, yaitu method tambahMataKuliah(), menambahkan objek MataKuliah ke dalam array daftarMataKuliah jika jumlahMataKuliah belum mencapai maksimal (5), dan method print(), mencetak daftar nama mata kuliah yang telah dimasukkan.

(35)

Kelas MataKuliah memiliki atribut kode dan nama mata kuliah. Kelas ini memiliki 1 constructor dan 2 method getter untuk mendapatkan kode dan nama mata kuliah. Kelas MainKRS merupakan program utama yang mengambil input scanner berupa jumlah mata kuliah yang ingin dimasukkan ke dalam KRS, kode, dan nama untuk setiap mata kuliah. Lalu membuat objek MataKuliah untuk setiap input, dan akhirnya mencetak daftar kode dan nama mata kuliah yang telah dimasukkan.

Referensi

Dokumen terkait

Untuk memanggil suatu prosedur pada form, dapat digunakan perintah call yang diikuti dengan nama prosedur dan parameter yang dibawa atau langsung diketik nama prosedur

Jika pada saat kita memberikan sebuah parameter berupa string, hasil yang ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita memberikan 3 nilai dengan tipe

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

Apabila Method tidak akan mengembalikan nilai kepada objek yang memanggilnya, maka bisa dituliskan didepan nama Method dengan perintah void... Karakteristik

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

(a) Buat project baru dengan nama Modul10g, jangan pilih opsi Create Main Class (b) Tambahkan satu package ke dalam project Modul10g, dengan cara klik kanan pada. project

Jika pada saat kita memberikan sebuah parameter berupa string, hasil yang ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita memberikan 3 nilai dengan tipe

Pemorgraman Berorientasi Objek | 20 Karena static property dan static method adalah milik class, maka kita tidak perlu membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama