Задачи 175-185. работа с классами
175. Добавьте в класс Date и испытайте метод Date Previous(void), который по заданной дате получает вчерашнюю.
176. Напишите программу, которая выводит календарь для заданного месяца, то есть распечатывает в виде таблицы числа месяца с указанием названий дня недели.
177. Напишите функцию сравнения двух дат.
178. Перепишите программу для работы с датами, используя для представления даты номер года и номер дня в году.
179. Используя программу для работы с датами, проверьте, на какие дни недели пришлись некоторые исторические события. Например, 14 (26) декабря 1825г. произошло восстание декабристов, 9 (22) января 1905г. было Кровавое воскресенье, 25 октября (7 ноября) 1917 произошла Великая Октябрьская Социалистическая революция, 19 августа 1991 г. в СССР было объявлено о создании ГКЧП. Используйте даты нового стиля, указанные в скобках.
180. Испытайте программу для работы с датами с другой начальной датой, для которой вам известен день недели.
181. Добавьте в класс Date функцию, которая определяет количество дней, прошедшее между двумя заданными датами
182. Добавьте в класс Date статический член – счетчик числа обращений к конструктору. Увеличивайте этот счетчик в конструкторе, в конце программы напечатайте его значение. Попробуйте найти те места в программе, где вызывается конструктор..
183. Добавьте в класс Plgn свойство для цвета многоугольника, а также еще один конструктор, аргументами которого должны быть два массива, содержащие горизонтальные и вертикальные координаты вершин и цвет.
184. В функции Movement() запрограммировано вращение только по часовой стрелке. Добавьте возможность вращения против часовой стрелки при нажатии некоторой клавиши.
185. Добавьте в класс Plgn функцию, которая будет по заданному многоугольнику строить новый, являющийся его выпуклой оболочной.
Глава 16. Программы из нескольких файлов
Исходная программа на C++ может располагаться в одном файле, но это становится неудобными или даже невозможным для больших программ. В этом случае текст программ размещается в нескольких файлах. Это удобно, так как небольшой код можно легко понять и отладить. Кроме того, работу можно распределить между несколькими программистами.
Средством работы с программами, состоящими из нескольких файлов, являются проекты, объединяющие файлы, из которых состоит программа. В проект могут входить cpp-файлы с исходным кодом, obj-файлы, с откомпилированным кодом. Заголовочные h-файлы в проект не включаются, так как они вставляются в состав других файлов директивой препроцессора #include.
При создании проекта необходимо обеспечить, чтобы функция или переменная, определенная в одном файле, была видима в другом. Это достигается с помощью объявлений переменных или функций перед их использованием. Переменные, определенные во внешнем файле, становятся видимыми в другом файле после их объявления с ключевым словом extern. При объявлении функций слово extern можно не использовать.
Работа с проектами
Проекты в Turbo C++
В среде TC новый проект создается командой меню Project, Open Project…, при этом появляется диалог Open Project File, рис.41. В поле Open Project File следует ввести имя создаваемого проекта, расширение PRJ к имени файла проекта будет добавлено автоматически при сохранении проекта. После нажатия кнопки OK откроется вначале пустое окно проекта, рис.42. Окно проекта можно закрыть, но сам проект при этом закрыт не будет. Проект закрывается командой Project, Close project. Окно проекта выводится на экран командой Window, Project.
Когда активно окно, проекта клавишей Ins можно добавить в проект файл, клавишей Delete удалить файл из проекта. Те же действия можно выполнить соответствующими командами меню Project. Порядок включения файлов в проект произволен. На рис.42 показано, что в проект SumNumb.PRJ включены два объектных файла ATOF.OBJ и GETLINE.OBJ, а также файл с исходным кодом SUMNUMB.CPP. Если в окне проекта выбрать файл и нажать Enter, данный файл будет открыт в окне редактирования.
Рис.41. Открытие и создание проекта
Для открытия существующего проекта выполняется та же команда Project, Open, и выбирается имя проекта из списка Files, рис.41.
Рис.42. Окно проекта
Для создания из проекта рабочей программы нужно выполнить одну из команд меню Compile:
Make или клавиша F9 – выполняется перекомпиляция измененных файлов и производится сборка программы;
Link – производится сборка программы без перекомпиляции исходных файлов;
Build all – перекомпилируются все файлы, входящие в проект.
Рабочая программа будет иметь имя, совпадающее с именем проекта и расширение .exe.
Проекты в C++Builder
Как уже говорилось, в C++Bulder проект создается для каждого приложения. Для управления составом проекта используются команды меню Project:
Add to Project… – добавление в проект нового файла;
Remove from Project… – удаление из проекта файла.
Область действия имен
Имена имеют переменные, функции, структуры, перечисления, классы, элементы классов и структур. Когда программы становятся большими, возрастает вероятность конфликта между именами.
Зоной видимости глобальной переменной является файл. К такой переменной можно обратиться в любом месте программы от точки объявления до конца файла.
Зоной видимости локальной переменной является часть блока, в котором она определена от точки объявления до конца блока.
Локальная переменнаяможет перекрывать глобальную переменной с тем же именем. Пример такого перекрытия демонстрируется в приводимой ниже программе.