powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT паттерны (наследование или композиция?)
11 сообщений из 11, страница 1 из 1
QT паттерны (наследование или композиция?)
    #38223079
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

В каких случаях нужно выбирать наследование, а в каких композицию..?
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38223730
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,

а QT тут при чём ?
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224205
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivscymaks,

а QT тут при чём ?
Визарды в QtCreator-е можно настроить, чтобы генерация определений методов реализации классов-оболочек .ui делалась тремя способами:

- агрегация ("композиция") через указатель

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
namespace Ui {
    class MyClassDlg;
}

class MyClassDlg : public QDialog {
    Q_OBJECT
...
private:
    Ui::MyClassDlg *ui;
};


- агрегация

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#include "ui_myclassdlg.h"

class MyClassDlg : public QDialog {
    Q_OBJECT
...
private:
    Ui::MyClassDlg ui;
};



- множественное наследование
Код: plaintext
1.
2.
3.
4.
5.
6.
#include "ui_myclassdlg.h"

class MyClassDlg : public QDialog, private Ui::MyClassDlg {
    Q_OBJECT
...
};



~~~~~~~~~~~~~
Я обычно первый способ использую.

Тем, кому лень писать new/delete в в конструкторе/деструкторе - используют второй. :)

Ну а уж те, кому delphi совсем не испортил моск - третий.
~~~~~~~~~~~~~
Конечно, самый правильный способ - первый, потому что я тут один умный стою в пальто а вы все дураки.

Зависит от того, что вам нужно.
К примеру, если вы формы (ui) генерируете в рантайме, то как минимум глупо задавать их структуру жестко (во время компиляции), и здесь работа с указателями более к месту.

Ну и вообще...
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224211
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvm Ну и вообще... Дааа...
Вот интересно, почему на Хабре у статей не указан автор? Наверное чтобы тухлые яйца не долетали?
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224223
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,

Не помню уже где, но прочитал каноничную фразу, которая на всю жизнь запомнилась "предпочитайте композицию наследованию".
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224357
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ,

Ну как минимум в книге Head First по паттернам проектирования. Да и еще много где.
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224458
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlvvm Ну и вообще... Дааа...
Вот интересно, почему на Хабре у статей не указан автор? Наверное чтобы тухлые яйца не долетали?
Вопрос, может, и спорный, но интересный, ОК? :)
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224581
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlvvm Ну и вообще... Дааа...
Вот интересно, почему на Хабре у статей не указан автор? Наверное чтобы тухлые яйца не долетали?

Ну хабр — это же "илитный клуп" ...
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38224586
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу — как агрегировать ui — абсолютно по барабану. Это самая маленькая проблема. Т.е. это конечно вообще не проблема. Так что не вижу смысла это обсуждать.
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38262845
Станислав Вл.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imho наследование удобнее.
Ломает эти ui-> писать всю дорогу.
...
Рейтинг: 0 / 0
QT паттерны (наследование или композиция?)
    #38263164
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,

Если, скажем, вы планируете экспортировать свой widget из динамической библиотеки на базе графического шаблона (ui), то наиболее подходящим подходом будет агрегация указателя:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
namespace Ui {
class ExportedWidget;
}

class EXPORT ExportedWidget : public QWidget
...
   Ui::ExportedWidget* ui;
};



Во всех остальных случаях используйте то, что находите удобным для себя.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT паттерны (наследование или композиция?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]