Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Fases do desenvolvimento de software UML
Aula 9 Fases do desenvolvimento de software UML
2
Ideia do cliente 2003/2004 Programação Orientada para Objectos
3
Resultado da falta de planeamento
2003/2004 Programação Orientada para Objectos
4
Cuidado! Tal como não faz sentido que o arquitecto comece o seu trabalho assentando tijolos no edifício final sem antes o ter projectado, também não faz qualquer sentido uma empresa de desenvolvimento de software começar a resolver um problema escrevendo linhas de código 2003/2004 Programação Orientada para Objectos
5
Fases do desenvolvimento de software
Análise Identificação dos conceitos importantes e suas relações Resultado: 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 Resultado: modelo de desenho Implementação Implementação do modelo de desenho numa linguagem de programação Resultado: programa 2003/2004 Programação Orientada para Objectos
6
Processo iterativo Análise Desenho Implementação
2003/2004 Programação Orientada para Objectos
7
Outras fases do processo de desenvolvimento de software
Especificação de requisitos Análise Desenho Implementação Teste Implantação Manutenção 2003/2004 Programação Orientada para Objectos
8
Criatividade A criatividade é uma qualidade importante no desenvolvimento de software Deve utilizar-se no desenvolvimento da solução Não na forma como a solução é escrita ou apresentada 2003/2004 Programação Orientada para Objectos
9
Programa Um programa é um modelo simplificado de parte do mundo
Uma solução só deve ser complexa se não existir uma solução mais simples 2003/2004 Programação Orientada para Objectos
10
UML: Unified Modelling Language
Linguagem gráfica de modelação Grady Booch Ivar Jacobson James Rumbaugh Diagramas representam modelo simplificado Ferramenta importante de comunicação 2003/2004 Programação Orientada para Objectos
11
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 2003/2004 Programação Orientada para Objectos
12
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 2003/2004 Programação Orientada para Objectos
13
Classes Língua natural Nome comum: “humano” UML C++ Classe concreta.
class Humano { // … }; Empregado Classe concreta. Humano Empregado Classe abstracta. Classe abstracta. Empregado {abstract} 2003/2004 Programação Orientada para Objectos
14
Características de uma classe
Conjunto das operações e dos atributos de uma classe Empregado Empregado Atributos - nome_: string - sexo_: Sexo - nome_: string - sexo_: Sexo + nome(): string + salário(): double Operações Empregado + nome(): string + salário(): double 2003/2004 Programação Orientada para Objectos
15
Características de uma classe
Visibilidade +, características públicas #, características protegidas -, características privadas 2003/2004 Programação Orientada para Objectos
16
Características de uma classe
Forma … + desenha() + nova(inout entrada: ifstream&): Forma* Característica com âmbito de instância. Característica com âmbito de classe, Em C++: class Forma { public static Forma* nova(ifstream& entrada); // … }; 2003/2004 Programação Orientada para Objectos
17
Notas, comentários e restrições
Isto é uma nota. Classe representando empregados… Empregado Restrições {Isto é uma restrição.} Racional «invariant» {denominador_ 0 mdc(numerador_, denominador_) = 1} - numerador_: int - denominador_: int 2003/2004 Programação Orientada para Objectos
18
Operações Cada linha corresponde a uma operação
nome_de_função(lista_de_parâmetros): tipo_de_devolução nome_de_procedimento(lista_de_parâmetros) 2003/2004 Programação Orientada para Objectos
19
Operações: parâmetros
tipo_de_passagem nome: tipo Tipo de passagem in: alterações ao parâmetro feitas pelo método que implementa a operação não se reflectem no valor do respectivo argumento inout: valor inicial do parâmetro é importante e, além disso, alterações ao parâmetro feitas pelo método que implementa a operação reflectem-se no valor do respectivo argumento out: valor inicial não é importante (ou não existe de todo), mas valores atribuídos ao parâmetro pelo método que implementa a operação reflectem-se no valor do respectivo argumento 2003/2004 Programação Orientada para Objectos
20
Operações Operações inspectoras. Construtores. Inspectores.
Empregado Operações inspectoras. + nome(): string {query} + salário(): double {query} Forma - posição_: Posição «constructor» + Forma(in posição: Posição) «query» + posição(): Posição {isPolymorphic = false} + desenha() «update» + movePara(in posição: Posição) + nova(inout entrada: ifstream&): Forma* Construtores. Inspectores. Modificadores. 2003/2004 Programação Orientada para Objectos
21
Operações: PC e CO Racional - numerador_: int - denominador_: int
«precondition» {denominador 0} + Racional(in numerador: int, in denominador: int) … 2003/2004 Programação Orientada para Objectos
22
Métodos Racional - numerador_: int - denominador_: int …
+ numerador(): int {query} { return numerador_; } 2003/2004 Programação Orientada para Objectos
23
Atributos Especificação Multiplicidade nome: tipo
nome [multiplicidade]: tipo nome: tipo = valor_inicial Multiplicidade n - um número fixo n de valores n..m - de n a m valores * - um número arbitrário de valores n..* - pelo menos n valores 2003/2004 Programação Orientada para Objectos
24
Atributos PilhaFixaDe100Int - número_de_itens: int = 0
- número_máximo_de_itens: int = 100 {frozen} - itens [número_de_itens]: int … PilhaFixaDe100Int - número_de_itens: int = 0 - número_máximo_de_itens: int = 100 {frozen} - itens: int[número_máximo_de_itens] … 2003/2004 Programação Orientada para Objectos
25
Atributos Implementação: FormaComposta - formas [*]: Forma … …
- formas: vector<Forma*> … Implementação: class FormaComposta: public Forma { public: … private: vector<Forma*> formas; }; … 2003/2004 Programação Orientada para Objectos
26
Relação de generalização
Relação é um Forma Círculo Rectângulo FormaComposta 2003/2004 Programação Orientada para Objectos
27
Relação de generalização: exemplos
Língua natural "Um humano é um mamífero.", ou "Qualquer humano é um mamífero.". UML C++ class Humano : public Mamífero { // … }; Mamífero Humano 2003/2004 Programação Orientada para Objectos
28
Relação de generalização: exemplos
Língua natural "Um hidroavião é um avião e é também um veículo naval.", ou "Qualquer hidroavião é um avião e é um veículo naval.". UML C++ class Hidroavião : public Avião, public VeículoNaval { // … }; Avião VeículoNaval Hidroavião 2003/2004 Programação Orientada para Objectos
29
ListaDeInt::Iterador
Relação de amizade Menos forte que generalização Mais forte que associação «friend» ListaDeInt ListaDeInt::Iterador Dependência. 2003/2004 Programação Orientada para Objectos
30
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 2003/2004 Programação Orientada para Objectos
31
Associação simples Empregado Chefe Empregado Chefe Chefia * 0..1
empregados chefe Empregado Chefe Chefia * 0..1 - empregados - chefe Empregado Chefe Chefia * 0..1 - empregados - chefe 2003/2004 Programação Orientada para Objectos
32
Associações e outras… - empregados Empregado * Chefia - chefe Chefe
0..1 2003/2004 Programação Orientada para Objectos
33
Associação simples Língua natural UML C++
"Qualquer empregado é chefiado por (tem [fraco]) no máximo um chefe." UML C++ class Empregado { // … private: Chefe* chefe; }; - chefe Empregado Chefe ÉChefiadoPor 0..1 2003/2004 Programação Orientada para Objectos
34
Agregação Especificada por losango vazio - frota Empresa Veículo 0..1
* 2003/2004 Programação Orientada para Objectos
35
Agregação Língua natural UML C++
"Uma empresa possui (tem [médio]) um número arbitrário de veículos." UML C++ class Empresa { // … private: list<Veículo*> frota; }; - frota Empresa Veículo 0..1 * 2003/2004 Programação Orientada para Objectos
36
Composição Especificada por losango preenchido Forma - formas *
{incomplete} FormaComposta 0..1 2003/2004 Programação Orientada para Objectos
37
Composição Língua natural UML C++
"Um humano é composto por (tem [forte]) uma cabeça e dois braços." UML C++ class Humano { // … private: Cabeça cabeça_; Braço braços[2]; }; - cabeça Humano Cabeça 1 - braços Braço 2 2003/2004 Programação Orientada para Objectos
38
Diagramas de objectos Mostram como as instâncias das classes, ou seja, os objectos, se ligam entre si no sistema em execução num dado instante de tempo Estáticos: dizem respeito ao estado do programa 2003/2004 Programação Orientada para Objectos
39
Objectos Objecto sem nome associado.
zé: Humano Objecto sem nome associado. : Humano Objecto cuja classe pode ser inferida. zé zé: Humano {frozen} Constante. Estado do objecto. : Racional numerador_ = 3 denominador_ = 2 2003/2004 Programação Orientada para Objectos
40
Ligações : Círculo : FormaComposta : Rectângulo : Círculo : Círculo
2003/2004 Programação Orientada para Objectos
41
Aula 9: Sumário Fases do desenvolvimento de software UML
Diagramas de classes Classes Relações Diagramas de objectos Objectos ou instâncias Ligações 2003/2004 Programação Orientada para Objectos
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.