Anda di halaman 1dari 10

LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB : OVERLOAD DAN OVERLOADING METHOD


NAMA : ANISA PUTRI MAHARANI
NIM : 225150201111008
ASISTEN : Tengku Muhammad Rafi Rahardiansyah
Muhammad Bin Djafar Almasyhur
TGL PRAKTIKUM : 15 Maret 2023

A. Overloading Method
Pertanyaan
1. Lakukan percobaan diatas dan benahi jika menemukan kesalahan!
Source code
Overloading.java
1. import java.util.Scanner;
2.
3. public class Overloading {
4. public static void HitungLuas(int a, int b) {
5. int nilai = a*b;
6. System.out.println("maka hasil luas : " + nilai);
7. }
8. public static double HitungLuas(double value, double
value2){
9. double nilai = value*value2;
10. return nilai;
11. }
12.
13. public static void main(String[] args) {
14. Scanner in = new Scanner(System.in);
15. System.out.print("masukkan nilai integer 1 : ");
16. int integer1 = in.nextInt();
17. System.out.print("masukkan nilai integer 2 : ");
18. int integer2 = in.nextInt();
19. HitungLuas(integer1, integer2);
20.
21. System.out.print("masukkan nilai double 1 : ");
22. double double1 = in.nextDouble();
23. System.out.print("masukkan nilai double 2 : ");
24. double double2 = in.nextDouble();
25. HitungLuas(integer1, integer2);
26. System.out.println("Maka hasil luas " +
HitungLuas(double1, double2));
27. }
28. }
Output

Penjelasan
Tidak ada kesalahan pada kode tersebut. Output dari program ini bergantung pada input
yang dimasukkan oleh pengguna pada saat runtime. Seperti pada output di atas, jika pengguna
memasukkan input integer dengan nilai 9 dan integer 2 dengan nlai 7 maka output yang
dihasilkan bernilai 63. Jika pengguna memasukkan input double 1 dengan nilai 5.08 dan double
2 dengan nilai 3.98 maka output yang dihasilkan bernilai 20.2184.

Pertanyaan
2. Jika pada baris 7, pada parameter double value dan double value2 di hapus dan di ganti
menjadi int a dan int b apa yang terjadi? Jelaskan!
Source code
Overloading.java
1. import java.util.Scanner;
2.
3. public class Overloading {
4. public static void HitungLuas(int a, int b) {
5. int nilai = a*b;
6. System.out.println("maka hasil luas : " + nilai);
7. }
8. public static double HitungLuas(int a, int b){
9. double nilai = value*value2;
10. return nilai;
11. }
12.
13. public static void main(String[] args) {
14. Scanner in = new Scanner(System.in);
15. System.out.print("masukkan nilai integer 1 : ");
16. int integer1 = in.nextInt();
17. System.out.print("masukkan nilai integer 2 : ");
18. int integer2 = in.nextInt();
19. HitungLuas(integer1, integer2);
20.
21. System.out.print("masukkan nilai double 1 : ");
22. double double1 = in.nextDouble();
23. System.out.print("masukkan nilai double 2 : ");
24. double double2 = in.nextDouble();
25. HitungLuas(integer1, integer2);
26. System.out.println("Maka hasil luas " +
HitungLuas(double1, double2));
27. }
28. }

Output

Penjelasan
Terjadi error. Jika pada baris 7, parameter double value dan value2 dihapus dan diganti
menjadi int a dan int b, maka method HitungLuas dengan parameter double tidak akan lagi
tersedia pada kelas Overloading. Ketika pengguna memasukkan input double pada saat
runtime, program akan mengeksekusi method HitungLuas yang menggunakan parameter int.
Karena tipe data input yang dimasukkan adalah double, maka program akan menimbulkan error
saat memanggil method nextInt() pada objek Scanner untuk membaca input dari pengguna. Hal
ini dikarenakan nextInt() hanya dapat membaca input dengan tipe data int, sedangkan yang
dimasukkan oleh pengguna adalah double.
Pertanyaan
3. Rubah method pada baris ketujuh menjadi method bertipe void, dan lakukan juga
perubahan main method.

Source code
Overloading.java
1. package Laprak3aPBO;
2. import java.util.Scanner;
3.
4. public class Overloading {
5. public static void HitungLuas(int a, int b) {
6. int nilai = a*b;
7. System.out.println("maka hasil luas : " + nilai);
8. }
9. public static void HitungLuas(double value, double
value2){
10. double nilai = value*value2;
11. System.out.println("maka hasil luas double : " +
nilai);
12. }
13.
14. public static void main(String[] args) {
15. Scanner in = new Scanner(System.in);
16. System.out.print("masukkan nilai integer 1 : ");
17. int integer1 = in.nextInt();
18. System.out.print("masukkan nilai integer 2 : ");
19. int integer2 = in.nextInt();
20. HitungLuas(integer1, integer2);
21.
22. System.out.print("masukkan nilai double 1 : ");
23. double double1 = in.nextDouble();
24. System.out.print("masukkan nilai double 2 : ");
25. double double2 = in.nextDouble();
26. HitungLuas(double1, double2);
27. }
28. }
Output

Penjelasan
Pada program di atas, method HitungLuas yang mulanya mengembalikan nilai dengan
tipe data int dan double diubah menjadi void sehingga langsung mencetak hasil
perhitungannya. Dengan begini maka tidak perlu menunggu hasil nilai return dari method
tersebut.
B. Overloading Constructor
Pertanyaan
1. Lakukan percobaan diatas dan benahi jika menemukan kesalahan!
Source code
lingkaran.java
1. package Laprak3bPBO;
2.
3. public class lingkaran {
4. int alas, tinggi;
5. public lingkaran(int alas){
6. this.alas = alas;
7. }
8. public lingkaran(int alas, int tinggi){
9. this.alas = alas;
10. this.tinggi = tinggi;
11. }
12. public void serAlas(int alas){
13. this.alas = alas;
14. }
15. public void setTinggi(int tinggi){
16. this.tinggi = tinggi;
17. }
18. public int getAlas(){
19. return alas;
20. }
21. public int getTinggi(){
22. return tinggi;
23. }
24. public double hitungLuas(){
25. double hasil = (double)(getTinggi()*getAlas())/2;
26. return hasil;
27. }
28. public void displayMessage(){
29. System.out.println("Hitung Luas : " +
hitungLuas());
30. }
31. }

lingkaranMain.java
1. package Laprak3bPBO;
2.
3. public class lingkaranMain {
4. public static void main(String[] args) {
5. lingkaran l = new lingkaran (3);
6. l.setTinggi(10);
7. l.displayMessage();
8. lingkaran l2 = new lingkaran(4, 10);
9. l2.displayMessage();
10. }
11. }

Output

Penjelasan
Setelah program dijalankan, tidak terdapat kesalahan.
Pertanyaan
2. Pada class lingkaran Tambahkan constructor dengan parameter int tinggi, apa yang
terjadi dan jelaskan!
Source code
lingkaran.java
1. package Laprak3bPBO;
2.
3. public class lingkaran {
4. int alas, tinggi;
5. public lingkaran(int alas){
6. this.alas = alas;
7. }
8. public lingkaran(int alas, int tinggi){
9. this.alas = alas;
10. this.tinggi = tinggi;
11. }
12. public lingkaran(int tinggi){
13. this.tinggi = tinggi;
14. }
15. public void setAlas(int alas){
16. this.alas = alas;
17. }
18. public void setTinggi(int tinggi){
19. this.tinggi = tinggi;
20. }
21. public int getAlas(){
22. return alas;
23. }
24. public int getTinggi(){
25. return tinggi;
26. }
27. public double hitungLuas(){
28. double hasil = (double)(getTinggi()*getAlas())/2;
29. return hasil;
30. }
31. public void displayMessage(){
32. System.out.println("Hitung Luas : " +
hitungLuas());
33. }
34. }

Output
Terjadi error.
Penjelasan
Jika ditambahkan constructor dengan parameter int tinggi pada class lingkaran, maka
akan terjadi konflik antara constructor tersebut dengan constructor yang sudah ada yaitu
constructor dengan parameter int alas. Kedua constructor tersebut memiliki tipe parameter
yang sama, sehingga tidak dapat dimbedakan antara keduanya saat membuat objek dari class
lingkaran dengan parameter int. Akibatnya, akan terjadi error pada program.
Pertanyaan
3. Pada class lingkaran tambahkan constrctor dengan tipe data String alas dan String
tinggi, kemudian tambahkan method untuk melakukan parsing atau perubahan tipe data
dari String menjadi integer. Setelah itu pada method main lakukan instansiasi objek
dengan nama objek Lstring dengan memanggil constructor bertipe data String.
Jelaskan!
Source code
lingkaran.java
1. package Laprak3bPBO;
2.
3. public class lingkaran {
4. int alas, tinggi;
5. public lingkaran(int alas){
6. this.alas = alas;
7. }
8. public lingkaran(int alas, int tinggi){
9. this.alas = alas;
10. this.tinggi = tinggi;
11. }
12. public lingkaran(String stringAlas, String
stringTinggi){
13. this.alas = Integer.parseInt(stringAlas);
14. this.tinggi = Integer.parseInt(stringTinggi);
15. }
16. public void setAlas(int alas){
17. this.alas = alas;
18. }
19. public void setTinggi(int tinggi){
20. this.tinggi = tinggi;
21. }
22. public int getAlas(){
23. return alas;
24. }
25. public int getTinggi(){
26. return tinggi;
27. }
28. public double hitungLuas(){
29. double hasil = (double)(getTinggi()*getAlas())/2;
30. return hasil;
31. }
32. public void displayMessage(){
33. System.out.println("Hitung Luas : " +
hitungLuas());
34. }
35. }

lingkaranMain.java
1. package Laprak3bPBO;
2.
3. public class lingkaranMain {
4. public static void main(String[] args) {
5. lingkaran l = new lingkaran (3);
6. l.setTinggi(10);
7. l.displayMessage();
8. lingkaran l2 = new lingkaran(4, 10);
9. l2.displayMessage();
10. lingkaran Lstring = new lingkaran("6", "10");
11. Lstring.displayMessage();
12. }
13. }
Output

Penjelasan
Pada program di atas, saat menambahkan constructor dengan tipe data String perlu
mengubah tipe parameter dari int menjadi String. Pada constructor tersebut, method setAlas()
dan setTinggi() dipanggil dan menggunakan method parseInt() untuk mengubah tipe data
String menjadi tipe data int. Dalam method main, objek Lstring dibuat dengan menggunakan
constructor yang membutuhkan dua parameter bertipe data String. Kemudian, program akan
memanggil method displayMessage() pada objek Lstring untuk menampilkan hasil
perhitungan luas lingkaran. Dengan menambahkan constructor tersebut, dapat memudahkan
pengguna dalam memberikan input data bisa berupa String dan tidak perlu mengkonversi
secara manual.

Anda mungkin juga menyukai