Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_СИТ_1-55(все).doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
656.9 Кб
Скачать

34. Элементы и разработка поведенческих моделей объектно-ориентированных систем. Модели реализации объектно-ориентированных программных систем.

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

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

компоненты — базисные строительные блоки, из которых может проектироваться и составляться система. Компонент может появляться на различных уровнях иерархии представления сложной системы. Система на одном уровне абстракции может стать простым компонентом на более высоком уровне абстракции.

35. Паттерны (образцы) проектирования: виды шаблонов и их классификация, распределение «обязанностей» между шаблонами.

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

классифицировать паттерны по двум критериям:

  • Цель-отражает назначение паттерна:

  1. Порождающие паттерны(связан с процессом создания объектов)

  2. Структурные(имеет отношение к композиции объектов и классов)

  3. Паттерны поведения(характеризуют то, как классы или объекты взаимодействуют между собой)

  • Уровень(говорит о том, к чему обычно применяется паттерн: к объектам или классам);

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

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

Перечень порождающих шаблонов

  • абстрактная фабрика (abstract factory);

  • строитель (builder);

  • фабричный метод (factory method);

  • ленивая инициализация (lazy initialization);

  • объектный пул (object pool);

  • прототип (prototype);

  • одиночка (singleton).

Фабричный метод:

class Value {...}

class FactoryClass {

private static Value comm;

public FactoryClass(String command){

comm=new Value(command); }

public static Value getCommand(){

return comm;

}}

37. Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.

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

Перечень структурных шаблонов

  • Адаптер

  • Мост

  • Компоновщик

  • Декоратор

  • Фасад

  • Приспособленец

  • Заместитель

Пример proxy:

public class Main {

public static void main(String[] args) {

IMath p = new MathProxy();

System.out.println("4 + 2 = " + p.add(4, 2)); } }

public interface IMath {

public double add(double x, double y); }public class Math implements IMath {

public double add(double x, double y) {

return x + y; } }

public class MathProxy implements IMath {

private Math math;

public MathProxy() {

math = new Math(); }

public double add(double x, double y) {

return math.add(x, y); } }

38. Поведенческие шаблоны (англ. behavioral patterns) — шаблоны проектирования, определяющие алгоритмы и способы реализации взаимодействия различных объектов и классов.

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

Примеры

Цепочка ответственности

Команда, Action, Transaction

Интерпретатор

Итератор, Cursor

Посредник

Хранитель, Token

Null Object (Null object)

Наблюдатель, Dependents, Publish-Subscribe, Listener

Слуга (Servant)

Specification (Specification)

Состояние, Objects for States

Стратегия

Шаблонный метод

Посетитель

И т.д……..

Пример итератора..

Iterator - это указатель который в каждый момент времени указывает на один из членов списка и умеет передвигаться на следующий член. Все классы-наследники Collection поддерживают итераторы.

Пример использования:

ArrayList arr = new ArrayList();

Iterator iter = arr.iterator();

while(iter.hasNext()) {

Object obj = iter.next();

// ...

}

В строке 7 происходят несколько вещей:

функция next - возвращает очередной элемент

Ссылка на этот элемент передается в obj

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

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

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

Главная польза каждого отдельного шаблона состоит в том, что он описывает решение целого класса абстрактных проблем. Также тот факт, что каждый шаблон имеет свое имя, облегчает дискуссию об абстрактных структурах данных (ADT) между разработчиками, так как они могут ссылаться на известные шаблоны. Таким образом, за счёт шаблонов производится унификация терминологии, названий модулей и элементов проекта.

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

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