Как правильно с точки зрения ООП? Всем привет Пишу маленькое приложеньице (в ооп относительно недавно), столкнулся с такой логической проблей: У меня есть 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; } смущает тот факт, что хочется все делать по фэн шую, а писать класс в который добавлять логику создания кнопок и возвращать не совсем объектно. Или я не прав, и такой подход в целом является нормой в ООП?
С точки зрения ООП, ваш подход не совсем правильный. В классе 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); } }
Такой подход делает ваш код более объектно-ориентированным и обеспечивает лучшую структуру и легкость в расширении и поддержке.
С точки зрения ООП, ваш подход не совсем правильный. В классе 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);
}
}
Такой подход делает ваш код более объектно-ориентированным и обеспечивает лучшую структуру и легкость в расширении и поддержке.