Processo de Modelagem OO

Bibliografia
- Sugestão:
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
- relacionamentos com outros objetos
- Classe é uma descrição de um grupo de objetos que tem:
- 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
- Carros de passeio
- Alunos
- Alunos graduação
- Alunos de pós-graduação
- Notas
- Disciplinas
- Professores
- Livros
- Empréstimos
- Devoluções
- Requerimentos
- Atestados
- Animais
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 informações que devem ser armazenadas ou analisadas?

- Existem sistemas externos ao que está sendo modelado?
- Se existir, deverão ser avaliados e pode ser que se tornem classes dentro do sisstema.
- Existem sistemas externos ao que está sendo modelado?

- 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
- Existem classes de bibliotecas, componentes ou modelos externos a serem utilizados pelo sistema modelado?
- 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.
- Qual o papel dos atores dentro do sistema?
- 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
Representação
- Se usa um retângulo dividido em 3 partes (ou 4 se precisar):

- 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.
- Para melhor representar a visibilidade dos atributos e operações em uma classe utiliza-se as seguintes marcas e significados:
- 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
- Um professor ministra uma disciplina para alunos numa sala
- 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)
Associações
- São relacionamentos estruturais entre instâncias e especificam que objetos de uma classe estão ligados a objetos de outras classes
- 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:
- Sistema de Vendas de Produtos de uma Loja:
- O cliente Cleber dos Reis está associado neste mês de Janeiro, ao débito de uma parcela de R$ 3.500,00 referente à compra de uma TV. A cliente Ana Maria Lima, por sua vez, pagou em uma parcela, uma geladeira e vai receber o produto em casa.
- Sistema de Vendas de Produtos de uma Loja:

- Matrículas:
- Sistema Acadêmico:
- 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.
- Sistema Acadêmico:
- 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/19
- Locadora:
- O carro Honda FIT foi alugado pelo cliente João da Silva no dia 10/10/18 na cidade de Poconé - MT.
- Trânsito:
- A multa por atraso IPVA de 2019 foi aplicada ao condutor Alex Mota proprietário do carro Fiat Uno ano 2012.
Exercícios
- Descreva as associações e classes dos exemplos abaixo:
- Biblioteca: O Livro Circuitos Elétricos do autor Edminister foi reservado pelo professor Luis Carlos
- Seguradora: O carro Golf de placa GKV-2031 teve o seguro adquirido durante 1 ano.
- Compras: O produto Vinho do Porto foi adquirido junto à Vinícola Marialva.
- Acadêmico: O aluno Elias Alves solicitou trancamento do curso de Ciência da Computação em 12/12/2018.
- 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:
- Para Turma ---<> Alunos pode-se:
- Criar uma turma sem Alunos e depois matriculá-los na Turma
- Cadastrar os Alunos independente da Turma
- Ter uma Turma cadastrada e nenhum Aluno criado
- Ter Alunos criados e nenhuma Tiurma cadastrada
- Para Viatura ---<> Rodas podemos:
- Tirar as Rodas da Viatura que ainda continuará sendo um carro
- Cadastrar as Rodas em estoque sem que tenha uma Viatura criada
- Criar o Objeto Viatura e só depois vincular as Rodas
- Para Turma ---<> Alunos pode-se:

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 (cabeçalho), 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. Aprovados
- Para a Relação de Aprovados mostrada abaixo, desenhe um modelo de armazenamento destes dados.
