• Nenhum resultado encontrado

Diagrama de Classes de Projeto

N/A
N/A
Protected

Academic year: 2021

Share "Diagrama de Classes de Projeto"

Copied!
7
0
0

Texto

(1)

Diagrama de Classes de Projeto

Prof. Cesar Augusto Tacla

Plano

Posição no método APOO Projeto

Diagrama de seqüência (refinamento) Diagrama de classe (refinamento)

Visão geral do método

Análise de requisitos Análise

Refinar a descrição dos casos de uso Levantamento das classes Estudo da interação entre objetos Projeto

Refinamento do diagrama de classes

Definição do comportamento de classes Modelo de implantação (deployement)

Implementação Modelo de implementação Codificação

Posição da atividade

Resumo

Caso de uso

realização Modelo de análise

Modelo de casos de uso

Classes de análise Cenários de colaboração Diagrama de casos de uso Descrições Glossário Modelo do domínio realização Classes de projeto Cenários de colaboração Arquitetura de sofware Modelo de projeto

PROJETO

Classes de projeto

Operações e atributos de cada classe

Diagramas de interação Arquitetura de software

Interfaces Subsistemas

(2)

CLASSE DE ANÁLISE X PROJETO

NO PROJETO

linguagemde programação alvo

visibilidades

relaçõessão detalhadas

operaçõesdas classes de projeto são

traduzidas de forma direta em código.

Método adotado para a atividade

Criar realizaçõesde casos de uso Descrever interaçõese refinardiagrama de classes

Simplificar diagramas de seqüência utilizando subsistemas(opcional)

Descrever comportamentos associados à

persistência

Definir mecanismosde projeto (Arquiteto de Software)

Diagrama de interação

Na análise

considerou-se que os objetos estavam

disponíveise persistidos

não havia preocupação com a criaçãoe

destruiçãodos mesmos

Não havia preocupação em acessá-lose

associá-losa outros objetos

Diagrama de seq.

análise

sd análise casos de uso

:meteorologista

:IUConv ersao :CtrlConversao :Historico :Conv ersaoCF

solicitar valor Celsius valor Celsius? c c converter valor c guardar conversao valor Fahrenheit mostrar valor convertido

valor Fahrenheit sd conv erter c-f :meteorologista :Historico conv :Conv ersaoCF :IUConv ersao :CtrlConv ersao loop

[!FIM] solicitarCelsius() :float Celsius? c c ConversaoCF(c) adicionar(this) mostrar(conv.getFahr()) conv.Fahr

Diagrama de seq. projeto

salvar()

writeObject Continuação slide anterior

(3)

Diagrama de classes de

análise

class Classes de análise (associações)

ConversaoCF CtrlConversao Historico IUConversao :IUHistorico CtrlHistorico 0..10 pertence 1 1 1 1 1 1 1 1 1

Diagrama de classes de projeto

class classes converter

«boundary» IUConv ersao ~ mostrar(float) : void ~ solicitarCelsius() : float «control» CtrlConversao «entity» ConversaoCF - celsius: float - Horario: Date + getFahr() : float «entity» Historico + adicionar(ConversaoCF) : void - writeObject() : void «interface» Serializable 1 «instantiate» 1 1 «instantiate» 1 1 «instantiate» 1 0..10 {ordered} 1

Exemplo: realização 2

Conversor C > F (WEB)

deployment proj eto casos de uso

Serv idor WEB

Nav egador 1

Nav egador 2 Nav egador N-1

Nav egador N

«http»

«http» «http» «http»

Diag. de seqüência parcial

sd projeto casos de uso (web)

:meteorologista «jsp page» :IUConversao «servlet» :CtrlConversao :Conv ersaoCF pág. conversão celsius POST celsius ConversaoCF(celsius)

Refinar diagrama de classes

Dependência

Implementação de associações

Dependência

Variável local

Parâmetro de operação (método) Instanciação

(4)

Dependência: exemplos

class Dependência ClasseA + operacao(ClasseC) : void ClasseB ClasseC ClasseD «local» «parameter» «instantiate» Implementação de associações unidirecional 1:1 class Classe ClasseA ClasseB 1 1 classClasseA{

privateClasseB objB = new ClasseB();

// objB pode ser instanciado em outro local // outros atributos // métodos } E se fosse bidirecional?

Implementação bidirecional 1:1

1.class ClasseA{

2. PrivateClasseB objB= new ClasseB(); // pode ser instanciado em outro local

3. // outros atributos 4. // métodos

5.

}

6.class ClasseB{

7. PrivateClasse objA= new ClasseA(); // pode ser instanciado em outro local

8. // outros atributos 9. // métodos 10. }

Unidirecional 0..1 : 0..5

class Professor Professor Disciplina 0..1 leciona 0..5 Unidirecional 0..1 : 0..5 Implementação 1 1.classProfessor{

2. privateDisciplina[] disciplinas = {

3. new Disciplina(), 4. new Disciplina(), 5. new Disciplina(), 6. new Disciplina(), 7. New Disciplina(), 8. }; 9. } A instanciação pode ocorrer em outros pontos da classe class Professor Professor Disciplina 0..1 leciona 0..5 Unidirecional 0..1 : 0..5 Implementação 2 1.classProfessor{

2. privateDisciplina[] disciplinas = new Disciplina[5]; 3. public void adicionarDisciplinas(Disciplina[] disc){ 4. // inicializar vetor disciplinas com parâmetro disc 5. } 6.} class Professor Professor Disciplina 0..1 leciona 0..5

(5)

Multiplicidade 1:*

1.classProfessor{

2. privateVector<Disciplina> disciplinas = 3. new Vector<Disciplina>(5, 1);

4. public void adicionarDisciplinas(Disciplina[] disc){ 5. disciplinas.add(disc[0]); 6. ... 7. } 8.} class classes Professor Disciplina 1 *

Bidirecional multiplicidade *:*

1.public class Projeto {

2. publicVector<Pessoa> emprega;

3. ...

4.

}

5.public class Pessoa {

6. publicVector<Projeto> participa;

7. ...

8.

}

class muitos para muitos

Proj eto +emprega Pessoa

0..*

+participa 0..*

Associações reflexivas

class associação reflexiv a

Professor Disciplina 1 * +preRequisito 0..* +temPrerequisito 0..*

1.public class Disciplina {

2. public Vector<Disciplina> temPrerequisito;

3. public Vector<Disciplina> preRequisito;

4. ...

5.

}

Classes Associativas

class classe associativ a

Projeto Pessoa Participacao - cargaHoraria: int - dataEntrada: Date - dataSaida: Date +emprega 0..* +participa 0..* Equivale à...

Classes Associativas (2)

class classe associativa (proj)

Proj eto Participacao Pessoa

- cargaHoraria: int - dataEntrada: Date - dataSaida: Date 1 possui 0..* 1 participa 0..* Implementação >>>>

Classes Associativas (3)

1.public class Projeto {

2. public Vector<Participacao> m_Participacao;

3. ...

4.

}

5.public class Pessoa {

6. public Vector<Participacao> m_Participacao;

7. ...

8.

}

9.public class Participacao {

10. private int cargaHoraria;

11. private Date dataEntrada;

12. private Date dataSaida;

13. publicProjeto projeto;// se relação for bidirecional

14. PublicPessoa pessoa; // se relação for bidirecional

15. ...

16.

(6)

Agregação por composição

class agregação por composição

HistoricoPagsWeb URLVisitada - URL: String 0..*

1

Implementação >>>

Agregação por composição (2)

1.class URLVisitada {

2. private String url;

3.

4. URLVisitada (String url) {

5. this.url = url;

6. }

7.

}

8.class Historico{

9. // cria três objetos da classe URLVisitada

10. private URLVisitada[] historico = { // ou coleção

11. new URLVisitada("http://www.uol.com.br"), 12. new URLVisitada("http://www.terra.com.br"), 13. new URLVisitada("http://www.lemonde.fr"), 14. }; 15. … 16. } Implementação >>>

Agregação por composição (3)

1.classHistorico{

2. private classURLVisitada {

3. private String url;

4. URLVisitada (String umaURL) {

5. url = umaURL;

6. }

7. ...

8. }

9. private Vector<URLVisitada> historico =

10. new Vector<URLVisitada>(4, 2);

11. ...

12.

13.

}

como private, a URLVisitada só pode ser instanciada dentro do escopo do todo Classe

aninhada

Agregação por associação

Idem associação

Realização

«entity» Historico + adicionar(ConversaoCF) : void - writeObject() : void «interface» Serializable «instantiate» 1 «entity» Historico + adicionar(ConversaoCF) : void - writeObject() : void «interface» Serializable «instantiate» 1

1.public interface Serializable{

2....

3.

}

4.public classHistóricoimplements

Serializable{

5....

6.

}

Subsistemas

Comportamentos repetidos nos diagramas de seqüência podem indicar subsistemas Ex: autenticação, acesso a dados

(7)

Subsistemas: definição

Composto por outros elementos

Pacotes Classes

Apresenta comportamento

Subsistemas: representação UML

class subsistema

«interface»

Faturamento + emitirFatura(Pessoa, float) : void

Faturamento Class3 Class4 Ícone para estereótipo <<Subsistema>> class subsistema «interface» Faturamento + emitirFatura(Pessoa, float) : void

Faturamento Class3 Class4 Ícone para estereótipo <<Subsistema>> COMPORTAMENTOS ASSOCIADOS À PERSISTÊNCIA

Refinar o diagrama de classes Isolar camada do modelo do BD Usar padrões

Factory Façade gateway

Referências

Documentos relacionados

Não se está perante a situação de uma única falta injustificada; só se pode falar em falta de assiduidade se houver alguma continuidade, o que não implica que tenham de ser faltas

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

No período de primeiro de janeiro a 30 de junho de 2011, foram encaminhadas, ao Comitê de Segurança do Paciente da instituição sede do estudo, 218 notificações de

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Nos outros lados as forzas da carga situada en A e a do outro vértice sem- pre sumarían e tampouco se anularían.. C.1.- Un condutor macizo en forma de esfera recibe unha

Um outro sistema robótico do tipo rodas, figura 10, é utilizado para inspecionar e limpar a superfície interna de dutos de concreto (Saenz, Elkmann, Stuerze, Kutzner, &amp;

de uma defesa da formulação mais incisiva de políticas públicas, as quais, para serem eficazes, precisam de mecanismos capazes de mapear não só o universo da

tidos para o Coefi ciente de Efi cácia Protéica para o leite de búfala, vaca e caseína como padrão, verifi caram que a caseína e o leite de vaca, não apresentaram diferença