Bibliografia




Classes



Conceito de classes


  • É uma descrição formal da estrutura de objetos num sistema.
  • Descreve:
    • os tipos de objetos no sistema, e
    • os vários tipos de relacionamentos estáticos entre eles.


portanto


  • Classe é uma descrição de um grupo de objetos que tem:
    • Propriedades (atributos) semelhantes
    • comportamento (operação) comum
    • os mesmos tipos de relacionamentos com outros objetos


  • Classes são templates (formas) de objetos e são usadas para criar objetos
  • Classes podem herdar atributos e serviços de outras classes


  • A escolha de uma classe é arbitrária e depende da aplicação em desenvolvimento



  • Uma classe representa um conjunto de objetos que possuem comportamentos e características comuns
  • Exemplos de classes:
    • Animais
    • Aves
    • Mamíferos
    • Carros
    • Carros de corrida
    • Vestibulandos
    • Alunos graduação
    • Alunos de pós-graduação
    • Notas
    • Disciplinas
    • Professores
    • Livros
    • Empréstimos
    • Devoluções
    • Requerimentos
    • Atestados



Classes


  • Identificar as classes de um sistema pode ser complicado, e deve ser feito por quem entende realmente do domínio do problema em questção
  • As classes devem ser retiradas do escopo do problema e serem nomeadas pelo que elas representam no sistema. Quando procuramos definir as classes de um sistema, existem algumas questões que podem ajudar a identificá-las.
  • Algumas questões que podem ajudar:
    • Existem informações que devem ser armazenadas ou analisadas?
      • Se existir alguma informação que tenha que ser guardada, transformada ou analisada de alguma forma, então é uma possível candidata para ser uma classe
    • Existem sistemas externos ao modelado?
      • Se existir, eles deverão ser vistos como classes pelo sistema para que possa interagir com outros externos
    • Existem classes de bibliotecas, componentes ou modelos externos a serem utilizados pelo sistema modelado?
      • Se sim, normalmente essas classes, componentes e modelos conterão classes candidatas ao nosso sistema
    • Qual o papel dos atores dentro do sistema?
      • Talvez o papel deles possa ser visto como classes, por exemplo, usuário, operador, cliente e daí por diante.



  • Concluímos que o conceito de classe está intimamente ligado ao conceito de objeto, já que a existência de um objeto pressupõe a existência de uma classe que o originou
  • Podemos entender então uma classe como sendo um "projeto" do objeto, ou seja, um trecho de código que descreve o objeto em todos os seus métodos e atributos.
  • Em termos práticos é comum falar em instanciar uma classe para se obter um objeto. Por exemplo, na linguagem java podemos ter a classe abaixo:



public class Veiculo(){
private int ano, potencia, marchas;
private String placa, chassis, cor, marca, modelo;
   public void acelerar(){
   }
   public void frear(){
   }
   public void virarDireita(){
   }
   public void virarEsquerda(){
   }
}
  • Para instanciarmos a classe acima devemos escrever a seguinte linha de código:
Veiculo meuVeiculo = new Veiculo();


UML



  • Unified Modeling Language
  • "Na UML o nome de uma classe é um texto contendo letras e dígitos e algumas marcas de pontuação. Na realidade, é melhor guardar os nomes curtos com apenas letras e dígitos. UML sugere capitalizar todas as primeiras letras de cada palavra no nome



  • Exemplo:
    • Cliente, NotaAluno, SeguroVida, TaxaGlicose, Usuario, Onibus, Paciente, etc



  • É melhor também manter nomes de classes no singular
  • Classes por default ``contem mais de um objeto, o plural é implícito.". * [Nicolas Anquetil]


Representação



  • Se usa um retangulo dividido em 3 partes:




Visibilidade


  • A visibilidade indica se o atributo ou método pode ou não ser acessado do exterior da classe por funções que não sejam membros da classe.
  • Para melhor representar a visibilidade dos atributos e operações em uma classe utiliza-se as seguintes marcas e significados:
    • + pública: neste caso, o atributo é visível no exterior da classe. Tanto funções membro da classe quanto funções externas podem acessar o atributo
    • - privada: O atributo não é visível no exterior da classe. Somente funções membro da classe podem acessar o atributo
    • # protegida: O atributo também é privado mas as funções membro das classes derivadas também tem acesso ao atributo.
  • A definição da visibilidade é opcional porém se ela não for definida, por default será privada.



  • Os objetos tem relações entre eles:
    • Um professor ministra uma disciplina para alunos numa sala
      • Professor ---> Disciplina ---> Alunos ---> Sala
    • Um cliente faz uma reserva de alguns lugares para um evento
      • Cliente ---> Lugar ---> Evento ---> Reserva
    • Um paciente pode ser diagnosticado com várias doenças
      • Paciente ---> Consulta ---> Doença ---> Diagnóstico


  • Essas relações são representadas também no diagrama de classe
  • A UML reconhece três tipos mais importantes de relações:
    • Dependência
    • Associação
    • Generalização (ou herança)



  • Notação




Associações



  • São relacionamentos estruturais entre instâncias e especificam que objetos de uma classe estão ligados a objetos de outras classes


  • Podemos ter associação normal, ordenada, recursiva, exclusiva, , etc
  • A associação pode existir entre classes ou entre objetos


  • Uma associação define que duas classes possuem uma ligação, mostrando que elas "conhecem uma a outra", " que estão conectadas". Estas conexões podem ser físicas ou simplesmente conceituais.



  • Uma associação entre a classe Professor e a classe disciplina (um professor ministra uma disciplina) significa que uma instância de Professor (um professor específico) vai ter uma associação com uma instância de Disciplina


  • Exemplos: Associaçõe e instanciações



  • Pagamentos:
    • O cliente Cleber dos Reis está associado neste mês de Janeiro, ao débito de R$ 3.500,00 referente à compra de uma TV. A cliente Ana Maria Lima também.


  • Matrículas:
    • O aluno Nataniel está associado este semestre ao curso de Engenharia Química para as disciplinas de Química Geral e Inorgânica. Também para Cálculo Diferencial e Integral I e Geometria Analitica e Álgebra Linear.


  • Avaliação:
    • A nota 22,0 da primeira prova foi dada neste semestre para a disciplina Métodos Matemáticos para o aluno Thiago Mundim.


  • Biblioteca:
    • O livro Matemática e Raciocínio Lõgico dos autores Benjamim e Cesar foi emprestado à aluna Lívia no dia 02/01/14


  • Locadora:
    • O DVD Tropa de Elite foi alugado pelo cliente João da Silva no dia 10/10/13


  • Trânsito:
    • A multa por atraso IPVA de 2013 foi aplicada ao condutor Alex Mota.



Exercícios

  • Descreva as associações e classes dos exemplos abaixo:
  1. Biblioteca: O Livro Circuitos Elétricos do autor Edminister foi reservado pelo professor Luis Carlos
  2. Seguradora: O carro Golf de placa GKV-2031 teve o seguro adquirido durante 1 ano.
  3. Compras: O produto Vinho do Porto foi adquirido junto à Vinícola Marialva.
  4. Acadêmico: O aluno Elias Alves solicitou trancamento do curso de Ciência da Computação em 12/12/2013.
  5. Game: O personagem Joker foi inserido na fase II do Game Trony.


Dependência



  • São relacionamentos de utilização no qual uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente



  • A dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe



  • Sistemas e exemplos de dependências:
    • Objeto depende de objeto


Acadêmico: Bolsista --> Aluno
Consultas: Exame --> Consulta
Game: Obstáculo --> Fase
Monitoramento: Alarme --> Sensor



  • Exercícios:
    • Dê exemplos de objetos ou classes com dependência.


Agregação



  • Tipo de associação ( é parte de , todo/parte)
  • O objeto parte é um atributo do todo
  • Um objeto contém uma lista de outros objetos
  • Um objeto “parte” pode fazer parte de vários objetos“todo”.



  • Exemplo:
    • Carro ---<> Rodas
      • Pode-se tirar as rodas do carro antes de destruí-lo e elas podem ser colocadas em outro carro
    • Turma ---<> Alunos
      • Se eu transferir todos os alunos de uma turma ela acabará mas estes alunos continuarão na nova turma.


Composição



  • Forma mais forte de agregação
  • Aplicável quando:
    • Existe um forte grau de “pertencer” das partes ao todo
    • Cada parte só pode fazer parte de um todo
    • O topo e as partes tem tempo de vida coincidentes
    • A eliminação do todo, propaga-se para as partes, em cascata
    • Quando o todo “morre” todas as suas partes também “morrem”
    • Exemplo:
      • Nota Fiscal e seus Itens de Compra
      • Se destruirmos a Nota Fiscal, destruiremos também todos os itens de compra.



Agregação x Composição


  • Avaliemos dois exemplos de relacionamento:



  • Os relacionamentos Todo-Parte acima são representados da seguinte forma:
    • Pedido (Objeto-Todo) e ItemPedido (Objeto-Parte)
    • Time (Objeto-Todo) e Atleta (Objeto-Parte)


  • Na Agregação, a existência do Objeto-Parte faz sentido, mesmo não existindo o Objeto-Todo.
  • Temos como exemplo, Time-Atleta:



  • Um time é formado por atletas, ou seja, os atletas são parte integrante de um time, mas os atletas existem independentemente de um time existir. Nesse caso, chamamos esse relacionamento de AGREGAÇÃO.


  • Já a Composição é uma agregação mais forte; nela, a existência do Objeto-Parte NÃO faz sentido se o Objeto-Todo não existir.
  • Tomando como exemplo, Pedido-ItemPedido:



  • Nesse caso, um pedido é composto por um ou vários itens, mas um item não pode existir se não se referir a um Pedido.
  • Assim, chamamos esse relacionamento de COMPOSIÇÃO.



  • Conclusão
    • Essas são as formas de se representar o relacionamento entre os objetos das classes do tipo part-of, em que a agregação é representada por um diamante (losango)branco, sempre do lado do “Objeto-Todo”, e a composição é representada por um diamante (losango) negro, também desenhado do lado do “Objeto-Todo”.


Exercício


  • 1. Nota Fiscal
    • Para a Nota Fiscal de venda mostrada acima, desenhe um modelo de armazenamento destes dados.



  • 2. Notas
    • Para o Mapa de Notas mostrado abaixo, desenhe um modelo de armazenamento destes dados.




  • 3. Aprovados
    • Para a Relação de Aprovados mostrada abaixo, desenhe um modelo de armazenamento destes dados.