5COP088 Laboratório de Programação

Propaganda
5COP088 – Laboratório de Programação
Aula 2 – Java
5COP088
Laboratório de Programação
Aula 2
Java
Prof. Dr. Sylvio Barbon Junior
Sylvio Barbon Jr – [email protected]
1
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Orientação a Objetos
1) Discussão
2) Encapsulamento
3) Herança
4) Polimorfismo
5) Sobrescrita e Sobrecarga
6) Conversão de Variáveis de Referência
7) Implementação de Interface
8) Tipos de Retorno
9) Construtores e Instanciamento
10) Estáticos
11) Acoplamento e Coesão
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Discussão
Garbage Collector
“Coletor de Lixo”
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Encapsulamento
1) O encapsulamento ajuda a ocultar a implementação por trás de
uma interface ou API
2) O código encapsulado fornece dois recursos:
- Proteção das variáveis de instância (private)
- Os métodos get e set fornecem acesso ás variáveis de
instância;
3) “herda de” e “subtipo de” são equivalentes (extends);
4) “Tem um”, significa que a instância de uma classe “tem uma”
referência de outra ou da mesma classe;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Encapsulamento
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Encapsulamento
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Encapsulamento
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Encapsulamento
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Herança
1) A herança é um mecanismo que permite que uma classe seja
um subclasse de outra, herdando variáveis e métodos da
superclasse;
2) A herança é necessária para o polimorfismo, sobrescrição,
sobrecarga e conversão.
3) Todas as Classes (exceto Object) são subclasses do tipo Object.
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Herança
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Herança
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Herança
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Herança
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Polimorfismo
1) Polimorfismo significa muitas formas;
2) Uma variável de referência é sempre de um só tipo, mas ela
pode referir-se a um objeto do subtipo;
3) Um objeto pode ser pode ser referido por tipos diferentes,
desde que sejam de mesmo tipo ou subtipo do objeto;
4) O tipo de variável de referência (NÃO DO OBJETO) determina
quais métodos poderão ser chamados.
5) As chamadas polimórficas a métodos se aplicam apenas a
métodos de instâncias sobrescritos.
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Polimorfismo
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Polimorfismo
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Polimorfismo
Saída:
Tiro de meta!!!
>>Fernando Prass
Defesa!!!
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
1) Os métodos podem ser sobrescritos ou sobrecarregados, os
construtores podem ser sobrecarregados e não sobrescritos;
2) O métodos abstract devem ser soberscritos pela primeira
superclasse não concreta (não abstract);
3) Considerando o método sobrescrito:
- Deve ter a mesma lista de argumentos;
- Deve ter o mesmo tipo de retorno (considerar subclasse);
- Não deve ter um modificador de acesso mais restritivo;
- Pode ter um modificar de acesso menos restritivo;
4) Métodos final não podem ser sobrescritos;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
5) Só os métodos herdados podem ser sobrescritos;
6) Sobrecarga significa dizer que é o mesmo nome de método
porém com argumentos diferentes;
7) Os métodos sobrecarregados:
- Devem ter listas de argumentos diferentes;
- Podem ter tipos de argumentos diferentes;
- Podem ter modificadores de acesso diferentes;
8) Os métodos de uma superclasse podem ser
sobrecarregados;
9) O Polimorfismo é aplicado a sobrescrita e não à sobrecarga.
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
10) O tipo de objeto (e não a variável de referência) determina
qual método sobrescrito será usado no tempo de execução;
11) O tipo de referência determina qual o método
sobrecarregado será usado no tempo de compilação.
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Sobrescrição e Sobrecarga (Overide e Overload)
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Conversão de Variáveis de Referência
-
Existem dois tipos de conversão:
1) Redutora: Você converte o seu objeto em um subtipo,
para tal é necessário uma conversão explícita (CAST).
Exemplo:
Animal animal = new Animal();
Cachorro c = (Cachorro) animal;
2) Ampliadora: você atribui uma variável de referência a
uma de um supertipo explicitamente ou
implicitamente. Lembrando que a atribuição restringe
o acesso da nova variável.
Exemplo:
Cachorro c = new Cachorro();
Animal a = (Animal) c;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Implementação de Interface
-
Quando você implementa uma interface você está
“cumprindo o seu contrato”
-
A implementação adequada de uma interface, significa
sobrescrever todos os métodos definidos pela interface;
-
Uma mesma classe pode implementar diversas interfaces;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Tipos de Retorno
-
-
Os métodos sobrecarregados podem modificar o seu tipo
de retorno, os sobrescritos não;
Um array é um tipo de retorno válido;
Métodos com tipo de retorno primitivos podem retornar
qualquer valor que possa ser convertido implicitamente
para o retorno;
Métodos com um tipo de retorno podem retornar um
subtipo da classe retornada;
Os métodos que retornam uma interface podem retornar
qualquer implementador da mesma.
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Construtores e instanciamento
-
-
Não se pode chamar um objeto sem que seja chamado um
construtor;
Toda superclasse da árvore de herança de um objeto
chamará um construtor;
Toda classe, mesmo as classes abstract, tem pelo menos um
construtor;
- Os construtores devem ter o mesmo nome da classe;
- Os construtores não tem tipo de retorno;
O construtor sempre chamará o construtor de sua
superclasse até alcançar o construtor de Object;
Os construtores podem usar qualquer modificador de
acesso;
O compilador criará um construtor padrão se nenhum for
implementado;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Construtores e instanciamento
-
A primeira instrução de todo construtor deve ser uma
chamada a this() ou super();
-
As interfaces não tem construtores;
-
Os construtores nunca são herdados, portanto, não podem
ser sobrescritos;
-
Um construtor só pode ser chamado diretamente por outro
construtor (usando this() ou super());
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Estáticos
-
Use métodos static para implementar comportamentos que
não sejam afetados pelo estado de quaisquer instâncias;
-
Use variáveis static para armazenar dados que sejam
específicos à classe, em vez de à instância;
-
Todos os membros static pertencem à classe, e não a uma
instância;
-
Um método static não pode acessar uma variável de
instância diretamente.
-
Métodos static não podem ser sobrescritos, mas podem ser
redefinidos;
5COP088 – Laboratório de Programação
Aula 2 – Java
Aula 2 – Acoplamento e Coesão
-
-
-
O acoplamento refere-se ao nível em que uma classe
conhece ou usa membros de uma outra classe;
O acoplamento fraco é o estado desejável para classes bem
encapsuladas, que minimizam as referências umas às
outras e limitam a extensão do uso.
O acoplamento forte é o estado indesejável;
A coesão refere-se ao nível em que uma classe tem um
único e bem definido papel ou responsabilidade;
A alta coesão é o estado desejável de uma classe cujos
membros dão suporte a um único e bem definido papel ou
responsabilidade;
A alta coesão é o estado desejável de uma classe cujos
membros dão suporte a um único e bem definido papel;
A baixa coesão é indesejável, sem foco para a classe;
5COP088 – Laboratório de Programação
Aula 2 – Java
Referências
Java Como Programar - Deitel,P.; Deitel, H..
Learn Java Now - Davis, Stephen Randy.
Big Java / Cay Horstmann ; tradução: Edson Furmankiewicz. -
Download