Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie__prezent_Babalovoy_4_06.doc
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
544.77 Кб
Скачать

4.1.Стили программирования. Принципы разработки больших программ. Жизненный цикл больших программ. Примеры использ-я в соврем. Языках прогр-ия принципов разработки программ.

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

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».

Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.

Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.

Процедурные языки характеризуются следующими особенностями:

  • необходимостью явного управления памятью, в частности, описанием переменных;

  • малой пригодностью для символьных вычислений;

  • отсутствием строгой математической основы;

  • высокой эффективностью реализации на традиционных ЭВМ.

Уровень процедурного языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Язык программирования частично ликвидирует разрыв между методами решения различного рода задач человеком и вычислительной машиной. Чем более язык ориентирован на человека, тем выше его уровень.

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

Структурное проектирование позволяет создавать программу из отдельных хорошо структурированных компонент – подпрограмм (ПП). ПП - часть программы, которая имеет свое уникальное имя и может быть выполнена многократно с разными значениями параметров. С помощью ПП удается структурировать текст программы. Каждая ПП позволяет

реализовать некоторый набор действий или получить конкретный числовой результат.

Типы ПП и их описание в ОП

Функция – структурная единица программы, которая в основную программу возвращает некоторое значение.

function <имя>(<Совокупность формальных пар-ов>) : <тип рез-та>

Процедура – структурная единица программы, которая может возвращать в программу любое количество результатов.

Procedure <имя> ( < Cовокупность формальных параметров> );

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

П

<Заголовок функции или процедуры>;

begin

< тело функции или процедуры >;

end;

араметр
– это переменная, значение которой должно быть определено при вызове ПП.

Функциональный стиль программирования, когда программа представляет собой функционал высокого уровня, преобразующий функции, представлен языками ЛИСП и ML. Если функции типизированы, то этот подход исключительно компактно выражает сложную структуру, вдобавок крайне эффективен по использованию ресурсов, если же нет – то данный подход крайне не эффективен.

В логическом (реляционном) стиле (язык Пролог) программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Логические программы, как правило, имеют небольшое быстродействие, так как вычисления осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.

Объектно-ориентированное программирование – см. вопрос 2.

М одель жизненного цикла определена как структура, состоящая из процессов, работ и задач, включающих в себя разработку, эксплуатацию и сопровождение программного продукта, охватывающая жизнь системы от установления требований к ней до прекращения ее использования, т.е. можно указать следующие этапы:

  1. Формулирование требований (что нужно разработать);

  2. Проектирование (как это сделать);

  3. Разработка (реализация) программного продукта в соответствии с проектом;

  4. Тестирование (проверка соответствия программы исходным требованиям). Если не соответствует, переход к п.2;

  5. Эксплуатация и сопровождение

5.1. Анализ необходимости модификации в соответствии с потребностями заказчика;

5.2. Анализ необходимости снятия с эксплуатации;

5.3. Снятие программы с эксплуатации.

4.2.Объектно-ориентированное программирование. Определение класса. Понятие объекта. Поля классов: данные, свойства, методы. Виртуальные и динамические методы классов. Примеры описания и использования классов.

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

Процесс представления предметной области задачи в виде объектов, обменивающихся сообщениями, называется объектной декомпозицией.

Класс

Поля, методы,

свойства

Объект –

Переменная (имя переменной)

Объект предметной

области (Описание поведения через типы данных и состояние)

Правила использования объекта: Создать, Инициализировать, Уничтожить

ООП характеризуется четырьмя основными свойствами, благодаря которым разработчики классов получили возможность защитить элементы класса от случайных изменений полей классов, не связанных с их предназначением:

1. Инкапсуляция. Свойство языка программирования, позволяющее объединить и защитить данные и код в объекте и скрыть реализацию объекта от пользователя (программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта. (Механизм разграничения доступа к полям данных и методам их обработки).

Type Heir_Class = class (My_Class)

<Поля данных наследника>;

<Методы наследника> ;

<свойства данных наследника>

end;

2. Наследование. Механизм, позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом и дополняются своими. Другими словами, класс-наследник реализует спецификацию уже существующего класса. Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.

3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. Возможность переопределения методов класса-наследника без изменения имени метода.

4. Абстракция. Это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.

Определение класса, объекта

Класс – это структура (абстрактный тип данных), компонентами которой являются хранимые данные, их свойства и методы для их обработки.

Событие класса – внешнее событие, на которое реагирует данный класс

Объект – это экземпляр класса, его конкретная реализация.

Объект или экземпляр класса – это переменная, обеспечивающая доступ к полям и методам класса в конкретной среде применения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]