Diagrama de Classes de Projeto

Documentos relacionados
ESTUDO DE CASO: CONVERSOR CELSIUS-FAHRENHEIT

Relações entre Classes e Persistência

Diagrama de Classes (Análise de casos de uso)

Diagrama de Classes (Análise de casos de uso) Prof. Cesar Augusto Tacla

Levantamento de classes (Análise de casos de uso)

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Prática interdisciplinar em desenvolvimento de software I

extendsé usado para indicar herança em JAVA

Análise de Sistemas 4º Bimestre (material 3)

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

LOCADORA DE VEÍCULOS " # $! % & '( % ) )* + ) , & !1 & !/ & ! &2 /3 # & # )&

Introdução à UML. Prof. Jesus José de Oliveira Neto

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Análise e Projeto de Software Parte II. Marcos Dósea

Diagrama de Seqüência

Requisitos de sistemas

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação II Relacionamento entre classes

Tópicos em Engenharia de Computação

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Programação Orientada a Objetos Relacionamentos entre classes

Análise e Projeto Orientados a Objetos

Programação Java (nível intermediário) 4. Polimorfismo

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

POO29004 Programação Orientada a Objetos

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais).

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

PCS3413 Engenharia de Software e Banco de Dados

Linguagem de Programação. Diagrama de classes

Análise e projeto de sistemas

Orientação a Objetos e UML

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Realizando a Análise e Projeto

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Análise e Projeto Orientados a Objetos: Visibilidade Diagrama de Classe de Projeto

PCS3413 Engenharia de Software e Banco de Dados

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Programação Orientada a Objetos

Programação Orientada a Objetos

9 Classes Abstractas e Interfaces

Algoritmos II prof. Daniel Oliveira

Modelagem de Sistemas Web. Modelagem de BD

DIAGRAMAS DE CLASSE UML

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

Ferramenta WEB de Apoio ao planejamento e controle de teste de software. Bruna Tatiane Bonecher Orientadora: Fabiane Barreto Vavassori Benitti

UML. Modelando um sistema

Universidade Federal de Pernambuco (UFPE) Centro de Informática (CIn) Engenharia de Software e Sistemas (IF682) Profº Alexandre Vasconcelos

UML. Rodrigo Leite Durães.

EA975 - Laboratório de Engenharia de Software

Encapsulamento. Alberto Costa Neto DComp - UFS

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Introdução a Web. Programação para a Internet. Prof. Vilson Heck Junior

Gerador de código JSP baseado em projeto de banco de dados MySQL

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Java para Desenvolvimento Web Carga Horária: 40 Horas.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Transcrição:

Plano Diagrama de Classes de Prof. Cesar Augusto Tala Posição no método APOO Diagrama de seqüênia (refinamento) Diagrama de lasse (refinamento) Visão geral do método Posição da atividade Análise de requisitos Análise Refinar a desrição dos asos de uso Levantamento das lasses Estudo da interação entre objetos Refinamento do diagrama de lasses Definição do omportamento de lasses Modelo de implantação (deployement) Implementação Modelo de implementação Codifiação Resumo Caso de uso Modelo de asos de uso Diagrama de asos de uso Desrições Glossário Modelo do domínio PROJETO Classes de projeto Operações e atributos de ada lasse realização Modelo de análise Diagramas de interação Classes de análise realização Cenários de olaboração Modelo de projeto Classes de projeto Cenários de olaboração Arquitetura de sofware Arquitetura de software Interfaes Subsistemas

CLASSE DE ANÁLISE X PROJETO NO PROJETO linguagem de programação alvo visibilidades relações são detalhadas operações das lasses de projeto são traduzidas de forma direta em ódigo. Método adotado para a atividade Criar realizações de asos de uso Desrever interações e refinar diagrama de lasses Simplifiar diagramas de seqüênia utilizando subsistemas (opional) Desrever omportamentos assoiados à persistênia Definir meanismos de projeto (Arquiteto de Software) Diagrama de interação Na análise onsiderou-se que os objetos estavam disponíveis e persistidos Diagrama de seq. análise sd análise asos de uso :meteorologista valor Celsius? :IUConv ersao :CtrlConversao :Historio :Conv ersaocf soliitar valor Celsius não havia preoupação om a riação e destruição dos mesmos onverter valor guardar onversao Não havia preoupação em aessá-los e assoiá-los a outros objetos valor Fahrenheit mostrar valor onvertido valor Fahrenheit Diagrama de seq. projeto sd onverter -f Continuação slide anterior :meteorologista :CtrlConv ersao :IUConv ersao :Historio loop [!FIM] soliitarcelsius() :float Celsius? salvar() writeobjet ConversaoCF() onv :ConversaoCF adiionar(this) mostrar(onv.getfahr()) onv.fahr 2

Diagrama de lasses de análise Diagrama de lasses de projeto lass Classes de análise (assoiações) lass lasses onverter «boundary» IUConv ersao «ontrol» CtrlConversao ~ mostrar(float) : void ~ soliitarcelsius() : float «instantiate» «interfae» Serializable IUConversao CtrlConversao ConversaoCF pertene 0..0 «instantiate» «instantiate» :IUHistorio CtrlHistorio Historio «entity» ConversaoCF - elsius: float - Horario: Date + getfahr() : float 0..0 {ordered} «entity» Historio + adiionar(conversaocf) : void - writeobjet() : void Exemplo: realização 2 Diag. de seqüênia parial sd projeto asos de uso (web) Conversor C > F (WEB) «jsp page» :IUConversao «servlet» :CtrlConversao deployment projeto asos de uso :meteorologista Servidor WEB pág. onversão elsius POST elsius Nav egador N ConversaoCF(elsius) Navegador :Conv ersaocf Navegador 2 Navegador N- Refinar diagrama de lasses Dependênia Implementação de assoiações Dependênia Variável loal Parâmetro de operação (método) Instaniação Atributos indiam assoiação 3

Dependênia: exemplos lass Dependênia Implementação de assoiações unidireional : lass Classe ClasseA + operaao(classec) : void «loal» ClasseB ClasseA ClasseB «parameter» ClasseC «instantiate» ClasseD lass ClasseA { private ClasseB objb = new ClasseB(); // objb pode ser instaniado em outro loal // outros atributos // métodos } E se fosse bidireional? Implementação bidireional : Unidireional 0.. : 0..5.lass ClasseA { 2. Private ClasseB objb = new ClasseB(); // pode ser instaniado em outro loal 3. // outros atributos 4. // métodos 5.} 6.lass ClasseB { 7. Private Classe obja = new ClasseA(); // pode ser instaniado em outro loal 8. // outros atributos 9. // métodos 0.} lass 0.. leiona 0..5 Unidireional 0.. : 0..5 Implementação Unidireional 0.. : 0..5 Implementação 2.lass { 2. private [] disiplinas = { 3. new (), 4. new (), 5. new (), 6. new (), 7. New (), 8. }; 9.}.lass { 2. private [] disiplinas = new [5]; 3. publi void adiionars([] dis){ 4. // iniializar vetor disiplinas om parâmetro dis 5. } 6.} A instaniação pode oorrer em outros pontos da lasse lass leiona lass leiona 0.. 0..5 0.. 0..5 4

Multipliidade :* lass lasses Bidireional multipliidade *:* lass muitos para muitos * +emprega +partiipa Pessoa.lass { 2. private Vetor<> disiplinas = 3. new Vetor<>(5, ); 4. publi void adiionars([] dis){ 5. disiplinas.add(dis[0]); 6.... 7. } 8.}.publi lass { 2. publi Vetor<Pessoa> emprega; 3.... 4.} 5.publi lass Pessoa { 6. publi Vetor<> partiipa; 7.... 8.} Assoiações reflexivas Classes Assoiativas lass assoiação reflexiv a lass lasse assoiativa +temprerequisito +prerequisito +emprega +partiipa Pessoa *.publi lass { 2. publi Vetor<> temprerequisito; 3. publi Vetor<> prerequisito; 4.... 5.} Partiipaao - argahoraria: int - dataentrada: Date - datasaida: Date Equivale à... Classes Assoiativas (2) Classes Assoiativas (3) lass lasse assoiativa (proj) Proj eto Partiipaao possui partiipa - argahoraria: int - dataentrada: Date - datasaida: Date Implementação >>>> Pessoa.publi lass { 2. publi Vetor<Partiipaao> m_partiipaao; 3.... 4.} 5.publi lass Pessoa { 6. publi Vetor<Partiipaao> m_partiipaao; 7.... 8.} 9.publi lass Partiipaao { 0. private int argahoraria;. private Date dataentrada; 2. private Date datasaida; 3. publi projeto;// se relação for bidireional 4. Publi Pessoa pessoa; // se relação for bidireional 5.... 6.} 5

2. Agregação por omposição lass agregação por omposição HistorioPagsWeb URLVisitada - URL: String Implementação >>> Agregação por omposição (2).lass URLVisitada { 2. private String url; 3. 4. URLVisitada (String url) { 5. this.url = url; 6. } 7.} 8.lass Historio { 9. // ria três objetos da lasse URLVisitada 0. private URLVisitada[] historio = { // ou oleção. new URLVisitada("http://www.uol.om.br"), 2. new URLVisitada("http://www.terra.om.br"), 3. new URLVisitada("http://www.lemonde.fr"), 4. }; 5. 6.} Implementação >>> Agregação por omposição (3).lass Historio { Classe 2. private lass URLVisitada { aninhada 3. private String url; 4. URLVisitada (String umaurl) { 5. url = umaurl; 6. } 7.... 8. } 9. private Vetor<URLVisitada> historio = 0. new Vetor<URLVisitada>(4, 2);.... Agregação por assoiação Idem assoiação 3.} omo private, a URLVisitada só pode ser instaniada dentro do esopo do todo Realização Subsistemas e» «interfae» Serializable.publi interfae Serializable { 2.... 3.} 4.publi lass Histório implements Serializable { 5.... 6.} Comportamentos repetidos nos diagramas de seqüênia podem indiar subsistemas Ex: autentiação, aesso a dados «entity» Historio + adiionar(conversaocf) : void - writeobjet() : void 6

Subsistemas: definição Composto por outros elementos Paotes Classes Apresenta omportamento Subsistemas: representação UML lass subsistema «interfae» Faturamento + emitirfatura(pessoa, float) : void Íone para estereótipo <<Subsistema>> Faturamento Class3 Class4 COMPORTAMENTOS ASSOCIADOS À PERSISTÊNCIA Refinar o diagrama de lasses Isolar amada do modelo do BD Usar padrões Fatory Façade gateway 7