Unified Modeling Language (UML)

Documentos relacionados
Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Linguagem de Modelagem Unificada UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

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

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

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

Engenharia de Software II e III - Material para estudo Diagrama de Classe

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Requisitos de sistemas

Diagrama de Classes. Classes. Relacionamentos. Atributos Métodos. Associação. Generalização Dependência Realização. Agregação Composição

Introdução. Pacote. Classe. UML Diagrama de. Atributo. Classes. Método. Prof. Dr. Enzo Seraphim. Visibilidade

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Linguagem de Programação. Diagrama de classes

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

UML LINGUAGEM DE MODELAGEM UNIFICADA Diagrama de Classes

Programação Orientada a Objetos JAVA - NETBEANS

UML. Diagrama de Classe

Programação Orientada a Objetos Relacionamentos entre classes

UML - Linguagem de Modelagem Unificada

Panorama da notação UML

Requisitos de Sistemas

UML. Adriano J. Holanda 21/3/

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Modelagem de dados usando o modelo Entidade- Relacionamento (ER)

Daniel Wildt

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

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

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

Introdução a UML e seus diagramas

Engenharia de Software Orientada a Objetos - OOSE. Método de Jacobson

UML. Trabalho Análise e Projeto de Sistemas. Aluna: Luana Alves Businaro

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas:

Análise e Projeto de Sistemas

PROGRAMAÇÃO ORIENTADA A

Engenharia de Software

Modelagem de Processos

DIAGRAMAS DE CLASSE UML

Orientação a Objetos e UML

Análise Orientada a Objetos. Análise Orientada a Objetos; O Paradigma de Objetos; A UML.

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

UML (Unified Modelling Language)

UML. Diagrama de Classes

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

Modelo Conceitual. Análise e Projeto de Sistemas Avançados. Aula 5. Allan Rodrigo Leite

Diagramas de Classes. Diagramas de Classes. Diagramas de Classes. Análise e Projeto de Sistemas OO

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

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

ASSOCIAÇÃO ENTRE CLASSES

APÊNDICE D Unified Model Language (UML)

Programação Orientada a Objetos

UML Diagrama de Classes

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Análise de Sistemas. Visão Geral - Orientação a Objetos. Prof. José Honorato Ferreira Nunes

Introdução à Análise e Projeto de Sistemas

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Complexidade do Software

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Diagrama de Casos de Uso

MODELAGEM DE DADOS MÓDULO III - UNIDADE V- MAPEAMENTO OBJETO RELACIONAL

12/03/16. Generalização. Associação. Agregação UML Relações. entre Classes. Composição. Prof.Dr. Enzo Seraphim. Dependência

Princípios de Análise e Projeto Orientados a Objetos com UML

ENGENHARIA DE SOFTWARE. Aula 10 Introdução ao Diagrama de Classes

Orientação a Objetos (OO)

Modelagem Orientada a Objeto

Engenharia de Software. UML Unified Modeling Language

MAPEAMENTO OBJETO RELACIONAL. Professora Lucélia Oliveira

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

Alguns Exercícios Resolvidos

PCS3413 Engenharia de Software e Banco de Dados

UML: Introdução. História Visão geral Modelo conceitual da UML. Bibliografia. UML: introdução

A linguagem de modelagem UML

POO29004 Programação Orientada a Objetos

Engenharia de Software

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

UML Relacionamentos. Relacionamento é uma conexão entre itens A maioria dos itens relacionam-se entre si. Quatro tipos de relacionamentos:

Banco de Dados I Generalização/Especialização

Transcrição:

SCC0504 Programação Orientada a Objetos Unified Modeling Language (UML) Luiz Eduardo Virgilio da Silva ICMC, USP Material baseado nos slides dos professores: José Fernando Rodrigues Jr (ICMC/USP) 1

Sumário Histórico da UML Diagrama de classes Representação de classes Atributos e métodos Tipos de acesso e modificadores Relacionamentos entre classes Herança, Implementação, Associação, Agregação e Composição 2

UML UML (Linguagem de Modelagem Unificada) é uma linguagem visual Análise e projeto de sistemas computacionais no paradigma de Orientação a Objetos Nos últimos anos, a UML se tornou a linguagem padrão de projeto de software, adotada internacionalmente pela indústria de Engenharia de Software 3

UML UML não é uma linguagem de programação É uma linguagem de modelagem, utilizada para representar o sistema de software sob os seguintes aspectos: Requisitos Comportamento Estrutura lógica Dinâmica de processos Comunicação/Interface com os usuários 4

UML Por que modelar um sistema? Um sistema computacional é, de modo geral, excessivamente complexo Necessário decompô-lo em pedaços compreensíveis Criação de diagramas auxiliam no entendimento do problema Linguagem única que permite a todos os desenvolvedores entender quais objetos fazem parte do sistema e como eles se comunicam 5

UML A UML surgiu da união de outras três linguagens de modelagem: O método de Booch (Grady Booch, Rational Software Corporation) O método OMT (Object Modeling Technique, Ivar Jacobson, Objectory) Método OOSE (Object-Oriented Software Engineering, James Rumbaugh, General Eletrics) Até meados da década de 90, estas eram as três linguagens de modelagem mais populares entre os profissionais de ES. 6

UML Em meados da década de 90, os criadores destas três linguagens se reuniram para criar uma linguagem unificada, mais concreta e madura 7

Objetivo da UML O objetivo da UML é fornecer múltiplas visões do sistema que se deseja modelar Estas várias visões são representadas pelos diferentes diagramas UML Cada diagrama analisa o sistema sob um determinado aspecto É possível ter enfoques mais amplos (externos) ou mais específicos (internos) 8

Vantagens e Desvantagens da UML Perdas Maior trabalho na modelagem Mais tempo gasto Ganhos Menos trabalho na construção (implementação) A solução está pronta Menos tempo gasto Os problemas são encontrados em tempo hábil para sua solução As dúvidas são sanadas mais cedo e são levantadas em sua totalidade 9

Diagramas da UML Diagrama de Classes Diagrama de Objetos Diagrama de Componentes Diagramas de Estruturas Diagrama de Casos de usos Diagrama de Sequências Diagrama de Colaboração Diagrama de Estado Diagramas de Comportamento Diagrama de Atividades 10

Diagrama de classes O diagrama de classes é um dos mais importantes e mais utilizados da UML Representação das principais classes Atributos e Métodos Relacionamento entre as classes Uma visão estática do sistema 11

Diagrama de classes Na UML, uma classe possui a notação de um retângulo dividido em três partes Nome da classe Atributos da classe Métodos da classe cpf: String nome: String telefone: String datanasc: Date Cliente consultar(cpf:string): boolean calculaidade(dn:date): int 12

Diagrama de classes Representação de atributos visibilidade nome : tipo = valor inicial {propriedades} Visibilidade: public (+), private (-), protected (#) Tipo do atributo: int, double, String, Date,... Valor inicial: definido no momento da criação do objeto Propriedades: final, estatic,... Exemplos: - nomefunc:string = null + PI:double = 3.1415 {final} 13

Diagrama de classes Representação de métodos visibilidade nome(tipo) : tipo {propriedades} Visibilidade: public (+), private (-), protected (#) Tipo do atributo: int, double, String, Date,... Tipo de retorno: int, double, String, Date,... Propriedades: final, abstract,... Exemplos: + getname():string {abstract} + calcarea(shape):double + pow(double,double):double {final} 14

Relacionamento Entre Classes 15

Relacionamento entre classes Em UML é possível representar o relacionamento entre as classes Vamos abordar as principais representações Tipos de conexões É uma parte do diagrama de classes 16

Relacionamento entre classes Generalização (herança) é um Implementação (realização) Aplicada para interfaces Associação (dependência) usa Agregação é parte de (possui) Objeto ainda faz sentido mesmo sem a existência da agregação Composição é parte essencial de (é dono de) Objeto não faz sentido sem a composição 17

Relacionamento entre classes 18

Generalização Representa relacionamentos do tipo é um Herança Ex: um cachorro é um mamífero Generalização/especialização A partir de duas ou mais classes, abstrai-se uma classe mais genérica De uma classe geral, deriva-se uma mais específica Sub-classes possuem todas as propriedades das superclasses Deve existir pelo menos uma propriedade que distingue duas classes especializadas Caso contrário, não há necessidade 19

Generalização No diagrama de classes A generalização é representada com uma seta do lado da classe mais geral (classe base) 20

Generalização Exemplo Classe base Generalização Especialização (herança) Classes derivadas Especializações 21

Generalização Exemplo 22

Generalização Permite organizar as classes hierarquicamente Técnica de reutilização de software Novas classes são criadas a partir de classes existentes, absorvendo seus atributos e comportamentos (métodos) Recebe novos recursos posteriormente 23

Generalização Exemplo de hierarquia de classes Animal peso crescer comer Peixe comer nadar Mamífero comer andar mamar Ave comer voar primata marsupial homem gorila canguru 24

Generalização Exemplo de hierarquia de classes Animal peso crescer comer Todos os animais crescem do mesmo jeito o método só precisa aparecer na classe mais geral Peixe comer nadar Mamífero comer andar mamar Ave comer voar primata marsupial homem gorila canguru 25

Generalização Exemplo de hierarquia de classes Todos os animais comem, mas cada tipo de animal come de um jeito diferente O método comer pode ser uma operação abstrata na classe base, que aparece concretamente nas derivadas Animal peso crescer comer Peixe comer nadar Mamífero comer andar mamar Ave comer voar primata marsupial homem gorila canguru 26

Implementação Interfaces estabelecem um contrato entre os objetos Definição dos métodos pertencentes àquele contrato Interfaces não podem ser instanciadas Não são classes comuns Em classes, podemos usar herança Em interfaces, utiliza-se a implementação 27

Implementação Em UML, interfaces são definidas de forma similar às classes Diferenciadas com uma marcação de interface Implementação é parecida com a herança 28

Implementação Quando uma classe herda outra classe, a implementação dos métodos é herdada Quando uma classe implementa uma interface, os métodos definidos na interface precisam ser implementados Em geral, não há implementação em uma interface, só definição Todos os métodos da interface precisam necessariamente ser escritos pela classe que implementa a interface 29

Implementação 30

Implementação Poderíamos usar herança? Qual a vantagem? Qual a relação entre as classes? 31

Relacionamentos Os relacionamentos são caracterizados por Nome Descrição do relacionamento Em geral usa-se um verbo Faz, tem, possui Navegabilidade Indicada por uma seta no fim do relacionamento Uni (uma flecha) ou bidirecional (sem flechas/duas flechas) Multiplicidade Quantidade de elementos que cada relacionamento pode assumir 0..1, 0..*, 1, 1..*, 2, 3..7 32

Relacionamentos 33

Nome do relacionamento Nomear um relacionamento facilita o entendimento Nome do relacionamento (rótulo) é colocado ao longo da linha de associação Professor 3..50 Aluno dá aula para 34

Navegabilidade Navegabilidade indica a direcionalidade com que as classes se relacionam Ambas as classes se relacionam (sabem da existência uma da outra) B não sabe da existência de A A não sabe da existência de B A A A A B B B B 35

Multiplicidade Multiplicidade é o número de instâncias de uma classe relacionada com uma ou mais instâncias de outra classe Exemplo: Professor e Aluno Cada Professor pode interagir com 3 a 50 Alunos Cada Aluno pode interagir com apenas um Professor Pensando em um único curso Professor 1 3..50 Aluno interage 36

Multiplicidade Muitos * Exatamente um 1 Zero ou mais 0.. * Um ou mais 1.. * Zero ou um 0..1 Faixa especificada 2..4 37

Multiplicidade Exemplos Uma mesa de restaurante pode ter vários ou nenhum pedido *..0 Uma cotação pode incluir no mínimo 1 e até muitos (*) itens cotados 1..* Uma casa pode ter de 0 a 3 funcionários 0..3 38

Associação simples É a forma mais fraca de relacionamento entre classes As classes que participam desse relacionamento são independentes São representadas como linhas conectando as classes participantes Podem ter um nome identificando a associação Podem ter uma seta junto ao nome indicando que a associação somente pode ser utilizada em uma única direção (o mais usual e adequado) Representa relacionamentos usa um Pessoa usa um Carro 39

Associação simples Na implementação ObjetoA usa ObjetoB quando o ObjetoA chama um método público do ObjetoB Associação simples também é chamada de dependência Diagramas de dependência são os primeiros diagramas usado para compreender um código que não é seu 40

Associação simples Exemplo Um Passageiro pode viajar para qualquer lugar, dependendo de qual Avião ele entrar Para que um Passageiro viaje, ele precisa apenas de uma indicação de qual Avião ele deve entrar. Ele não precisa ter como parte de sua informação (atributo) a referência a um Avião. Passageiro Viaja 1 Aviao Leitura unidirecional Um Passageiro viaja em um Avião 41

Associação simples Exemplo bidirecional Professor 1..* 1..* Ministra Disciplina 1..* Cursa 10..* Aluno 42

Associação simples Exemplo bidirecional Professor 1..* 1..* Ministra Disciplina Leitura bidirecional: - Um professor ministra 1 ou mais disciplinas - Uma disciplina é ministrada por 1 ou mais professores - Uma disciplina é cursada por 10 ou mais alunos - Um aluno cursa 1 ou mais disciplinas 1..* 10..* Cursa Aluno 43

Associação simples Outro exemplo Imagine um objeto gráfico que se auto-desenha. O objeto sabe como se desenhar, mas precisa de acesso a funcionalidade gráficas exclusivas de componentes gráficos do sistema. Para se desenhar, o objeto gráfico deve receber como parâmetro um componente gráfico em seu método autodesenho(compgrafico comp). Ele irá apenas usar a classe CompGráfico, sem contudo ser composto por ela. Objeto gráfico Usa 1 Componente Gráfico 44

Agregação/Composição São também formas de associação, mas representam relacionamentos do tipo tem um Uma classe é formada por ou contém objetos de outras classes Exemplos Um carro possui rodas Uma árvore é composta de folhas, tronco, raízes,... Um computador é composto de CPU, memória, teclado, mouse, monitor,... 45

Agregação/Composição Classe todo É a classe resultante da agregação/composição Classe parte É a classe cujas instâncias formam a agregação/composição Exemplo de composição: Predio e Apartamento Um prédio tem apartamentos Classe Predio: todo ou agregada Classe Apartamento: parte 46

Composição Predio 12 Apartamento Classe todo Classe parte Prédio tem como atributo um conjunto (array) de apartamentos Se o prédio deixar de existir, os apartamentos também deixam de existir Segundo a cardinalidade, um prédio precisa ter obrigatoriamente 12 (exatos) apartamentos 47

Composição Na composição, o todo é responsável pelo ciclo de vida da parte. Também se diz que o todo é dono da parte, e não apenas possui a parte Assim, em composição, a criação da parte ocorre no todo. 48

Agregação Agregação é uma forma mais fraca de composição Composição: relacionamento todo-parte em que as partes não podem existir independentes do todo Se o todo é destruído, as partes são destruídas também Uma parte pode ser de um todo por vez Agregação: relacionamento todo-parte que não satisfaz um ou ambos os critérios A destruição do objeto não implica a destruição do objeto parte Um objeto pode ser parte componente de vários outros objetos 49

Agregação/Composição No diagrama de classes Composição Associação representada com um losango sólido do lado todo Todo Parte Agregação Associação representada com um losango sem preenchimento do lado todo Todo Parte 50

Composição composição Árvore 1..* 1..* 1 Folha Raiz Tronco Não faz sentido que Folha, Raiz ou Tronco existam sem que sejam atributos de uma Árvore Neste modelo em particular Partes Ainda segundo o diagrama, não pode haver uma Árvore sem Folha, Raiz ou Tronco (cardinalidade) 51

Composição composição Árvore 0..* 0..* 1 Folha Raiz Tronco Partes Agora pode haver uma Árvore sem Folha e sem Raiz, mas não sem Tronco 52

Composição Não faz sentido que um Dedo exista se não for parte de uma Mão Segundo a cardinalidade, não pode haver uma mão sem dedos Todo mão tem exatos 5 Dedos Dedo 5 Mão 53

Composição Não faz sentido que um Dedo exista se não for parte de uma Mão Na definição de agora, uma mão pode não ter dedos Cardinalidade mínima é 0 e máxima é 5 Dedo 0..5 Mão 54

Agregação Uma Rede pode ter nenhum ou muitos Computadores Um computador existe independentemente de uma rede Um computador pode estar ligado a mais de uma rede ao mesmo tempo Rede de Computadores 0..* Computador 55

Agregação Um Livro existe independente de um Empréstimo Porém, um Empréstimo precisa ter pelo menos um Livro Empréstimo 1 Livro 56

Composição/Agregação Quando usar composição ou agregação? Pessoa 1 Endereço de contato Pessoa OU? 1 Endereço de contato 57

Composição/Agregação Quando usar composição ou agregação? Depende dos requisitos do projeto Deve-se interpretar o problema e justificar a escolha Pessoa 1 Endereço de contato OU Pessoa 1 Endereço de contato 58

Composição Um Pedido é composto por um ou vários ItemPedido Pela cardinalidade, um Pedido precisa ter ao menos um ItemPedido Composição indica que ItemPedido só existe com Pedido 1..* 59

Composição Um Pedido é composto por um ou vários ItemPedido Agora, um Pedido pode não ter ItemPedido Contudo, a composição continua indicando que ItemPedido só existe com Pedido 0..* 60

Agregação Um Time é formado por Atletas Pela cardinalidade, um Time pode existir mesmo que não haja Atleta neste time Agregação indica que Atleta existe independente da existência de um Time 0..* 61

Agregação Um Time é formado por Atletas Agora, um Time precisa conter pelo menos um Atleta Contudo, a agregação continua indicando que Atleta existe independente da existência de um Time 1..* 62

Agregação/Composição A semântica (significado) é interpretada pelo projetista Modela o sistema de acordo com sua compreensão e conveniência O mesmo problema pode ser interpretado como composição ou agregação 63

Agregação/Composição Outros exemplos 64

Agregação/Composição Outros exemplos Carro 0..1 Motor Empresa 1..* Departamento 65

Agregação/Composição Outros exemplos Se invertermos, fica correto? Carro 1..1 Motor Empresa 0..* Departamento 66

Agregação/Composição Outros exemplos Se invertermos, fica correto? Sim! O projeto é seu! Desde que satisfaça as características do problema Carro 1..1 Motor Empresa 0..* Departamento 67

Agregação/Composição Outros exemplos Objeto Pessoa possui um atributo chamado Coração Coração também possui atributos: Conjunto to tipo Arteria Conjunto do tipo Cardiomiocito FC... Um Coração só faz sentido se estiver vinculado a uma Pessoa Atributo de Pessoa Então, a relação Pessoa Coração é uma composição 68

Agregação/Composição Outros exemplos Objeto Pessoa também pode ter um atributo chamado Trabalho Trabalho pode ter seus próprios atributos: Local, CNPJ,... Em geral, uma Pessoa tem um Trabalho mas não precisa ter um para existir Além disso, se você pedir demissão, o Trabalho que antes era seu não deixará de existir. Assim, a relação Pessoa Trabalho é uma agregação 69

Agregação/Composição Outros exemplos Pessoa 1 Coração 0..* Trabalho 70

Relacionamentos Como saber que tipo de relacionamento deve ser utilizado? Existem atributos ou métodos em comum entre as classes? Ou seja, uma classe é do tipo da outra? Sim: Isso é HERANÇA Não: Existe relação todo-parte? Não: Isso é uma ASSOCIAÇÃO SIMPLES Sim: A parte vive sem o todo?» Sim: Isso é uma AGREGAÇÃO» Não: Isso é uma COMPOSIÇÃO 71

Relacionamentos Exemplo 1 2 1 72

Resumo Histórico da UML Diagrama de classes Representação de classes Atributos e métodos Tipos de acesso e modificadores Nesta aula foram vistos os principais relacionamentos entre classes Herança, Implementação, Associação, Agregação e Composição 73

Softwares para UML Plugin para o NetBeans Ferramentas -> Plugins -> easyuml Outros Rational Rose Yed StarUML Dia Argo UML Microsoft Visio Enterprise Architect 74

Dúvidas? 75