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

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. Анализ

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

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

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

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

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

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

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

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

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

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

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

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