Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Основные этапы проектирования программ. Понятия интерфейса и внутренней реализации.
Основные этапы проектирования программ. Понятия интерфейса и внутренней реализации. Типовой проект включает в себя следующие этапы разработки программного обеспечения: · анализ требований к проекту; · проектирование; · реализация; · тестирование продукта; · внедрение и поддержка. На этапе анализа выделяются базовые сущности и взаимосвязи между ними. При проектировании на основе предыдущего этапа проводится проектирование системы. Эта методология проектирования соединяет в себе объектную декомпозицию, приемы представления физической, логической, а также динамической и статической моделей системы. При разработке применяются экспериментирование и анализ, строятся прототипы, как целой системы, так и ее частей. В результате этапа реализации появляется рабочая версия продукта Любая система как правило состоит из отдельных подсистем, каждая из которых может состоять из еще более мелких подсистем. В терминах ооп наименьшей функциональной единицей является класс. Классы могут объединяться в модули. Модули могут объединяться в пакеты. Понятие интерфейса применимо к подсистеме любого уровня. В общем случае интерфейс представляет собой набор функций, методов и атрибутов, к которым предоставляет доступ подсистема. Интерфейсы используются для защиты внутренней реализации подсистемы от внешнего вмешательства. Такой подход позволяет гарантировать функциональную целостность подсистемы и как следствие – надежность ее работы.
Концепция абстрактных типов данных. Объекты и классы. Понятия состояния, поведения и идентификации объекта. Абстрактные типы данных (АТД) являются математическим понятием, пригодным на этапе подготовки спецификации при объектно ориентированном проектировании. В ООП результатом абстракции являются объекты, представляющие собой абстрактные машины, обладающие внутренним состоянием, которое можно изменять посылкой сообщений через методы объекта. Объекты обмениваются сообщениями друг с другом и, таким образом, реализуется алгоритм программной модели. Понятие класса, предусматривая частичную или полную реализацию, обеспечивает необходимую связь с разработкой ПО на этапах проектирования и программирования. Одно из наиболее значимых отличий АТД от класса заключается в том, что абстрактный тип не содержит данных абстрактный тип представляет собой поведенческую абстракцию Состояние объекта характеризуется перечнем всех возможных свойств данного объекта и текущими значениями каждого из этих свойств. Всякий объект характеризуется состоянием, что означает, что он занимает определенное пространство физически или в памяти компьютера. Состояние объекта класса указывается в атрибутах класса Поведение объекта характеризует то, как объект воздействует или подвергается воздействию других объектов с точки зрения изменения состояния этих объектов и передачей сообщений. Поведение объекта класса описывается методами. Идентификацией или инициализацией объекта называется такая операция, которая позволяет определить некоторый экземпляр АТД. При идентификации устанавливаются неизменные свойства и изначальное состояние объекта. Идентификация объекта класса происходит в конструкторе
Парадигмы программирования: процедурное, модульное, объектно-ориентированное. Основные отличия. Процедурное Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней. Модульность - принцип, согласно которому программное средство разделяется на отдельные именованные сущности, называемые модулями. Модульность часто является средством упрощения задачи проектирования ПС и распределения процесса разработки ПС между группами разработчиков. При разбиении ПС на модули для каждого модуля указывается реализуемая им функциональность, а также связи с другими модулями. Парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы. Данные объекта скрыты от остальной программы - инкапсуляция. Объекты с одинаковыми интерфейсами могут иметь различную реализацию – полиморфизм. Наследование – свойство объекта которое позволяет объектам иметь некоторую реализацию но при этом обладать различными интерфейсами. В процедурном программировании минимальная неделимая единица – функция. Программа = последовательность функций. Функция характеризуется входными и выходными параметрами. В Модульном программировании минимальная единица – модуль. Модуль содержит данные либо процедуры. Программа – набор правил взаимодействия модулей. В ООП минимальная единица – объект. объект содержит данные и методы. Программа – процесс взаимодействия объектов между собой. Классы содержат методы и атрибуты.
Отношения между классами: ассоциация, агрегация, композиция, использование, наследование. Ассоциация – взаимодействие объектов некоторых классов между собой. Существуют следующие виды: однонаправленная, двунаправленная, агрегация, композиция и наследование. Использование – однонаправленная ассоциация. Объекты являются структурно независимыми, но один из них может вызывать методы другого. При двунаправленной ассоциации происходит взаимное использование. Агрегация – отношение «часть-целое» между двумя равноправными объектами. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет Композиция— более строгий вариант агрегирования, когда включаемый объект может существовать только как часть контейнера. Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен. Наследование – такой тип ассоциации объекта, который указывает на то, что один объект является частной формой другого другого. Пример наследования: пес -> животное
Необязательные принципы объектно-ориентированного программирования: типизация, параллелизм, сохраняемость. Типизация - это ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости абстракций различных типов. Нельзя складывать собаку с помидором. Тип может связываться с программным объектом статически и динамически. Реализация позднего связывания в языке программирования позволяет создавать переменные - указатели на объекты, принадлежащие различным классам Параллелизм - свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции. Существует целый ряд задач, решение которых требует наличия одновременного выполнения некоторых последовательностей действий. Системы с одним процессором имитируют параллелизм за счет разделения времени процессора между задачами управления различными процессами. (мультиплексирование) Сохраняемость – способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. Состояние объекта можно сохранить в каком-нибудь виде. (JSON, XML)
Базовые принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Примеры применения. Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя. class A { public: int a, b; //данные открытого интерфейса int ReturnSomething(); //метод открытого интерфейса private: int Aa, Ab; //скрытые данные void DoSomething(); //скрытый метод }; Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом. class A{ //базовый класс }; class B: A{ // наследование }; Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. abstract class Animal { String talk(); } class Cat extends Animal { String talk() { return " Meow! "; } } class Dog extends Animal { String talk() { return " Woof! "; } }
ПРИМЕР: Собственных пользовательских исключительных ситуаций using namespace System; public ref class EmployeeListNotFoundException: Exception { public: EmployeeListNotFoundException() { } EmployeeListNotFoundException(String^ message) : Exception(message) { } EmployeeListNotFoundException(String^ message, Exception^ inner) : Exception(message, inner) { } };
Реализация Перегрузка операций предполагает введение в язык двух взаимосвязанных особенностей: возможности объявлять в одной области видимости несколько процедур или функций с одинаковыми именами и возможности описывать собственные реализации бинарных операторов (то есть знаков операций, обычно записываемых в инфиксной нотации, между операндами). Принципиально реализация их достаточно проста: - Чтобы разрешить существование нескольких одноимённых операций, достаточно ввести в язык правило, согласно которому операция (процедура, функция или оператор) опознаются компилятором не только по имени (обозначению), но и по типам их параметров. Таким образом, abs(i), где i объявлено как целое, и abs(x), где x объявлено как вещественное — это две разные операции. Принципиально в обеспечении именно такой трактовки нет никаких сложностей. - Чтобы дать возможность определять и переопределять операции, необходимо ввести в язык соответствующие синтаксические конструкции. Вариантов их может быть достаточно много, но по сути они ничем друг от друга не отличаются, достаточно помнить, что запись вида «< операнд1> < знакОперации> < операнд2> » принципиально аналогична вызову функции «< знакОперации> (< операнд1>, < операнд2> )». Достаточно разрешить программисту описывать поведение операторов в виде функций — и проблема описания решена. Основные этапы проектирования программ. Понятия интерфейса и внутренней реализации. Типовой проект включает в себя следующие этапы разработки программного обеспечения: · анализ требований к проекту; · проектирование; · реализация; · тестирование продукта; · внедрение и поддержка. На этапе анализа выделяются базовые сущности и взаимосвязи между ними. При проектировании на основе предыдущего этапа проводится проектирование системы. Эта методология проектирования соединяет в себе объектную декомпозицию, приемы представления физической, логической, а также динамической и статической моделей системы. При разработке применяются экспериментирование и анализ, строятся прототипы, как целой системы, так и ее частей. В результате этапа реализации появляется рабочая версия продукта Любая система как правило состоит из отдельных подсистем, каждая из которых может состоять из еще более мелких подсистем. В терминах ооп наименьшей функциональной единицей является класс. Классы могут объединяться в модули. Модули могут объединяться в пакеты. Понятие интерфейса применимо к подсистеме любого уровня. В общем случае интерфейс представляет собой набор функций, методов и атрибутов, к которым предоставляет доступ подсистема. Интерфейсы используются для защиты внутренней реализации подсистемы от внешнего вмешательства. Такой подход позволяет гарантировать функциональную целостность подсистемы и как следствие – надежность ее работы.
Популярное:
|
Последнее изменение этой страницы: 2016-07-14; Просмотров: 1123; Нарушение авторского права страницы