Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Лекция!2.doc
Скачиваний:
7
Добавлен:
26.09.2019
Размер:
256 Кб
Скачать

Литература ООП: Иванова Г.С, Ничушкина Т.Н объектно-ориентированное программирование 2е или 3е издание

Буч Г. Объектно-ориентированный анализ и прог-ие с примерами приложений на С++ 2е издание

Эволюция языков программирования

  1. Языки высокого уровня

  • Машинный язык (ассемблеры)

В начале подпрограммы все использовали локальные данные, все подпрограммы использовали одни глобальные данные.

  • Локальные данные в подпрограммах

Основная программа  глобальные данные (программа 1дальше)

(программа 2дальше)

(программа 3дальше)

  • Структурное программирование

70е гг – Дейкстира Э, Вирт.Н, Хоар Ч.

1970г – язык Паскаль (Н.Вирт)

  • Основные концепции:

  1. Нисходящая разработка – структурная декомпозиция.

  2. Использование только 3х базовых конструкций – следование, ветвление, цикл.

  3. Широкое использование подпрограмм

  4. Компилируемая программа на каждом этапе.

  • Структурная декомпозиция: разделение сложной задачи на подзадачи, каждая задача также делится на подзадачи и тд.

  • Модульное программирование (1975г)

  • Преимущества модульного подхода:

Ведение разработки несколькими программистами

Повторное использование модулей

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

  • Потребность в методологии разработки сложных систем привела к появлению объектно-ориентированного программирования.

  • Simula-67 – первый в мире язык ООП

  • 70ее гг – Smaiitalk

  • 80-ее гг – С++, Objiect PPascal, Ada Eiffer

  • 90-ее гг и начало века – Java, Dilphy

  • Объектно-оринетированное програмирование – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

  • Класс – тип данных, который включает описание полей данных, а также процедур, работающих с этими полями данных.

  • Объект – экхемпляр класса (переменная)

  • Сообщение – запрос на выполнение действия (вызов функции).

  • Объектно-ориентированное проектирование – методология проектирования, соединающая в себе процесс объектной декомпозиции и приемц представления логической и физической, а также статистической и динамической моделей проектируемой системы.

  • Объектно-ориентированный анализ – методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявление в предметной области.

Принципы ООП:

  1. абстрагирование

  2. инкапсуляция

  3. модульность

  4. иерархичность

  5. типизация

  6. параллелизм

  7. сохраняемость.

Абстрагирование

  • выделение абстракций в предметной области задач

  • абстракция выделяет существенные для данной задачи характеристики некоторого объекта.

  • ООП предполагает объединение всех свойств абстракции в единую программную единицу – класс.

  • Инкапсуляция – сокрытие деталей реализации абстракции.

  • Инкапсуляция позволяет легко модифицировать реализацию отдельных абстракций (классов).

  • Инкапсуляция приводит к наличию 2х частей описания абстракции (класса)

  • Интерфейс – доступные из вне элементы абстракции (состояние и поведение)

  • Реализация – недоступные извне элементы абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

  • Модульность – реализация программы в виде отдельных слабо связанных между собой частей (модулей)

  • Модули выполняют роль физических контейнеров, в которых помещаются определения классов и объектов.

  • Инкапсуляция сокрытые деталей реализации абстракции.

  • Она позволяет легко модифицировать реализацию отдельных абстракций (классов)

  • Иерархичность

  • Предполагает использование иерархий при разработке программных систем

  • Виды иерархий: общее-частное(мебель-общее, столы-частное), целое-часть(стол-общее, столешница-часть).

  • Наследование

  • Типизация

  • Тип – точная характеристика свойств, включая структуру и поведение, относящееся к некоторой совокупности объектов.

  • Тип и класс – одно и то же.

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

  • Типизация в языках программирования бывает сильной и слабой.

  • При сильной типизации с объектом можно сделать только то, что предписано его типом

  • При слабой типизации контроль типов отдается программисту

  • В С++ средняя степень типизации.

  • Тип может связыываться с объектом во время компиляции или во время выполнения программы

  • С++,Pascal? C# - динамическое связывание

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

  • Параллелизм – свойство нескольких абстракций одновременно находится в активном состоянии, т.е выполняет некоторые операции.

  • Объектная модель хороша для параллельных систем, тк разделяет программу на распределенные единицы и сообщающиеся объекты.

  • Реаьлный параллелизм достигается только на многопроцессорных машинах

  • На однопроцессонных компьютерах параллелизм имитируется за счет разделения времени между процессами.

  • Сохраняемость – способность объекта существовать во времени, переживая породивший его процесс, и/или в пространстве, перемещаясь из своего персонального адресного пространства.

Этапы разработки программ с применением ОО-подхода:

  1. Анализ

Цель этапа – максимально полное описание задачи. Этап включает: объектную декомпозицию, описание абстракций. Результат этапа диаграмма объектов.

  1. Проектирование

Цель – формализованное описание задачи, готовое для реализации. Этап включает: логическое и физическое проектирование. Результат этапа – диаграмма классов.

  1. Реализация

Цель – получение программной системы, выполняющей заданные функции. Результат: программная система

  1. Модификация

Преимущества ОО:

  • Полное использование ОО-языков

  • Унификация разработки и пригодности программ для повторного использования

  • Простота внесения изменений

  • Уменьшение риска разработки сложных систем

  • Ориентировано на человеческое восприятие мира.