diagrama de classes de projeto - dainf.ct.utfpr.edu.brtacla/uml/0080-projetocasosuso-slides1.pdf ·...
TRANSCRIPT
![Page 1: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/1.jpg)
Diagrama de Classes de Projeto
Prof. Cesar Augusto Tacla
![Page 2: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/2.jpg)
Plano
�Posição no método APOO�Projeto�Diagrama de seqüência (refinamento)�Diagrama de classe (refinamento)
![Page 3: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/3.jpg)
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
![Page 4: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/4.jpg)
Posição da atividade
![Page 5: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/5.jpg)
Resumo
Caso de uso
realizaçãoModelo de análise
Modelo de casos de uso
Classes de análise
Cenários de colaboração
Diagrama de casos de usoDescriçõesGlossárioModelo do domínio
realizaçãoClasses de projetoCenários de colaboração
Arquitetura de sofware
Modelo de projeto
![Page 6: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/6.jpg)
PROJETO
�Classes de projeto�Operações e atributos de cada classe
�Diagramas de interação
�Arquitetura de software �Interfaces�Subsistemas
![Page 7: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/7.jpg)
CLASSE DE ANÁLISE X PROJETO
NO PROJETO� linguagem de programação alvo �visibilidades�relações são detalhadas �operações das classes de projeto são
traduzidas de forma direta em código.
![Page 8: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/8.jpg)
Método adotado para a atividade
�Criar realizações de casos de uso�Descrever interações e refinar diagrama
de classes�Simplificar diagramas de seqüência
utilizando subsistemas (opcional)�Descrever comportamentos associados à
persistência�Definir mecanismos de projeto (Arquiteto
de Software)
![Page 9: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/9.jpg)
Diagrama de interação
�Na análise�considerou-se que os objetos estavam
disponíveis e persistidos
�não havia preocupação com a criação e destruição dos mesmos
�Não havia preocupação em acessá-los e associá-los a outros objetos
![Page 10: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/10.jpg)
Diagrama de seq. análisesd análise casos de uso
:meteorologista:IUConv ersao :CtrlConv ersao :Historico :Conv ersaoCF
solicitar valor Celsius
valor Celsius?
c
c
converter valor c
guardar conversao
valor Fahrenheitmostrar valor convertido
valor Fahrenheit
![Page 11: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/11.jpg)
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
![Page 12: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/12.jpg)
salvar()
writeObject
Continuação slide anterior
![Page 13: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/13.jpg)
Diagrama de classes de análiseclass Classes de análise (associações)
ConversaoCFCtrlConversao
Historico
IUConversao
:IUHistorico CtrlHistorico
0..10pertence
1
1 111
1 11 1
![Page 14: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/14.jpg)
Diagrama de classes de projetoclass classes converter
«boundary»IUConversao
~ mostrar(float) : void~ solicitarCelsius() : float
«control»CtrlConv ersao
«entity»ConversaoCF
- celsius: float- Horario: Date
+ getFahr() : float
«entity»Historico
+ adicionar(ConversaoCF) : void- writeObject() : void
«interface»
Serializable1«instantiate»1 1
«instantiate»
1
1
«instantiate»
1
0..10 {ordered} 1
![Page 15: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/15.jpg)
Exemplo: realização 2
�Conversor C > F (WEB)deployment projeto casos de uso
Serv idor WEB
Nav egador 1
Nav egador 2 Nav egador N-1
Nav egador N
«http»
«http» «http»
«http»
![Page 16: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/16.jpg)
Diag. de seqüência parcialsd projeto casos de uso (web)
:meteorologista
«jsp page»
:IUConversao
«servlet»
:CtrlConversao
:Conv ersaoCF
pág. conversão
celsius
POST celsius
ConversaoCF(celsius)
![Page 17: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/17.jpg)
Refinar diagrama de classes
�Dependência� Implementação de associações
![Page 18: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/18.jpg)
Dependência
�Variável local�Parâmetro de operação (método)� Instanciação
�Atributos indicam associação
![Page 19: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/19.jpg)
Dependência: exemplosclass Dependência
ClasseA
+ operacao(ClasseC) : void
ClasseB
ClasseC ClasseD
«local»
«parameter»«instantiate»
![Page 20: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/20.jpg)
Implementação de associaçõesunidirecional 1:1
class Classe
ClasseA ClasseB
1 1
class ClasseA {private ClasseB objB = new ClasseB();// objB pode ser instanciado em outro local// outros atributos// métodos
}E se fosse bidirecional?
![Page 21: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/21.jpg)
Implementação bidirecional 1:1
1.class ClasseA {2. Private ClasseB objB = new ClasseB(); // pode ser instanciado em outro local3. // outros atributos4. // métodos5.}6.class ClasseB {7. Private Classe objA = new ClasseA(); // pode ser instanciado em outro local8. // outros atributos9. // métodos10.}
![Page 22: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/22.jpg)
Unidirecional 0..1 : 0..5
class Professor
Professor Disciplina
0..1
leciona
0..5
![Page 23: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/23.jpg)
Unidirecional 0..1 : 0..5Implementação 1
1.class Professor {2. private Disciplina[] 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
![Page 24: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/24.jpg)
Unidirecional 0..1 : 0..5Implementação 2
1.class Professor {2. private Disciplina[] disciplinas = new Disciplina[5];3. public void adicionarDisciplinas(Disciplina[] disc){4. // inicializar vetor disciplinas com parâmetro disc5. }6.}
class Professor
Professor Disciplina
0..1
leciona
0..5
![Page 25: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/25.jpg)
Multiplicidade 1:*
1.class Professor {2. private Vector<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 *
![Page 26: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/26.jpg)
Bidirecional multiplicidade *:*
1.public class Projeto {2. public Vector<Pessoa> emprega;3. ...4.}5.public class Pessoa {6. public Vector<Projeto> participa;7. ...8.}
class muitos para muitos
Projeto Pessoa+emprega
0..*
+participa
0..*
![Page 27: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/27.jpg)
Associações reflexivasclass associação reflexiv a
Professor Disciplina
1 *
+preRequisito0..*
+temPrerequisito0..*
1.public class Disciplina {2. public Vector<Disciplina> temPrerequisito;3. public Vector<Disciplina> preRequisito;4. ...5.}
![Page 28: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/28.jpg)
Classes Associativas
class classe associativa
ProjetoPessoa
Participacao
- cargaHoraria: int- dataEntrada: Date- dataSaida: Date
+emprega
0..*
+participa
0..*
Equivale à...
![Page 29: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/29.jpg)
Classes Associativas (2)
class classe associativ a (proj )
Projeto PessoaParticipacao
- cargaHoraria: int- dataEntrada: Date- dataSaida: Date
1
possui
0..* 1
participa
0..*
Implementação >>>>
![Page 30: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/30.jpg)
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. public Projeto projeto;// se relação for bidirecional14. Public Pessoa pessoa; // se relação for bidirecional15. ...16.}
![Page 31: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/31.jpg)
Agregação por composição
class agregação por composição
HistoricoPagsWeb URLVisitada
- URL: String0..*1
Implementação >>>
![Page 32: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/32.jpg)
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 URLVisitada10. 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 >>>
![Page 33: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/33.jpg)
Agregação por composição (3)1.class Historico {2. private class URLVisitada {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
![Page 34: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/34.jpg)
Agregação por associação
� Idem associação
![Page 35: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/35.jpg)
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 class Histórico implements
Serializable {5. ...6.}
![Page 36: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/36.jpg)
Subsistemas
�Comportamentos repetidos nos diagramas de seqüência podem indicar subsistemas
�Ex: autenticação, acesso a dados
![Page 37: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/37.jpg)
Subsistemas: definição
�Composto por outros elementos �Pacotes�Classes
�Apresenta comportamento
![Page 38: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/38.jpg)
Subsistemas: representação UMLclass 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>>
![Page 39: Diagrama de Classes de Projeto - dainf.ct.utfpr.edu.brtacla/UML/0080-ProjetoCasosUso-slides1.pdf · Cenários de colaboração Arquitetura de sofware Modelo de projeto. PROJETO Classes](https://reader031.vdocuments.site/reader031/viewer/2022021908/5be316e609d3f20f518cda43/html5/thumbnails/39.jpg)
COMPORTAMENTOS ASSOCIADOS ÀPERSISTÊNCIA
�Refinar o diagrama de classes� Isolar camada do modelo do BD�Usar padrões
�Factory�Façade�gateway