Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП(ПОИТ)(Сурков).doc
Скачиваний:
28
Добавлен:
03.05.2019
Размер:
937.98 Кб
Скачать

1. Лабораторные занятия, их характеристика

№ пп

Название темы

Содержание

Объем в часах

Форма проведения

1.

Основы ООП - сложный полиморфизм

Инкапсуляция. Наследование (расширение). Полиморфизм. Понятие Интерфейса и Реализации. [4.1.1], [4.1.2]

4

Вирту-альная

2.

Полиморфизм в иерархии классов.

Иерархия классов. Множественное наследование. Агрегация. Механизмы взаимодействия между объектами. Приемы проектирования: фабрики классов. [4.1.3] - [4.1.8]

4

Виртуальная

2. Контрольные работы, их характеристика

№ пп

Название темы

Содержание

Объем в часах

1.

ООП в Delphi.

Закрепление навыков применения ООП в Delphi. Ошибки и исключительные ситуации. Закрепление навыков использования механизма наследования в Delphi. Использование интерфейсов при применении ООП в Delphi.[4.1.1], [4.1.2]

4

2.

ООП в С++

Закрепление навыков применения ООП в С++. Закрепление навыков использования механизма наследования в С++. Использование интерфейсов при применении ООП в С++. Закрепление навыков работы с библиотекой STL в С++. [4.1.3] - [4.1.8]

4

3. Курсовые работы (проекты), их характеристика

Планом не предусмотрены.

4. Литература

4.1.Основная

      1. Сурков К.А., Сурков Д.А., Вальвачев А.Н. Программирование в среде Delphi 2.0. - Мн.: ООО "Попурри", 1997. - 640 с.

      2. Галисеев Г.В. Компоненты в Delphi 7. Профессиональная работа.: М. ИД «Вильямс», 2004 г. – 624 с.

      3. International Standard ISO/IEC 14882:1998(E), Programming languages — C++.

      4. Сурков К.А., Сурков Д.А., Вальвачев А.Н. Программирование в среде C++Builder. - Мн.: ООО "Попурри", 1998. - 576 с.

      5. Страуструп Б. Язык программирования C++, 3-е изд./Пер. с англ. — СПб.; М.: «Невский Диалект» — «Издательство БИНОМ», 1999 г.

      6. Аммерааль Л. STL для программистов на С++ - М: ДМК, 1999 г. - 240с.

      7. Трельсен Э. МодельСОМ и применение ATL 3.0: Пер. с англ. – СПб.: БХВ-Петербург 2005 г. – 928 с.

      8. Павловская Т.А. С/С++. Программирование на языке высокого уровня – СПб.: Питер, 2002 г. – 464 с.

4.2.Дополнительная

      1. Сурков Д.А., Сурков К.А., Вальвачев А.Н. Программирование в среде Borland Pascal для Windows. -Мн.: Выш. шк., 1996. - 432 с.

      2. Мейерс С. Эффективное использование STL. Библиотека программиста. – СПб.: Питер, 2002 г. – 224 с.

      3. International Standard ISO/IEC 14882:1998(E), Programming languages — C++.

      4. Александреску А., Саттер Г. Стандарты программирования на С++ - ИД «Вильямс», 2005 г. – 224 стр.

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

    1. ОС: Microsoft Windows XP, Microsoft Windows Vista.

    2. Среды разработки на языках программирования: C++, Delphi.

    3. Учебно-методический комплекс по предмету «ООП».

Теоретический раздел

Лекции

Тема 1. Вводная лекция. Парадигмы объектно-ориентированного программирования. Формула объекта. Природа объекта. Вводная лекция. Парадигмы объектно-ориентированного программирования. Формула объекта. Природа объекта.

Понятие объекта

Объекты — это крупнейшее достижение в современной технологии программирования. Они позволили строить программу не из чудовищных по сложности процедур и функций, а из кирпичиков-объектов, заранее наделенных нужными свойствами. Самое приятное в объектах то, что их внутренняя сложность скрыта от программиста, который просто пользуется готовым строительным материалом.

Сейчас преимущества использования объектов очевидны для всех. Однако так было не всегда. Сначала старая гвардия не поняла и не приняла объекты, поэтому они почти 20 лет потихоньку развивались в различных языках, первым из которых была Simula 67. Постепенно объектно-ориентированный подход нашел себе место и в более мощных языках, таких как C++, Delphi и множестве других языков. Блестящим примером реализации объектов была библиотека Turbo Vision, предназначенная для построения пользовательского интерфейса программ в операционной системе MS-DOS.

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

Парадигмы объектно-ориентированного программирования.

Формула объекта

Так вот, в конце 60-х годов кому-то пришло в голову объединить эти понятия, и то, что получилось, назвать объектом. Рассмотрение данных в неразрывной связи с методами их обработки позволило вывести формулу объекта:

Объект = Данные + Операции

На основании этой формулы была разработана методология объектно-ориентированного программирования (ООП).

Природа объекта

Об объектах можно думать как о полезных существах, которые "живут" в вашей программе и коллективно решают некоторую прикладную задачу. Вы, как Демиург, лепите этих существ, распределяете между ними обязанности и устанавливаете правила их взаимодействия.

В общем случае каждый объект "помнит" необходимую информацию, "умеет" выполнять некоторый набор действий и характеризуется набором свойств. То, что объект "помнит", хранится в его полях. То, что объект "умеет делать", реализуется в виде его внутренних процедур и функций, называемых методами. Свойства объектов аналогичны свойствам, которые мы наблюдаем у обычных предметов. Значения свойств можно устанавливать и читать. Программно свойства реализуются через поля и методы.

Например, объект "кнопка" имеет свойство "цвет". Значение цвета кнопка запоминает в одном из своих полей. При изменении значения свойства "цвет" вызывается метод, который перерисовывает кнопку.

Кстати, этот пример позволяет сделать важный вывод: свойства имеют первостепенное значение для программиста, использующего объект. Чтобы понять суть и назначение объекта вы обязательно должны знать его свойства, иногда — методы, очень редко — поля (объект и сам знает, что с ними делать).

Объекты и компоненты

Когда прикладные программы были консольно-ориентированными, а пользовательский интерфейс был простым, объекты казались пределом развития программирования, поскольку были идеальным средством разбиения сложных задач на простые подзадачи. Однако с появлением графических систем программирование пользовательского интерфейса резко усложнилось. Программист в какой-то мере стал дизайнером, а визуальная компоновка и увязка элементов пользовательского интерфейса (кнопок, меток, строк редактора) начали отнимать основную часть времени. И тогда программистам пришла в голову идея визуализировать объекты, объединив программную часть объекта с его видимым представлением на экране дисплея в одно целое. То, что получилось в результате, было названо компонентом.

Компоненты в среде Delphi — это особые объекты, которые являются строительными кирпичиками визуальной среды разработки и приспособлены к визуальной установке свойств. Чтобы превратить объект в компонент, первый разрабатывается по определенным правилам, а затем помещается в палитру компонентов. Конструируя приложение, вы берете компоненты из Палитры Компонентов, располагаете на форме и устанавливаете их свойства в окне Инспектора Объектов. Внешне все выглядит просто, но чтобы достичь такой простоты, потребовалось создать механизмы, обеспечивающие функционирование объектов-компонентов уже на этапе проектирования приложения! Все это было придумано и блестяще реализовано в среде Delphi. Таким образом, компонентный подход значительно упростил создание приложений с графическим пользовательским интерфейсом и дал толчок развитию новой индустрии компонентов.

Классы объектов

Каждый объект всегда принадлежит некоторому классу объектов. Класс объектов — это обобщенное (абстрактное) описание множества однотипных объектов. Объекты являются конкретными представителями своего класса, их принято называть экземплярами класса. Например, класс СОБАКИ — понятие абстрактное, а экземпляр этого класса МОЙ ПЕС БОБИК — понятие конкретное.

Три кита ООП

Весь мир ООП держится на трех китах: инкапсуляции, наследовании и полиморфизме. Для начала о них надо иметь только самое общее представление.

Объединение данных и операций в одну сущность — объект — тесно связано с понятием инкапсуляции, которое означает сокрытие внутреннего устройства. Инкапсуляция делает объекты похожими на маленькие программные модули, в которых скрыты внутренние данные и у которых имеется интерфейс использования в виде подпрограмм. Переход от понятий «структура данных» и «алгоритм» к понятию «объект» значительно повысил ясность и надежность программ.

Второй кит ООП — наследование. Этот простой принцип означает, что если вы хотите создать новый класс объектов, который расширяет возможности уже существующего класса, то нет необходимости в переписывании заново всех полей, методов и свойств. Вы объявляете, что новый класс является потомком (или дочерним классом) имеющегося класса объектов, называемого предком (или родительским классом), и добавляете к нему новые поля, методы и свойства. Процесс порождения новых классов на основе других классов называется наследованием. Новые классы объектов имеют как унаследованные признаки, так и, возможно, новые. Например, класс СОБАКИ унаследовал многие свойства своих предков — ВОЛКОВ.

Третий кит — это полиморфизм. Он означает, что в производных классах вы можете изменять работу уже существующих в базовом классе методов. При этом весь программный код, управляющий объектами родительского класса, пригоден для управления объектами дочернего класса без всякой модификации. Например, вы можете породить новый класс кнопок с рельефной надписью, переопределив метод рисования кнопки. Новую кнопку можно "подсунуть" вместо стандартной в какую-нибудь подпрограмму, вызывающую рисование кнопки. При этом подпрограмма "думает", что работает со стандартной кнопкой, но на самом деле кнопка принадлежит производному классу кнопок и отображается в новом стиле. Пока достаточно самого поверхностного понимания всех приведенных выше понятий, ниже мы рассмотрим их подробнее и покажем, как они реализованы в среде Delphi.