Технологией программирования называют совокупность методов и средств, используемых в процессе разработки ПО. Тех.прог. представляет собой набор технологических инструкций, включающих:
Указание последовательности выполнения тех.операций;
Перечисление условий, при которых выполняется та или иная операция;
Описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.
Методологий:
Период "стихийного" программирования (60 гг. ХХ в.).
Отсутствовало понятие структуры программы, типов данных и т.д. Следствие запутанный и противоречивый код. Программирование считалось искусством. Конец 60-х — кризис в программирование.
В основе структурного подхода (70гг. XXв.: Дейкстра, Вирт, Кнут) лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм (процедурная декомпозиция).
Теорема Бома-Якопини (1966):
Любую схему алгор. можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и логических переменных (флагов).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Повторяющиеся фрагменты программы и представляющие логически целостные вычислительные блоки могут оформляться в виде подпрограмм (процедур или функций).
Принципы восходящего и нисходящего программирования
Восходящее программирование- крупные блоки собираются из ранее созданных мелких блоков. Начинается с разработки ключевых процедур и подпрограмм, которые затем постоянно модифицируются.
Нисходящее программирование- сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что общая структура программы верна, подпрограммы-заглушки последовательно заменяются на реально работающие. Все подпрограммы разрабатываются тем же методом, что и основная программы. Главная проблема структурного проектирования и программирования- нет возможности объединить данные и методы их обработки.
Модульное программирование Выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм). Пример. Модуль графических ресурсов. Связи между модулями осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.
ООП (ООП, Simula–1967г, Кей, Страуструп, Буч)- технология создания ПО , основанная на представлении прог. в виде совокупности автономно действующих лиц (объектов). Лицо - экземпляром определенного класса (типа). Классы образуют иерархию с наследованием свойств. Взаимодействие осуществляется путем передачи сообщ. между объектами.
Основное достоинством ООП- «более естественная» объектная декомпозиция ПО, существенно облегчает его разработку. Новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Это позволяет конструировать сложные объекты из сравнительно простых.
Записи.
Историческим предшественником объектного типа даннных в языке Паскаль явился тип данных запись (структура).
Type
<имя>=record <поля записи>;
end;
Обращение к полям записи организуется следующим образом: <переменная>.<поле> Для упрощения доступ к полям записи, используется оператор присоединения With: With <переменная> DO <оператор>;
Принципы ООП (Алан Кей):
Всё является объектом.
Вычисления осуществляются путём взаимодействия (обмена данными) между объектами. 1 объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщ. Сообщ- запрос на выполнение действия, с дополненным набором аргументов, которые могут понадобиться при выполнении действия. Контрактная(или клиент-серверной) модель взаимодействия.
Каждый объект: имеет независимую память, которая состоит из других объектов; является представителем класса, который выражает общие свойства объектов.
В классе задаётся поведение (функциональность) объекта. Все объекты, являющиеся экземплярами одного класса, могут выполнять одни и те же действия.
Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Таким образом, программа представляет собой набор объектов, имеющих состояние, поведение и идентичность.
Концепция объектной модели
Для объектно-ориентированного стиля концептуальная база - это объектная модель. 4 главных элемента: абстрагирование; инкапсуляция; модульность; иерархия.
Это главные элементы, без любого из них модель не будет объектно-ориентированной. 3 дополнительных элемента: типизация; параллелизм; сохраняемость.
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и четко определяет его концептуальные границы с точки зрения наблюдателя.
Абстракция сущности - полезную модель некой сущности в предметной области
Абстракция поведения - объект состоит из обобщенного множества операций
Абстракция виртуальной машины - объект группирует операции, которые либо вместе используются более высоким уровнем управления, либо сами используют некоторый набор операций более низкого уровня
Произвольная абстракция - объект включает в себя набор операций, не имеющих друг с другом ничего общего
Инкапсуляция Добавление к полям записи методов их обработки. В одной структуре объединяются данные и функции работы с ними. Идея инкапсуляции делает объект максимально независимым от других частей программы. Преимущество ООП - разработка больших программных продуктов. Часть сложной системы не должна зависеть от внутреннего устройства другой части. Инкапсуляция - процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.
Модульность - свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули. Например полезно «выносить» отдельные блоки программы в отдельные файлы (модули), имея возможность интегрировать их в любую сложную программу впоследствии.
28.