Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP.DOC
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
618.5 Кб
Скачать

Работа №5. Конструктор с инициализацией по умолчанию

Вернитесь к тексту программы из работы №3. Модифицируйте объявление конструктора в файле .H, включив в него инициализацию всех данных-членов класса какими-либо значениями по умолчанию. Создайте столько объектов класса, сколько может быть вариантов вызова конструктора с инициализацией по умолчанию. Выведя с помощью функции Print() содержимое всех созданных объектов, проконтролируйте результат.

Работа №6. Статическая переменная в составе класса

Воспользовавшись программой из предыдущей работы, введите в состав закрытых членов класса две дополнительных переменных с именами, например, number и counter, в первую из которых будет заносится номер создаваемого объекта, а во вторую – полное число созданных объектов. Поскольку переменная counter, хотя она и входит в состав каждого объекта, должна в любой момент иметь единственное доступное всем объектам значение, ее следует объявить статической, предварив ее объявление спецификатором класса памяти static и указав начальное значение (в данном случае 0). В конструктор объекта включите предложения инкремента переменной counter и сохранения ее нового значения в переменной number. В функции Print() предусмотрите вывод в окно сообщения, помимо содержимого объекта, еще и значения двух новых переменных.

В главной функции WinMain() создайте первый объект вашего класса и выведите в окно сообщения значения всех его членов. Создайте второй объект, выведите его содержимое, после чего снова выведите содержимое первого объекта. Создайте третий объект и еще раз выведите содержимое как третьего, так и первого объектов. Удостоверьтесь в том, что в каждом конкретном объекте значение переменной counter описывает общее число созданных на данный момент времени объектов, а в переменной number хранится номер данного объекта.

Работа №7. Перегрузка функций

Воспользуйтесь текстом работы №3 (класс с конструктором) в качестве заготовки. Добавьте в определение класса пару перегруженных функций, имена которых совпадают с именем одного из членов-данных класса, но начинаются с прописной буквы. Первая функция должна устанавливать значение соответствующего данного, а вторая (с тем же именем) – возвращать значение этого данного. Фактически вы создадите функции, которые в современном программировании носят название “свойств” (properties) – одноименных перегруженных функций, позволяющих как задавать, так и получать значения переменных. Модифицируйте функцию Print(), использовав в ней для получения значения данного перегруженную функцию.

В главной функции WinMain() создайте объект вашего класса вызовом конструктора с некоторым набором аргументов. Воспользуйтесь перегруженной функцией для присвоения соответствующему данному класса нового значения. Вызовом функции Print() ведите исходное содержимое объекта, а также его содержимое после модификации. Ответьте на следующие вопросы:

а. В каком месте программы вызывается каждая из перегруженных функций?

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

Работа №8. Перегрузка конструкторов (индивидуальное задание b)

Составьте обычное приложение Windows с главным окном и обработкой сообщений WM_PAINT и WM_DESTROY. Задайте для главного окна достаточно большой размер и цветной фон. Включите в заголовочный файл приложения определение класса в соответствии с индивидуальным заданием В. Класс описывает некоторые характеристики определенной фигуры (прямоугольника, эллипса, линии и др.), несколько экземпляров которой будут выводиться в окно приложения. В число задаваемых характеристик фигуры могут входить ее координаты, размеры, цвет и толщина линий контура, цвет заливки и др.

Определите в классе несколько перегруженных конструкторов с разным числом параметров для создания различных вариантов экземпляров фигуры, как это указано в индивидуальном задании.

Включите в состав открытых членов класса функцию Draw(), которая, если ее вызывать в функции OnPaint(), будет выводить в окно приложения создаваемые в приложении фигуры. Поскольку все функции рисования требуют в качестве первого параметра дескриптор контекста устройства, функция Draw() должна принимать этот дескриптор в качестве своего единственного параметра.

В функции OnPaint() создайте несколько объектов фигур по числу определенных в классе конструкторов и выведите эти объекты в окно приложения вызовом для них функции Draw(). Убедитесь в том, что вид выводимых фигур соответствует определению конкретных объектов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]