Instituto Federal de Santa Catarina – Câmpus Chapecó Ensino Médio Integrado em Informática – Módulo V Unidade Curricular: Engenharia de Software Professora: Lara P. Z. B. Oberderfer Uma visão mais clara da UML Sumário 1 Diagrama de Classes.........................................................................................................................2 1.1 Como descobrir as Classes de Objetos.....................................................................................2 1.2 Notações...................................................................................................................................4 1.3 Classes / Entidade.....................................................................................................................5 1.4 Relacionamentos.......................................................................................................................5 1.4.1 Associação.........................................................................................................................6 1.4.2 Agregação..........................................................................................................................6 1.4.3 Composição.......................................................................................................................7 1.4.4 Generalização....................................................................................................................7 1.4.5 Dependência.....................................................................................................................7 2 Exercícios..........................................................................................................................................8 3 Referências Bibliográficas.................................................................................................................9 1 1 Diagrama de Classes 1.1 Como descobrir as Classes de Objetos É o processo de examinar o conjunto de “Use Cases” para extrair os Objetos e Classes do sistema sob desenvolvimento. Os Objetos e Classes são podem ser obtidos do detalhamento dos Cenários (instâncias de “Use Case”). Objetos pertencente à Classe de Entidades são identificados examinando-se os substantivos e frases substantivadas no cenário. Os substantivos podem ser: Objetos, descrição do estado de um Objeto, entidade externa e/ou ator ou ainda nenhuma das anteriores. Exemplo: Cenário para criar matrícula Cleber entra com o número de identificação do aluno 369 53 3449 e o sistema valida o número. O sistema pergunta a qual semestre refere-se a matrícula. Cleber indica que é para o semestre atual e escolhe a opção “nova matrícula”. Da lista de cursos disponíveis, Cleber seleciona como cursos de primeira escolha: Engenharia de Softwarwe 101, Sistemas Computacionais Cliente Servidor 110, Tópicos em Análise Orientada a Objetos 200 e Gerência de Mainframe 110. Ele seleciona como cursos de segunda escolha: Introdução a Programação Java 200 e Teoria da Musica 300. O sistema verifica que Cleber tem todos os pré-requisitos necessários, examinando os registro do aluno e adiciona-o à lista de alunos do curso. O sistema indica que a atividade esta completa. O sistema imprime a matrícula e envia a informação de cobrança, referente aos quatro cursos, para processamento no sistema de cobrança. Objetos pertencente à Classe de Entidades são identificados examinando-se os substantivos e frases substantivadas no cenário. No cenário acima estão destacados os substantivos candidatos à Objetos da Classe de Entidade. Os substantivos podem ser: Objetos, descrição do estado de um Objeto, entidade externa e/ou ator ou ainda nenhuma das anteriores. Lista de substantivos e sua classificação Cleber.- ator número de identificação do aluno 369 53 3449 – propriedade de aluno sistema. – o que está sendo definido número – propriedade do aluno semestre – estado (que é selecionado quando aplicável) semestre atual – mesmo que semestre nova matrícula – Objeto candidato lista de cursos disponíveis - Objeto candidato cursos de primeira escolha - estado Engenharia de Softwarwe 101 - Objeto candidato Sistemas Computacionais Cliente Servidor 110 - Objeto candidato 2 Tópicos em Análise Orientada a Objetos 200 - Objeto candidato Gerência de Mainframe 110 - Objeto candidato cursos de Segunda escolha - estado Introdução a Programação Java 200 - Objeto candidato Teoria da Musica 300.- Objeto candidato pré-requisitos necessários – cursos com outra identificação registro do aluno - Objeto candidato lista de alunos do curso. - Objeto candidato atividade . expressão matrícula – mesmo que nova matrícula informação de cobrança - Objeto candidato quatro cursos - informação necessária ao sistema de cobrança sistema de cobrança. - ator Lista de Objetos da Classe Entidade nova matrícula – Lista de cursos para um dado semestre de um dado aluno lista de cursos disponíveis – Lista de todos os cursos que estão sendo oferecidos no semestre Engenharia de Softwarwe 101 – Um curso oferecido no semestre Sistemas Computacionais Cliente Servidor110 - Um curso oferecido no semestre Tópicos em Análise Orientada a Objetos 200 - Um curso oferecido no semestre Gerência de Mainframe 110 - Um curso oferecido no semestre Introdução a Programação Java 200 - Um curso oferecido no semestre registro do aluno – Lista dos cursos feitos pelo aluno nos semestres anteriores lista de alunos do curso – Lista com os alunos matriculados num curso específico. informação de cobrança – Informações necessárias para o ator sistema de cobrança. Lista de Classes de Entidades presentes no Cenário “Criar Matrícula” Matrícula – Lista dos cursos para um dado semestre para um dado aluno. Catálogo – Lista de todos os cursos oferecidos num semestre. Curso – Curso oferecido para um semestre. RegistroDoAluno – Lista dos cursos feitos anteriormente. ListaDosAlunosNumCurso – Lista dos alunos matriculados num curso específico. InformaçõesDeCobrança – Informações necessárias para o ator sistema de cobrança. 3 Figura 1: Classes de Entidades 1.2 Notações Mostra um conjunto de classes e seus relacionamentos, é o diagrama central da modelagem orientada a objetos. Figura 2: Diagrama de classe Um diagrama de classes contém: • Entidades • Relacionamentos • Associações Agregação Composição • Generalização • Dependência 4 1.3 Classes / Entidade As classes, no diagrama de classes, são representadas por um retângulo com, normalmente, três divisões, a saber: o nome da classe, os atributos e as operações, esses dois últimos, com os seus tipos e respectivos escopos. É importante que o nome da classe seja uma palavra única, preferencialmente sem caracteres especiais e acentuados, isso evitará problemas na geração do código fonte do diagrama. Nome da Classe Atributos (Propriedades da Classe) Operações (Comportamentos da Classe) Figura 3: Representação de uma classe Os atributos representam o conjunto de características (estado) dos objetos daquela classe, eles podem ser: • + público: visível em qualquer classe de qualquer pacote; • # protegido: visível para classes de mesmo pacote; • - privado: visível somente para classe As classes possuem métodos que representam as operações (comportamentos) que a classe fornece. Assim como os atributos também podem ser público, protegido ou privado. 1.4 Relacionamentos Os relacionamentos possuem: • Nome: descrição dada ao relacionamento (faz, tem, possui,...) • Sentido da leitura • Navegabilidade: indicada por uma seta no fim do relacionamentos • Multiplicidade: 0..1, 0..*, 1, 1..0, 2, 3..7 • Tipo: associação (agregação, composição), generalização e dependência • Papéis: desempenhados por classes em um relacionamento 5 Figura 4: Relacionamentos 1.4.1 Associação Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe. É representada por uma linha sólida entre as classes. Notação usada para representar os diferentes tipos de multiplicidade Multiplicidade Simbologia Zero ou um (opcional) 0..1 Um para um 1..1 Um para muitos 1..n ou 1..* Zero ou muitos 0..n ou 0..* Um a vinte (intervalo estabelecido) 1..20 1.4.2 Agregação É um tipo especial de associação, utilizada para indicar “todo-parte” ou “parte-de”. É um tipo de relacionamento que não força a destruição do conjunto, ou seja, uma vez destruído o objeto todo, não há obrigatoriedade da destruição do objeto parte. Exemplo: mesmo se a equipe “X” acabar, o jogador poderá fazer parte de outra equipe. Figura 5: Agregação 6 1.4.3 Composição Também é a descrição de um relacionamento “todo-parte” ou “parte de”, mas neste caso o objeto parte pertence somente a um objeto todo, ou seja, esse é um tipo de relacionamento mais forte entre duas classes ou entidades. Esse tipo de relacionamento traz, assim como a Agregação, os conceitos de responsabilidades entre as classes, porém de forma mais acentuada. Quando “todo” acaba, todas as suas partes também acabam. Figura 6: Composição 1.4.4 Generalização É um relacionamento onde temos uma classe ancestral (superclasses) e outras classes herdadas (subclasses). A subclasse deve incluir todos os elementos (atributos e operações) da superclasse. Na implementação física corresponde a um processo de herança. Este tipo de relacionamento na linguagem JAVA pode ser identificado com o operador “instanceOff”. Figura 7: Generalização 1.4.5 Dependência Representa que a alteração de um objeto (o objeto independente) pode afetar outro objeto (o objeto dependente). Figura 8: Dependência No exemplo acima, a classe cliente depende de algum serviço da classe fornecedor, a mudança de estado do fornecedor afeta o objeto cliente, a classe cliente não declara nos seus atributos um objeto do tipo fornecedor e fornecedor é recebido por parâmetro de método. 7 2 Exercícios 1. Elabore um diagrama de classes para um sistema de ponto de vendas. • O gerente deve fazer login com um ID e senha para iniciar e finalizar o sistema; • O caixa (operador) deve fazer login com um ID e senha para poder utilizar o sistema; • Registrar a venda em andamento – os itens comprados; • Exibir a descrição e preço e do item registrado; • Calcular o total da venda corrente; • Tratar pagamento com dinheiro – capturar a quantidade recebida e calcular o troco; • Tratar pagamento com cartão de crédito – capturar a informação do cartão através de um leitor de cartões ou entrada manual e autorizar o pagamento utilizando o serviço de autorização de crédito (externo) via conexão por modem; • Tratar pagamento com cheque – capturar o número da carteira de identidade por entrada manual e autorizar o pagamento utilizando o serviço de autorização de cheque (externo) via conexão por modem; • Reduzir as quantidades em estoque quando a venda é confirmada; • Registrar as vendas completadas; • Permitir que diversas lojas utilizem o sistema, com catálogo de produtos e preços unificados, porém estoques separados; 8 3 Referências Bibliográficas 1. CAMPOS, José C., RIBEIRO, Antonio N. Desenvolvimento de Sistemas de Software. Disponível em: http://sim.di.uminho.pt/disciplinas/dss/0708/AulaT_20071016.pdf. Acesso em: 10/04/2013. 2. LES, Laboratório de Engenharia de Software. UML: Diagrama de Sequência. Disponível em: http://www.les.inf.puc-rio.br/wiki/images/e/ef/Aula02-diagrama_sequencia.pdf. Acesso em: 15/04/2013. 3. Macoratti.net. UML Conceitos Básicos. http://www.macoratti.net/vb_uml2.htm. Acesso em: 10/04/2013. Disponível em: 4. ZATYCKO, Florisbela. UML – Unified Modeling Language. Disponível em: Apostilando.com. Acesso em: 10/04/2013. 5. Diagrama de Classes. Disponível em: http://www.lidel.pt/dcso/722-636-8_des_sis_inf.pdf . Acesso em: 16/04/2013. 6. BORBA, Gilmar. Diagrama de Classes. Disponível em: http://gilmarborba.com.br/?p=184 . Acesso em: 16/04/2013. 9 10