- •Эволюция языков программирования
- •Объектная декомпозиция.
- •Классы и объекты
- •Конструкторы и деструкторы.
- •Основные средства разработки классов
- •Описание класса в с#
- •Деструкторы
- •3.Методы-свойства
- •Наследование в c#
- •Интерфейсы, структуры, делегаты, события. Интерфейс.
- •Операции is и as
- •Стандартные интерфейсы .Net
- •Делегаты
Литература ООП: Иванова Г.С, Ничушкина Т.Н объектно-ориентированное программирование 2е или 3е издание
Буч Г. Объектно-ориентированный анализ и прог-ие с примерами приложений на С++ 2е издание
Эволюция языков программирования
Языки высокого уровня
Машинный язык (ассемблеры)
В начале подпрограммы все использовали локальные данные, все подпрограммы использовали одни глобальные данные.
Локальные данные в подпрограммах
Основная программа глобальные данные (программа 1дальше)
(программа 2дальше)
(программа 3дальше)
Структурное программирование
70е гг – Дейкстира Э, Вирт.Н, Хоар Ч.
1970г – язык Паскаль (Н.Вирт)
Основные концепции:
Нисходящая разработка – структурная декомпозиция.
Использование только 3х базовых конструкций – следование, ветвление, цикл.
Широкое использование подпрограмм
Компилируемая программа на каждом этапе.
Структурная декомпозиция: разделение сложной задачи на подзадачи, каждая задача также делится на подзадачи и тд.
Модульное программирование (1975г)
Преимущества модульного подхода:
Ведение разработки несколькими программистами
Повторное использование модулей
Совместное использование структурного и модульного подхода позволяет разрабатывать программы.
Потребность в методологии разработки сложных систем привела к появлению объектно-ориентированного программирования.
Simula-67 – первый в мире язык ООП
70ее гг – Smaiitalk
80-ее гг – С++, Objiect PPascal, Ada Eiffer
90-ее гг и начало века – Java, Dilphy
Объектно-оринетированное програмирование – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Класс – тип данных, который включает описание полей данных, а также процедур, работающих с этими полями данных.
Объект – экхемпляр класса (переменная)
Сообщение – запрос на выполнение действия (вызов функции).
Объектно-ориентированное проектирование – методология проектирования, соединающая в себе процесс объектной декомпозиции и приемц представления логической и физической, а также статистической и динамической моделей проектируемой системы.
Объектно-ориентированный анализ – методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявление в предметной области.
Принципы ООП:
абстрагирование
инкапсуляция
модульность
иерархичность
типизация
параллелизм
сохраняемость.
Абстрагирование
выделение абстракций в предметной области задач
абстракция выделяет существенные для данной задачи характеристики некоторого объекта.
ООП предполагает объединение всех свойств абстракции в единую программную единицу – класс.
Инкапсуляция – сокрытие деталей реализации абстракции.
Инкапсуляция позволяет легко модифицировать реализацию отдельных абстракций (классов).
Инкапсуляция приводит к наличию 2х частей описания абстракции (класса)
Интерфейс – доступные из вне элементы абстракции (состояние и поведение)
Реализация – недоступные извне элементы абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).
Модульность – реализация программы в виде отдельных слабо связанных между собой частей (модулей)
Модули выполняют роль физических контейнеров, в которых помещаются определения классов и объектов.
Инкапсуляция сокрытые деталей реализации абстракции.
Она позволяет легко модифицировать реализацию отдельных абстракций (классов)
Иерархичность
Предполагает использование иерархий при разработке программных систем
Виды иерархий: общее-частное(мебель-общее, столы-частное), целое-часть(стол-общее, столешница-часть).
Наследование
Типизация
Тип – точная характеристика свойств, включая структуру и поведение, относящееся к некоторой совокупности объектов.
Тип и класс – одно и то же.
Ограничения, накладываемые на объект и препятствующие взаимозаменяемости объектов различных типов или уменьшающие возможность такой замены.
Типизация в языках программирования бывает сильной и слабой.
При сильной типизации с объектом можно сделать только то, что предписано его типом
При слабой типизации контроль типов отдается программисту
В С++ средняя степень типизации.
Тип может связыываться с объектом во время компиляции или во время выполнения программы
С++,Pascal? C# - динамическое связывание
Динамическое связывание позволяет реализовать полиморфизм – одно и то же имя может означать объекты разных типов, но имея общего предка, все они имеют и общее подмножество операций, которые можно над ним выполнить.
Параллелизм – свойство нескольких абстракций одновременно находится в активном состоянии, т.е выполняет некоторые операции.
Объектная модель хороша для параллельных систем, тк разделяет программу на распределенные единицы и сообщающиеся объекты.
Реаьлный параллелизм достигается только на многопроцессорных машинах
На однопроцессонных компьютерах параллелизм имитируется за счет разделения времени между процессами.
Сохраняемость – способность объекта существовать во времени, переживая породивший его процесс, и/или в пространстве, перемещаясь из своего персонального адресного пространства.
Этапы разработки программ с применением ОО-подхода:
Анализ
Цель этапа – максимально полное описание задачи. Этап включает: объектную декомпозицию, описание абстракций. Результат этапа диаграмма объектов.
Проектирование
Цель – формализованное описание задачи, готовое для реализации. Этап включает: логическое и физическое проектирование. Результат этапа – диаграмма классов.
Реализация
Цель – получение программной системы, выполняющей заданные функции. Результат: программная система
Модификация
Преимущества ОО:
Полное использование ОО-языков
Унификация разработки и пригодности программ для повторного использования
Простота внесения изменений
Уменьшение риска разработки сложных систем
Ориентировано на человеческое восприятие мира.