Classes



Conceito de classes



  • Classes são templates (formas) de objetos


  • Elas são usadas para criar objetos


  • Classes podem herdar atributos e serviços de outras classes


  • 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



  • 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


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





Relacionamentos entre classes



  • Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos.
    • Devem receber nomes de acordo com o vocabulário do domínio do problema.
    • É comum adotar um padrão para nomeá-las
    • Ex: todos os nomes de classes serão substantivos singulares com a primeira letra maiúscula

Se usa um retangulo dividido em 3 partes:




  • Para poder representar a visibilidade dos atributos e operações em uma classe utiliza-se as seguintes marcas e significados:



+ público - visível em qualquer classe
# protegido - qualquer descendente pode usar
- privado - visível somente dentro da classe



  • Os objetos tem relações entre eles:
    • Um professor ministra uma disciplina para alunos numa sala
    • Um cliente faz uma reserva de alguns lugares para um evento
    • Um paciente pode ser diagnosticado com várias doenças


  • 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 unária , binária , etc
  • A associação pode existir entre classes ou entre objetos



  • 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



  • Esta relação significa que as instâncias das classes são conectadas, seja fisicamente ou conceitualmente.



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



  • O professor Caixeta está associado neste semestre para a Disciplina Eletromagnetismo. O professor Ivan também
  • O aluno André estava associado no semestre anterior para a disciplina Métodos Numéricos. Também para Mecânica Fundamental e Eletrônica Analógica I
  • O livro Ética do autor Aristóteles foi emprestado à aluna Luciene no dia 22/04/12
  • O DVD Vingadores foi alugado pelo cliente João da Silva no dia 10/05/12
  • A multa por excesso de velocidade foi aplicada ao condutor Sebastian no carro VolksWagen.



Exercícios

  • Descreva as associações e classes dos problemas abaixo:
    • 01 - O professor Caixeta está associado neste semestre para a Disciplina Eletromagnetismo. O professor Ivan também
    • 02 - O aluno Adiano estava associado no semestre anterior para a disciplina Métodos Numéricos. Também para Mecânica Fundamental e Eletrônica Analógica I
    • 03 - A nota 22,0 da primeira prova foi dada neste semestre para a disciplina ESOF do professor Luiz Cláudio
    • 04 - O livro Ética do autor Aristóteles foi emprestado à aluna Luciene no dia 22/04/10
    • 05 - O DVD Tropa de Elite foi alugado pelo cliente João da Silva no dia 10/10/10
    • 06 - A multa por excesso de velocidade foi aplicada ao condutor Emerson no carro Lotus


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


  • Estrutura todo-parte:
    • Conceito onde um objeto contém outros objetos dentro de si
    • Existem dois tipos: agregação e agregação por composição, ou apenas composição
    • A agregação consiste no relacionamento entre dois objetos, onde um pode viver sem a existência do outro, diferentemente de composição, um relacionamento forte onde um objeto necessita da existência do outro
  • 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
      • Uma turma não existe sem alunos





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 Itens de Pedido
      • Se destruirmos a Nota Fiscal, destruiremos também seus itens.



  • Descrevendo um pedido e seus itens:
  • Nota Fiscal de venda de uma loja de informática:
    • Cliente Nro 10012, Senhor Nivaldo Barros, adquiriu os seguintes produtos no dia 22/04/2012 pelo preço total de R$ 571,00
    • Produtos e preços unitários:
    • 1. Mouse sem fio (01 unid) R$ 95,00
    • 2. Impressora jato de tinta (01 unid) R$ 210,00
    • 3. Mouse pad (02 unid) R$ 5,00
    • 4. HD Externo (01 unid) R$ 256,00



  • Dê uma idéia de armazenamento destes dados?


Herança


  • “A herança é uma forma de reutilização de software em que o programador cria uma classe que absorve dados e comportamentos de uma classe existente e os aprimora com novas capacidades” (DEITEL, 2006, p.502). Elementos mais específicos são completamente consistentes com o mais geral, podem acessar seus atributos e métodos e implementar novos (Medeiros, 2006)
  • Com o recurso de herança podemos modelar uma hierarquia de classes.
  • A herança pode ser simples ou composta
  • Relacionamento entre um elemento mais geral e um mais específico
    • O elemento mais específico herda as propriedades e métodos do elemento mais geral
  • A relação de generalização também é conhecida como herança no modelo a objetos
  • Exemplos:
    • Uma pessoa pode ser um professor ou um estudante
    • Um estudante pode estar na graduação ou na pós-graduação