- •4.1.Стили программирования. Принципы разработки больших программ. Жизненный цикл больших программ. Примеры использ-я в соврем. Языках прогр-ия принципов разработки программ.
- •Interface
- •Implementation
- •Var m_cl_1 : My_class; - Это бъект
- •4.3.Объекты и классы. Разработка классов и объектов пользователей. Состав классов: поля, методы, свойства. Перегружаемые и перекрываемые методы классов. Примеры описания и использования.
- •Int k; free(item)
- •4.5.Объекты и классы. Структура класса: поля, методы, свойства. Разработка классов пользователей с динамическими структурами данных типа объект-таблица. Пример описания класса.
- •4.6.Структура данных типа списков. Варианты организации списков. Операции над списками. Примеры программирования операций над списками разных типов.
- •4.7.Структуры данных типа таблица. Способы организации таблиц. Основные операции над табличными структурами. Организация поиска в таблицах. Примеры операций поиска в таблицах.
- •11010 Результат 01001
- •4.8.Решение задачи сортировки в массивах разных структур. Сравнение алгоритмов сортировки: методом вставки, включения, шейкер сортировки и быстрой сортировки. Примеры использования.
- •4.10.Структуры данных типа дерева. Основные операции над бинарными деревьями. Решение задачи сортировки с помощью дерева. Примеры программирования операций над деревьями.
4.1.Стили программирования. Принципы разработки больших программ. Жизненный цикл больших программ. Примеры использ-я в соврем. Языках прогр-ия принципов разработки программ.
Одним из важнейших признаков классификации языков программирования является принадлежность их к одному из стилей, основными из которых являются следующие: процедурный, функциональный, логический и объектно-ориентированный.
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Процедурные языки характеризуются следующими особенностями:
необходимостью явного управления памятью, в частности, описанием переменных;
малой пригодностью для символьных вычислений;
отсутствием строгой математической основы;
высокой эффективностью реализации на традиционных ЭВМ.
Уровень процедурного языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Язык программирования частично ликвидирует разрыв между методами решения различного рода задач человеком и вычислительной машиной. Чем более язык ориентирован на человека, тем выше его уровень.
Использование процедурного стиля неудобно при разработке больших программ. Выходом из ситуации является структурный подход - декомпозиция (разбиения) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее.
Структурное проектирование позволяет создавать программу из отдельных хорошо структурированных компонент – подпрограмм (ПП). ПП - часть программы, которая имеет свое уникальное имя и может быть выполнена многократно с разными значениями параметров. С помощью ПП удается структурировать текст программы. Каждая ПП позволяет
реализовать некоторый набор действий или получить конкретный числовой результат.
Типы ПП и их описание в ОП
Функция – структурная единица программы, которая в основную программу возвращает некоторое значение.
function <имя>(<Совокупность формальных пар-ов>) : <тип рез-та>
Процедура – структурная единица программы, которая может возвращать в программу любое количество результатов.
Procedure <имя> ( < Cовокупность формальных параметров> );
Текст ПП располагается в разделе реализации в основной программе
П
<Заголовок
функции или процедуры>; begin <
тело функции или процедуры >; end;
Функциональный стиль программирования, когда программа представляет собой функционал высокого уровня, преобразующий функции, представлен языками ЛИСП и ML. Если функции типизированы, то этот подход исключительно компактно выражает сложную структуру, вдобавок крайне эффективен по использованию ресурсов, если же нет – то данный подход крайне не эффективен.
В логическом (реляционном) стиле (язык Пролог) программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Логические программы, как правило, имеют небольшое быстродействие, так как вычисления осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.
Объектно-ориентированное программирование – см. вопрос 2.
М одель жизненного цикла определена как структура, состоящая из процессов, работ и задач, включающих в себя разработку, эксплуатацию и сопровождение программного продукта, охватывающая жизнь системы от установления требований к ней до прекращения ее использования, т.е. можно указать следующие этапы:
Формулирование требований (что нужно разработать);
Проектирование (как это сделать);
Разработка (реализация) программного продукта в соответствии с проектом;
Тестирование (проверка соответствия программы исходным требованиям). Если не соответствует, переход к п.2;
Эксплуатация и сопровождение
5.1. Анализ необходимости модификации в соответствии с потребностями заказчика;
5.2. Анализ необходимости снятия с эксплуатации;
5.3. Снятие программы с эксплуатации.
4.2.Объектно-ориентированное программирование. Определение класса. Понятие объекта. Поля классов: данные, свойства, методы. Виртуальные и динамические методы классов. Примеры описания и использования классов.
ООП. В теории программирования ООП определяется как технология, основанная на представлении программы в форме совокупности объектов, каждый из которых является экземпляром определенного класса. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования.
Процесс представления предметной области задачи в виде объектов, обменивающихся сообщениями, называется объектной декомпозицией.
Класс Поля,
методы, свойства
Объект
– Переменная
(имя
переменной)
Объект
предметной области
(Описание
поведения через типы данных и состояние)
Правила использования объекта: Создать, Инициализировать, Уничтожить
ООП характеризуется четырьмя основными свойствами, благодаря которым разработчики классов получили возможность защитить элементы класса от случайных изменений полей классов, не связанных с их предназначением:
1. Инкапсуляция. Свойство языка программирования, позволяющее объединить и защитить данные и код в объекте и скрыть реализацию объекта от пользователя (программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта. (Механизм разграничения доступа к полям данных и методам их обработки).
Type Heir_Class = class
(My_Class) <Поля
данных наследника>;
<Методы наследника>
;
<свойства
данных наследника> end;
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. Возможность переопределения методов класса-наследника без изменения имени метода.
4. Абстракция. Это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.
Определение класса, объекта
Класс – это структура (абстрактный тип данных), компонентами которой являются хранимые данные, их свойства и методы для их обработки.
Событие класса – внешнее событие, на которое реагирует данный класс
Объект – это экземпляр класса, его конкретная реализация.
Объект или экземпляр класса – это переменная, обеспечивающая доступ к полям и методам класса в конкретной среде применения.