Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как грамотно разбить прогу на модули? / 25 сообщений из 28, страница 1 из 2
17.11.2006, 09:09
    #34135308
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Здравствуйте всем.
Сейчас понял, что ранее никогда не создавал искусственных Unit'ов (ранее они создавались с формами). Сейчас получается здоровый main файл и, хотя бы, для удобства навигации надо функцию обработчик нажатия каждой кнопки поместить в отдельный файл.
Как сделать, чтоб объекты формы были видны из новых Unit'ов, где писать include чтоб вся конструкция работала? Буду очень благодарен, тем более за примеры кода:) Спасибо.
BCB 6
...
Рейтинг: 0 / 0
17.11.2006, 09:15
    #34135321
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Так у тя Delphi или BCB???

Кстате, кросс-постинг наказуем!
I Live Again!
...
Рейтинг: 0 / 0
17.11.2006, 09:24
    #34135340
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
У меня ВСВ 6. Просто на Delphi более активный форум:) Думаю разницы особой не будет.
А про наказание я не знал, больше не буду.
...
Рейтинг: 0 / 0
17.11.2006, 09:26
    #34135346
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
NotfromУ меня ВСВ 6. Просто на Delphi более активный форум:) Думаю разницы особой не будет.
А про наказание я не знал, больше не буду.Ок. В принципе тебе там ответили...
...
Рейтинг: 0 / 0
17.11.2006, 09:58
    #34135422
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Как мне в Main.cpp надо вызывать функцию PushButton1(), если она обявлена в модуле в следующем классе?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#ifndef GRUnit1H
#define GRUnit1H
//---------------------------------------------------------------------------
#endif

class PBUTTON1
  {
public:
  void PushButton1();
  };
...
Рейтинг: 0 / 0
17.11.2006, 10:02
    #34135438
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Это бессмысленный ifndef.

По вопросу: сделать инклуду в мэйне требуемого заголовочно файла
Код: plaintext
1.
#include "имя файла"
...
Рейтинг: 0 / 0
17.11.2006, 10:24
    #34135520
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Это я сделал, а как теперь функцию вызвать?
PBUTTON1::PushButton1 () ?
...
Рейтинг: 0 / 0
17.11.2006, 10:29
    #34135545
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
NotfromЭто я сделал, а как теперь функцию вызвать?
PBUTTON1::PushButton1 () ?

Функции класса служат для обработки объектов, которые создаются по типу этого класса. (небольшое исключение - статические). Поэтому они вызываются, через сам объект. obj1.func() или obj1->func() в зависимости от способа создания объекта, статически или динамически.
...
Рейтинг: 0 / 0
17.11.2006, 10:36
    #34135571
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Тогда как проще, и вообще нужен ли этот класс. Я пробовал так:
PBUTTON1 qwe;
qwe.PushButton1 ();
Но выводится ошибка(
...
Рейтинг: 0 / 0
17.11.2006, 10:44
    #34135601
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
NotfromТогда как проще, и вообще нужен ли этот класс. Я пробовал так:
PBUTTON1 qwe;
qwe.PushButton1 ();
Но выводится ошибка(

Нужен ли класс? Взависимости от того что твоя функция выполняет. Для чего нужны функции классов (методы), я уже написал.

Когда выводится ошибка, копируй ее в форум.
...
Рейтинг: 0 / 0
17.11.2006, 11:05
    #34135701
Павел. С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
От себя добавлю еще один вопрос, касающийся сабжа.

Читал разные книги по С, но ни в одной не нашел грамотного объяснения того, как действительно рационально делить программу на модули (читай разные файлы с исходниками)

Посему несколько вопросов:
1) Как влияет #include хидера на размер бинарника? Влияет ли вообще? Например, я в 3х срр файлах с реализацией разных классов включаю <windows.h>. Он мне нужен для работы. Можно ли включать его подругому??

2) Какова связь между .cpp исходником и .h хидером которые написал сам???
Верно ли, что на один cpp должен приходиться один хидер?

3) Я в хидере описал некоторые константы (ну не совсем константы, а дефайны имя-номер)
Хочу использовать эти константы, как возвращаемые значения публичных методов некого класса. А анализирую их в другом файле. Как мне сделать эти константы видимыми для обоих файлов?? А если их не 2, а 10?? Заводить отдельный хидер, описывать в нем то что мне надо, и из каждого файла инклюдить?


Я это потому спросил, что порой приходиться отказываться от деления программы на модули, и писать все в 1-2 файлах. А это очень громоздко...

Ранее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.

А то уже достало листать сорцы тыщ по 5 строк.
...
Рейтинг: 0 / 0
17.11.2006, 11:13
    #34135745
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Класс убрал, с ошибкой проблема решена:)
Но как сделать, чтоб объекты формы были доступны в модуле?
Описать их в Unit1.h с префиксом extern? Может проще както можно?
...
Рейтинг: 0 / 0
17.11.2006, 11:19
    #34135764
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Павел. СОт себя добавлю еще один вопрос, касающийся сабжа.

Читал разные книги по С, но ни в одной не нашел грамотного объяснения того, как действительно рационально делить программу на модули (читай разные файлы с исходниками)

Посему несколько вопросов:
1) Как влияет #include хидера на размер бинарника? Влияет ли вообще? Например, я в 3х срр файлах с реализацией разных классов включаю <windows.h>. Он мне нужен для работы. Можно ли включать его подругому??

2) Какова связь между .cpp исходником и .h хидером которые написал сам???
Верно ли, что на один cpp должен приходиться один хидер?

3) Я в хидере описал некоторые константы (ну не совсем константы, а дефайны имя-номер)
Хочу использовать эти константы, как возвращаемые значения публичных методов некого класса. А анализирую их в другом файле. Как мне сделать эти константы видимыми для обоих файлов?? А если их не 2, а 10?? Заводить отдельный хидер, описывать в нем то что мне надо, и из каждого файла инклюдить?


Я это потому спросил, что порой приходиться отказываться от деления программы на модули, и писать все в 1-2 файлах. А это очень громоздко...

Ранее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.

А то уже достало листать сорцы тыщ по 5 строк.

1. Как правило не.
2. Не обязательно. Хеадер в, основном, служит как паблик для всех кто будет пользовать cpp
3. Бывает, иногда используют, отдельный хеадер, что-то типа global.h, в котором все общее прописывают, но мне удобней инклудить хеадеры того, что пользую. Он служит как первоисточник данных о модуле. Еще можно делать хеадер хеадеров.
...
Рейтинг: 0 / 0
17.11.2006, 11:21
    #34135777
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
NotfromКласс убрал, с ошибкой проблема решена:)
Но как сделать, чтоб объекты формы были доступны в модуле?
Описать их в Unit1.h с префиксом extern? Может проще както можно?

Описать extern'ом. Но желательно строить программу так, чтобы модули пользовались чужими классами, а не объектами. У меня сейчас примерно 20-30 модулей и нет ни одного extern'а
...
Рейтинг: 0 / 0
17.11.2006, 12:20
    #34136081
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Павел. С1) Как влияет #include хидера на размер бинарника? Влияет ли вообще?инклюд - довольно тупая операция. Если в хэ-файле описаны только дефайны и екстерны - то в релизе на размер не влияет, если туда включен ещё компилируемый код - то на размер влияет всегда, при этом хэ-файл рекомендуют переименовывать в цэпэпэ.

Павел. С2) Какова связь между .cpp исходником и .h хидером которые написал сам???никакой, проект на с++ - просто куча файлов, связи задаются явно инклюдами.

Павел. СРанее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.на с++.нет писал? Там тоже надо с хидерами колупаться по полной.
...
Рейтинг: 0 / 0
17.11.2006, 12:49
    #34136224
Павел. С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Павел. СРанее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.на с++.нет писал? Там тоже надо с хидерами колупаться по полной.[/quot]

Нет, на шарпе писал. А сейчас задачи другие немного... Низкоуровней надо и с использованием Win32 API. Потому и перешел.
...
Рейтинг: 0 / 0
17.11.2006, 13:01
    #34136290
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Люди:) Почему так все сложно, почему я не могу видеть в модуле объекты формы ничего не делая:)
Akh, ты говоришь надо делать глобальными классы. Что мне теперь 20 Siries'ов, объявленных в class TForm1 в Main.h в какой то другой класс пихать? Запутался я, пятница думать не позволяет:)
...
Рейтинг: 0 / 0
17.11.2006, 13:06
    #34136313
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
NotfromЛюди:) Почему так все сложно, почему я не могу видеть в модуле объекты формы ничего не делая:)
Akh, ты говоришь надо делать глобальными классы. Что мне теперь 20 Siries'ов, объявленных в class TForm1 в Main.h в какой то другой класс пихать? Запутался я, пятница думать не позволяет:)

Ты видишь только то, что в ашниках прописано, т.к. ты их инклудишь. Знаешь что делает компилятор (вернее препроцессор), когда встречает твой инклуд?

Ничего не понял, из того что ты сказал. Пропиши, что у тебя где лежит, и где что ты хочешь пользовать.
...
Рейтинг: 0 / 0
17.11.2006, 13:24
    #34136401
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Понажатию кнопки я работаю с графиками, теперь эти функции мне надо перенести в модуль (Unit.cpp, Unit.h). Создал я этот модуль, прописал в Main'е: #include "Unit1.cpp" (или *.h тут надо?).
Теперь мне надо в Unit.cpp написать, к примеру:
Form1->Edit1->Text="Работай же, сволочь!";

Что надо прописать в Unit.h для этого? Ведь это д.б. просто.
...
Рейтинг: 0 / 0
17.11.2006, 13:27
    #34136423
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
надо unit1.cpp инклюдить после объявления Form1, причём сам unit1.cpp компилировать не надо, раз включаешь его в мейн целиком
...
Рейтинг: 0 / 0
17.11.2006, 13:40
    #34136487
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
График описываешь в Unit1, в ашник пишешь описание класса.
Кнопки описываешь в Unit2, в ашник пишешь описание классов. В юните 2 cpp инклюдишь график.
В Main'e инклюдишь оба ашника юнитов и создаешь графики и кнопки. Все.
...
Рейтинг: 0 / 0
17.11.2006, 13:41
    #34136492
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
В самом конце main.h написал:
Код: plaintext
#include "Unit1.срр"

А он мне ошибку:
Undefined simbol Edit1.....

Что надо прописать в Unit.h, он пустой д.б.?
...
Рейтинг: 0 / 0
17.11.2006, 13:42
    #34136499
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Akh , щас попробую. Спасибо.
...
Рейтинг: 0 / 0
17.11.2006, 13:44
    #34136510
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Ты хоть понимаешь, как работает #include?
...
Рейтинг: 0 / 0
17.11.2006, 13:51
    #34136555
Notfrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно разбить прогу на модули?
Честно, никогда не задумывался, тк не надо было. Но наверное вставляет на свое место содержимое указанного файла. Или там мудренее?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как грамотно разбить прогу на модули? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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