Как правильно с точки зрения ООП? Всем привет
Пишу маленькое приложеньице (в ооп относительно недавно), столкнулся с такой логической проблей:
У меня есть gui, на нем куча кнопок. Так вот чтобы не забрасывать класс, который выстраивает это гуи, создал отдельный класс buttons, где собственно создаю кнопки, создаю и добавляю для ниух слушателей (не отражены в примере ибо долго писать. Но у почти каждой кнопки они разные) и добавляю их на фрейм. Если в примере, то можно отразить это так:class mainGui {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Buttons btns = new Buttons();
JButton but1 = btns.getFristButton("Puppy", but1);
JButton but2 = btns.getSecondButton("Citty", but2);
panel.add(but1);
panel.add(but2);
frame.add(panel);
=============================
class Buttons {
String Name;
String Type;
JButton getFristButton(String name) {
this.Name = name;
}
JButton getSecondButtons(String type) {
this.Type = type;
}
смущает тот факт, что хочется все делать по фэн шую, а писать класс в который добавлять логику создания кнопок и возвращать не совсем объектно. Или я не прав, и такой подход в целом является нормой в ООП?

21 Авг 2019 в 07:02
164 +1
0
Ответы
1

С точки зрения ООП, ваш подход не совсем правильный. В классе Buttons ваша логика создания кнопок должна быть более объектно-ориентированной. Вместо того, чтобы просто возвращать кнопку, вы можете создать класс Button и использовать его для создания экземпляров кнопок.

Примерно так:

class mainGui {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Buttons btns = new Buttons();
Button but1 = btns.createFirstButton("Puppy");
Button but2 = btns.createSecondButton("Citty");
panel.add(but1.getButton());
panel.add(but2.getButton());
frame.add(panel);
}
class Button {
private JButton button;
public Button(String text) {
this.button = new JButton(text);
}
public JButton getButton() {
return this.button;
}
}
class Buttons {
public Button createFirstButton(String name) {
return new Button(name);
}
public Button createSecondButton(String type) {
return new Button(type);
}
}

Такой подход делает ваш код более объектно-ориентированным и обеспечивает лучшую структуру и легкость в расширении и поддержке.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир