Baixe o app para aproveitar ainda mais
Prévia do material em texto
ENGENHARIA DE SOFTWARE I Diagrama de Classes MSc. Jacilane Rabelo Orientação a Objetos Conceitos O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse da visão de casos de uso, os desenvolvedores precisam prosseguir no desenvolvimento do sistema. A funcionalidade externa de um sistema orientado a objetos é fornecida através de colaborações entre objetos. Conceitos Externamente, os atores visualizam resultados de cálculos, relatórios produzidos, confirmações de requisições realizadas, etc. Internamente, os objetos colaboram uns com os outros para produzir os resultados. Essa colaboração pode ser vista sob o aspecto dinâmico e sob o aspecto estrutural estático. Classes Uma classe representa um grupo de objetos semelhantes. Uma classe descreve esses objetos através de atributos e operações. Os atributos correspondem às informações que um objeto armazena. As operações correspondem às ações que um objeto sabe realizar. Tipos de Classes Tipos de Classes Tipos de Classes Tipos de Classes Classes de Domínio: modelam objetos associados ao domínio do problema. • aluno, curso, turma, disciplina, docente, etc. • médico, paciente, exame, diagnóstico, etc. • advogado, juiz, processo, julgamento, etc. Classes de Fronteira: modelam objetos que realizam a comunicação entre o sistema e a sua vizinhança, ou seja, os atores. • janela, formulário, etc. • catraca, sensor de presença, etc. • sistema de cobrança, administradora de cartão, etc. Tipos de Classes Classes de Controle: modelam objetos que exercem controle sobre outros objetos. • criação de objetos controlados. • controle da operação dos objetos controlados • controle da concorrência de pedidos dos objetos controlados. Classes Utilitárias: modelam comportamentos que representam algoritmos de uso comum. • verificação de CPF e CNPJ • cálculo da alíquota do IR Classes de Exceção: modelam objetos que representam uma exceção ou falha em um determinado domínio. Tipos de Classes Pergunta: Somos obrigados a identificar tudo isso agora? Tipos de Classes Nem todos esses tipos de classe são identificados durante a Análise! Na Análise costuma-se focar nas Classes do Domínio do Problema Identificando Classes Localizando classes e atributos: A partir dos Requisitos/Casos de Uso extrair substantivos • resulta em uma tentativa de Classes e Atributos A partir daí eliminar Classes estranhas • resulta em Classes e Atributos O que procurar? • Estruturas • Outros sistemas • Dispositivos • Coisas ou eventos • Papéis executados • Lugares • Unidades organizacionais Identificando Classes Identificando Classes Exemplo: extraindo classes de um trecho de um requisito “...um sistema de médico pediatra para atender pacientes através de plano de saúde ou particular.” Quais são as classes/atributos? Identificando Comportamentos Localizando comportamentos A partir dos Requisitos/Casos de Uso extrair verbos • resulta em uma tentativa de Comportamentos A partir daí eliminar Comportamentos estranhos • resulta em Comportamentos das Classes O que procurar? • Verbos no imperativo • Verbos no passivo • Ações • Coisas ou eventos • Procedimentos operacionais Identificando Comportamentos Exemplo: extraindo classes de um trecho de um requisito “...um sistema de médico pediatra para atender pacientes através de plano de saúde ou particular.” Quais são os comportamentos? Hora de Treinar Exercício Considere o seguinte cenário: Um fragmento de um Sistema de Controle Bancário. Para este sistema, o gerente deve cadastrar agências, clientes e abrir e fechar contas bancárias. Um cliente possui nome, endereço e telefone. Um cliente pode abrir várias contas e uma conta pode ser de vários clientes, para o caso de contas conjuntas. Contas são de uma determinada agência (que possui nome e número), além de poderem estar vinculadas a uma conta de investimento, que nada mais é que uma outra conta bancária. Contas ainda devem possuir um número (formado pelo número da agência e pelo número da própria conta) e saldo disponível, podendo ser corrente normal, corrente especial e poupança. Para contas poupança, devem-se armazenar os dias de vencimento e, para contas correntes especiais, informar o limite de crédito. Contas ainda possuem movimentações de saque e depósito, que devem ter data e valor, além do tipo de movimento, que pode ser débito ou crédito. Clientes ainda podem solicitar cartões de contas bancárias, que devem ter número, validade e senha para cada cliente, além de talões de cheques para contas correntes, que devem armazenar o número inicial e final das folhas do talão. O sistema ainda deve permitir aos clientes consultar saldos e extratos. Identifique as classes, atributos e comportamentos! Classes/Atributos Agência nomeNumero ControleBancario saldo Cliente numeroSaldo Conta limiteSaldo Conta Corrente extrato Conta Corrente Normal limiteCredito Conta Corrente Especial diasVencimento Conta Poupança nome Movimentação endereco Tipo de Movimentação telefone Talão de Cheques numero Cartão de Conta validade Gerente senha Descricao data debitoCredito valor Comportamentos efetuarSaque solicitarCartao efetuarDeposito vincularConta emitirSaldo socilitarTalao emitirExtrato validarSenha efetuarMovimentacao verificarValidade armazenarVencimento RealizarPagamento Classes/Atributos Agência nomeNumero ControleBancario saldo Cliente numeroSaldo Conta limiteSaldo Conta Corrente extrato Conta Corrente Normal limiteCredito Conta Corrente Especial diasVencimento Conta Poupança nome Movimentação endereco Tipo de Movimentação telefone Talão de Cheques numero Cartão de Conta validade Gerente senha Descricao data debitoCredito valor Comportamentos efetuarSaque solicitarCartao efetuarDeposito vincularConta emitirSaldo socilitarTalao emitirExtrato validarSenha efetuarMovimentacao verificarValidade armazenarVencimento RealizarPagamento Classes Atributos Comportamentos Extraindo classes, atributos e relacionamentos 24 • EXERCÍCIO: CONTA DE Luz CENÁRIO: As informações a seguir se referem á planilha Excel de Gabriel, que controla os gastos mensais com sua conta de luz. Para cada conta de luz cadastra-se: data em que a leitura do relógio de luz foi realizada, número da leitura, quantidade de Kw gasto no mês, valor a pagar pela conta, data do pagamento e média de consumo. Mensalmente, são realizadas as seguintes pesquisas: - verificação do mês de menor consumo; - verificação do mês de maior consumo. Extraindo classes, atributos e relacionamentos 25 Extraindo classes, atributos e relacionamentos 26 Diagrama de Classes Diagrama de Classes • O diagrama da UML utilizado para representar o aspecto estático é o diagrama de classes. • O diagrama de classes evolui durante o desenvolvimento do sistema. • À medida que o sistema é desenvolvido, o diagrama de classes é incrementado com novos detalhes. • Três níveis sucessivos de abstração: Domínio, Especificação e Implementação. Diagrama de Classes Níveis em que podemos ter o diagrama: • Domínio representa as classes no domínio do negócio em questão. Não leva em consideração restrições inerentes à tecnologia a ser utilizada na solução de um problema. • Especificação é obtido através da adição de detalhes ao modelo anterior conforme a solução de software escolhida. • Implementação corresponde à implementação das classes em alguma linguagem de programação. Diagrama de Classes Exemplo: • Domínio Diagrama de ClassesExemplo: • Especificação Diagrama de Classes Exemplo: • Implementação Diagrama de Classes de Domínio Representa termos do domínio do negócio. Objetivo: descrever o problema representado pelo sistema a ser desenvolvido, sem considerar características da solução a ser utilizada. Elementos do Diagrama de Classes Notação para uma classe • Representada através de uma “caixa” com no máximo três compartimentos exibidos. • Notação utilizada depende do nível de abstração desejado. Exemplo (classe ContaBancária) Tipos de Relacionamentos - Associação • Para representar o fato de que objetos podem se relacionar uns com os outros, utiliza-se a associação. • Uma associação representa relacionamentos (ligações) que são formados entre objetos durante a execução do sistema. • Embora as associações sejam representadas entre classes do diagrama, tais associações representam ligações possíveis entre objetos das classes envolvidas. Notação para uma associação • Representada através de um segmento de reta ligando as classes cujos objetos se relacionam. • Exemplos: Cliente Produto ContaCorrente HistóricoTransações Hóspede Quarto Notação para uma associação Navegabilidade da Associação: • Define se é possível, a partir de uma extremidade da associação, chegar a outra extremidade. • Notação na UML 2.0. Associação UML 2.0 Bidirecional Unidirecional Indefinido Associação - Exemplos Multiplicidade • Representam a informação dos limites inferior e superior da quantidade de objetos aos quais um outro objeto pode estar associado. • Cada associação em um diagrama de classes possui duas multiplicidades, uma em cada extremo da linha de associação. Multiplicidade Nome Simbologia Apenas Um 1..1 (ou 1) Zero ou Muitos 0..* (ou *) Um ou Muitos 1..* Zero ou Um 0..1 Intervalo Específico l i ..l s Exemplo (multiplicidade) • Pode haver um cliente que esteja associado a vários pedidos. • Pode haver um cliente que não esteja associado a pedido algum. • Um pedido está associado a um, e somente um, cliente. Cliente Pedido 1 0..* Exemplo (multiplicidade) • Uma corrida está associada a, no mínimo, dois velocistas • Uma corrida está associada a, no máximo, seis velocistas. • Um velocista pode estar associado a várias corridas. Velocista Corrida 2..6 0..* Exemplo (multiplicidade) • Para cada instância de Professor, diversos cursos podem ser oferecidos • Para cada instância de CourseOffering, pode-se ter um ou nenhum Professor como instrutor Exemplo (multiplicidade) Pessoa Empresa 1..* Tipo: associação multiplicidade *trabalha para empregado papéis empregador sentido de leitura E a navegabilidade? nome Navegabilidade • Navegabilidade (utilizado apenas na perspectiva de implementação) • Um relacionamento sem navegabilidade implica que ele pode ser lido de duas formas, isto é, em suas duas direções. Ex.: Uma empresa possui um trabalhador, como também um trabalhador trabalha em uma empresa. Navegabilidade • Utilizando a propriedade de navegabilidade, podemos restringir a forma de ler um relacionamento. • Em vez de termos duas direções, teremos apenas uma direção (de acordo com a direção da navegação). Ex.: Uma empresa possui um trabalhador Exemplo (multiplicidade) O cliente sabe quais são seus endereços, mas o endereço não sabe a quais clientes pertence EndereçoCliente reside 1 * navegabilidade Exemplo (multiplicidade) Exemplo: Um Estudante pode ser um aluno de uma Disciplina e um jogador da Equipe de Futebol Cada Disciplina deve ser cursada por no mínimo 1 aluno Um aluno pode cursar de 0 até 8 disciplinas Tipos de relacionamento - Associação Tipos de relacionamento – Associação Recursiva Tipos de Relacionamentos - Agregação • É uma forma especializada de associação na qual um todo é relacionado com suas partes, ou seja, um relacionamento “todo-parte”. • Também é conhecida como relação de conteúdo ou posse lógica, pois a classe agregada (parte) é vista como um “atributo” da classe agregadora (todo). • Deve ser lida como “é parte de”. • É representada como uma linha de associação com um diamante vazado junto à classe agregadora. • Podem existir agregações reflexivas, ou seja, agregações de uma classe com ela mesma. Tipos de Relacionamentos - Agregação • É uma associação com a semântica de “contém” • Serve como uma relação todo-parte fraca • O todo existe sem as partes • As partes existem sem o todo Tipos de Relacionamentos - Agregação • Exemplo: Pacote UML Elemento UML Tipos de Relacionamentos - Composição Composição: • É um tipo mais forte de relacionamento “todo-parte”. • A classe ”parte” não tem existência independente da classe “todo”. • É representada como uma linha de associação com um diamante preenchido junto à classe “todo”. • A multiplicidade é representada da mesma maneira que nas associações. • Exemplo: Tipos de Relacionamentos - Composição Composição: • Os objetos “parte” só podem pertencer a um único objeto “todo” e têm o seu tempo de vida coincidente com o dele Tipos de Relacionamentos - Composição Composição: Tipos de Relacionamentos – Agregação x Composição Algumas dicas para se identificar um relacionamento como uma agregação ou composição: • Se você puder dizer no relacionamento de associação que uma classe é “parte de”, “contém” ou “pertence à” outra classe, então estamos diante de uma agregação ou composição • Se as partes não podem ser divididas, estamos diante de uma composição. Caso contrário, temos uma agregação • Se o ciclo de vida das partes estão atreladas ao ciclo de vida do todo, temos uma composição; • Se a multiplicidade do todo é 1 ou 0..1, temos uma composição • Se a multiplicidade do todo puder ser maior do que 1, temos uma agregação Tipos de Relacionamentos – Agregação x Composição Dica para Generalização/Especialização • É uma hierarquia de abstrações na qual uma subclasse herda a estruturas de dados e comportamentos de uma ou mais superclasses. • A subclasse pode acrescentar novas estruturas de dados e comportamentos aos herdados da superclasse (especialização). • A subclasse pode alterar o comportamento originalmente herdado da superclasse (polimorfismo). • Deve ser lida como “é um tipo de”. Tipos de Relacionamentos - Generalização/Especialização • Herança simples é quando uma subclasse herda estruturas de dados e comportamentos de uma única superclasse. • Herança múltipla é quando uma subclasse herda estruturas de dados e comportamentos de mais de uma superclasse. Classe Associativa • É uma classe que está ligada a uma associação, ao invés de estar ligada a outras classes. • É normalmente necessária quando duas ou mais classes estão associadas, e é necessário manter informações sobre esta associação. • Uma classe associativa pode estar ligada a associações de qualquer tipo de conectividade. • É representada pela notação utilizada para uma classe. A diferença é que esta classe é ligada a uma associação. • Classe Associativa Exemplo: nome telefone endereço Pessoa razãoSocial endereço Empresa salário dataContratação Emprego * empregado * empregador Classe Associativa Exemplo: Classe Associativa Hora de Treinar Exercícios Em cada um dos itens a seguir, defina qual o tipo de relacionamento é mais adequado (associação, agregação, composição). Desenhe o diagrama de classes correspondente, indicando as multiplicidades. Especifique, ainda, atributos e possíveisrestrições. • Um País possui uma Capital. • Uma Empresa é subsidiária de diversas outras Empresas. • Uma Pessoa à mesa de jantar está usando uma Faca. • Um Polígono é composto por um conjunto ordenado de Segmentos. • Um Estudante acompanha uma Disciplina com um Professor. • Uma Caixa contém Garrafas. • Um Livro contém Capítulos. • Um Arquivo contém Registros. Exercícios Em cada um dos itens abaixo, desenhe o diagrama de classes correspondente, indicando as multiplicidades. Especifique, ainda, possíveis restrições que se apliquem. • Um Pessoa, como programador, utiliza uma Linguagem de Programação. • Modem, Teclado e Impressora são Dispositivos de Entrada e Saída. • Um Banco de Dados contém Tabelas de Sistema e Tabelas de Usuário. Uma Tabela de Sistema mantém informações sobre uma ou várias Tabelas de Usuário. Uma Tabela contém registros. • Um Item pode ser um Item Atômico ou um Item Composto. Um Item Composto possui dois ou mais Itens. Exercício A empresa AProf oferece cursos diversos de aperfeiçoamento profissional. O dono precisa controlar: os cursos oferecidos, a data de inicio e término, o horário de início e término, o nome e o telefone celular do professor e o valor da sua hora/aula. Para cada curso, deve-se controlar: a carga horária, o conteúdo programático e o valor do curso. O dono também precisa ter o ter o controle da matricula e do cadastro de alunos. Para matrícula cadastram-se: data da matrícula, valor pago, aluno e a turma. O cadastro de aluno compreende: nome, número da carteira de identidade, CPF, data de nascimento, endereço completo e telefones de contato. A seguir é apresentado o cenário e o Diagrama de Casos de Uso para enunciado acima. Faça: Modele o Diagrama de Classes Exercício Considere o seguinte cenário: Um aluno poder estar matriculado em um ou mais cursos. Cada curso tem na sua grade uma série de disciplinas. Disciplinas são oferecidas por departamentos, que estão subordinados às diretorias acadêmicas, e são lecionadas por professores que podem pertencer ao departamento que as oferece ou não. Cada curso está associado a um único departamento. É importante poder recuperar o histórico dos alunos com todas as disciplinas cursadas e respectivas notas, mesmo para os alunos que já saíram da universidade (ex-alunos). “Alunos” são somente aqueles matriculados. Modele o Diagrama de Classes Exercício Considere o seguinte cenário: A hierarquia de uma empresa é composta de órgãos. Um órgão tem um nome e uma sigla. Um funcionário, que pode ter dependentes, tem que estar alocado em um órgão. Os funcionários tem um nome, cpf e identidade. Além disso, no sistema procuramos identificar o tempo de empresa com base na data de entrada. Precisamos informar o salário do funcionário com base no tempo de empresa. O tempo de empresa também é usado para verificar se o funcionário tem direito a férias. Na empresa, um funcionário só pode ter 2 dependentes. Modele o Diagrama de Classes Obrigado! Perguntas? E-mail: jacilane.rabelo@uninorte.com.br
Compartilhar