Как правильно с точки зрения ООП? Всем привет
Пишу маленькое приложеньице (в ооп относительно недавно), столкнулся с такой логической проблей:
У меня есть 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
184 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир