UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 16 PROFª BRUNO CALEGARO Santa Maria, 12 de Novembro de 2013.
Revisão aula anterior Modelagem orientada a objetos com UML Software: Astah Community htp://astah.net/download Modelo de classes Modelo de estado Modelo de iteração
Modelo de Classes Um modelo de classes captura a estrutura estática de um sistema ao caracterizar os objetos ao sistema, os relacionamento entre eles e os atributos e as operações para cada classe de objetos do sistema O modelo de classes é o mais importante entre os três modelos Como o foco é nos objetos, em vez das funcionalidades, a descrição do sistema com a abordagem orientada a objetos corresponde de modo mais próximo ao mundo real E consequentemente, é mais tolerante a mudanças
Conceito de Objeto e Classes Um objeto é um conceito, abstração ou alguma coisa com identidade que possui significado para aplicação Exemplos de objetos: João Silva empresa Simplex processo número 7648 janela de cima uma árvore de pesquisa binária A escolha de objetos depende do julgamento e da natureza de um problema Pode haver muitas representações corretas
Conceito de Objeto e Classes Todos os distinguíveis objetos possuem identidade e são Duas maças com mesma cor, forma e textura são maças individuais Da mesmo forma, gêmeos idênticos são duas pessoas diferentes, embora possam parecer iguais O termo identidade significa que os objetos são inerentemente diferenciáveis por sua existência e não por propriedades descritivas que possam ter
Conceito de Objeto e Classes Um objeto é uma instância ou ocorrência de uma classe Uma classe descreve um grupo de objetos com as mesmas propriedades (atributos), comportamento (operações), tipos de relacionamentos e semântica Os objetos de uma classe que compartilham uma mesma finalidade semântica A interpretação da semântica depende da finalidade de cada aplicação, e é uma questão de critério Por exemplo, um celeiro e um cavalo possuem custo e idade Se celeiro e cavalo forem considerados como propriedades financeiras elas podem pertencer a uma mesma classes Se o desenvolvedor levasse em consideração que uma pessoa pinta um celeiro e alimenta um cavalo, eles poderiam ser modelados em classes distintas
Diagrama de Classes Uma classe é representada por um retângulo com o nome da classe Aluno Funcionário Curso Um objeto é representado por um retângulo com o nome sublinhado João: Aluno ou : Aluno ou João: nome do objeto separador nome da classe objeto anónimo classe não especificada
Valores e Atributos Um valor é um elemento dos dados Um atributo é uma propriedade nomeada de uma classe, que descreve um valor retido para cada objeto da classe Atributos podem ser facilmente obtidos procurando adjetivos ou abstraindo valores típicos Nome, data de nascimento e peso são atributos da classe Pessoa Cor, anomodelo e peso são atributos de objetos Carro
Valores e Atributos Atributos são listados em um compartimento de atributos (opcional) abaixo do compartimento com o nome da classe Ao lado nome de um atributo pode indicar-se o tipo de dados (ou classe) e o valor inicial por padrão (opcional) Os nomes dos tipos não estão pré-definidos em UML, podendo-se usar os da linguagem de implementação alvo classe objeto compartimento de atributos Pessoa nome: string data de nascimento: date peso: real = 75 kg João: Pessoa nome = João Silva data de nascimento = 18/3/1973 peso = 70 kg valor inicial por padrão
Operações Uma operação é uma função ou um procedimento que pode ser aplicado a ou por objetos em uma classe Contratar, demitir e pagardividendos são operações da classe Empresa Todos os objetos de uma classes compartilham as mesmas operações Polimorfismo => Métodos É importante que todos os métodos tenham a mesma assinatura o número e os tipos dos argumentos e o tipo de retorno
Operações As operações são representadas num compartimento de operações abaixo do compartimento de atributos Para cada operação pode-se indicar o nome, lista de argumentos e tipo de retorno nome: string datanascimento: date mudarcargo mudarendereço Pessoa
Exemplo: Classe conta Bancária
Conceito de Ligação e Associação Uma ligação é uma conexão física ou conceitual entre objetos João Silva trabalha na empresa Simplex Uma associação é uma descrição de um grupo de ligações com estrutura e semântica comuns Por exemplo, uma pessoa TrabalhaPara um empresa Ligações e associações aparecem como verbos em relatos de problemas
Conceito de Ligação e Associação Na UML associações são representadas por uma linha que liga as classes cujos objetos se relacionam
Conceito de Ligação e Associação
Multiplicidade Multiplicidade especifica o número de instâncias de uma classe que podem se relacionar a uma única instância de uma classe associada A multiplicidade restringe o número de objetos relacionados Nome Simbologia na UML 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
Multiplicidade
Associação x Ligação
Exemplo
Exemplo
Classe de Associação Uma classe de associação é uma associação que também é uma classe Ou seja, ela descreve as ligações de uma associação com atributos Arquivo * * AcessivelPor permissaousuario /etc/temcap read João Silva /etc/temcap read-write Maria Brito /usr/silva read-write João Silva Usuário
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Generalização e Herança Generalização é o relacionamento entre uma classe (superclasse) e uma ou mais variações da classe (subclasse) Diz-se que a subclasse herda as características de uma superclasse
Generalização e Herança
Estudo de Caso I Construa um diagrama de classes inicial para a situação: Pacotes são enviados de uma localidade a outra. Pacotes têm um peso específico. Localidades são caracterizadas pelas facilidades de transporte (por exemplo, rodoviárias, aeroportos e autoestradas. Algumas localidades são vizinhas, isto é, existe uma rota direta de transporte entre as localidades. A rota de transporte entre as localidades tem um certo comprimento (a distância entre as localidades). Trens, aviões e caminhões são usados para o transporte dos pacotes. Cada um destes meio de transporte pode suportar uma carga máxima de peso. A cada momento, durante o seu transporte, é necessário saber a posição (localidade) de cada pacote. Também é necessário manter o controle de que meio de transporte está sendo utilizado em cada parte da rota para um certo pacote.
Estudo de Caso II Modelar a situação: Uma pessoa ao longo da vida, tem vários empregos, em empresas diferentes. Para a Previdência, é importante saber a data de admissão e a data de rescisão de contrato com cada uma dessas Empresas Modelar a situação: Um empregado pode trabalhar em vários projetos. Para fins de cálculo da remuneração é preciso saber quantas horas ele trabalha em cada projeto. Os empregados podem se ligar ou se desligar de um projeto a qualquer momento, mas é preciso guardar o histórico de participação dos empregados nos projetos
Referências BLAHA, Michael; RUMBAUGH, James. Modelagem e Projetos Baseados em Objetos com UML 2. Rio de Janeiro: Elsevier, 2006. Capítulo 3