Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Объектно-ориентированный подход
По сути это восходящий подход к разработке программ (см. выше). Ранее уже говорилось, что в рамках процедурного подхода алгоритм имеет дело не с объектами предметной области а с их моделями - данными. При этом данные хранят информацию о конкретных физических параметров объектов, а информация о поведении объектов в окружающем мире, взаимодействие их друг с другом переносится в подпрограммы. В результате целостное представление об объектах предметной области теряется. В чистом ООП программа уже рассматривается не как реализация алгоритма, ООП основывается на подходе к разработке программ как набора взаимодействующих объектов, передающих друг другу сообщения. При ОО разработке на основании анализа задачи определяется какие объекты предметной области характерны для решаемой задачи и в каких отношениях (использование, обобщение, целое-часть)они находятся. После этого определяются (разрабатываются) программные классы (как обобщенные типы), которые представляют в программе модели объектов предметной области. Объекты в программы - это экземпляры классов (класс как обобщение типа данных). В классах (и объектах классов) связываются в единое целое физические свойства и поведения объектов предметной области , т.е. объекты интегрируют (объединяют) в себе структуры данных и операции (подпрограммы), необходимые для выработки решения. Данное явление называется инкапсуляция. Постановка задачи
объекты взаимодействие предметной объектов области
Схема программы Процедурный подход О-О подход
программные объекты (объединяют данные данные и действия и действия) не связаны (оторваны друг от друга)
Другим свойством ООП является наследование - производные классы (потомки) могут наследовать свойства и поведение классов-родителей. Третьим свойством ООП является полиморфизм (многообразие) - при обозначении общего для всей иерархии действия одним именем (функций) каждый класс в этой иерархии реализует это действие своим собственным пригодным для него способом. Например, в иерархии животных из базового типа " животные" могут быть порождены типы: " сухопутные" (имеют ноги), " водные" (имеют плавники) и " птицы " (имеют крылья). Все типы в этой иерархии могут выполнять базовую операцию " передвижение", но каждый из производных типов выполняет это действие своим способом: 1) сухопутные бегают; 2) рыбы плавают; 3) птицы летают;
6.4 Функциональный подход. В этом подходе базовом является понятие функции, а основным способом объединения простых конструкций сложной программы, т.е. основным методом программирования является суперпозиция функций. Так, если надо вычислить Длина: = то записывают (вместо присваивания) функцию вида: Длина (X, Y) = sqrt(X*X+Y*Y) Эту функцию при функциональном подходе (ФП) можно представить в виде суперпозиции более простых функций (сложить, квадрат и корень): корень(х, у)=sqrt(x, y) сложить(x, y)=x+y квадрат (X)=умножить(X, X) В итоге получается: Длина = корень (сложить (умножить(X, X), умножить(Y, Y))); Видно, что суперпозиция функций в ФП играет ту же роль что и последовательность операторов в языках программирования ориентированных на процедурный подход. В функциональных программах используются как примитивные функции( ЭВМ или транслятор знают, как их вычислять), так и составные ( заранее неизвестное ЭВМ функции, определенная программистом в виде суперпозиции примитивных и заранее определенных функций ). Определение составной функции состоит из левой и правой частей. В левой части указывается присваиваемое функции имя и список ее аргументов (формальных параметров). В правой части определения с помощью суперпозиции описывается, как вычислить значение определяемой функции, если известны ее аргументы. Выполнение функциональной программы сводится к последовательности замен примитивных и составных функций, каждая постепенно упрощает исходную суперпозицию функций до одного значения результата. На каждом шаге заменяется одна из функций, аргументы которой известны (известные аргументы функции называются фактическими параметрами): -примитивная функция заменяется на ее значение, которое определяется в результате вызова функции; - вместо составнойфункции с известными аргументами в точку ее вызова подставляется суперпозиция функций из правой части определения заменяемой составной функции. Рассмотрим процесс выполнения функции Длина(), определенной выше. Пустьвызов этой функции (программы ) имеет вид: Длина (4, 3). Поскольку длина - составная функция, то в точку ее вызова будет подставлено (или другими словами программа будет преобразована к виду): Корень(сложить(квадрат(4), квадрат(3))). Следующий шаг - замена составной функции Квадрат(4): Корень(сложить(умножить(4, 4), умножить(3, 3))). Теперь можно заменить примитивные функции Умножить(4, 4) и Умножить(3, 3) на их значения (которые они вычисляют): Корень(сложить(16, 9)). Теперь функцию Сложить заменяем значением: Корень(25).
Основные черты функционального подхода: - основная структура данных - связанный список (программа также представляется в виде списков); - вместо операторов - функции; - вместо явных циклов (итераций) - рекурсия. Считается, что функциональный подход позволяет легко и естественно переходить к понятиям, связанным со сложными объектами предметной области. Это делается с помощью определения соответствующих составных функций над сложными структурами. Такие определения в удобной форме описывают зависимости между объектами. Функция - универсальный инструмент для представления этих зависимостей в различных областях. При этом операция суперпозиции позволяет легко использовать ранее созданные функции при построении новых. Из языков функционального программирования наиболее широко известны lisp( list processing ) и РЕФАЛ ( Турчин ).
Данные 7.1 Понятие данных. Исходная задача ставится относительно некоторых объектов из предметной области - исходных объектов. В алгоритме мы имеем дело не с самими объектами, а с их моделями (аналогами). Целью разработки алгоритма является создание предписания для исполнителя по выполнению действий над моделями исходных объектов, приводящих к решению поставленной задачи. Согласно свойствам определённости и понятности алгоритма эти модели и выполняемые с ними действия д.б. известны исполнителю и пониматься им однозначно. В результате в алгоритмах можно использовать только такие модели объектов, которые: - заранее известны исполнителю или м.б. однозначно описаны в терминах известных ему понятий. - допускают описание действий над ними в терминах известных и однозначно понятных исполнителям операций NB: именно такие модели реальных объектов называются данными. В зависимости от момента образования и периода их существования различают следующие типы данных: Исходные: Это сведения о предметной области, которые требуются исполнителю в ходе выполнения алгоритма, но неизвестные заранее (их надо вводить в начале выполнения программы). К ним относятся знания об исходных объектах. Промежуточные: Соответствуют представлениям об объектах, вводимых в рассмотрение по ходу алгоритма. Такие данные обычно заранее неизвестны исполнителю и их получение не является конечной целью. Они нужны для более удобного получения решения (поэтому без них обычно невозможно или неудобно получить решение). Однако количество таких данных должно быть минимальным. Конечные (результаты): Соответствуют моделям новых объектов предметной области, получаемым(синтезируемым) в результате выполнения алгоритма (их надо выводить по завершении программы). От этих полученных данных (результата решения задачи) путём интерпретации переходят к соответствующим им объектам предметной области, получение которых и является целью работы программы. Данные в предписании также делятся на константы и переменные. Константы нельзя изменять во время исполнения предписания, а переменные желательно изменять для получения результата.
Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 430; Нарушение авторского права страницы