Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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.


Date: 2015-09-24; view: 340; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию