1 Востаннє редагувалося capitaNemo (05.03.2019 19:00:58)

Тема: Оптимізувати код Java

Завдання полягає в наступному:
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)"

Що ще тут ще можна поліпшити?

2

Re: Оптимізувати код Java

А яка зарплата? Умови роботи? Офіс чи з дому, якщо офіс - в якому місті?

Декалог програміста-початківця: https://replace.org.ua/post/132988/

3 Востаннє редагувалося capitaNemo (05.03.2019 19:09:08)

Re: Оптимізувати код Java

Що не так із запитанням ?
Просто перегляньте і скажіть чи тут можна ще щось покращити, якщо так то покажіть.... Дальше вже сам буду розбиратися

4

Re: Оптимізувати код Java

Коли я писав відповідь, то не бачив допису знизу.
А так - перепишіть код функції, щоб бачити, що відбувається.
Можна в Rectangle використовувати Point-и.
Ну і без завдання важко сказати, що там до чого.

Декалог програміста-початківця: https://replace.org.ua/post/132988/
Подякували: capitaNemo1

5

Re: Оптимізувати код Java

Думаю відповідь буде такою

public abstract class Shape
{
   protected String title;
   public Shape(String title)
   {
      this.title = title; 
   }
   protected 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
}

6

Re: Оптимізувати код Java

Не бачу тут відповіді на поставлене питання.

Декалог програміста-початківця: https://replace.org.ua/post/132988/

7

Re: Оптимізувати код Java

Я спочатку також не дуже розумів для чого переносити метод draw() але потім усвідомив що тут звичайне ООП  :D 
Є клас Фігура і є Прямокутник, який являється фігурою тобто має наслідуватися від нього.
Дальше дивимося на клас Фігуру, якщо він є супер класом то по суті реалізація методів буде вже не в ньому а в його наслідниках))

Автор завдання як натякнув нам сказавши, що метод потрібно перенести

8

Re: Оптимізувати код Java

За назвами - схоже; але по факту ніякої спільної діяльності Shape і Rectangle я не бачу. От якби draw виводив title - тоді так. Але тут Shape - оболонка для string, тобто все, що про Shape можна сказати - це його title.
Ще раз, без нормального ТЗ дуже важко щось сказати.

Декалог програміста-початківця: https://replace.org.ua/post/132988/