640 likes | 670 Views
UML – Unified Modeling Language. Tópicos abordados. Diagramas e elementos UML relacionados a fase de Análise & Projeto Diagrama de Classes Diagrama de Estados Diagrama de Interações Diagrama de Componentes Modelagem dos conceitos OO em UML. Objetivos. Mapear os conceitos de OO em UML
E N D
Tópicos abordados • Diagramas e elementos UML relacionados a fase de Análise & Projeto • Diagrama de Classes • Diagrama de Estados • Diagrama de Interações • Diagrama de Componentes • Modelagem dos conceitos OO em UML
Objetivos • Mapear os conceitos de OO em UML • Ser capaz de modelar um sistema usando UML
O que é a Unified Modeling Language (UML)? • A UML combina o melhor de • Modelagem de Dados • Modelagem de Negócios • Modelagem de Objetos • Modelagem de Componentes • A UML é a linguagem padrão para visualizar, especificar, construir e documentar artefatos de um sistema de software
Nov ‘97 UML aprovada pelo OMG História da UML
Modelagem Visual • Modelagem Visual permite que você construa da forma correta na primeira vez: • Entender os requisitos do usuário • Validar que o design atende as necessidades • Visualizar interface, lógica de negócio e dados separadamente • Separar domínios de negócio conforme apropriado • Vizualizar todas as dependências • Validar performance antes do código começar
Requisitos e Modelos de Negócio HTMLCGIXMLJavaScript Analista de Negócios Desenvolvedor de Conteúdo Web Todos! Modelos de SW Java, C++, etc. Modelos de Dados Engenheiro de Software Projetista de Banco de Dados Quem deve modelar?
Conceitos da UML • A UML pode ser usada para modelar visualmente: • A interação de sua aplicação com o mundo externo • O comportamento de sua aplicação • A estrutura de seu sistema • Os componentes de seu sistema • A arquitetura de sua empresa
Diagramas UML • Digrama de classes • Diagrama de casos de uso • Diagrama de componentes • Diagrama de distribuição • Diagrama de estados • Diagrama de atividades • Diagrama de interação • Diagrama de seqüência • Diagrama de colaboração
JanelaMatricula 0..* 1 GerenciadorMatricula AlgoritmoCalendario 1 Curso 0..* UsuarioMatricula adAluno(Curso, AlunoInfo) nome numCreditos nome 1 aberto() Aluno 3..10 adAluno(AlunoInfo) dataGraduacao 1..* 4 Professor CursoOferecido 1 0..4 classificacao localizacao aberto() adAluno(AlunoInfo) Diagrama de classes • Um diagrama de classes mostra a estrutura de seu software
Professor Classe em UML • Classe é representada usando-se um retângulo
Atributo em UML Objeto : Professor titulo = “Mestre” Nome = “Gibeon” Valor do Atributo Classe Professor titulo nome : Professor titulo = “PhD” nome = “Ivan” Nome do Atributo
Operação em UML Professor Especificação das operações criar() atribuirDisc() getTitulo() getNome()
Resumo de classes • Uma classe é composta por três seções DVD Nome da Classe Hora Status Atributos estrutura Operações Voltar() Pausar() Adiantar() Parar() Tocar() comportamento
Cubo Tubo Piramide Interface em UML (Canônica) <<interface>> Forma Desenhar Mover Rotacionar Relacionamentos de realização
Piramide Cubo Interface em UML (Icônica) Tubo Forma Relacionamentos de realização
Pacote em UML • Favorece a modularidade • Pode ser aplicado para modularizar outros elementos de UML nome do pacote
Relacionamentos • Associação • agregação • composição • Dependência • Generalização • Realização
Associação • Modela a conexão semântica entre classes Nome da associação Professor Universidade Trabalha para Associação Papéis Classe Professor Universidade Empregador Empregado
Agregação • Uma forma especial de associação que modela um relacionamento todo-parte entre um agregado (todo) e suas partes Todo Parte Agregação Estudante Disciplina
Composição • Uma forma de agregação com uma relação de posse forte • As partes não vivem sem o todo Todo Parte Composição Estudante Disciplina
Na dúvida, use agregação! Na dúvida, use associação! Associação x Agregação x Composição • Como você modelaria: • Dependente e Funcionário? • Pedido e Item do pedido? • Funcionário e Cartão de ponto? • Carro, Roda, Direção e Carburador?
Exercicios • Identificar os relacionamentos do sistema de reserva
Multiplicidade • Multiplicidade define quantos objetos participam do relacionamento • O número de instâncias de uma classe relacionada a uma instância de outra classe • Especificado em cada uma das pontas da associação
1 0..* * 1..* 0..1 2..4 2, 4..6 Tipos de Multiplicidade • Não especificada • Exatamente um • Zero ou mais • Muitos (mesmo que 0..*) • Um ou mais • Zero ou um • Intervalo determinado • Valores múltiplos
Exemplo: Multiplicidade Multiplicidade Disciplina Estudante 1 1..*
Navegação • Especifica a direção da associação • Associações e agregações são bidirecionais por default
Exemplo: Navegação Disciplina Estudante 1 1..* Navegação
Exercicios • Identificar navegação e multiplicidade
Dependência • Uma dependência entre dois elementos indica que mudança em um elemento pode causar mudanças no outro • Relacionamento não estrutural (uso) • mais fraco que associação Cliente Fornecedor Relacionamento de Dependência
Dependência na prática (OO) • Parâmetros de entrada de métodos • Tipos de retorno de métodos • Utilização dentro do código de métodos • Exceções lançadas
Dependência em Java class Log { ... void gravar(){ Arquivo a =...; a.escrever(...); } }
Cliente Fornecedor Dependência • Pode existir relacionamento de dependência entre vários elementos de UML Classe Componente Cliente Fornecedor Pacote PacoteCliente PacoteFornecedor Dependência
Generalização • Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classes • Relacionamento “é um tipo de”
Herança Simples • Uma classe herda de uma outra Figura cor largura da linha desenhar() selecionar() Superclasse (pai) Relacionamento de Generalização Retângulo vertices desenhar() diagonal() Círculo raio centro desenhar() Subclasses
Mamífero AnimalVoador Cachorro Gaviao Gato Morcego Passarinho Herança Múltipla • Classes herdando de mais de uma classe Herança múltipla
Herança Múltipla • O que acontece quando as superclasses possuem o mesmo método (métodos com o mesmo nome? • O que acontece quando se tenta executar um método que não está definido na subclasse? Em que hierarquia de superclasses deve-se procurar o método?
Componente Classe Subsistema Caso de uso Realização de Caso de uso Realização • Indica que um elemento serve como contrato que o outro deve seguir Realização
Objeto em UML : Professor Apenas o nome da classe gibeon Apenas o nome do objeto gibeon : Professor Nome da classe e do objeto
Adiciona Aluno[ contador < 10 ] Adiciona Aluno / contador = 0 Inicializado Aberto do: Incializa Curso Cancel Cancela [ contador = 10 ] Cancelado do: Notifica Alunos Fechado Cancela do: Finaliza curso Diagrama de estados Um diagrama de estados mostra o ciclo de vida de um objeto
Diagrama de componentes • Diagramas de Componentes ilustram a organização e dependências entre componentes de software
O que são componentes • Parte não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) interface(s) • Exemplos • um código fonte • um componente de tempo de execução • um componente executável
Componente em UML <<EXE>> Arquivo executável <<DLL>> Componente Arquivo fonte • Interface do • Componente
Matricula.exe Cobranca.exe Sistema Cobranca Pessoa.dll Usuario Curso.dll Curso Exemplo de Diagrama de componentes
Subsistemas • Uma combinação de pacotes (pode conter outro elementos) e classe (tem comportamento) • Realiza uma ou mais interfaces, que definem o seu comportamento • Facilita o encapsulamento e a modularidade
Subsistema em UML Realização Subsistema <<subsystem>> Nome do subsistema Interface
Subsistemas e Componentes Projeto • Ambos encapsulam um comportamento modelado por interfaces • Subsistemas representam componentes no modelo de projeto • Componentes são a realização física dos subsistemas <<subsystem>> Nome do subsistema Implementação Nome do componente
Diagramas de Interação • Modelam interações do sistema com seus atores • A interação é iniciada por um ator e envolve instâncias (objetos) das classes • Diagramas de interação capturam a semântica do fluxo de eventos do caso de uso • Auxiliam a identificar classes, responsabilidades e relacionamentos