Aula 9 Fases do desenvolvimento de software UML Diagramas de classes Classes Relações Diagramas de objectos Objectos ou instâncias Ligações 1 2002/2003 Programação Orientada para Objectos Ideia do cliente 2 2002/2003 Programação Orientada para Objectos Resultado da falta de planeamento 3 2002/2003 Programação Orientada para Objectos Fases do desenvolvimento de software 4 Análise: identificação dos conceitos importantes e suas relações modelo de análise ou modelo conceptual Desenho: decisão dos conceitos identificados que serão modelados através de classes e suas relações modelo de desenho Implementação: implementação do modelo de desenho numa linguagem de programação 2002/2003 Programação Orientada para Objectos UML: Unified Modelling Language Grady Booch, Ivar Jacobson e James Rumbaugh Ferramenta importante de comunicação Um programa é um modelo simplificado Diagramas representam modelo simplificado 5 2002/2003 Programação Orientada para Objectos Diagramas em UML Estáticos: 6 De classes De objectos Casos de Utilização Sequência Colaboração Estado Actividade Implementação 2002/2003 Programação Orientada para Objectos Diagramas de classes 7 Representam as classes e as relações que existem entre elas Vários diagramas é melhor que apenas um: ênfase numa parte do modelo Domínio do problema: conceitos - modelo de análise Domínio da solução: classes - modelo de desenho Estáticos: as relações entre as classes não se alteram ao longo da execução do programa 2002/2003 Programação Orientada para Objectos Classes Forma Empregado ... + desenha(): string + nova(inout entrada: istream&): Forma* ... Empregado Empregado {abstract} Empregado - nome_: string - sexo_: Sexo Empregado Atributos Atributos - nome_: string - sexo_: Sexo Empregado + nome(): string + nome(): string + salário(): double 8 Característica com âmbito de classe + salário(): double Operações Operações 2002/2003 Programação Orientada para Objectos Notas, comentários e restrições Isto é uma nota. Notas Empregado Restrições Classe representando empregados… {Isto é uma restrição.} Racional - numerador_: int - denominador_: int 9 «invariant» {denominador_ 0 mdc(numerador_, denominador_) = 1} 2002/2003 Programação Orientada para Objectos Operações Empregado Empregado + nome(): string {query} + salário(): double {query} + nome(): string {query, isPolymorphic = false} + salário(): double {query} Forma Racional - posição_: Posição - numerador_: int - denominador_: int «constructor» + Forma(in posição: Posição) «destructor» + ~Forma() «query» + posição() {isPolymorphic = false} + Racional(in numerador: int, in denominador: int) … + desenha(): string «update» + movePara(in posição: Posição) {isPolymorphic = false} {denominador_ 0} + nova(inout entrada: istream&): Forma* 10 «precondition» 2002/2003 Programação Orientada para Objectos Atributos PilhaFixaDe100Int PilhaFixaDe100Int - número_de_itens: int = 0 - número_máximo_de_itens: int = 100 {frozen} - itens [número_de_itens]: int - número_de_itens: int = 0 - número_máximo_de_itens: int = 100 {frozen} - itens: int[número_máximo_de_itens] … … FormaComposta 11 FormaComposta - formas [*]: Forma … - formas: vector<Forma*> … … … 2002/2003 Programação Orientada para Objectos Relação de generalização Forma Círculo 12 Rectângulo 2002/2003 FormaComposta Programação Orientada para Objectos Relação de amizade ListaDeInt 13 «friend» 2002/2003 ListaDeInt::Iterador Programação Orientada para Objectos Relações de associação Composição Agregação Relação parte/todo ou possui um Pode implicar o controlo do tempo de vida de um objecto por outro Associação simples 14 Relação é composto por um Os tempos de vida dos objectos envolvidos estão relacionados Não há conceito de posse Os tempos de vida dos objectos ligados entre si são independentes 2002/2003 Programação Orientada para Objectos Associação simples Empregado Empregado Chefe empregados * Chefia Empregado chefe Chefe - empregados * 0..1 Chefia Empregado - empregados * Chefia - chefe Chefe 0..1 - chefe Chefe 0..1 Empregado 15 - empregados * Chefia - chefe Chefe 0..1 2002/2003 Programação Orientada para Objectos Agregação - frota Empresa 0..1 16 Veículo * 2002/2003 Programação Orientada para Objectos Composição Forma - formas * {incomplete} FormaComposta 0..1 17 2002/2003 Programação Orientada para Objectos Diagramas de objectos Objectos ou instâncias Ligações zé: Humano : Humano : Círculo zé : FormaComposta : Rectângulo zé: Humano {frozen} : Círculo : Racional numerador_ = 3 denominador_ = 2 18 2002/2003 Programação Orientada para Objectos