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

Teks penuh

(1)

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. }

(2)

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);

(3)

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.

(4)

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. }

(5)

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.

(6)

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)

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;

(8)

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;

(9)

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. }

(10)

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.

Referensi

Dokumen terkait

Fungsi main ini umumnya ditulis dalam bentuk int main ( ) yang berarti bahwa nilai kembali dari fungsi adalah integer, atau void main ( ) yang berarti fungsi tersebut tidak

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

DataOutputStream merupakan class yang menyediakan cara praktis untuk menuliskan tipe data primitive ke output stream, sedangkan DataInputStream berfungsi untuk membaca hasil

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 

Statement SQL: ALTER TABLE customers CHANGE age day_of_birth INT; DESC customers; Tujuan/Penjelasan Query: Untuk mengubah kolom age beserta tipe data yang sesuai kita dapat

Dengan menggunakan sistem secara online ini mempermudah pengunjung atau pelanggan untuk memesan kamar hotel dan tidak memakan waktu yang lama Berdasarkan uraian di atas maka penulis