Introdução
- Uma base de dados deve representar, em algum SGBD - Sistema de Gestão de Bases de Dados, informações do mundo real. Podemos partir de observações mas efetivamente temos que representá-lo e no nosso caso, modelá-lo segundo algum padrão. Dois modelos semânticos muito utilizados são o DER - Diagrama Entidade/Relacionamento (E/R) e os modelos segundo a orientação a objetos (OO), que correspondem a técnicas para a representação de modelos conceituais.
- Relembrando, ER, tempos a definição e projeção de entidades externas, processo, depósitos de dados e fluxos de dados.
Modelo Orientado a Objetos
- A orientação a objetos surgiu em função das linguagens de programação e só depois foi adotada
para atividades de análise e desenho. Rumbaugh, Jacobson e Booch lideraram a frente para a proposta do UML.
- Antes da orientação a objetos, as linguagens de programação convidavam claramente a pensar nos problemas em dois momentos separados:
- o momento da identificação e a construção de estruturas de dados
- o momento dos algoritmos, implementados em procedimentos e/ou funções
- Artigo: [Artur Marques - 2005]
- Esta abordagem, como tudo, tem características interessantes ou não; um problema é que no mundo real forma e função não são separáveis. As situações do mundo cotidiano não nos permite fazer essa diferenciação tão clara. A forma de um ser humano pode ser diferente de um animal mas ao mesmo tempo podemos ter formas semelhantes. Funcionalmente cada um tem algumas características diferentes que também podem ser comuns portanto fica difícil resultar tudo em processos e depósitos.
- A abordagem OO diz-se assim mais natural. A mudança fundamental foi a criação de uma nova construção para tipos de dados:
- a classe
- A classe permite unificar estrutura e função; isto é, construir uma classe é modelar uma entidade em termos de atributos e de comportamentos, sem separá-los.
- Variáveis de uma classe (manifestações concretas da classe) dizem-se objetos ou instâncias da classe. O conjunto dos valores dos atributos de um objeto, em certo momento, dizem-se o estado do objeto
- Uma abordagem mais natural facilita a comunicação de conceitos mais abstratos (por exemplo o conceito de herança), pelo que a aplicação da teoria dos objetos à modelagem conceitual enriquece a sua expressividade.
Vantagens da modelagem OO
- [Coad e Yourdon, 1991]
- Permite uma perfeita compreensão dos domínios do problema
- Contribui para um melhor entendimento dos resultados da análise
- Possibilita a unificação de atributos e serviços
- Garante maior interação entre os envolvidos no problema
- Representa explicitamente atributos e serviços comuns entre objetos diferentes (mecanismo de herança)
- Facilita a reutilização dos resultados da análise.
- Facilita a integração das fases da análise (o que deverá ser construído) e de desenho (como construir).
Pilares da Orientação a Objetos
- Tipicamente, identificam-se como pilares da abordagem OO:
- Abstração: facilita a representação concisa de objetos complexos. O nível de abstração diz-se apropriado quando se captura tudo o que é relevante para o domínio do problema e se ignoram os outros detalhes
- Encapsulamento: no sentido em que os usuários (clientes) de um objeto (servidor) só precisam de conhecer a interface dos serviços a que acessam e não a sua implementação, de forma que se a classe mudar essa implementação, nenhuma modificação será necessária nos objetos clientes, que poderão assim comunicar exatamente com as mesmas mensagens. O encapsulamento também está relacionado com questões de acesso: há atributos e serviços que estão acessíveis a certas classes (e suas instâncias), mas não a outras
- Herança: está relacionada com situações de generalização e de especialização. A ideia é que classes que exibam os mesmos atributos e serviços, com eventuais pequenas diferenças e/ou pequenos acréscimos, possam derivar de uma classe geral comum e então especializar as suas diferenças.
- A abordagem OO pode ser utilizada para descrever o modelo de classes de um sistema. Esta estrutura estática pode ser escrita em muitas notações, sendo aqui feita uma introdução à notação UML
- UML é um padrão gerido pelo Object Management Group (OMG), para a visualização, especificação, construção e documentação de sistemas de software. Numa primeira aproximação, UML parece um produto de software, que tem evoluído ao longo de diversas versões mas, tal como uma linguagem, este padrão tem vários dialetos, próprios para domínios distintos, como modelagem de negócios, modelagem de dados e desenvolvimento em tempo real.
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
- Janela
- Esfera
- Ícone
- Driver
- Equipamento
- ...
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, ContaCorrente, Indice, 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
- Atributos: Representam o conjunto de características (estado) dos objetos daquela classe
- Métodos: Representam o conjunto de operações (comportamento) que a classe fornece

Relacionamentos entre classes
- Graficamente, as classes são representadas por retângulos, incluindo nome, atributos e métodos.

- 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 Classes
- 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
- Uma associação é representada por uma linha sólida conectando duas classes
- 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
- 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 um Aluno
- Um Aluno pode cursar de 0 até 8 Disciplinas
- Instanciações:
- O professor Caixeta está associado neste semestre para a Disciplina Eletromagnetismo. O professor Ivan também está associado a esta disciplina.
- 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.
- A nota 22,0 da primeira prova foi dada neste semestre para a disciplina ESOF do professor Luiz Cláudio.
- O livro Ética do autor Aristóteles foi emprestado à aluna Luciene no dia 22/04/11.
- O DVD Tropa de Elite foi alugado pelo cliente João da Silva no dia 10/10/11.
- A multa por excesso de velocidade foi aplicada ao condutor Sebastian no carro da Ferrari.
Exercícios
- Pense num problema do mundo real
- Defina as classes
- Desenhe as classes com seus relacionamentos
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
- Representa que a alteração de um objeto (o objeto indepedendente) pode afetar outro objeto (o objeto dependente)
- A dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe
Arquivo:DiagClasses-Dependencia.pdf
- 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
- Sistemas e outros exemplos de dependências:
- Objeto depende de objeto
- Acadêmico: Bolsista depende de Aluno
- Consultas: Exame depende de Consulta
- Game: Obstáculo depende da Fase
- Monitoramento: Alarme depende de Sensor
- Objeto depende de objeto
- 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
- Uma turma não existe sem alunos
- Carro -> Rodas
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.
- Nota Fiscal e Itens de Pedido
- 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/09/2010 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
- 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
Bibliografia
- Artigo Artur Marques. Modelo Conceptual – Diagrama de Classes. 2004
- Carlos Costa – Modelo Conceptual: Diagrama de Classes. 2004
- Hans-Erik Eriksson, Magnus Penker, Brian Lyons, David Fado – UML2 Toolkit. Wiley
Publishing, Inc., 2004
- Edward Yourdon, Peter Coad – Object Oriented Analysis. Yourdon Press Computing Series,
1991



