Sei sulla pagina 1di 7

Class Shape

1 package tugasprakpemrograman1;
2
3 abstract public class Shape {
4 protected String color;
5 protected boolean filled;
6
7 public Shape() {
8
9 }
10
11 public Shape(String color, boolean filled) {
12 this.color = color;
13 this.filled = filled;
14 }
15
16 public String getColor() {
17 return color;
18 }
19
20 public void setColor(String color) {
21 this.color = color;
22 }
23
24 public boolean isFilled() {
25 return filled;
26 }
27
28 public void setFilled(boolean filled) {
29 this.filled = filled;
30 }
31
32 abstract public double getArea();
33
34 abstract public double getPerimeter();
35
36 @Override
37 public String toString() {
38 return "Shape of color " + color
39 + " and " + filled;
40 }
41 }

Keterangan
 Class Shape dibuat menjadi abstract class. Class ini tidak dapat dibuat objeknya tetapi harus
diturunkan dimana pada subclassnya yang berisi implementasi dari abstract method yang ada
di super class-nya.
Class Circle
1 package tugasprakpemrograman1;
2
3 public class Circle extends Shape {
4 private double radius;
5
6 public Circle() {
7
8 }
9
10 public Circle(double radius) {
11 this.radius = radius;
12 }
13
14 public Circle(double radius, String color, boolean filled) {
15 super(color, filled);
16 this.radius = radius;
17 }
18
19 public double getRadius() {
20 return radius;
21 }
22
23 public void setRadius(double radius) {
24 this.radius = radius;
25 }
26
27 @Override
28 public double getArea() {
29 return Math.PI* Math.pow(radius, 2);
30 }
31
32 @Override
33 public double getPerimeter() {
34 return Math.PI*2*radius;
35 }
36
37 @Override
38 public String toString() {
39 return "Circle of color " + super.getColor()
40 + " and " + super.isFilled()
41 + " with radius " + radius
42 + " have area is " + getArea()
43 + " and have perimeter " + getPerimeter();
44 }
45 }

Keterangan
 Sub Class Shape, karena subclass dari class abstract didalamnya harus berisi implementasi
method-method yang berada pada parent class. Seperti terlihat pada baris 27 sampai dengan
35.
Class Rectangle
1 package tugasprakpemrograman1;
2
3 public class Rectangle extends Shape {
4 private double width;
5 private double length;
6
7 public Rectangle() {
8
9 }
10
11 public Rectangle(double width, double length) {
12 this.width = width;
13 this.length = length;
14 }
15
16 public Rectangle(double width, double length, String color, boolean filled){
17 super(color, filled);
18 this.width = width;
19 this.length = length;
20 }
21
22 public double getWidth() {
23 return width;
24 }
25
26 public void setWidth(double width) {
27 this.width = width;
28 }
29
30 public double getLength() {
31 return length;
32 }
33
34 public void setLength(double length) {
35 this.length = length;
36 }
37
38 @Override
39 public double getArea() {
40 return width * length;
41 }
42
43 @Override
44 public double getPerimeter() {
45 return 2*width*length;
46 }
47
48 @Override
49 public String toString(){
50 return "Rectangle of color " + super.getColor()
51 + " and " + super.isFilled()
52 + " with width " + width
53 + " length " + length
54 + " have area " + getArea()
55 + " and have perimeter " + getPerimeter();
56 }
57 }

Keterangan
 Sub Class Shape, karena subclass dari class abstract didalamnya harus berisi implementasi
method-method yang berada pada parent class. Seperti terlihat pada baris 38 sampai dengan
46.

Class Square
1 package tugasprakpemrograman1;
2
3 public class Square extends Rectangle {
4 private double side;
5
6 public Square() {
7
8 }
9
10 public Square(double side) {
11 this.side = side;
12 }
13
14 public Square(double side, String color, boolean filled) {
15 super.setColor(color);
16 super.setFilled(filled);
17 this.side = side;
18 }
19
20 public double getSide() {
21 return side;
22 }
23
24 public void setSide(double side) {
25 this.side = side;
26 }
27
28 /**
29 *
30 * @param side
31 */
32 public void setWidth(double side){
33 super.setWidth(side);
34 }
35
36 /**
37 *
38 * @param side
39 */
40 public void setLength(double side) {
41 super.setLength(side);
42 }
43
44 /**
45 *
46 * @return
47 */
48 public String toString() {
49 return "Square of color " + super.getColor()
50 + " and " + super.isFilled()
51 + " with side " + side;
52 }
53 }

Keterangan
 Class Square merupakan sub class dari rectangle. Dan rectangle subclass dari abstract
shape. Sehingga kita dapat merubah color yang berada dalam class Shape melalui
deklarasi super. Seperti yang terdapat pada baris 15 dan 16.

Main Class
1 package tugasprakpemrograman1;
2
3 public class TugasPrakPemrograman1 {
4
5 public static void main(String[] args) {
6 Shape s1 = new Circle(5.5, "RED", false);
7 System.out.println(s1);
8 System.out.println(s1.getArea());
9 System.out.println(s1.getPerimeter());
10 System.out.println(s1.getColor());
11 System.out.println(s1.isFilled());
12 System.out.println(s1.getRadius());
13
14 Circle c1 = (Circle) s1;
15 System.out.println(c1);
16 System.out.println(c1.getArea());
17 System.out.println(c1.getPerimeter());
18 System.out.println(c1.getColor());
19 System.out.println(c1.isFilled());
20 System.out.println(c1.getRadius());
21
22 Shape s2 = new Shape();
23
24 Shape s3 = new Rectangle(1.0, 2.0, "RED", false);
25 System.out.println(s3);
26 System.out.println(s3.getArea());
27 System.out.println(s3.getPerimeter());
28 System.out.println(s3.getColor());
29
30 Rectangle r1 = (Rectangle) s3;
31 System.out.println(r1);
32 System.out.println(r1.getArea());
33 System.out.println(r1.getColor());
34 System.out.println(r1.getLength());
35
36 Shape s4 = new Square(6.6);
37 System.out.println(s4);
38 System.out.println(s4.getArea());
39 System.out.println(s4.getColor());
40
41 Rectangle r2 = (Rectangle) s4;
42 System.out.println(r2);
43 System.out.println(r2.getArea());
44 System.out.println(r2.getColor());
45 System.out.println(r2.getSide());
46 System.out.println(r2.getLength());
47
48 Square sq1 = (Square) r2;
49 System.out.println(sq1);
50 System.out.println(sq1.getArea());
51 System.out.println(sq1.getColor());
52 System.out.println(sq1.getSide());
53 System.out.println(sq1.getLength());
54 }
55
56 }

Keterangan

 Pada baris ke 12 akan terjadi error karena method getRadius tidak ditemukan. Ini terjadi
karena class Shape tidak ada abstract method getRadius. Tetapi method tersebut berada dalam
subclassnya yaitu class Circle.
 Pada baris ke 14 Object c1 dengan class Circle di assigntment s1. Hal ini akan menyebabkan
isi dari c1 akan mempunyai nilai yang sama dengan s1. Tapi perbedaannya getRadius dapat di
print karena method getRadius ada dalam class Circle.
 Pada baris ke 22 akan terjadi error. Karena class abstract tidak dapat dibuat objeknya.
Objeknya hanya bisa dibuat dari non-abstract class.
 Pada baris 36 class Square dapat dibuat objek dari class abstract Shape. Hal ini karena class
Square memiliki parent class Rectangle dan Rectangle memiliki parent Class Shape.
 Pada baris ke 45 akan terjadi error. Error ini terjadi karena Rectangle adalah parent class
Square. Parent class tidak dapat mengambil method dari subclassnya. Sebaliknya subclass
dapat mengambil method dari parent classnya.
Dokumentasi Tugas setelah menghilangkan Error

Pertanyaan:
What is the usage of the abstract method and abstract class?

 Class Abstract berisi beberapa method dan beberapa method abstract. Class abstract berisi
sebagian implementasi, dan subclass yang melengkapi implementasinya. Dengan kata lain
Class abstract memiliki kesamaan method yang diimplementasikan oleh subclass dan
memiliki perbedaan method yang hanya dimiliki sendiri oleh class abstract.
 Method abstract dideklarasikan, jika ada satu atau lebih subclass yang diharpkan mempunyai
fungsionalitas yang sama tetapi menggunakan implementasi berbeda.

Potrebbero piacerti anche