Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2013, 10:57   #1
Григоренко Степан
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 35
По умолчанию Отделение реализации от интерфейса

Привет форумчанам.
Так получилось, что мне надо за крайне сжатое время написать масштабную программу с возможностью дальнейшего масштабирования
В программе будет главный модуль, 2 модуля для получения информации с устройств, 2 модуля с функционалом, модуль с дополнительными функциями...
Хочется написать программу по-взрослому, "с классами и интерфейсами".

Как можно "отделить реализацию от интерфейса"? Общий смысл данного действия я понимаю отлично, а вот как реализовать... Перечитал кучу примеров в сети, но так ничего и не понял. Поиск по форуму ничего не дал. Накидайте пжлст статей, в которых "для лоха" рассказывалось бы данное действие.
Григоренко Степан вне форума Ответить с цитированием
Старый 21.10.2013, 12:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Накидайте пжлст статей, в которых "для лоха" рассказывалось бы данное действие.
Что такое "интерфейс"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2013, 12:50   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

наверное под интерфейсом имеется ввиду интерфейсный класс (в некоторых языках есть слово interface, в плюсах это абстрактный класс {но чуть чуть не то}).

А может быть ТС имеет ввиду GUI?

А быть может хочет просто узнать как класс раскидать между .h и .cpp файлом.

Есть еще варианты?
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 16:34   #4
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Григоренко Степан, имеешь виду MVC(модель-вид-контроллер).

Цитата:
Общий смысл данного действия я понимаю отлично, а вот как реализовать...
Для начала займись видом то есть интерфейсом далее саму бизнес логику приложения и конечно само взаимодействием с пользователем...
Nuklon вне форума Ответить с цитированием
Старый 21.10.2013, 20:08   #5
Григоренко Степан
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 35
По умолчанию

Интерфейс - интерфейс пользователя, GUI.
У нас есть форма, и надо сделать программу независимой от нее.
Как это можно сделать?

Насколько я понимаю, раскидать класс на .h и .cpp надо затем, чтобы другие модули видели только то, что им положено видеть.
Григоренко Степан вне форума Ответить с цитированием
Старый 21.10.2013, 20:13   #6
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Сделать обработку событий и сам интерфейс в отдельной DLL. Заменить данную DLL другой тоже самое, что сменить вид интерфейса.

Интерфейс DLL (имеется в виду не GUI) сделать примерно таким:

Код:
class Interface
{
     virtual HWND __stdcall CreateWnd(<необходимые параметры>)  = 0; // Создание окна
     virtual void __stdcall DestroyWindow() = 0; // Уничтожение окна
     virtual void __stdcall SetState(WORD State) = 0; // Установка состояний окна (скрыто,отображено и тд)
};
И в DLL делать реализацию данного интерфейса через наследование. Как в COM делается.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 21.10.2013, 20:19   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
У нас есть форма, и надо сделать программу независимой от нее.
а форма то тогда зачем? ^^ может выкинуть ее к чертям?
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 20:28   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У нас есть форма, и надо сделать программу независимой от нее.
Я правильно понимаю: Нужно сделать проект, который может дополняться плагинами?
Тогда Кинезис прав. Я бы кстати еще порекомендовал почитать про создание плагинов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2013, 20:31   #9
Григоренко Степан
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 35
По умолчанию

Нууууу... Программа с GUI. Но препод сказал, что желательно все-таки сделать основной функционал независимым от обработчиков кнопок.

Я и сам так однажды встрял, когда из-за небольшого переделывания интерфейса пришлось капитально перелопачивать код половины программы.
Григоренко Степан вне форума Ответить с цитированием
Старый 21.10.2013, 20:38   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но препод сказал
что его зовут бараном )
Обработчики кнопок и основной функционал это как луна и брокколи.
Короче, чтоб что-то отделять нужно знать задачу полно и четко и отлично понимать чем такая сепарация чревата. Иначе наотделяешся до такого, что потом просто работать перестанет.
Цитата:
Я и сам так однажды встрял, когда из-за небольшого переделывания интерфейса пришлось капитально перелопачивать код половины программы.
Это говорит только об одном - непродуманная программа целиком и полностью.
И дело тут не в интерфейсе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отделение вещественной части Tony_Curtis Общие вопросы C/C++ 2 06.01.2015 15:25
Концепция реализации веб-интерфейса Ma7 Помощь студентам 11 04.09.2011 22:48
технология реализации административного интерфейса allba PHP 1 21.02.2011 14:30
Отделение данных Регинка-малинка БД в Delphi 6 11.10.2010 21:21