Задача состоит в следующем:
Shape класс обеспечивает метод draw (...) ... для рисования фигур. Переместите метод draw (...) к Rectangle класса. Пожалуйста предложите другие решения для улучшения качества кода
public class Shape {
private String title;
//Other fields, constructors, get, set, etc.
public Shape(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
private void draw(Graphics graphics, Rectangle rectangle) {
rectangle.setVisible(false);
graphics.setColor(rectangle.getColor());
graphics.drawLine(rectangle.getX1(),rectangle.getY1(),rectangle.getX2(),rectangle.getY2());
//Other code
rectangle.setVisible(true);
}
}
public class Rectangle{
private int x1, y1;
private int x2, y2;
private Color color;
private boolean visible;
//Othre fields, constructors, get, set, etc
public Rectangle(String title, int x1, int y1, int x2, int y2, Color color, boolean visible) {
super(title);
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.color = color;
this.visible = visible;
}
public int getX1() {
return x1;
}
public int getY1() {
return y1;
}
public int getX2() {
return x2;
}
public int getY2() {
return y2;
}
public Color getColor() {
return color;
}
public boolean getVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
}
Такую задачу дал мне интервьюер
По моему мнению если я перенесу метод draw () до Rectangle класса, то можно будет с этого метода забрать параметр "Rectangle rectangle" и использовать методы не так "rectangle.setVisible (false)" а так "setVisible (false)"
Что еще здесь еще можно улучшить?
Такие принципы ООП как наследование и полиморфизм, были созданы для того, чтобы решать задачи подобного плана. То, что у вас написано это сплошной макаронный, не масштабируем код.
public class Example
{
public static void main(String[] args)
{
Shape shape = new Rectangle(...);
shape.draw();
}
}
public abstract class Shape
{
protected String title;
public Shape(String title)
{
this.title = title;
}
public void draw();
}
class Rectangle extends Shape
{
private int x1, y1;
private int x2, y2;
private Color color;
private boolean visible;
public Rectangle(String title, int x1, int y1, int x2, int y2, Color color,
boolean visible) {
super(title);
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.color = color;
this.visible = visible;
}
public void draw()
{
// next code here
}
// getters setters
}
Позже при потребности вы можете создавать и другие классы, к примеру, Triangle
и т.п. И использовать правильные паттерны проектирования(например Strategy
), которые работают на полиморфизме и популярны в примерах, как у вас:
public void Draw(Shape shape)
{
shape.draw();
}
void func()
{
Draw(new Rectangle(...));
}
По этому, учите в первую очередь ООП, а потом идите на интервью.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть код, который отвечает за отправку формы на сайте:
есть выпадающий список и снизу кнопки , при нажатие на кнопки выбирается из списка select по строке , мне нужно что бы выбиралось не по строке...
Когда я нажимаю на cancel button,скрываю div Edit и после показываю div InfoСрабатывает первое условие :