Size: a a a

2020 March 16

S

Sergei in learn.java
Max
А такие методы - общепринятая практика?
Нет, это против ООП.
источник

M

Max in learn.java
А, понял
источник

M

Max in learn.java
Благодарю
источник

ch

central hardware in learn.java
Max
А такие методы - общепринятая практика?
ИМХО, dto можно и без них, а вот для остального все не так очевидно
источник

M

Max in learn.java
central hardware
ИМХО, dto можно и без них, а вот для остального все не так очевидно
Понял-принял
источник

DK

Dmitry Kalinichenko in learn.java
Sergei
"Гет/сет" вообще плохая идея почти всегда.
А какая хорошая?
источник

S

Sergei in learn.java
Dmitry Kalinichenko
А какая хорошая?
Хорошая - интерфейс класса должен отражать его поведение.

Геттер/сеттер подходят для тех классов, у которых всё поведение - "хранить вот эти данные".
источник

DK

Dmitry Kalinichenko in learn.java
ты имеешь ввиду о pojo классах ? не вижу логики между "отражать его поведение" и способом установки переменных класса.
источник

S

Sergei in learn.java
Dmitry Kalinichenko
ты имеешь ввиду о pojo классах ? не вижу логики между "отражать его поведение" и способом установки переменных класса.
Согласно ООП установка начального состояния объекта делается через конструктор(ы), изменение состояния объекта - через интерфейс, отражающий поведение объекта.

Геттеры/сеттеры не выражают никакого поведения, они лишь говорят "дай мне поле класса"/"установи поле класса".
источник

S

Sergei in learn.java
Можно жить и с этим, но это как бы не ООП.
источник

S

Sergei in learn.java
Геттеры-сеттеры могут быть оправданы, например, специфическими компромиссами фреймворка - beans, например - но из-за этого добавлять их вообще во все классы не то что бесполезно, но скорее даже вредно.
источник

DK

Dmitry Kalinichenko in learn.java
Sergei
Согласно ООП установка начального состояния объекта делается через конструктор(ы), изменение состояния объекта - через интерфейс, отражающий поведение объекта.

Геттеры/сеттеры не выражают никакого поведения, они лишь говорят "дай мне поле класса"/"установи поле класса".
приведи пример "изменение состояния объекта - через интерфейс, отражающий поведение объекта"
источник

DK

Dmitry Kalinichenko in learn.java
как ты будешь влиять на состояние объекта со приватным состоянием не через методы данного объекта, или все public делаем ?
источник

S

Sergei in learn.java
Dmitry Kalinichenko
как ты будешь влиять на состояние объекта со приватным состоянием не через методы данного объекта, или все public делаем ?
Всё через методы, конечно.
Другой вопрос - что именно эти методы делают, и какой смысл в них заложен.
источник

S

Sergei in learn.java
class Cat{
 float energy;
 float hunger;
}

Вот например мы моделируем поведение кота, которого есть "уровень энергии" и "уровень голода".
источник

S

Sergei in learn.java
В варианте "с геттерами и сеттерами" наш код примерно так выглядит:

class Cat{
 float energy;
 float hunger;
 void setHunger(float h) {hunger - h};
 float getHunger() {return hunger;}
 void setEnergy(float e){energy =e}
 float getEnergy(){return energy;}
}
источник

S

Sergei in learn.java
Можно установить и прочесть поля объекта, и всё как будто работает.
источник

S

Sergei in learn.java
Однако если у нашего кота чуть более сложные "правила", чем "хранить две цифры", то геттеры/сеттеры становятся бесполезны и даже вредны.
источник

S

Sergei in learn.java
Например, мы знаем, что кот вообще-то умеет спать, и за час сна набирает 7 единиц энергии.

А ещё каждый час его голод увеличивается на 13 единиц.

И в целом мы держим кота для того, чтобы с ним играть, и он при этом генерирует 1 единицу радости за час игры. Но только если энергия кота выше нуля, и голод меньше 100.
источник

l

lloyd in learn.java
поясни пожалуйста, когда гет/сет вредны?
источник