Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Билет 5Задание 1 Семакин – стр. 39, задачник 1 – стр. 27 Задание 3 Пак – стр. 426 Вопросы: 1. В чем суть объектно-ориентированной парадигмы программирования? 2. Что такое объект, класс, инкапсуляция, наследование и полиморфизм? 1.Парадигма – это некоторый набор идей и рекомендаций, определяющих стиль написания программ. Как уже отмечалось выше (п. 4.1), в настоящее время растет популярность методологий, ориентированных на данные. В первую очередь, это объектно-ориентированное программирование. Объектно-ориентированная методология проектирования программ основана на концепциях упрятывания информации и абстрактных типов данных. Такой подход рассматривает все такие ресурсы как данные, модули и системы в качестве объектов. Каждый объект содержит некоторую структуру данных (или тип данных), обрамленную набором процедур (методов), предназначенных для манипулирования этими данными. Используя эту методологию, программист может создать свои собственный абстрактный тип и отобразить проблемную область в эти созданные им абстракции вместо традиционного отображения проблемной области в предопределенные управляющие структуры и структуры данных языка программирования. Подобный подход является более естественным, чем методологии, ориентированные на обработку (на процесс), из-за возможности использовать в процессе программирования разнообразные виды абстракции типов данных. На этом пути программист может сконцентрироваться на проекте системы, не беспокоясь с деталях информационных объектов, используемых в системе. Основные шаги разработки программы, предусмотренные данной методологией • определить проблему; • развить неформальную стратегию, представляющую общую последовательность шагов, удовлетворяющую требованиям к будущей программе; • формализовать стратегию • идентифицировать объекты и их атрибуты; • идентифицировать операции; • установить интерфейсы; • реализовать операции. Большинство современных языков и систем программирования развивается в направлении все большего использования объектной методологии в создании программ. Характерными примерами являются универсальные языки Паскаль, СИ и даже Бейсик, в современных версиях которых появились средства объектно-ориентированного программирования. Так, начиная с версии 5.5, Турбо-Паскаль охватывает метод проектирования программ на основе объектно-ориентированного программирования. 2. Объект в Турбо-Паскале - это структура данных, содержащая поля данных различных типов и заголовки методов и обобщающая структуру «Запись» (record). Методы – это процедуры и/или функции, объявленные или действующие внутри объекта. Синтаксис описания объекта: <ИмяПотомка>= оЬ j ес^<ИмяПредка> поле; поле; метод; метод; end; Инкапсуляция. Основой решения задачи является задание положения (позиции отдельной точки на экране), описываемого координатами X и Y. Для задания координат подходит тип «запись»: Pozition = record X, У: integer; end; Далее может быть необходимо задать значения координат (такая процедура носит название инициализации). Создадим соответствующую процедуру: procedure Init(CoordX, CoordY: integer); begin X: = CoordX; Y: = CoordY; end; Затем потребуется знание фактических значений координат. Для этого вводим две функции: function GetX: integer; begin GetX: = X; end; function GetY: integer; begin GetY: - Y; end; Наследование. Рассмотрим точку с координатами X и Y. Ее можно сделать видимой или невидимой, ей можно задать цвет, ее можно переместить. Создадим объект с такими возможностями: Point=object X,Y: integer; procedure Init(CoordX, CoordY: integer); function GetX: integer; function GetY: integer; Visible: Boolean; Color: Word; procedure Init(CoordX, CoordY: integer; InitColor: Word); function Is Visible: Boolean; procedure Show;{показывает точку} procedure Blind;{стирает точку} procedure Jump(NextX, NextY: integer);{перемещает точку} end; Заметим, однако, что поля X,Y и методы GetX, GetY практически совпадают с соответствующими полями и методами объекта Pozition. Турбо-Паскаль предоставляет возможность учесть эту ситуацию. Следует считать тип объекта Point порожденным типом Pozition, записав это следующим образом: Point=object(Pozition) Visible: Boolean; Color: Word; procedure Init(CoordX, CoordY: integer; InitColor: Word); function Is Visible: Boolean; procedure Show; procedure Blind; procedure Jump(NextX, NextY: integer); end; Объект Point теперь наследует свойства объекта Pozition. Поля X,Y явно не заданы в Point, но Point ими обладает благодаря наследованию, т.е. можно написать Point.X:=17; Смысл объектно-ориентированного программирования заключается в работе с полями объекта через его методы. Полиморфизм. Предположим, надо создать объект «кружок». Очевидно, что новый объект должен иметь предком объект Point, обладая всеми его свойствами, кроме того, быть больше по размеру. Однако, ясно, что «высветить» точку и закрашенную окружность не удастся одними и теми же командами. Турбо-Паскаль разрешает сохранить потомку имя родительского метода, «перекрывая» его. Чтобы перекрыть родительский метод, надо просто задать его с тем же именем, но с другим телом (кодом) и, если необходимо, с другим набором параметров. Такой метод делается виртуальным и к его объявлению добавляется слово virtual. Применение виртуальных методов налагает ограничения на процедуры инициализации, которые должны записываться с зарезервированным словом constructor и иметь общее имя Init. Каждый отдельный экземпляр объекта должен инициализироваться с помощью отдельного вызова конструктора. Для очистки и удаления динамически распределенных объектов существует специальная процедура destructorDone. Деструктор комбинирует шаг освобождения памяти в «куче» с некоторыми другими задачами. Метод деструктора может быть пустым, поскольку работу выполняет не только код тела, но и код, генерируемый Турбо-Паскалем в ответ на зарезервированное слово destructor.
|