Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основные этапы проектирования программ. Понятия интерфейса и внутренней реализации.



Основные этапы проектирования программ. Понятия интерфейса и внутренней реализации.

Типовой проект включает в себя следующие этапы разработки программного обеспечения:

· анализ требований к проекту;

· проектирование;

· реализация;

· тестирование продукта;

· внедрение и поддержка.

На этапе анализа выделяются базовые сущности и взаимосвязи между ними.

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

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

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

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


 

Концепция абстрактных типов данных. Объекты и классы. Понятия состояния, поведения и идентификации объекта.

Абстрактные типы данных (АТД) являются математическим понятием, пригодным на этапе подготовки спецификации при объектно ориентированном проектировании.

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

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

Одно из наиболее значимых отличий АТД от класса заключается в том, что абстрактный тип не содержит данных абстрактный тип представляет собой поведенческую абстракцию

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

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

Идентификацией или инициализацией объекта называется такая операция, которая позволяет определить некоторый экземпляр АТД. При идентификации устанавливаются неизменные свойства и изначальное состояние объекта. Идентификация объекта класса происходит в конструкторе


 

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

Процедурное

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

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

Парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы. Данные объекта скрыты от остальной программы - инкапсуляция. Объекты с одинаковыми интерфейсами могут иметь различную реализацию – полиморфизм. Наследование – свойство объекта которое позволяет объектам иметь некоторую реализацию но при этом обладать различными интерфейсами.

В процедурном программировании минимальная неделимая единица – функция. Программа = последовательность функций. Функция характеризуется входными и выходными параметрами.

В Модульном программировании минимальная единица – модуль. Модуль содержит данные либо процедуры. Программа – набор правил взаимодействия модулей.

В ООП минимальная единица – объект. объект содержит данные и методы. Программа – процесс взаимодействия объектов между собой. Классы содержат методы и атрибуты.


 

Отношения между классами: ассоциация, агрегация, композиция, использование, наследование.

Ассоциация – взаимодействие объектов некоторых классов между собой.

Существуют следующие виды: однонаправленная, двунаправленная, агрегация, композиция и наследование.

Использование – однонаправленная ассоциация. Объекты являются структурно независимыми, но один из них может вызывать методы другого.

При двунаправленной ассоциации происходит взаимное использование.

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

Композиция— более строгий вариант агрегирования, когда включаемый объект может существовать только как часть контейнера. Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен.

Наследование – такой тип ассоциации объекта, который указывает на то, что один объект является частной формой другого другого. Пример наследования: пес -> животное


 

Необязательные принципы объектно-ориентированного программирования: типизация, параллелизм, сохраняемость.

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

Тип может связываться с программным объектом статически и динамически. Реализация позднего связывания в языке программирования позволяет создавать переменные - указатели на объекты, принадлежащие различным классам

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

Сохраняемость – способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. Состояние объекта можно сохранить в каком-нибудь виде. (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; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.033 с.)
Главная | Случайная страница | Обратная связь