Попытка инициализировать переменную экземпляра для экземпляра фигуры с диаметром и цветом - PullRequest
0 голосов
/ 06 января 2020

Я написал класс StickFigure, который является упрощенным представлением знакомого «человечка». Чтобы показать фигурки на графическом дисплее, я уменьшил их до базовых предметов и построил их из круга, треугольника и прямоугольника.

StickFigure имеет xPos и ​​yPos, которые также являются только две переменные экземпляра.

До сих пор я делал объявления для трех дополнительных переменных экземпляра head, body и leg, которые будут ссылаться на экземпляры Circle, Triangle и Rectangle. Я думаю, что я сделал это правильно

Circle aHead = new Circle();
Triangle aBody = new Triangle();
Rectangle aLeg = new Rectangle();

Я сейчас пытаюсь создать конструктор для StickFigure, чтобы он инициализировал Head экземпляром Circle диаметром 30 и цветом Colour.PINK. Я не уверен, как это сделать! ниже то, что я сделал до сих пор

public StickFigure()
{
    super();      
    this.setXPos(25);
    this.setYPos(220); 
}

Весь код до сих пор:

`public class StickFigure { /*Instance variables*/ 

private int xPos;//The horizontal position of a StickFigure private int yPos;//The vertical position of a StickFigure

// мои объявления Circle aHead = new Circle(); Triangle aBody = new Triangle(); Rectangle aLeg = new Rectangle(); / ** * Конструктор для объектов класса StickFigure, который * предоставляет фигурку по умолчанию в левом нижнем углу графического дисплея. * * /

public StickFigure() {super();<br> this.setXPos(25);

this.setYPos(220;         

{

1 Ответ

0 голосов
/ 06 января 2020

Это возможное и очень простое c решение:

enum Colour {
    BLACK,
    WHITE
}

class BodyPart {
    Colour colour;

    public BodyPart() {}

    public BodyPart(Colour colour) {
        this.colour = colour;
    }
}

class Circle extends BodyPart {
    private int diameter;

    public Circle(Colour colour, int diameter) {
        super(colour);
        this.diameter = diameter;
    }

    //getter and setter
}

class Triangle extends BodyPart {
    //whatever you want here
}

class Rectangle extends BodyPart {
    //whatever you want here
}

class StickFigure {
    private Circle head;
    private Triangle body;
    private Rectangle leg; // it could be a list of legs :D

    public StickFigure(Circle head, Triangle body, Rectangle leg) {
        super();
        this.head = head;
        this.body = body;
        this.leg = leg;
    }

    public static void main(String[] args) {
        StickFigure sf = new StickFigure(new Circle(Colour.BLACK, 10), new Triangle(), new Rectangle());

    }
}
...