Название: Структура объектов в программе Отправлено: ddipp от Сентябрь 08, 2009, 20:02 Раньше я писал только на функциональных языках, а теперь решил попробовать ООП с C++/QT.
Для обучения себя решил написать небольшую программку для учета личных финансов и сразу возникли вопросы по структуре объектов. Заранее извиняюсь за терминологию. Определил три сущности:
Название: Re: Структура объектов в программе Отправлено: Авварон от Сентябрь 08, 2009, 20:23 если классы взаимодействуют через сигналы/слоты (ну и функции), то все ок. Если же идет прямое обращение из 2х классов друг к другу (то есть они не могут порознь существовать), то имеет смысл сделать 1 класс.
Ну пример - Код: class Window А если ты делаешь Код: class Window Вообще надо смотреть более конкретно, однако общая рекомендация - классы не должны знать друг о друге (исключение - когда 1 класс не живет без другого, как к примеру модель и данные этой модели), а должны предоставлять интерфейсы для взаимодействия (сигналы/слоты). Кроме того, сигналы/слоты по возможности должны быть простых типов, а не пользовательских (иначе опять же получается жесткая связь) Однако же, если классы не преполагается использовать поодиночке, то желательно выстроить иерархию - кто из классов главный, а кто подчиненный. И минимизировать доступ из подчиненного к главному Название: Re: Структура объектов в программе Отправлено: ddipp от Сентябрь 08, 2009, 20:44 Возникла мысль сделать над всем этим еще один класс чтоб управлять всей этой кухней, но получится лишь еще одна сущность, не решающая проблему.
Попробую писать, по ходу буду решать позникающие проблемы. Спасибо за пример сигналов Название: Re: Структура объектов в программе Отправлено: Авварон от Сентябрь 08, 2009, 21:35 можешь попробовать описать задачу вкратце? просто общими словами сложно говорить в данном случае:)
класс-контролер конечно выход, но его можно встроить в класс-гуевину к примеру Название: Re: Структура объектов в программе Отправлено: lit-uriy от Сентябрь 08, 2009, 23:26 ddipp, если у тебя программа только с GUI, то сделай класс главного окна приложения главным в программе, в нём создавай объекты других классов и соеденяй сигналы со слотами.
Подавляющее большенство программ на Qt так и устроены, это ты можешь увидеть в примерах и дамках, которые идут вместе с Qt. Название: Re: Структура объектов в программе Отправлено: Steven_Orko от Сентябрь 09, 2009, 12:34 Раньше я писал только на функциональных языках, а теперь решил попробовать ООП с C++/QT. Для обучения себя решил написать небольшую программку для учета личных финансов и сразу возникли вопросы по структуре объектов. Заранее извиняюсь за терминологию. Для начала, прежде, чем писать программу, сделай системный анализ постановки задачи. Выдели основные сущности, их методы, цели и решаемые задачи. Сделай декомпозицию основной задачи на более простые, эти в свою очередь еще на более простые, и т.д. Уровень декомпозиции выбирается всегда по-разному. Начни с проектирования математического обеспечения, а уже потом переходи к лингвистическому. Qt - это всего лишь инструмент. ))))) Скажу сразу, что только всего лишь трех классов тебе явно будет недостаточно. Название: Re: Структура объектов в программе Отправлено: Igors от Сентябрь 09, 2009, 12:43 Для начала, прежде, чем писать программу, сделай системный анализ постановки задачи. Выдели основные сущности, их методы, цели и решаемые задачи. Сделай декомпозицию основной задачи на более простые, эти в свою очередь еще на более простые, и т.д. Уровень декомпозиции выбирается всегда по-разному. Начни с проектирования математического обеспечения, а уже потом переходи к лингвистическому. Есть и другой подход. Сначала просто писать "как получится".Qt - это всего лишь инструмент. ))))) Скажу сразу, что только всего лишь трех классов тебе явно будет недостаточно. Цитировать ddipp, если у тебя программа только с GUI, то сделай класс главного окна приложения главным в программе, в нём создавай объекты других классов и соеденяй сигналы со слотами. Ведь это ничем не плохо. Если задача невелика - то и проблем не возникнет. А вот когда возникнут проблемы - перепроектировать. Это не так уж страшно и имеет плюс что проблемы будут реальные, "от жизни", вначале никто не предусмотрит всего.Название: Re: Структура объектов в программе Отправлено: Steven_Orko от Сентябрь 10, 2009, 12:46 Есть и другой подход. Сначала просто писать "как получится". Так появился Windows...Название: Re: Структура объектов в программе Отправлено: Igors от Сентябрь 10, 2009, 13:56 Есть и другой подход. Сначала просто писать "как получится". Так появился Windows...Название: Re: Структура объектов в программе Отправлено: Vexator от Сентябрь 11, 2009, 07:27 Скажу сразу, что только всего лишь трех классов тебе явно будет недостаточно. может и хватить ) для простой бух проги этого вполне хватит :) |