Reputation: 169
// CentredBall class:
2 // Class attribute: quantity - number of balls created
3 // Instance attributes: colour, radius, centre
4 import java.awt.*;
5
6 class CentredBall {
7
8 /************** Data members **********************/
9 private static int quantity = 0;
10
11 private String colour;
12 private double radius;
13 private Point centre;
14 private int xCoord, yCoord;
15
16 /************** Constructors **********************/
17 // Default constructor creates a yellow, radius 10.0 ball centred at origin (0,0)
18 public CentredBall() {
19 this.colour = "yellow";
20 this.radius = 10.0;
21 }
22
23 public CentredBall(String colour, double radius, Point centre) {
24 setColour(colour);
25 setRadius(radius);
26 setCentre(xCoord, yCoord);
27 quantity++;
28 }
29
30 public CentredBall(String colour, double radius, int xCoord, int yCoord) {
31 setColour(colour);
32 setRadius(radius);
33 setxCoord(xCoord);
34 setyCoord(yCoord);
35 quantity++;
36 }
37
38 /**************** Accessors ***********************/
39 public static int getQuantity() {
40 return quantity;
41 }
42 public String getColour() {
43 return this.colour;
44 }
45 public double getRadius() {
46 return this.radius;
47 }
48 public Point getCentre() {
49 return this.centre;
50 }
51 public int getxCoord() {
52 return this.xCoord;
53 }
54 public int getyCoord() {
55 return this.yCoord;
56 }
57
58 /**************** Mutators ************************/
59 public void setColour(String colour) {
60 this.colour = colour;
61 }
62 public void setRadius(double radius) {
63 this.radius = radius;
64 }
65 public void setCentre(Point centre) {
66 this.centre = centre;
67 }
68 public void setxCoord(int xCoord) {
69 this.xCoord = xCoord;
70 }
71 public void setyCoord(int yCoord) {
72 this.yCoord = yCoord;
73 }
74
75 /***************** Overriding methods ******************/
76 // Overriding toString() method
77 public String toString() {
78 return "[" + getColour() + ", " + getRadius() + ", " + getxCoord() + ", " + getyCoord() + "]";
79 }
80
81 // Overriding equals() method
82 public boolean equals(Object obj) {
83 if (obj instanceof CentredBall) {
84 CentredBall ball = (CentredBall) obj;
85 return this.getColour().equals(ball.getColour()) &&
86 this.getRadius() == ball.getRadius() &&
87 this.getxCoord() == ball.getxCoord() &&
88 this.getyCoord() == ball.getyCoord();
89 }
90 else
91 return false;
92 }
I keep getting this error
CentredBall.java:26: error: method setCentre in class CentredBall cannot be applied to given types;
setCentre(xCoord, yCoord);
^
required: Point
found: int,int
reason: actual and formal argument lists differ in length
1 error
I have a few questions. pls help.
how come the default constructor does not have a parameter for the centre at origin? I tried doing this("yellow", 10.0, (0,0)); but it doesn't work
what is the use of the overriding methods? Is there any error for the toString
and equals
overriding methods I have created?
Upvotes: 0
Views: 6222
Reputation: 9346
Use Point centre
from the param or create a new Point like Point p = new Point(xCoord, yCoord)
Upvotes: 1
Reputation: 1050
You are trying to pass xCoord, yCoord in place of a parameter of type Point. Instead pass
new Point(xCoord, yCoord)
This constructs a Point object that the method can handle.
Upvotes: 0
Reputation: 8825
You are getting the error because the setCentre()
method expects a Point and not 2 ints:
setCentre(new Point(xCoord, yCoord));
Also for:
1.Why don't you just add another constructor for the origin point:
public CentredBall(String colour, double radius) {
setCentre(0,0);
2.You've written this but you don't know why you've written it? You override them so that they behave the way you want them to for your objects.
Upvotes: 0