Aula 9 Fases do desenvolvimento de software UML Diagramas de classes Relações Diagramas de objectos Objectos ou instâncias Ligações 2002/2003 Programação Orientada para Objectos
Ideia do cliente 2002/2003 Programação Orientada para Objectos
Resultado da falta de planeamento 2002/2003 Programação Orientada para Objectos
Fases do desenvolvimento de software 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 2002/2003 Programação Orientada para Objectos
Diagramas em UML Estáticos: Casos de Utilização Sequência Colaboração 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 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
Característica com âmbito de classe Classes Forma Empregado ... + desenha(): string + nova(inout entrada: istream&): Forma* Empregado Empregado {abstract} Característica com âmbito de classe Empregado - nome_: string - sexo_: Sexo Empregado Atributos Atributos - nome_: string - sexo_: Sexo Empregado + nome(): string + salário(): double Operações + nome(): string + salário(): double Operações 2002/2003 Programação Orientada para Objectos
Notas, comentários e restrições Isto é uma nota. Notas Classe representando empregados… Empregado Restrições {Isto é uma restrição.} Racional «invariant» {denominador_ 0 mdc(numerador_, denominador_) = 1} - numerador_: int - denominador_: int 2002/2003 Programação Orientada para Objectos
Operações Programação Orientada para Objectos 2002/2003 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} + desenha(): string «update» + movePara(in posição: Posição) {isPolymorphic = false} + nova(inout entrada: istream&): Forma* + Racional(in numerador: int, in denominador: int) … «precondition» {denominador_ 0} 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 FormaComposta - formas [*]: Forma … - formas: vector<Forma*> … … … 2002/2003 Programação Orientada para Objectos
Relação de generalização Forma Círculo Rectângulo FormaComposta 2002/2003 Programação Orientada para Objectos
ListaDeInt::Iterador Relação de amizade ListaDeInt::Iterador ListaDeInt «friend» 2002/2003 Programação Orientada para Objectos
Relações de associação Composição Relação é composto por um Os tempos de vida dos objectos envolvidos estão relacionados 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 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 Chefe - empregados Empregado empregados * Empregado Chefe * Chefia 0..1 Chefia - empregados - chefe Empregado Chefe * - chefe Chefia 0..1 Chefe 0..1 - empregados - chefe Empregado Chefe * Chefia 0..1 2002/2003 Programação Orientada para Objectos
Agregação - frota Empresa Veículo 0..1 * 2002/2003 Programação Orientada para Objectos
Composição Forma - formas * {incomplete} FormaComposta 0..1 2002/2003 Programação Orientada para Objectos
Diagramas de objectos Objectos ou instâncias Ligações zé: Humano : Círculo : Humano zé : FormaComposta : Rectângulo zé: Humano {frozen} : Círculo : Racional numerador_ = 3 denominador_ = 2 2002/2003 Programação Orientada para Objectos