
- •1. Жизненный цикл программной системы.
- •2. Классический подход к созданию программных систем.
- •3. Понятия связности модулей и сцепления модулей.
- •4. Структурное программирование.
- •Структурное тестирование программного обеспечения
- •1. Связь процессов тестирования и процессов проектирования.
- •2. Уровни тестирования и виды тестирования.
- •3. Стратегия тестирования.
- •4. Тестирование программного модуля.
- •5. Восходящее и нисходящее тестирование.
- •6. Методы тестирования: модифицированный нисходящий, монолитный, сандвич, модифицированный сандвич.
- •7. Системное тестирование: метод функциональных диаграмм.
- •Объектно-ориентированный подход к разработке по
- •1. Абстрагирование и инкапсуляция
- •2. Модульность программных систем
- •3. Виды иерархий в программных системах.
- •4. Понятие объекта. Состояние, поведение и индивидуальность объекта.
- •5. Отношение между объектами: использование, включение.
- •6. Отношение простого наследования классов.
- •7. Добавление, замещение и уточнение методов класса при наследовании.
- •8. Отношение ассоциации между классами, включая агрегацию.
- •9. Отношение зависимости между классами, отношение реализации.
- •Шаблоны проектирования
- •1. Шаблон «Одиночка» Singleton
- •2. Шаблон «Фабричный метод» Factory Method
- •3. Шаблон «Декоратор» Decorator
- •4. Шаблон «Стратегии» Strategy
- •5. Шаблон «Компоновщик» Composite.
- •6. Шаблон «Наблюдатель» Observer
- •7. Архитектурные шаблоны (парадигмы).
- •Унифицированный процесс разработки по (rup)
- •1. Основные черты. Фазы и основные потоки работ.
- •2. Документ «Видения». Модель и словарь предметной области.
- •3. Функциональные и нефункциональные требования к системе. Варианты использования системы.
- •4. Прецеденты и отношения между вариантами использования (прецедентами).
- •5. Модель анализа и классы анализа.
- •6. Архитектурное представление.
5. Отношение между объектами: использование, включение.
Типы отношений
Отношения двух любых объектов основываются на предположениях, которыми один обладает относительно другого: об операциях, которые можно выполнять, и об ожидаемом поведении. Особый интерес для объектно-ориентированного анализа и проектирования представляют два типа иерархических соотношений объектов:
связи (отношение использования);
агрегация (отношение включения);
Связи
Связь – физическое или концептуальное соединение между объектами.
Связь - это специфическое сопоставление, через которое клиент запрашивает услугу у объекта-сервера или через которое один объект находит путь к другому.
Связи обозначаются линиями и означают пути прохождения сообщений. Сами сообщения отображаются стрелками с пометкой имени операции.
Связь между объектами и передача сообщений обычно односторонняя (хотя технически она может быть и взаимной). Подобное разделение прав и обязанностей типично для хорошо структурированных объектных систем.
Участвуя в связи, объект может выполнять одну из следующих трех ролей:
∙ Актер. Объект может воздействовать на другие объекты, но сам никогда не подвергается воздействию других объектов; в определенном смысле это соответствует понятию активный объект.
∙ Сервер. Объект может только подвергаться воздействию со стороны других объектов, но он никогда не выступает в роли воздействующего объекта.
∙ Агент. Такой объект может выступать как в активной, так и в пассивной роли; как правило, объект-агент создается для выполнения операций в интересах какого-либо объекта-актера или агента.
Агрегация (включение)
Агрегация описывает отношения целого и части, приводящие к соответствующей иерархии объектов, причем, идя от целого (агрегата), мы можем придти к его частям (атрибутам), но не наоборот (нельзя найти агрегирующий объект (контейнер), если только сведения о нем не являются случайно частью состояния агрегируемого объекта.).
Объект, являющийся атрибутом другого объекта (агрегата), имеет связь со своим агрегатом. Через эту связь агрегат может посылать ему сообщения.
Агрегация может означать физическое вхождение одного объекта в другой, но не обязательно.
Выбирая одно из двух - связь или агрегацию - надо иметь в виду следующее. Агрегация иногда предпочтительнее, поскольку позволяет скрыть части в целом. Иногда наоборот предпочтительнее связи, поскольку они слабее и менее ограничительны.
6. Отношение простого наследования классов.
Класс – это описание структуры и поведения объектов, имеющих одинаковые свойства, поведение и семантику.
Наследование – отношение при котором один класс разделяет структуру и поведение другого класса. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.
Отношение наследования классов - это особый механизм в ООП, который позволяется выполнять конкретизацию свойств объектов сверху вниз. То есть производить определение от более общего к более конкретному. По сути, это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. На практике отношение наследования часто дает еще некоторые преимущества, такие как устранение дублирования кода.
Простое наследование используется, когда существует одно отношение «родитель-потомок». То есть один потомок наследуется от одного родителя.
Принцип подстановки: экземпляр класса, порожденного от некоторого класса X, может использоваться без нарушения семантики объявления X везде, где используется экземпляр класса X.
Различие понятий класс и тип: класс описывает структуру объектов, тип описывает протокол объектов. Класс может соответствовать нескольким типам (реализовать различные интерфейсы). Различные классы могут иметь один и тот же тип (реализовать один и тот же интерфейс).
Что происходит в порожденном классе:
Поля данных и методы– члены класса наследуются от базового класса. Можно считать, что они описаны в порожденном классе. Однако, возможность доступа к ним из методов производного класса и извне этого класса определяется спецификатором доступа (private, protected, public) к членам в базовом классе и спецификатором доступа к базовому классу, задаваемому при описании производного класса.
В производном классе можно добавлять свои поля – члены класса.
В производном классе можно добавлять свои методы – члены класса.
В производном классе можно переопределять методы базового класса (сохраняя точное совпадение с исходным прототипом, то есть количество и типы аргументов и возвращаемый тип). Исключение: если возвращаемый тип является указателем или ссылкой на базовый класс, он может быть заменен указателем или ссылкой на порождаемый класс.
Если Вы в производном классе переопределили метод, доступ из него к родительскому методу можно получить, используя оператор ::
Если в классе-наследнике имя метода и его прототип совпадают с именем метода базового класса, то метод производного класса скрывает метод базового класса.
Статические поля наследуются. Все потомки разделяют единственную копию статического поля. Статические методы наследуются.
Ограничений в наследовании вложенных классов нет: внешний класс может наследовать от вложенного и наоборот.