O que é um Objeto?

Propaganda
Engenharia de Software
Aula 10 – Representação dos Conceitos de Orientação a Objetos
Prof. Me. Rogério Ferreira
2
Roteiro

Representação dos Conceitos OO
–
–
–
–
–
–
Mensagens
Navegabilidade
Pacotes
Encapsulamento
Herança
Polimorfismo
3
Leitura necessária

Livro: Modelagem de Sistemas Orientados a
Objetos, de Sérgio Furgeri.
– Capítulo 7.
Classes e Objetos
A partir da análise dos casos de uso, podemos
identificar Classes e Objetos.
O que é um Objeto?
É qualquer elemento do mundo real (concreto ou
abstrato), constituído de atributos e operações.
O que é uma Classe?
É a representação de um conjunto de objetos
que compartilham a mesma Estrutura e
Comportamento.
Estrutura: de que o objeto é composto (atributos)
Comportamento: ações que o objeto realiza
(operações).
4
Classes e Objetos
5
Classe é um “molde” que contém a definição
do objeto. Define o que ele tem (atributos) e o
que ele sabe fazer (métodos ou operações).
Classes e Objetos
Definição de uma classe
Nome da Classe
Atributos
Métodos
6
7
Classes e Objetos
Objeto é a instância de uma classe. A partir da
definição de uma classe, pode-se criar inúmeros
objetos da mesma.
Objetos da classe
NotaFiscal
Mensagens
●
●
8
Método: ação que o objeto realiza. Não executa
aleatoriamente, precisa de um estímulo para ser
executado.
Uma mensagem é a execução do Método de uma
Classe.
Construtor
●
●
9
É o método executado quando o objeto é criado
(por meio da palavra reservada new).
Um construtor pode inicializar atributos e chamar
outros métodos, para construir objetos complexos.
Construtor sem Atributos
Construtor com Atributos
Pacotes
10
Pacotes funcionam como um diretório, cujo objetivo é
organizar as classes. Geralmente, classes da mesma
afinidade ou do mesmo propósito ficam no mesmo pacote.
11
Pacotes
Na linguagem Java, a palavra reservada package é
utilizada para atribuir classes a pacotes.
Pacote Java
Exercício
●
●
Implemente a classe Medicamento na linguagem Java com
todos os seus atributos e métodos:
Considere as seguintes regras:
–
–
–
–
●
12
A classe deve ter dois construtores: um sem parâmetros e outro
com parâmetros para inicializar todos os atributos da classe.
O método alterarCodigo deve alterar o código do objeto,
mostrando qual o código antigo e qual o código novo.
O método excluir deve “resetar” todos os atributos do objeto.
O método mostrar deve mostrar o valor de todos os atributos do
objeto.
Encapsulamento
13
Encapsular → colocar em uma cápsula
Encapsular: ocultar detalhes de uma estrutura
complexa, de forma a facilitar a análise de um
problema.
O Encapsulamento restringe o acesso a variáveis
(atributos) e métodos de uma Classe. O objetivo é
utilizar os serviços da classe, sem saber exatamente
como isso ocorre.
14
Encapsulamento
O encapsulamento é especificado por meio de quatro
modificadores de acesso: público(+), privado(­),
protegido(#) e pacote(~).
Modificador público
Situação indesejada!
15
Encapsulamento
O encapsulamento é especificado por meio de quatro
modificadores de acesso: público(+), privado(­),
protegido(#) e pacote(~).
Erro de Compilação!
Encapsulamento
Modificadores de Acesso: são utilizados para
implementar o encapsulamento, restringindo o
acesso aos Atributos ou Métodos da classe.
­
Público
Protegido
+
Restrição
Pacote
Privado
16
Encapsulamento
Modificadores de Acesso: privado
Fonte: http://www.ustudy.in/node/1037
17
Encapsulamento
Modificadores de Acesso: pacote (default)
Fonte: http://www.ustudy.in/node/1037
18
Encapsulamento
Modificadores de Acesso: protegido
Fonte: http://www.ustudy.in/node/1037
19
Encapsulamento
Modificadores de Acesso: público
Fonte: http://www.ustudy.in/node/1037
20
Herança
A palavra Herança, por si só, sugere ganhar ou
receber algo.
21
22
Herança
Herança é um mecanismo pra expressar similaridade
entre classes.
Superclasse
Relação de Generalização (é-um)
Subclasses
23
Herança
Vantagens de se usar Herança
Organização, criada por meio de uma hierarquia de
classes. A hierarquia obedece as regras do
encapsulamento.
24
Herança
Vantagens de se usar Herança
Reutilização: alterações realizadas na superclasse refletem
diretamente nas subclasses.
25
Herança
Vantagens de se usar Herança
Especialização: possibilidade de criar “classes
especialistas”, com regras específicas não definidas na
classe original.
26
Herança
Implementação da Herança em Java: utiliza-se a palavra
reservada extends.
Superclasse
Subclasses
Exercício
●
27
Resolver e entregar a seguinte lista de exercícios:
Lista de Exercícios 05 – Orientação a Objetos e a
Linguagem Java
28
Herança
Classes Abstratas: classes que não permitem a geração de
instâncias (criação de objetos) a partir delas.
Classes Abstratas
29
Herança
Classes Abstratas: classes que não permitem a geração de
instâncias (criação de objetos).
Erro de Compilação!
Situação Válida!
Polimorfismo
●
●
30
Polimorfismo = muitas formas.
Característica de um mesmo objeto se comportar de
formas diferentes, em contextos diferentes.
A ideia do Polimorfismo é criar uma classe genérica que
possa ter comportamento variado, dependendo das
necessidades do momento da aplicação.
Polimorfismo
31
Polimorfismo
32
Os objetos retangulo, triangulo e paralelogramo pertencem à
mesma classe, mas se comportam de forma diferente.
Associação entre classes
33
Multiplicidade um-para-um (mínimo zero ou um
para qualquer um dos lados)
Associação um-para-um, com mínimo zero do lado do SomAutomotivo
Associação correspondente codificada na linguagem Java
Associação entre classes
34
Multiplicidade um-para-muitos (mínimo zero ou
um para qualquer um dos lados)
Associação um-para-muitos, com mínimo zero do lado do Pedido
Associação correspondente codificada na linguagem Java
Associação entre classes
35
Multiplicidade muitos-para-muitos (mínimo zero
ou um para qualquer um dos lados)
Associação muitos-para-muitos, com mínimo zero do lado do Pedido
Associação correspondente codificada na linguagem Java
Associação entre classes
36
Associação com Navegabilidade: Representa a
direção em que ocorre a comunicação entre as
classes. Em termos práticos, define que um objeto
precisa conhecer o outro, mas do lado oposto não.
Associação com navegabilidade Unidirecional
Associação correspondente codificada na linguagem Java
Associação entre classes
37
Agregação: objeto parte existe de forma independente
do objeto todo.
Relação de Agregação
Associação entre classes
38
Agregação: objeto parte existe de forma independente
do objeto todo.
Código correspondente na linguagem Java
Associação entre classes
Composição: objeto parte não existe de forma
independente do objeto todo.
Relação de Composição
39
Associação entre classes
Composição: objeto parte não existe de forma
independente do objeto todo.
Código correspondente na linguagem Java
40
Exercícios
1) Conceitos Básicos
Escolha a alternativa correta entre os
conceitos básicos...
a) uma classe abstrata permite a geração de
instâncias a partir dela;
b) o carácter # é utilizado para definir que um
atributo ou método é público;
c) não é possível que uma classe localizada em um
pacote acesse outra classe de outro pacote;
d) modelos mais abstratos são mais detalhados que
modelos menos abstratos;
e) mensagem é o mecanismo que possibilita que os
objetos se comuniquem.
41
Exercícios
2) Encapsulamento
O encapsulamento é um mecanismo da
orientação a objetos que...
a) possibilita garantir o acesso a variáveis e métodos
de uma classe sem restrições;
b) permite padronizar o acesso a variáveis e métodos
da classe;
c) possibilita uma classe herdar atributos e métodos
de outra classe;
d) visa restringir o acesso a atributos e métodos de
outra classe, ocultando detalhes de implementação;
e) possibilita restringir a criação de instâncias de uma
classe.
42
Exercícios
3) Herança
Encontre a afirmação errada em relação
à Herança:
a)em uma hierarquia de herança, normalmente a
superclasse é mais abstrata que as suas subclasses;
b)uma subclasse tem acesso somente aos atributos e
métodos protegidos da superclasse;
c)de acordo com os conceitos da orientação a objetos,
cada subclasse pode ter várias superclasses;
d)possibilidade de reuso e organização são duas das
principais vantagens da herança;
e)classes abstratas também podem conter métodos
abstratos.
43
Exercícios
4) Relacionamentos entre Classes [Concurso Sanepar/2008]
Com base no diagrama abaixo, assinale a(s)
alternativa(s) correta(s):
a)com base nas operações representadas é possível implementar o
polimorfismo;
b)a classe Motorista não tem acesso ao atributo nome da classe
Pessoa;
c) a classe Médico tem acesso a cinco atributos;
d)é possível instanciar objetos da classe Funcionario;
e)não é possível instanciar objetos da classe Pessoa.
44
Exercícios
45
5) Conceitos Básicos [Concurso TRT-13ª Região (PB)/2014]
Considere o seguinte caso:
Observando o trâmite de processos no tribunal, Marta percebeu que tanto advogados quanto juízes realizavam análises nos diversos pareceres constantes dos processos. Com sua experiência como analista ela deduziu que uma possível informatização dos processos poderia contemplar uma classe chamada Advogado e outra chamada Juiz, tendo como base uma classe comum chamada Pessoa, com um método chamado AnalisarParecer. Este método (definido na classe base) se comportaria de maneira diferente para as chamadas feitas a partir de uma instância de Advogado e para as chamadas feitas a partir de uma instância de Juiz, em razão deles terem responsabilidades diferentes em sua forma de analisar e opinar sobre os pareceres. Pela observação do método e seu comportamento, o princípio da orientação a objetos aplicável no caso, fundamentalmente, é...
a) Herança
b) Encapsulamento
c) Polimorfismo
d) Abstração
e) Visibilidade
46
Exercícios
6) Escrever e entregar na próxima aula um texto contendo
as palavras do quadro abaixo. Escreva um texto conciso,
que contenha ligações entre os termos e a definição destes
termos.
UML
Atributo(s)
Instância
Encapsulamento
Generalização
Papel
Polimorfismo
Classe(s)
Objeto(s) Método(s)
Relacionamento(s) Mensagem
Navegabilidade Associação
Dependência Agregação
Composição
Multiplicidade
Herança Modificador(es) de Acesso
Observação: as palavras em negrito devem conter um
exemplo no texto, apresentado por meio de um diagrama
de classes ou código fonte Java, sendo ainda um exemplo
diferente do apresentado no material de aula.
Exercícios
47
7) Entregar:
Lista de Exercícios 06 – Associações e Polimorfismo
Dúvidas
48
Referências
●
49
FURGERI, S. Modelagem de Sistemas Orientados a
Objetos. 1a. Ed. São Paulo: Editora Érica, 2013.
Download