A maior rede de estudos do Brasil

Grátis
Aula_05 LINGUAGEM DE PROGRAMAÇÃO

Pré-visualização | Página 1 de 1

*
*
Linguagem de Programação
EDUARDO LUIZ PARETO
Rio de Janeiro, 7 de setembro de 2011
*
Aula 5
Herança
Objetivos
Apresentar os conceitos de Herança
Criar e manipular classes e objetos que se relacionem através de herança
Sobrecarga de métodos
Utilizar interfaces gráficas interagindo com objetos e classes previamente definidos;
*
*
Herança
Significa a capacidade de incorporar as características e as funcionalidades de uma classe. Assim como a herança de todas as operações e dados, você pode especializar métodos da super classe e especificar novas operações e dados, para refinar, especializar, substituir ou estender a funcionalidade da classe progenitora.
*
*
*
Herança
Uma classe define um conjunto de dados – Atributos – e um conjunto de métodos 
Todos os objetos de uma classe mantêm o mesmo conjunto de atributos e métodos. 
Através do mecanismo de herança, tendo definido uma classe base é possível criar classes derivadas que: 
herdam os atributos e métodos da classe base 
definem novos atributos e métodos 
podem redefinir os métodos herdados
*
*
*
Herança
*
*
*
Terminologias
Estender – Criar uma nova classe que herda todo o conteúdo da classe existente.
Superclasse – Uma classe progenitora ou base.
Subclasse – Uma classe filha que herda ou estende uma superclasse
*
*
*
Classe Abstrata
Uma classe abstrata em Java define atributos e métodos. 
Numa classe abstrata, um método pode ser definido com o modificador “abstract”. Nesse caso: 
A classe abstrata não implementa os método abstratos. 
As classes derivadas devem implementar os métodos abstratos. 
Uma classe abstrata é utilizada quando deseja-se fornecer uma interface comum a diversos membros de uma hierarquia de classes. Os métodos declarados na classe abstrata serão implementados em suas subclasses, através de polimorfismo.
Imagine uma classe que no seu sistema, a uma funcionalidade existente em todas as subclasses quer ser apresentada na superclasse. Este método é definido na superclasse como Abstract. Nas subclasses, estes métodos serão implementados, cada um com a sua peculiaridade.
*
*
*
Notas importantes
Como visto anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse. 
Para indicar que um método de uma classe deve necessariamente ser redefinido em cada uma de suas subclasses devemos usar o modificador abstract. 
Uma classe que contém um ou mais métodos abstratos deve ser declarada explicitamente como abstrata. Essa classe, no entanto, pode ter construtores e métodos concretos (não-abstratos). 
Se uma classe é declarada como abstract, não podem ser criados objetos desta classe. 
*
*
*
Notas Importantes
Se uma subclasse é derivada de uma superclasse que contém um método abstrato e se esse método abstrato não for redefinido na subclasse, esse método permanece abstract na subclasse. Com isso, a subclasse deverá ser declarada explicitamente como abstract. 
Declarar um método como abstrato é uma forma de obrigar o programador a redefinir esse método em todas as subclasses para as quais se deseja criar objetos. 
Como um método abstrato deve ser redefinido nas subclasses, na superclasse ele não precisa ter implementação alguma.
*
*
*
Exemplo
*
*
*
Vamos imaginar a seguinte hierarquia de classes:
*
onde Chefe, PorComissao, PorItem e PorHora são classes finais.
Todas essas subclasses vão precisar redefinir o método ganha(). Como se tratam de tipos diferentes de empregado, cada um ganha de uma forma: 
Chefe: salário fixo e predefinido; 
PorComissao: valor fixo + comissão * vendas; 
PorItem: valor por produção * quantidade produzida; 
PorHora: valor por hora * total de horas trabalhadas.
*
*
Chefe.java
*
*
*
PorComissao.java
*
*
*
PorItem.java
*
*
*
PorHora.java
*
*
*
Programa para testar
*
*
*
Polimorfismo
*
É a capacidade que os métodos de mesmo nome têm de efetuarem tarefas diferentes.
O mesmo método com várias formas.
Acontece de duas maneiras em Java: quando os métodos são definidos em função da classe que os utiliza (sobreposição) ou dos diferentes conjuntos de argumentos definidos para cada método (sobrecarga).
Uso do “this”
Chamada para outro construtor da mesma classe. É um excelente artifício para combinar código dos construtores.
*
*
Exemplo
public class Cliente ()
{
	private String nome; //campo de instância
	private int numConta; //campo de instancia
	public Cliente(String n, int c) //Construtor da Classe
	{ 
		nome = n;
		numConta = c;
	}
}
*
*
*
Exemplo
public class Cliente ( ) {
	private String nome; //campo de instância
	private int numConta; //campo de instancia
	public Cliente(String n) //Construtor 1 da Classe Cliente { 
		this(n, 0) //Chama o Construtor 2 da própria classe
	}
	public Cliente(String n, int c) { 
		nome = n;
		numConta = c;
	}
	public int getNumConta () { 
		return numConta;
	}
	public void setNumConta (int numero) { 
		numConta = numero;
	}
}
*
*
*
Exemplo
public class ClienteOuro extends Cliente
{
	private double limiteChequeEspecial; //Atributo da Classe
 
	public ClienteOuro (String n, int c, double limite) 
	{ 
		super(n, c ); //precisa ser primeiro comando método
		limiteChequeEspecial = limite;
	}
}
*
*
*
Exercício
Faça um programa com uma interface gráfica para criar o objeto Cliente
Faça outro programa com outra interface gráfica para criar o ClienteOuro
Para ambos exercícios utilize o Jframe para construir as interfaces.
Crie as classes isoladamente em arquivos separados.
*
*
*
Fim!
*
*
AULA 1
AULA 1
*
AULA 1
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1