• Nenhum resultado encontrado

3.1 Extensão do Modelo de Casos de Uso para Padrões Arquiteturais

3.2.1 Tipos Aplicáveis às Classes

Esta seção apresenta uma tipologia para as classes genéricas do padrão arquitetural baseada nos tipos (opcional e variante) definidos na seção 3.1. Os estereótipos <<OP>> e

<<VAR>> são usados (separados ou de forma combinada) nas classes para denotar os significados de opcionalidade4 e variabilidade das classes genéricas.

Uma classe com estereótipo <<OP>> significa uma classe que pode ou não fazer parte do modelo de classes do padrão, visto que essa classe é opcional no padrão.

Uma classe com estereótipo <<VAR>> significa uma classe que deve fazer parte do modelo de classes do padrão, embora possa haver variação entre as instâncias desta classe. Essas variações podem ser atributos e / ou métodos que sejam variantes ou mesmo opcionais para essa classe.

Estas características de opcionalidade e variabilidade conferem à classe alguns diferenciais no tratamento dos seus relacionamentos que serão abordados numa seção específica deste capítulo.

Uma classe variante significa que existe pelo menos um de seus atributos ou métodos que é variante ou opcional.

A Figura 3.14 apresenta três classes com estereótipos. Em a) tem-se uma classe opcional; em b) tem-se uma classe variante; e em c) a combinação dos dois estereótipos que podem ser aplicados às classes.

<<OP>> CNomeClasse CNomeClasse <<VAR>> a) b) CNomeClasse <<OP_VAR>> c)

Figura 3.14 – Tipologia para as classes

3.2.2 Relacionamentos entre as Casses Genéricas

A tipologia proposta para classes genéricas implica algumas limitações no relacionamento entre as classes, como na tipologia para atores e casos de uso que foi apresentada na seção 3.1. Os relacionamentos entre as classes, previstos na UML [OMG 1998], são Associações, Agregações e Generalizações / Especializações.

(i) Associações

A associação é um tipo de relacionamento importante em sistemas orientados a objetos que permite que objetos de uma classe se comuniquem com objetos de outra classe.

4 O termo opcionalidade não foi encontrado em dicionários da língua portuguesa. É usado neste trabalho

A Figura 3.15 mostra uma associação entre a ClasseX e a ClasseY. Como a classe Y é opcional, faz-se necessário que o relacionamento também seja opcional e vinculado à existência da ClasseY, para evitar o caso dessa classe não ser utilizada quando o padrão for instanciado.

ClasseX ClasseY

<<OP>> <<OP>>

Figura 3.15 – Relacionamento com uma classe opcional

A Figura 3.16 mostra um relacionamento entre uma ClasseX e uma ClasseY variante. Neste caso, mesmo sendo a ClasseY variante o relacionamento poderá existir.

ClasseX ClasseY

<<VAR>>

Figura 3.16 – Relacionamento com uma classe variante

(ii) Agregações

A agregação é um relacionamento de pertinência definido entre classes que permite estabelecer a inclusão de objetos de uma classe no interior de objetos de outra classe [STADZISZ 2002].

A Figura 3.17 apresenta dois relacionamentos de agregação, onde em a) a ClasseX agrega um objeto da ClasseY e em b) a ClasseZ agrega um objeto da ClasseW. Como nos dois casos pelo menos uma das classes é opcional, isso faz com que os relacionamentos sejam opcionais, tanto em a) como em b). Em b) pode-se ainda afirmar que a ClasseZ será variante porque agrega uma classe opcional (ClasseW).

ClasseY <<OP>> ClasseX a) ClasseW <<OP>> ClasseZ b) <<OP>> <<OP>>

Figura 3.17 – Relacionamentos de agregação de classes opcionais

A Figura 3.18 mostra dois relacionamentos de agregação onde, em a) a ClasseX agrega objetos da ClasseY. Neste caso, nada se pode afirmar sobre o estereótipo da ClasseY. Em b) a ClasseZ agrega objetos da ClasseW. Neste caso, como a classe variante é a agregada (ClasseW), a classe agregadora (ClasseZ) também será variante.

ClasseY <<VAR>> ClasseX a) ClasseW <<VAR>> ClasseZ b) <<VAR>>

Figura 3.18 – Relacionamentos de agregação de classes variantes

(iii) Generalizações / Especializações

A generalização / especialização é um tipo de relacionamento entre duas classes que ocorre em termos estruturais, onde uma das classes será considerada base e a outra será considerada derivada [STADZISZ 2002].

A Figura 3.19 mostra dois relacionamentos de generalização / especialização onde a ClasseY herda os atributos e métodos da ClasseX, e a ClasseW herda os atributos e métodos da ClasseZ. Em a) como a ClasseX é opcional, também o será o relacionamento, entretanto, a ClasseY será variante por herdar atributos e métodos opcionais da ClasseX. Essa situação é pouco provável porque dificilmente uma classe derivada poderia existir sozinha, sem a classe base. Em b) como a ClasseW é opcional, o relacionamento com a ClasseZ também o será, entretanto, nada se pode afirmar sobre a ClasseZ.

ClasseY <<OP>> ClasseX a) ClasseW <<OP>> ClasseZ b) <<OP>> <<OP>> <<VAR>>

Figura 3.19 – Relacionamento de herança de classes opcionais

A Figura 3.20 mostra relacionamentos de generalização / especialização onde em a) como a ClasseX é variante, também será variante a ClasseY. Em b) embora a ClasseW seja variante, nada se pode afirmar sobre a ClasseZ. Os relacionamentos, propriamente ditos, não variam. ClasseY <<VAR>> ClasseX a) ClasseW <<VAR>> ClasseZ b) <<VAR>>

3.3 Tipologia para os Diagramas de Seqüência Genéricos

Os diagramas de seqüência, como definido pela UML, mostram as comunicações que acontecem entre os objetos ao longo do tempo. Estas comunicações expressam as interações entre os objetos que possibilitam que os casos de uso sejam realizados. Estes diagramas são criados por caso de uso (um para cada cenário).

Neste trabalho procura-se evidenciar as partes não comuns dos diagramas de seqüência utilizando um retângulo que identifica a parte não comum do diagrama. Os atores mostrados nos diagramas de seqüência poderão utilizar a notação apresentada na seção 3.1. Para a representação dos objetos nos diagramas de seqüência, poderá ser utilizada a notação dos estereótipos das classes, conforme apresentado na seção 3.2.

A Figura 3.21 mostra um diagrama de seqüência hipotético com um retângulo menor que contém em seu canto superior direito o estereótipo <<op>>. Este estereótipo indica que essa parte do diagrama, contida no retângulo, é opcional, ou seja, em cada instanciação do padrão esta parte poderá ou não ser implementada. Esta mesma figura apresenta outro retângulo maior que contém em seu canto superior direito o estereótipo <<var>>, indicando que a parte do diagrama (contida no retângulo maior) é variante, ou seja, em cada instanciação do padrão esta parte poderá ser implementada de forma diferente (a critério do projetista).

Ator1 :CInterface1 :CControle :CInterface2 Ator2

<<op>> <<var>>

Figura 3.21 – Notação para os diagramas de seqüência

Documentos relacionados