Classe

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 51

Tópicos da Aula

n Conceitos de programação orientada a


objetos

n Projeto orientado a objetos com UML

n Diagrama de Classes
Pensar Orientado a Objetos

n Onde quer que você olhe no mundo


real, você vê objetos
¡ Pessoas, animais, plantas, carros, etc.
n Humanos pensam em termos de
objetos
¡ Portanto, POO é alto nível
i.e., mais próximo dos humanos que
dos computadores
Características de Objetos

n Classificação
¡ Animados: possuem vida, se movem...
¡ Inanimados: não se movem por conta própria
n Objetos possuem atributos
¡ Tamanho, forma, cor, peso, etc.
n Objetos exibem comportamentos
¡ Uma bola rola, um avião voa
¡ Uma pessoa anda, fala, pensa, etc.
Classe de Objetos

n Uma classe é um “esqueleto” para


criação de objetos
¡ Como a planta é um “esqueleto” para
criação de casas
Definições

n Objeto:
¡ Entidade que descreve uma realidade
n Classe:
¡ Abstração que define objetos
n Instância:
¡ Criação de um objeto a partir de uma
classe
Projeto Orientado a Objetos

n Maneira natural de visualizar o software


¡ Documentação e comunicação entre a
equipe
n Modela o software semelhante ao mundo
real - usando objetos
n Objetos são modelados em termos de
seus atributos e comportamento
(métodos)
Por que projetar?

n Tão essencial quanto ter uma planta antes


da construção de uma casa
¡ Melhora a comunicação entre os membros da
equipe
¡ A equipe entende melhor o sistema
¡ Permite analisar o sistema sobre vários
aspectos
¡ Facilita a programação e a manutenção
¡ Diminui a possibilidade de erros
Projetar é Fundamental
Fases do Desenvolvimento

n Modelo Cascata
¡ Define atividades seqüenciais
¡ Outras abordagens são
baseadas nesta ideia

Definição de
Requisitos
Projeto
Implementação
Testes
Manutenção
A Linguagem UML
A Linguagem UML
n UML (Linguagem de Modelagem Unificada)
n É uma notação gráfica (visual) para projetar
sistemas OO
¡ Não é uma linguagem de programação
n Define diagramas padronizados
n É extensível
n É complexa
¡ Mas usaremos apenas um sub-conjunto da UML
De onde surgiu?

n Da união de três metodologias de


modelagem
¡ Método de Booch - Grady Booch
¡ Método OMT - Ivar Jacobson
¡ Método OOSE - James Rumbaugh.
Fundadores da UML
História da UML
n 1994: Booch, Jacobson e Rumbaugh
começaram a unificar suas notações
n 1996: Primeira versão (beta) da UML foi
liberada
n 1996/97: Grandes empresas formaram a
“UML Partners”
¡ HP, IMB, Microsoft, Oracle, etc.
n 1997: UML foi adotada pela a OMG (Object
Management Group) como linguagem
padrão de modelagem
UML Define Diagramas

n Tipos Principais de Diagramas


¡ Estrutural
¡ Comportamental
n Objetivos
¡ Visualizar o sistema
¡ Especificar estrutura e/ou comportamento
¡ Guiar e documentar das decisões
Alguns Diagramas UML

n Diagramas Estruturais (Estáticos)


¡ Diagrama de Classes
¡ Diagramas de Objetos
¡ Diagrama de Caso de Uso
¡ Diagrama de Componentes, etc.
n Diagramas Dinâmicos
¡ Diagrama de Seqüência
¡ Diagrama de Estados
¡ Diagrama de Atividades
¡ Diagrama de Colaboração, etc.
Alguns Diagramas UML

n Diagramas Estruturais (Estáticos)


¡Diagrama de Classes
¡ Diagrama de Caso de Uso

Por Diagramas de
¡ enquanto, Objetostrabalhar apenas
vamos
¡ Diagrama de Componentes,
com diagramas etc.
de classes
n Diagramas Dinâmicos
¡ Diagrama de Seqüência
¡ Diagrama de Estados
¡ Diagrama de Atividades
¡ Diagrama de Colaboração, etc.
Diagrama de Classes

n Diagrama mais utilizado da UML


n Serve de apoio para a maioria dos
outros diagramas
n Define a estrutura das classes do
sistema
n Estabelece como as classes se
relacionam
Meu Primeiro Diagrama

Pessoa

nome
email

Professor Aluno

matricula
Outro Diagrama de Classes
Diagrama de Classes

A estrutura do projeto
Diagrama de Classes

n O mais importante e o mais utilizado


diagrama da UML
n Permite a visualização das classes
que compõem o sistema
n Representa
¡ Atributos e métodos de uma classe
¡ Os relacionamento entre classes.
Diagrama de Classes

n Apresenta uma visão estática de como


as classes estão organizadas

n Preocupação com a estrutura lógica


Atributos
n Permite a identificação de cada objeto de
uma classe
n Os valores dos atributos podem variar de
instância para instância
n Atributos devem conter o tipo de dados a
ser armazenado
¡ Byte, boolean, int, double, char, String, etc.
Métodos
n São apenas declarados neste diagrama
¡ Diagrama de Classes não define a
implementação

n Outros diagramas permitem modelar o


comportamento interno dos métodos
¡ Diagrama de Seqüência
¡ Diagrama de Atividades
Representação de uma Classe

n Uma classe é representada por um


retângulo com três divisões:
¡ Nome da Classe
¡ Atributos da Classe
¡ Métodos da Classe Pessoa
nome
email
enviarMensagem()
Representação de uma Classe

n Uma classe é representada por um


retângulo com três divisões:
¡ Nome da Classe
Nome
¡ Atributos da Classe
¡ Métodos da Classe Pessoa
Atributos nome
email
Métodos enviarMensagem()
Tipos de visibilidade
n Pública (+)
¡ O atributo ou método pode ser
utilizado por qualquer classe

n Protegida (#)
¡ Somente a classe ou
sub-classes terão acesso

n Privada (-)
¡ Somente a classe terá acesso
Tipos de visibilidade
n Pública (+)
¡ O atributo ou método pode ser
utilizado por qualquer classe

Pessoa
n Protegida (#)
# nome
¡ Somente a classe ou - email
sub-classes terão acesso
+ enviarMensagem()
n Privada (-)
¡ Somente a classe terá acesso
Relacionamento
n Classes possuem relacionamentos
entre elas
¡ Compartilham informações
¡ Colaboram umas com as outras
n Principais tipos de relacionamentos
¡ Associação
¡ Agregação / Composição
¡ Herança
¡ Dependência
Comunicação entre Objetos (I)
n Conceitualmente, objetos se
comunicam através da troca de
mensagens.
n Mensagens definem:
¡ O nome do serviço requisitado
¡ A informação necessária para a
execução do serviço
¡ O nome do requisitante.
Comunicação entre Objetos (II)
n Na prática, mensagens são
implementadas como chamadas
de métodos
¡ Nome = o nome do método
¡ Informação = a lista de parâmetros
¡ Requisitante = o método que
realizou a chamada
Associações

n Descreve um vínculo entre duas classes


¡ Chamado Associação Binária

n Determina que as instâncias de uma


classe estão de alguma forma ligadas às
instâncias da outra classe
Multiplicidade
No máximo um. Indica que os Objetos da
0..1 classe associada não precisam
obrigatoriamente estar relacionados.
Um e somente um. Indica que apenas um
1..1 objeto da classe se relaciona com os objetos
da outra classe.
Muitos. Indica que podem haver muitos objetos
0..* da classe envolvidos no relacionamento

Um ou muitos. Indica que há pelo menos um


1..* objeto envolvido no relacionamento.
3..5 Valores específicos.
Representação de Associação

Cliente DVD
0..* <locados>
registro titulo
0..1
Agregação

n Tipo especial de associação


n Demonstra que as informações e um
objeto precisam ser complementadas
por um objeto de outra classe
n Associação Todo-Parte
¡ objeto-todo
¡ objeto-parte
Representação de Agregação

n Um losango na extremidade da classe


que contém os objetos-todo

Time Pessoa

nome nome
email
Composição

n Uma variação do tipo agregação


n Representa um vínculo mais forte
entre objetos-todo e objetos-parte
n Objetos-parte têm que pertencer ao
objeto-todo
¡ O todo não existe (ou não faz sentido)
sem a parte
Representação da Composição

n Um losango preenchido, e da mesma


forma que na Agregação, deve ficar ao
lado do objeto-todo

Time Jogador

nome posicao
Especialização / Generalização

n Identificar classes-mãe (gerais) e


classes-filhas (especializadas)

n Atributos e métodos definidos na


classe-mãe são herdados pelas
classes-filhas
Especialização / Generalização

Pessoa

nome
email

Professor Aluno

matricula
Dependência

n Tipo menos comum de


relacionamento

n Identifica um baixo grau de


dependência de uma classe em
relação a outra
Dependência

n Representado por uma reta tracejada entre


duas classes
n Uma seta na extremidade indica o
dependente

Funcionario DVD

titulo
locar()
Dependência

n Representado por uma reta tracejada entre


duas classes
n Uma seta na extremidade indica o
dependente

Funcionario DVD

titulo
locar(Funcionario func)
locar()
Notas

n Informativos
¡ Algum comentário na classe, método
ou atributo
¡ Alguma restrição de funcionalidade

n Objetivo é informa como o objeto se


comporta
Notas

Nome é obrigatório para


toda instancia desta classe
Pessoa

nome
email
Referências

n DEITEL, H. M.; DEITEL P. J. Java:


Como Programar, 6a. Edição.
Pearson, 2005.
n BOOCH, G., RUMBAUGH, J.,
JACOBSON, I. UML, Guia do Usuário.
Rio de Janeiro: Campus, 2000.
n Crie uma classe pet com seus
atributos.
n Crie as classes gato e cachorro como
classe filhos da classe pet
n Defina os métodos
n E relação entre as classes
Exercício: Criação de um Diagrama de
Classes para um Sistema de Biblioteca

n Você está projetando um sistema para gerenciar uma biblioteca. O sistema


deve gerenciar livros, usuários e empréstimos. Os principais requisitos são:
n 1. **Livros**:
n - Cada livro tem um título, um autor e um ISBN (número de identificação
único).
n - Livros podem estar disponíveis ou emprestados.
n 2. **Usuários**:
n - Cada usuário tem um nome, um ID de usuário e um endereço de e-mail.
n - Usuários podem emprestar livros.
n 3. **Empréstimos**:
n - Um empréstimo associa um livro a um usuário.
n - Cada empréstimo tem uma data de empréstimo e uma data de devolução
(se o livro já foi devolvido).
1. **Identificação das Classes**:
n - Liste todas as entidades que você acha que devem ser representadas
como classes no sistema. Baseie-se no cenário fornecido.
2. **Atributos e Métodos**:
n - Para cada classe identificada, determine quais atributos (propriedades) e
métodos (funções) ela deve ter. Por exemplo, a classe `Livro` pode ter
atributos como `titulo` e `autor`, e métodos como `emprestar()` e `devolver()`.
3. **Relacionamentos**:
n - Identifique os relacionamentos entre as classes. Por exemplo, um usuário
pode ter vários empréstimos, e cada empréstimo está associado a um livro e
a um usuário.
4. **Criação do Diagrama**:
n - Utilize uma ferramenta de diagramação (como Lucidchart, Draw.io, ou até
mesmo papel e caneta) para desenhar o diagrama de classes. Inclua:
n - As classes identificadas com seus atributos e métodos.
n - Relacionamentos entre as classes, como associações, agregações ou
composições, e a multiplicidade (por exemplo, um usuário pode ter 0 ou mais
empréstimos).
1. **Classe Livro**:
n - Atributos: `titulo`, `autor`, `isbn`, `disponivel`
n - Métodos: `emprestar()`, `devolver()`
2. **Classe Usuario**:
n - Atributos: `nome`, `id_usuario`, `email`
n - Métodos: `emprestar_livro()`, `devolver_livro()`
3. **Classe Emprestimo**:
n - Atributos: `data_emprestimo`, `data_devolucao`
n - Relacionamentos:
n - Associa-se a `Livro` (1 livro pode ter muitos empréstimos, mas
cada empréstimo é para um livro específico).
n - Associa-se a `Usuario` (1 usuário pode ter muitos empréstimos,
mas cada empréstimo é para um usuário específico).

Você também pode gostar