1. Soal
03. Define two derived classes of the abstract class ShapeBase in Listing 8.19. Your two classes will Your two classes will be called RightArrow and LeftArrow. These classes will be like the Classes Rectangle and Triangle, but they will draw arrows that point right and left, respectively.
2. Penjelasan Soal
Di soal ini diminta untuk membuat dua kelas, dimana dua kelas tersebut jika di run akan menghasilkan bentuk panah ke kanan, dan bentuk panah ke kiri.
3. Source Code Java
3.1 Class RightArrow
Class RightArrow ini memiliki total 2 class, dengan 1 main class nya, dan kelas lainnya untuk membuat method-method yang akan dipanggil di main class nantinya.
Berikut adalah source code yang berisi method-method untuk kedua main class :
1. package javaapplication3;
2.
3. import java.util.Arrays;
4. import java.util.Scanner;
5.
6.
7. public class Method {
8. Scanner aufar = new Scanner(System.in);
9.
10. private int width;
11.
12. private static String repeat(char ch, int count) {
13. char buf[] = new char[count]; // deklarasi array
14. Arrays.fill(buf, ch); // definisiin array apa yg mau dirubah
15. return new String(buf); // ngubah array buf yg tadinya char jadi string
16. }
17.
18. public static void printRightArrow(char ch, int n) {
19. for (int i = 1; i < n; i++) // for yang ini buat bikin bagian atasnya panah
20. System.out.println(repeat(‘ ‘, n – 1) + repeat(ch, i));
21.
22. System.out.println(repeat(ch, n * 2 – 1)); // buat ekor panah
23.
24. for (int i = n – 1; i >= 1; i–) // for yang ini buat bikin bagian bawahnya panah
25. System.out.println(repeat(‘ ‘, n – 1) + repeat(ch, i));
26. }
27.
28. public void DrawArrow()
29. {
30. do{
31. System.out.print("Masukan panjang untuk Left Arrow, dengan skala minimal 3 : ");
32. width = aufar.nextInt();
33.
34. if(width >= 3){
35. System.out.println();
36. for(int i = 0,r=0; i<width; i++) // semua fungsi di dalam looping ini, akan dieksekusi 7 kali
37. {
38.
39. for(int j=0;j<(width/2)-r;j++)//buat bikin spasi disebelum kepala arrow
40. System.out.print(" ");//spasinya
41.
42. for(int j=0;j<=r;j++)
43. {
44. if(j==r || j==0){
45. System.out.print("*"); // buat mencetak kepala arrow
46. }else{
47. System.out.print(" "); // buat bikin rongga dalam kepala arrow
48. }
49. }
50.
51. if(i==width/2)
52. ArrowTail(); // manggil method arrowtail
53.
54.
55. if(i<width/2) // fungsi if yang ini, tujuannya buat ngatur panjang pendeknya spasi sebelum kepala
56. r++;
57. else r–;
58.
59. System.out.println();
60. }
61. System.out.println();
62.
63. }
64. }while(width <= 3);
65. }
66.
67.
68.
69. public void ArrowTail()
70. {
71. for(int count=0; count<(width*2)+1; count++)
72. {
73. System.out.print("*"); // bikin garis lurus bintang
74. }
75. }
76. }
77.
78.
Pada baris ke 12 sampai baris ke 26, adalah method yang berfungsi untuk membuat Panah Kanan, sedangkan dari baris ke 28 sampai ke 75 adalah method yang berfungsi untuk membuat Panah Kiri.
Dan berikut adalah source code dari main class RightArrow :
1.
2. package javaapplication3;
3.
4. import java.util.Scanner;
5.
6. public class MainRightArrow {
7. public static void main(String[] args) {
8. Scanner aufar = new Scanner(System.in);
9. Method arrow = new Method();
10. int wafiqa;
11.
12. do{
13. System.out.print("Masukan panjang untuk Right Arrow, dengan skala minimal 3 : ");
14. wafiqa = aufar.nextInt();
15. System.out.println();
16.
17.
18. if(wafiqa >= 3){
19. arrow.printRightArrow(‘*’, wafiqa);
20. }
21. }while(wafiqa <= 3);
22.
23. System.out.println();
24. }
25.
26.
27. }
3.2 Class LeftArrow
Class LeftArrow ini memiliki total 2 class, dengan 1 main class nya, dan kelas lainnya untuk membuat method-method yang akan dipanggil di main class nantinya.
Dan berikut adalah source code dari main class LeftArrow :
1.
2. package javaapplication3;
3.
4.
5.
6. public class MainLeftArrow {
7.
8.
9. public static void main(String[] args)
10. {
11. Method Arrow = new Method();
12. Arrow.DrawArrow();
13. }
14.
15. }
16.
4. Output
4.1 Berikut adalah output dari main Class RightArrow tersebut :
Dari output tersebut bisa disimpulkan bahwa jika kita memasukan panjang untuk panah dibawah nilai 3, maka programnya akan bertanya lagi untuk memasukan nilai yang benar, lalu akhirnya memunculkan panah ke kanan.
4.1 Dan berikut adalah output dari main Class LeftArrow tersebut :
Dari output tersebut bisa disimpulkan bahwa jika kita memasukan panjang untuk panah dibawah nilai 3, maka programnya akan bertanya lagi untuk memasukan nilai yang benar, lalu akhirnya memunculkan panah ke kiri.
Kelompok 13
Nama :
Oksya Afifah (120216011)
M. Aufar (1202160372)
Rizky Pratama (1202160382)
Wafiqa Primasuri (1202164131)
Kelas SI-40-03