Classes
e Objetos

1º Nível

2º Nível

3º Nível
![]()
n Níveis
Abstração de Tipos de Dados
Quando itens de dados são compostos para tipos de dados, semelhante a
uma data, você pode definir um número de bits de programas que especifica a
operação do tipo de dados.
Em Java você pode criar uma associação entre o tipo data e a operação
tomorrow a seguir:
public class Date {
private int day, month, year;
public void tomorrow( )
{ //
código que incrementa o dia
}
}
Definição de Métodos
Em Java, métodos são definidoss usando uma aproximação que é muito
similar à usada em outras linguagens, como por exemplo C e C++. A declaração
é feita da seguinte forma:
< modifiers > <
tipo de retorno > < nome > ( < lista de argumentos > ) < bloco >
< modifiers > -> segmento que possue os diferentes tipos de
modificações incluíndo public,
protected e private.
< tipo de retorno > -> indica o tipo de retorno do método.
< nome > -> nome que identifica o método.
< lista de argumentos > -> todos os valores que serão passados
como argumentos.
public void addDays (int days)
Passagem de Valores
Em Java o único argumento passado é “by-value”; este é um argumento may not be changed
do método chamado. Quando um objeto é criado, é passado um argumento para o método
e o valor deste argumento é uma referência do objeto. O conteúdo
do objeto passível de alteração é chamado do método, mas o objeto
referenciado jamais é alterado.
A Referência This
É aplicado a métodos não estáticos.
O Java associa automaticamente a todas as variáveis e métodos
referenciados com a palavara this. Por isso, na maioria dos casos
torna-se redundante o uso em todas as variáveis da palavra this.
Existem casos em se faz necessário o uso da palavar this. Por
exemplo, você pode necessitar chamar apenas uma parte do método passando uma
instância do argumento do objeto. (Chamar um classe de forma localizada);
Birthday bDay = new Birthday(this);
Ocultando Dados
Usando a palavra private na declaração de day, month e year na
classe Date, você impossibilitará o acesso a estes membros de um código fora
desta classe. Você não terá permissão para atribuir valores, mas poderá
comparar valores.
Encapsulamento
É uma proteção adicional dos dados do objeto de possíveis modificações
impróprias, forçando o acesso a um nível mais baixo para tratamento do dados.
Sobrescrevendo Métodos
O Java permite que você tenha métodos com o mesmo nome, mas com
assinaturas diferentes. Isto permite a reusabilidade dos nomes dos métodos.
public void print( int i )
public void print( float f )
public void print( String s)
Quando você escreve um código para chamar um desses método, o método
a ser chamado será o que coincidir com tipos de dados da lista de parâmetros.
Construtores
O mecanismo de inicialização do Java é automático, ou seja se não
incializarmos um construtor, o Java o inicializará automaticamente.
Mas existem casos que se faz necessário a declaração
explicita dos construtores.
Para escrever um método que chama um construtor, você deve seguir duas
regras:
1ª O nome do método precisa ser igual ao nome da classe.
2ª Não deve retornar um tipo declarado para o método.
Subclasses (Relacionadas)
Na classe Pai você deve declarar os objetos comun a todos, e nos sub-níveis
(Subclasses), você declara as particulariedades:
public class Employee {
private String name;
private Date hireDate;
private Date dateOfBirth;
private String jobTitle;
private int grade;
. . . . . . .
}
Subclasses (Extensões)
Em linguagens de orientação a objetos, um mecanismo especial é
fornecido para que permita ao programa defina classes e termos previstas na
definição de outras classes. Esta arquitetura em Java usa a palavra extends.
public class Employee {
private String name;
private Date hireDate;
private Date dateOfBirth;
private String jobTitle;
private int grade;
}
public class Manager extends Employee {
private String departament;
private Employee [ ] subordinates;
...........
}
Herança Simple
Em Java não existe herança múltipla.
Em Java os Construtores não são herdados.
Java permite que uma classe extenda uma outra classe, com isso esta
classe herda as características da outra classe.
Polimorfismo
A idéia de polimorfismo é a de muitas formas, onde eu posso utilizar
uma classe de diversas maneiras e formas possíveis.
public class Employee extends Object
and
public class Manager extends Employee
Argumentos de Métodos e Coleções Heterogeneas
Usando esta aproximação você pode escrever métodos que aceitam um
objeto genérico. O uso do polimorfismo fornece uma série
de facilidades.
public TaxRate findTaxRate( Employee e) {
Manager m = new Manager( );
. . . . . . .
TaxRate t = findTaxRate(m);
Isto é possível porque um Gerente é um empregado.
Uma coleção heterogênea é uma coleção de coisas diferentes. Em
linguagem orientada a objetos, você pode criar uma coleção de coisas que tem
uma classe de antepassados comuns. Assim nós poderemos fazer isso.
Employee [ ] staff = new Employeee [ 1024 ];
staff[ 0 ] = new Manager ( );
staff[ 1 ] = new Employee ( );
E
assim sucessivamente nos podemos escrever um método de tipos que põe
empregados ordenados por idade ou em ordem salarial sem ter que se preocupar com
a ordem de inserção.
O Operador instanceof
Fornece o dado que você adquiriu através da passagem de parâmetros.
Caso você receba um object por referência do tipo Employee, esta referência
poderia não ser mostrado para Manager. Se você quiser testar isso use
instanceof.
public void method(Employee e) {
if (e instanceof Manager) {
}
else if ( e instanceof Contractor) {
}
else {
}
}
Objetos Lançados
Em circunstâncias onde você recebeu uma referência para uma classe
pai, e você determinou que o objeto é de fato uma subdivisão de classe
particular usando o operador de instanceof, você pode restabelecer a
funcionalidade completa do objeto lançado.
Sobre-escrevendo Métodos
O Java permite que você declare métodos na classe pai e não desenvolva
nenhuma lógica dentro desses métodos, permitindo com isso que o
desenvolvimento desses métodos venha a ser trabalhados dentro das sub-classes
posteriores.
Class Funcionario( )
ler( )
Class Motorista( )
ler ( )
Super.ler( ) ->
Referencia o método da classe pai
Comparando Java com outras Linguagens
Em C++ você pode adquirir este comportamento, desde que você marque o método
como virtual na fonte.
Classes se agrupando
-
Pacotes
Java provê o mecanismo de pacotes como um modo de se agrupar classes
relacionadas. Tão longe, todos nossos exemplos pertencem à falta ou pacotes não
mencionados.
A
@

a
B
b
@
B
![]()
a
b
c
- B.e
onde:
@ - Pacote -
letra (a, b ...) - classe
A declaração import
Em Java, quando você quer usar instalações de pacotes, você usa a
declaração de importação para contar para o compilador onde achar as classe
que você vai usar.
A declaração de importação (import) deve preceder a declaração de
todas as classes.
Exercícios
class
Prog0501
{
public static void main(String arg[ ])
{
int a, b=10, c=3;
a = func(b,b+c); //chamada de funcao. O
retorno é passado para a variável a
System.out.println("valor de a = " + a);
}
// A definicao da funcao esta logo abaixo
public static int func(int x, int y)
{
int ret;
ret = x+y;
return ret;
}
}