Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.

АКАДЕМИЯ УПРАВЛЕНИЯ «ТИСБИ»

А.Н. Козин

Объектно-ориентированное программирование

УЧЕБНО-МЕТОДИЧЕСКОЕ пособие

Практические задания

КАЗАНЬ – 2006

Практические задания

Задание 1. Создание и внедрение отдельных классов для графических примитивов.

Постановка задачки.Требуется сделать маленькой набор не связанных вместе классов, описывающих главные графические примитивы (окружность, отрезок, прямоугольник и т.д.). Каждый класс должен содержать нужные параметры-свойства (координаты базисной точки Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы., размеры, признак видимости), более 2-ух конструкторов, способ отображения примитива Show,способ для перемещения объекта MoveTo. Не считая того, классы могут содержать уникальные способы, к примеру – изменение радиуса окружности, изменение линейных размеров прямоугольника, поворот отрезка и т.д. Каждый класс оформляется в виде отдельного модуля, который подключается к основной Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. программке для демонстрации способностей.

Порядок выполнения работы (для инструментального пакета Delphi):

1. Сделать новый проект и сохранить его в своем каталоге.

2. Расположить на главной форме основное меню для следующей реализации команд демонстрации способностей объектов-примитивов. На исходном шаге довольно в меню поместить две команды – Сделать и Переместить, подменю которых конкретизируют Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. применяемые объекты.

3. Расположить на форме компонент Image для отображения примитивов и выровнять его на всю клиентскую область.

4. Сделать обработчик действия формы OnCreate для инициализации датчика псевдослучайных чисел и установки режима рисования на поверхности компонента Image:

Image1.Canvas.Pen.Mode := pmNotXOR;

этот режим позволяет стирать имеющееся изображение за счет Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. повторного вывода на то же самое место с автоматическим восстановлением фона.

5. Добавить в проект новый программный модуль, НЕ СВЯЗАННЫЙ со собственной формой: команда меню File / New / Unit и непременно сохранить его совместно с проектом. Так как модуль является чисто программным, то его заготовка содержит только заголовок, начало интерфейсной секции (директива interface Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.) и начало секции реализации (директива implementation).

6. В интерфейсном разделе нового модуля ввести описание (ТОЛЬКО ОПИСАНИЕ!) 1-го из создаваемых классов (в разделе описания типов). Для простоты поначалу можно взять класс окружностей, тщательно описанный в лекционном материале. Другие классы можно добавить после проверки работы класса окружностей. В классе сделать Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. поля данных закрытыми, а способы – открытыми. Каждый примитив обязан иметь базисную точку, изменение координат которой приводит к перемещению примитива без конфигурации его размеров.

7. Оформить раздел реализации модуля, включив в него программную реализацию каждого объявленного способа. К примеру:

procedure TCircle.MoveTo(dx, dy : integer);

Begin

Show; //повторный вывод для стирания изображения Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. примитива

x := x + dx; y := y + dy; //изменение координат базисной точки

Show; //рисование в новеньком месте

end;

В способе MoveTo для удобства предстоящего использования задаются не новые координаты базисной точки, а СМЕЩЕНИЕ относительно нее, которое может быть и отрицательным.

8. Программная реализация способов показа примитивов может использовать стандартные графические примитивы системы Windows. К Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. примеру, вывод окружности производится последующим образом:

Form1.Image1.Canvas.Ellipse(x-r, y-r, x+r, y+r);

Так как этот код употребляет компонент Image основной формы, нужно подключить модуль главной формы к модулю с классами, записав сходу после директивы interface строчку

usesИмяГлавногоМодуля;

9. После полного описания всех способов сохранить модуль и подключить Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. его к основному модулю.

10. В разделе реализации основного модуля объявить одну-две переменные объектного типа, также – массив объектных указателей для проверки способностей групповой обработки объектов-примитивов.

11. Написать обработчики команд сотворения примитивов, выполняющие последующие деяния:

· если соответственный объект-примитив уже был ранее сотворен (указатель на него не равен nil), то стереть Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. старенькое изображение повторным вызовом способа Show и убить старенькый объект способом Free;

· сделать новый объект вызовом конструктора со случайными параметрами примитива;

· показать примитив способом Show.

12. Написать обработчики команд перемещения примитивов в новейшую точку со случайными координатами, используя генерацию значений смещения координат в границах [-50, 50].

13. Написать обработчики команд конфигурации геометрических параметров Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. объектов (радиус окружности, размеры прямоугольника, положение конечной точки отрезка и т.д.).

14. Написать обработчики команд сотворения массивов объектов и группового конфигурации их параметров.

15. Сохранить проект и проверить его работу.

Задание 2. Без помощи других придумать и обрисовать на различных языках 2-3 класса для объектов разной природы.


Практические задания

Задание 1. Реализация Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. взаимодействия классов на базе агрегации

Постановка задачки:

Разработанные в первом задании отдельные классы для графических примитивов нужно видоизменять с целью реализации способности их агрегационного взаимодействия. Для этого требуется ввести класс точек и поменять в классах для графических примитивов конкретное внедрение свойств-координат объектами-точками.

Порядок выполнения работы;

1. Открыть ранее сделанный Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. проект и сохранить его в новеньком каталоге для внесения нужных конфигураций.

2. Добавить новый класс для примитивов-точек, содержащий:

· два характеристики для хранения координат точки;

· конструктор для инициализации свойств-координат и вывода сообщения о разработке объекта (это будет употребляться в предстоящем при проверке корректности вложенных вызовов конструкторов взаимодействующих классов);

· Set/Get Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.-методы для доступа к координатам точки.

3. Внести последующие конфигурации в ранее сделанный класс Окружность:

· поменять свойства-координаты одним свойством-точкой;

· воплотить два конструктора, которые, не считая стандартных операций, делают дополнительно:

– проверку значения радиуса и по мере надобности - изменение его так, чтоб окружность не выходила за границы области рисования;

– вывод Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. сообщения о разработке объекта-окружности;

· в способе прорисовки окружности заместо прямого использования координат центра применить вызовы соответственных способов класса точек;

· в способе перемещения окружности поменять прямую установку новых значений координат вызовом соответственного способа класса точек.

4. Проверить работу приложения, обратив внимание на порядок сотворения взаимодействующих объектов.

5. Сделать новый Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. класс Кольцо, содержащий два свойства-окружности, два конструктора с выводом сообщения, также способы прорисовки и перемещения.

6. Проверить работоспособность всех способов сделанных классов.

7. Внести подобные конфигурации в классы Отрезок и Прямоугольник.

8. Без помощи других придумать и воплотить 1-2 класса для манипуляций со сложными объектами, включающими более обыкновенные объекты Точка, Отрезок, Прямоугольник, Окружность Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.; проверить работоспособность этих классов.

Задание 2. Создание и внедрение библиотеки классов для графических примитивов на базе принципа наследования.

Постановка задачки:

Требуется сделать маленькую иерархию классов, описывающих главные графические примитивы (окружность, треугольник, отрезок, прямоугольник и т.д.). Корнем всей иерархии является класс TFigure, определяющий общие характеристики и поведение всех объектов-примитивов Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.: координаты базисной точки примитива, конструктор, способы доступа, абстрактные способы прорисовкиShow и перемещенияMoveTo. В каждом классе нужно воплотить собственный конструктор и способы прорисовки и перемещения. Не считая того, классы могут содержать способы, уникальные только для соответственного поддерева, к примеру – изменение радиуса окружности, изменение линейных размеров прямоугольника, поворот треугольника и т Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы..д.

Вся библиотека оформляется в виде отдельного модуля, который подключается к основной программке для демонстрации способностей этой библиотеки.

Порядок выполнения работы:

1. Открыть один из ранее сделанных проектов и сохранить его в своем каталоге.

2. В интерфейсный раздел модуля-библиотеки ввести описание класса TFigure, используя для задания абстрактных способов директиву abstractв заголовке способа Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы..

3. Привести программную реализацию всех неабстрактных способов класса ТFigure(в конструкторе предугадать вывод сообщения об инициализации свойств-координат).

4. Сделать класс окружностей TCircle как потомка класса TFigure с добавлением нового характеристики – радиуса окружности, своим конструктором, способом Show,методомMoveTo и новым способом конфигурации радиуса.

5. Дать программную реализацию конструктора дочернего класса окружностей, Непременно Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. начинающуюся с вызова конструктора родителя:

· inherited Create(характеристики);

· в конце предугадать вывод сообщения о разработке объекта

6. Дать программную реализацию других способов класса окружностей

7. В главном (демонстрационном) модуле предугадать создание объектов-окружностей, их перемещение и изменение радиуса.

8. Проверить работоспособность сделанных классов.

9. На базе класса TCircle сделать дочерний подкласс эллипсов добавлением свойства Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.-полуоси. Воплотить собственный конструктор и способы прорисовки и перемещения. Для поворота на 90 градусов ввести новый способ.

10. Проверить работоспособность сделанных классов.

11. Аналогично сделать класс четырехугольников и подклассы для ромбов, трапеций, прямоугольников и проверить их работоспособность.


Практические задания

Задание 1. Создание библиотеки классов для графических примитивов с внедрением виртуальных способов.

Постановка задачки:

Требуется поменять Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. сделанную ранее иерархию классов для главных графических примитивов с целью использования виртуальных способов. Для этого в иерархию классов нужно внести некие конфигурации.

Порядок выполнения работы:

1. Открыть ранее сделанный проект и сохранить его в своем каталоге.

2. Внести в базисный класс фигур последующие конфигурации:

· абстрактный способ прорисовки объявить виртуальным Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.;

· способ перемещения сделать реальным, с вызовом виртуального способа прорисовки.

3. Во все дочерние классы внести последующие конфигурации:

· объявить способ прорисовки переопределяемым, оставив без конфигурации его программную реализацию;

· убрать из класса способ перемещения, который сейчас должен наследоваться и динамически настраиваться.

4. Проверить работоспособность сделанных классов.

Задание 2. Внедрение полиморфных объектных указателей.

Постановка задачки:

На Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. базе сделанной в прошлом задании библиотеки графических фигур нужно воплотить приложение для демонстрации главных способностей полиморфных указателей. Для этого требуется сделать простой контейнер с возможностью занесения в него всех объектов-фигур. Простой контейнер (время от времени именуемый коллекцией) можно сделать на базе массива полиморфных указателей. Должны быть предусмотрены последующие Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. операции:

· наполнение массива указателями на случаем избранные фигуры;

· показ всех фигур в массиве;

· стирание всех фигур в массиве;

· перемещение сходу всех фигур в новейшую базисную точку;

· выборочная обработка только фигур из некого поддерева (к примеру, перемещение только окружностей и эллипсов) за счет динамического определения типа объектного указателя при Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. прохождении по массиву;

· ликвидирование массива фигур с освобождением памяти.

Порядок выполнения работы:

1. Открыть ранее сделанный проект с библиотекой графических фигур и сохранить его в новеньком каталоге.

2. По мере надобности внести в базисную библиотеку дополнения: библиотека должна содержать более 3-х уровней (к примеру, ветку наследования классов TFigure – TCircle – TEllipse) и 5-6 классов Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы..

3. В разделе реализации основного модуля объявить массив из 20-30 полиморфных указателей, т.е. частей базисного типа TFigure.

4. В основное меню ввести команду Массивс подкомандами Сделать, Убить, Стереть, ПоказатьиПереместить.

5. Написать обработчик команды Сделать, который должен в цикле сделать случайный набор из 20-30 фигур со случайными параметрами и сохранить указатель на любой из Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. их как элемент массива, к примеру:

mas[ i ] := TCircle.Create(характеристики);

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

6. Написать обработчик команды Показатьдля прорисовки всего изображения за счет прохода по массиву с вызовом Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. для каждого элемента массива виртуального способа Show.

7. Написать обработчик команды Стереть только для стирания изображения всех фигур без ликвидирования объектов, что дает возможность повторно нарисовать изображение.

8. Написать обработчик команды Убить для стирания изображения всех фигур и ликвидирования соответственных объектов; для этого в цикле для каждого указателя вызывается способ Show и Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. потом способ Free.

9. Написать код, который перемещает все изображение влево-вправо-вверх-вниз по нажатию соответственной кнопки. Для простоты шаг перемещения можно взять равным 10 пикселам. Для реализации нужно:

· установить свойство формы KeyPreview=true для перехвата формой клавиатурного ввода;

· сделать обработчик действия формы OnKeyDown;

· в этом обработчике проверить по Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. Case-Of значение параметра Key,используя стандартные виртуальные коды кнопок vk_Left, vk_Right, vk_Up, vk_Down;

· для каждого варианта в цикле вызвать общий способ перемещения MoveTo с надлежащими значениями смещений.

10. Сохранить проект и проверить его работу.

11. Добавить в меню команду для выборочного перемещения только объектов-фигур некой подиерархии. Обработчик этой Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. команды должен как обычно пройти по массиву объектных указателей, но при всем этом выполнить проверку динамического типа каждого указателя на принадлежность к данной подиерархии при помощи операции is.

12. Проверить работу приложения.

13. Добавить возможность вызова при проходе по массиву уникального способа для данной подиерархии, к примеру – конфигурации Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. радиуса окружности (он же горизонтальная полуось эллипса). Для этого не считая проверки динамического типа указателя, нужно выполнить его приведение к базисному подтипу, к примеру – типу TCircle; для приведения употребляется операция as, после внедрения которой возникает возможность вызова при помощи полиморфного указателя способов подкласса (к примеру, способов класса TCircle).

14. Проверить работу приложения Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы..

Задание 3. Создание и внедрение контейнерных классов.

Постановка задачки:

Требуется сделать класс-контейнер для хранения всех графических примитивов из ранее сделанной библиотеки. Контейнер должен быть реализован в 2-ух вариантах – на базе динамического массива и на базе линейного динамического перечня. Каждый контейнерный класс реализуется в отдельном модуле. Демо программка должна демонстрировать внедрение Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. сделанных контейнеров.

Порядок выполнения работы:

1. Добавить в ранее сделанный проект очередной программный модуль, созданный для реализации контейнерного класса на базе массива либо линейного перечня.

2. В разделе интерфейса этого модуля:

· подключить модуль с графической библиотекой;

· обрисовать или базисный класс контейнера-массива, или два класса – класс частей перечня и класс Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. самого контейнера-списка.

3. В разделе реализации записать код всех способов обрисованных классов. Особенное место посреди способов контейнера занимает метод-итератор, который организует проход по массиву либо списку и с каждым объектом-примитивом делает данное действие. В простом случае итератор можно оформить как способ, принимающий входной параметр-признак выполняемого деяния. Снутри Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. способа при помощи аннотации Case можно избрать требуемое действие и снутри цикла применить его к каждому объекту. Можно предугадать выполнение последующих действий: перемещение примитива на данное смещение, показ/стирание примитива, ликвидирование примитива со стиранием.

4.В разделе реализации головного модуля подключить контейнерный модуль, ввести переменную-указатель на объект-контейнер Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. и переменную-указатель на хоть какой примитив (типа TFigure).

5. Добавить в основное меню команду Контейнер с элементами Сделать, Добавить, Переместить, Убить.

6. Написать обработчик команды Сделать, в каком при помощи конструктора создается пустой контейнер и выводится информационное сообщение.

7. Написать обработчик команды Добавить, в каком сделать случайный примитив со случайными параметрами, добавить Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. его в контейнер и показать способом Show.

8. Написать обработчик команды Переместить, который только вызывает итератор с надлежащими параметрами.

9. Написать обработчик команды Убить, который при помощи итератора уничтожает все объекты-примитивы, потом уничтожает способом Free сам контейнер и выводит об этом сообщение.

10. Сохранить проект и проверить его работу.


7. Рекомендуемая Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. литература

1. Иванова Г.С. Объектно-ориентированное программирование. – М.: МГТУ им. Баумана, 2004.

2. Кьоу Дж., Джеанини М. Объектно-ориентированное программирование. Учебный курс. – СПб.: Питер, 2005.

3. Вайсфельд М. Объектно-ориентированный подход: Java, .NET, C++. – М.:КУДИЦ-ОБРАЗ, 2005

4. Бадд Т. Объектно-ориентированное программирование в действии. – СПб.: Питер, 1997.

5. Буч Г. Объектно-ориентированное проектирование с примерами внедрения Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы.. – М.: Конкорд, 1992.

6. Грэхем И. Объектно-ориентированные способы. Принципы и практика. – М.: Вильямс, 2004.

7. Элиенс А. Принципы объектно-ориентированной разработки программ. – М.: Вильямс, 2002.

8. Бобровский С. Технологии Delphi 2006. – СПб.: Питер, 2006.

9. Пачеко К. Delphi for .NET. Управление разработчика. – М.: Вильямс, 2005

10. Павловская Т.А. С++. Объектно-ориентированное программирование. - СПб.: Питер, 2004.

11. Павловская Т.А., Щупак Ю Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы..А. С++. Объектно-ориентированное программирование: Практикум. – СПб.: Питер, 2004.

12. Топп У., Форд У. Структуры данных в С++. – М.: Двучлен, 2000.

13. Эккель Б. Философия Java. – СПб.: Питер, 2001.

14. Ноутон П., Шилдт Г. Java 2. – СПб.: БХВ-Петербург, 2001.

15. Байдачный С.С. .NET Framework 2.0. Секреты сотворения Windows-приложений. – М.: СОЛОН-Пресс, 2006

16. Темплман Д., Виттер Задание 2. Самостоятельно придумать и описать на разных языках 2-3 класса для объектов разной природы. Д..NET Framework: Библиотека классов. – М.: КУДИЦ-ОБРАЗ, 2003.

17. Палитра Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.: Питер, 2001.

18. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Управление юзера. – М.: ДМК, 2000.


zadanie-2-sozdat-tablicu-izmeneniya-kolichestva-rabochih-dnej-naemnih-rabotnikov-i-proizvesti-raschet-srednih-znachenij-postroit-grafik-po-dannim-tablici.html
zadanie-2-statusnij-portret-chlena-semi.html
zadanie-2-test-makroekonomika.html