Introdução ao uso de classes
Prof. Ricardo Linden
Classes e Objetos
1
Voltando ao passado...
 Vamos rever os conceitos de orientação a objetos, de forma
genérica, mas nos preparando para implementá-los em Java.
 Seria interessante ler o capítulo 4 do livro texto
Core Java 2 - V.1 - Fundamentos
Cornell, Gary; Horstmann, Cay
Ed. Makron Books
Classes e Objetos
2
Programação Orientada a Objetos
 A POO surgiu a partir da idéia de identificar dentro de um problema
as suas partes componentes, que seriam os objetos.
 Cada objeto realiza uma série de atividades e expõe para o mundo
somente uma pequena interface.
 Isto quer dizer que o objeto é uma abstração de um determinado
processo/entidade.
Classes e Objetos
3
Abstração
 Abstração é o termos que descreve escolher o que é importante
sobre nossos objetos quando temos o objetivo de resolver um
determinado problema.
 É o processo de descrever as características essenciais de um objeto
no mundo

A cor de um carro não é importante quando estamos
desenvolvendo um modelo de direção

Entretanto, a cor é extremamente importante quando estamos
determinando um modelo de fabricação.
Classes e Objetos
4
Definição Formal
Abstração
“Uma abstração descreve as características essenciais de um
objeto; aquelas que o distinguem de todos os outros tipos de objeto
e fornece assim para aquele que analisa um sistema fronteiras
conceituais bem definidas.”
--Booch, 1994
Isto é: a abstração descreve o que nós
pensamos que é importante em um objeto,
os aspectos que nos fazem incluí-lo em
nossos sistemas.
Classes e Objetos
5
Classes
 O que é uma classe?
“Uma classe é um conjunto de objetos que possuem uma estrutura
e um comportamento em comum.
--Booch 1994
Lula, Fernando Henrique, Itamar e Collor são todos membros da
mesma classe
Todas as TVs Sony XPD-4582 TVs são da mesma classe
Classes e Objetos
6
Classes
 Será que Lula e Fernando Henrique são da mesma classe?


Se a abstração em que estamos pensando é “presidentes da
república” então sim.
Se a abstração em que estamos pensando diferencia entre
presidentes de partidos distintos, então não.
 O processo de abstração define se o que é uma classe e que objetos
fazem parte dela.
Classes e Objetos
7
Classe
 A classe de um objeto também é chamada às vezes de seu tipo.
 Em Java, assim como em outras linguagens OO, uma classe é um
modelo que descreve o que os objetos desta classe podem fazer.

Por exemplo, a classe TV informa quais estados um objeto desta
classe pode assumir e a que métodos ele vai responder.
 Cada instância de uma classe (objeto) possui suas próprias cópias
das variáveis de estado.

Exceto no caso das variáveis estáticas (membros de classe)
Classes e Objetos
8
O que é um objeto?
 Um objeto no mundo - seja um carro, um avião ou um computador,
normalmente são coisas que associamos a substantivos.
 Não necessariamente associamos objetos a coisas concretas.
Outros objetos possíveis são conta corrente, mensagem de e-mail,
um pedido, uma conexão telefônica, etc.
 Para qualificar um objeto normalmente precisamos de três coisas:

Um estado

Um comportamento

Uma identidade
Classes e Objetos
9
Objetos
 O estado consiste do valor das propriedades de um objeto:

Um avião pode ter seus motores ligados ou desligados, pode
estar a uma determinada altura, velocidade e direção, ter
assentos ocupados, etc.

Uma conexão via internet pode estar ativa ou não, ter mandado e
recebido n bytes, estar estabelecida a uma certa velocidade, com
um certo protocolo, etc.
Classes e Objetos
10
Classes e Objetos
 A classe é um molde que podemos usar para criar novas isntâncias
de objetos (como se fosse uma receita ou uma planta).
 A partir das receitas, podemos construir novos porta-aviões, novas
TVs, novos projetores, etc.
Classes e Objetos
11
Classes e Objetos
Receita
Classe AircraftCarrier
•pode
•possui
setVelocidade
velocidade
setNumAvioes
núm. de aviões
setLeme
leme
Instâncias (Objetos)
Nimitz
Vinson
setNumAvioes
setVelocidade
Velocidade
NumAvioes
Leme
setVelocidade
setLeme
setNumAvioes
Velocidade
NumAvioes
Leme
setLeme
Classes e Objetos
12
Relacionamentos entre objetos
 Objetos podem ter três tipos de relacionamentos:



“is-a”  relacionamento do tipo herança. Exemplo : cadeira “isa” móvel.
“has-a”  relacionamento em que um objeto contém outro
como parte de seus atributos. Exemplo : pedido “has-a” item.
“uses-a”  relacionamento em que um objeto faz uso de
serviços providos por outra classe ou objeto. Exemplo: nossos
programas até agora “uses-a” classe JDOptionPane.
Classes e Objetos
13
Métodos
 Métodos podem ser pensados como sendo os verbos associados aos
nossos objetos:

Um pedido pode ser enviado, cancelado, atualizado, etc.

Uma conexão pode ser desfeita, desacelerada, etc.

Um avião pode decolar, aterrisar, virar à esquerda, etc.
 Um método também pode ser pensado como uma forma de alterar o
estado de um objeto:

Pressionar o botão de liga/desliga muda o estado de uma TV.

Move o leme de um navio altera sua direção.The Roosevelt has
Classes e Objetos
14
Métodos
 Métodos, em uma programação OO bem feita, são a “epiderme” de
um objeto
 Para acessar ou alterar um estado dentro de um objeto, precisamos
usar um método
Objeto Projetor
setForça
setResolução
Força
Resolução
Brilho
setBrilho
Classes e Objetos
15
Encapsulamento
 Quando só podemos acessar o estado de um objeto através de seus
métodos, dizemos que estamos usando encapsulamento.
 Por que usar isto?

Impede que outros atribuam valores inválidos para o estado do objeto, como
colocar uma resolução inválida para o projetor ou tentar acelerar o avião para
uma velocidade que ele não alcança

Permite que alteremos as estruturas de dados internas de um objeto sem afetar
os outros métodos que o acessam. Por exemplo, imagine que 500 objetos
mudassem o valor do canal da TV e nós mudássemos o seu armazenamento
de um byte para dois.
 Isto também é chamado de “information hiding”
Classes e Objetos
16
Encapsulamento
 O encapsulamento é a base da boa programação orientada a objetos.
 Fazendo objetos bem encapsulados, nós garantimos sua
reusabilidade e a boa manutenibilidade de todos nossos sistemas.
 Muitos dirão que uma boa programação estruturada também é bem
encapsulada e também atinge os objetivos de se fazer bons códigos.
 Isto é verdade, mas a programação imperativa fornece vários
mecanismos para se burlar este tipo de boa prática, especialmente
quando falamos de grandes projetos em que muitos programadores
estão envolvidos.
Classes e Objetos
17
Definição Formal
Encapsulamento
“Encapsulamento é o processo de compartimentalização dos
elementos que constituem a estrutura e o comportamento de um
objeto, servindo para separar a interface contratual da sua
implementação
--Booch 1994
Isto é: é a forma de garantir que podemos
mudar a vontade o funcionamento interno de
um objeto sem alterar sua face externa
(interface com o mundo)
Classes e Objetos
18
Encapsulamento
 Um objeto encapsulado deve ser pensado como uma caixa preta
 Seus algoritmos internos são escondidos do cliente (aquele que o
usa), que apenas pode invocar os métodos definidos na interface.
Métodos
Cliente
Dados
Classes e Objetos
19
Encapsulamento
Tendo em vista que nosso objetivo
é sempre fazer os melhores
sistemas possíveis, nós vamos
sempre procurar criar classes e
objetos que respeitem o preceito
básico do encapsulamento.
Todos os slides a seguir partem
deste pressuposto!
Classes e Objetos
20
Abstração e Encapsulamento
 A abstração diz como um objeto deve se relacionar com o mundo.

Uma boa abstação garante que nossas classes fazem aquilo que é
necessário para resolver o problema que temos em mãos.
 O Encapsulamento garante que o mundo não tem nenhuma relação
ou conhecimento do que acontece dentro de um objeto.

Um bom encapsulamento garante que nosso código é de boa
qualidade e pode ser reutilizado.
Classes e Objetos
21
Quais Métodos?
 Como decidir quais métodos vamos colocar em uma classe?
 Os método definem o comportamento de um objeto, isto é, o que
ele é capaz de fazer.
 Os métodos também representam a interface de um objeto com o
mundo, ou seja, o que o mundo pode pedir ao objeto.
 Por exemplo

Uma conta bancária tem uma lista de coisas que podem ser realizadas com
ela, como abrir, fechar, depositar, sacar, etc.
Classes e Objetos
22
Identidade
 Nem todos os objetos são iguais, mesmo que pertençam a uma
mesma classe:

O retroprojetor que estamos usando não é o mesmo que está
sendo usado em outra turma, mesmo que seja da mesma marca e
modelo.
 Minha conta bancária não é igual à do Bill Gates
Classes e Objetos
23
Identidade
setNumAvioes
Nimitz
setVelocidade
Velocidade
NumAvioes
Leme
setLeme
Roosevelt
Vinson
setNumAvioes
setNumAvioes
setVelocidade
Velocidade
NumAvioes
Leme
setVelocidade
Velocidade
NumAvioes
Leme
setLeme
setLeme
Classes e Objetos
24
Definição Formal
Identidade
“Identidade é a propriedade de um objeto que o distingue de
forma inequívoca de outro objeto
--Booch 1994
De forma geral objetos são identificados de forma
unívoca pelas suas variáveis de referência, que são
usualmente chamadas de seus nomes
Entretanto, cuidado ao chamar assim, pois elas só
se apontam para um objeto, não sendo iguais a ele.
Classes e Objetos
25
Resumo de objetos
 Objetos possuem



estados  é um conjunto de características de cada objeto.
Mudar o estado de um objeto não altera o estado de outro objeto.
comportamento  define o que o objeto é capaz de fazer
identidade  é o que permite que nos referenciemos
separadamente a cada objeto.
 Encapsulamento esconde do mundo como implementamos o estado
que é alterado pelo comportamento que lhe apresentamos.
Classes e Objetos
26
Escrevendo as classes...
 Agora vamos começar a aplicar estes conceitos dentro do Java.
 Seria interessante ler o capítulo 4 do livro texto
Core Java 2 - V.1 - Fundamentos
Cornell, Gary; Horstmann, Cay
Ed. Makron Books
Não estou insistindo só por teimosia. Começar
a trabalhar com orientação a objetos não é
fácil! Os conceitos podem ser extremamente
confusos à primeira vista.
Classes e Objetos
27
Lembrando : Classes
 São o elemento básico da programação orientada a objeto, tanto em
Java quanto em qualquer outra LPOO.
 A classe define as estruturas (variáveis de instância) de um objeto e
sua interface funcional (métodos).
 Uma classe é a planta/receita de um objeto
 É o modelo a partir do qual cada objeto é criado.

Por exemplo, a classe String é usada para definir objetos String

Cada objeto String contem caracteres específicos (seu estado).

Cada objeto String pode realizar serviços (ter comportamentos) tais como
toUpperCase,length, concant, etc.
Classes e Objetos
28
Lembrando : Objetos
 Um objeto tem:

estado - características descritivas (atributos)

comportamento - o que ele pode fazer ou o que pode ser feito
com ele (métodos)
 Por exemplo, seja uma moeda que pode ser jogada para cima de
forma que resulte em “cara” ou “coroa”
 O estado é o último resultado
 O comportamento é o fato de poder ser jogada.
 Note que apenas o comportamento pode mudar o seu estado!
Classes e Objetos
29
Classes
 Algumas classes, como a classe String já existem dentro da
biblioteca padrão de classes do Java.
 Nós podemos querer escrever nossas próprias clases para definir
objetos específicos para nossas necessidades.
 Por exemplo, poderíamos querer escrever uma classe que simule
uma moeda.
 A partir desta classe nós poderíamos criar muitos objetos diferentes
representando várias moedas (mais ou menos como a casa da
moeda, que faz um molde e depois funde várias cópias).
Classes e Objetos
30
Classes
 Uma classe contém declarações de atributos e declarações de
métodos.
int x, y;
char ch;
Declarações de atributos (dados)
Declarações de Método
Classes e Objetos
31
Classes
 Um dos atributos de uma classe pode ser um objeto de outra classe
String s;
int a[];
Declarações de atributos. Note que
ambos são objetos de outras classes
 Isto representa um tipo relacionamento especial chamado “has-a”
(possui), que será discutido com todo o cuidado mais adiante.
Classes e Objetos
32
Escrevendo métodos
 Uma declaração de método especifica o código que será executado
quando o método é invocado (chamado)
 Quando um método é invocado, o flxuo de controle vai para dentro
dele e executa seu código (exatamente igual a um procedimento ou
função em linguagem imperativa)
 Quando o método termina, o fluxo retorna para a instrução seguinte
àquela que chamou-o.
 A invocação pode retornar um valor ou não, dependendo de como o
método foi definido.
Classes e Objetos
33
Fluxo de Controle em um Método
 O método chamado pode ser dentro da mesma classe.
 Neste caso, somente o nome do método é necessário.
compute
myMétodo
myMétodo();
Classes e Objetos
34
Fluxo de Controle em um Método
 O método chamado pode ser parte de outra classe ou objeto.
 Neste caso temos que qualificar o nome do método chamado
usando o nome do objeto que o possui e o ponto (o chamado dot
operator).
main
obj.doIt();
doIt
helpMe
helpMe();
Classes e Objetos
35
Declaração de Método
 Toda declaração de um método começa com o cabeçalho do
método
char calc (int num1, int num2, String message)
Nome do
Método
Tipo de
retorno
Lista de parâmetros
A lista de parâmetros especifica o tipo e o nome de cada
parâmetro.
O nome de cada parâmetro na declaração do método é
chamado de argumento formal
Nenhuma diferença para funções em programação imperativa.
Classes e Objetos
36
Declaração de Método
 O cabeçalho do método é seguido pelo corpo do método
char calc (int num1, int num2, String message)
{
int sum = num1 + num2;
char result = message.charAt (sum);
return result;
sum e result
variáveis locais
}
A expressão retornada deve ser
consistente com o tipo de retorno
definido no cabeçalho.
Classes e Objetos
são
Elas são criadas cada vez
que o método é chamado, e
são destruídas quando ele
termina sua execução.
37
Statement return
 O tipo de retorno de um método indica o tipo do valor que o
método retorna para a instrução que o chamou.
 Um método que não retorna valor nenhum tem um tipo de retorno
void
 O statement return especifica o valor que será retornado.
 A expressão deve ser conforme com o tipo definido no cabeçalho.
Classes e Objetos
38
Retornando objetos
 Um método pode retornar qualquer tipo de dados, incluindo de
classes que sejam criados por nós.
 Dado que todos os objetos são alocados dinamicamente usando o
new, um objeto continua a existir mesmo quando o método no qual
ele foi criado termina.
 Quem “morre” ao fim do escopo é a variável de referência.
 O objeto só vai morrer quando ninguém mais faz referência a ele
(automatic garbage collection).
Classes e Objetos
39
Parâmetros
 Cada vez que um método é chamado, os argumentos reais na chamada são
copiados para os argumentos formais:
ch = obj.calc (25, count, "Hello");
char calc (int num1, int num2, String message)
{
int sum = num1 + num2;
char result = message.charAt (sum);
return result;
}
Classes e Objetos
40
Escrevendo classes
 Às vezes um objeto deve interagir com outros objetos do mesmo
tipo.
 Por exemplo, quando queremos comparar duas strings, nós fazemos
o seguinte:
if s1.equals(s2);
 Um objeto (s1) executa o método e o outro (s2) é passado como
parâmetro
Classes e Objetos
41
Exemplo de Classe
public class Moeda {
public final int HEADS = 0;
public final int TAILS = 1;
private int face;
public Moeda ()
{flip();}
public void flip()
public int getFace()
{face = (int) (Math.random() * 2);}
{return face; }
public String toString()
{
String faceName;
if (face == HEADS) { faceName = "Heads";}
else {faceName = "Tails";}
return faceName;
}
}
Classes e Objetos
42
Sobrecarga de Métodos
 A sobrecarga de métodos é o processo de usar o mesmo nome de
método em vários métodos diferentes.
 A assinatura de cada versão do método sobrecarregado deve ser
única.
 A assianatura inclui o número, o tipo e a ordem dos parâmetros,
mas não o tipo de retorno.
 O compilador deve ser capaz de determinar qual versão do métdo
será chamada apenas analisando os parâmetros que lhe são
passados
Classes e Objetos
43
Sobrecarga de Métodos
Versão 1
Versão 2
float tryMe (int x)
{
return x + .375;
}
float tryMe (int x, float y)
{
return x*y;
}
Chamada
result = tryMe (25, 4.32)
Classes e Objetos
44
Sobrecarga de Métodos
 Um método que usamos sempre, o println é sobrecarregado:
println (String s)
println (int i)
println (double d)
etc.
 As linhas a seguir chamam as diferentes versões do método
println:
System.out.println ("The total is:");
System.out.println (total);
Classes e Objetos
45
Sobrecarga de Métodos
 Construtores também podem ser sobrecarregados.
 Um construtor sobrecarregado permite que tenhamos várias
maneiras de inicializar um objeto de acordo com o contexto.
 Como em todos os métodos, a assinatura de cada construtor deve
ser distinta de todos os outros.
Classes e Objetos
46
Lembrando : Construtores
 Como vimos na aula 1, um construtor é um método especial que é
chamado para configurar um objeto quando da sua criação.
 Quando escrever um construtor, lembre-se:

ele te o nome da classe.

Ele não retorna valor

Ele não tem tipo de retorno, nem mesmo void

É nele onde se inicializam as variáveis das instâncias.
 Não é obrigatório definir um construtor para uma classe.
Classes e Objetos
47
Construtor
• O construtor é chamado quando executamos o operador new.
• Ele é um método que inicializa um objeto imediatamente após a
sua criação.
• Construtores não tem nenhum tipo de retorno (nem mesmo
void).
• A maioria das classes define seus próprios construtores, mas o
Java fornece um construtor padrão se um não for definido.
Classes e Objetos
48
O operador new
 O operador new cria uma única instância de uma classe
nomeada e retorna uma referência para este objeto.
Classvariable objectreference = new classname()
 O statement é composto de dua partes:
(1)
Classvariable objectreference declara uma variável de referência para um
objeto daquela classe (referência esta que tem valor null)
(2) objectreference = new classname() aloca memória para o objeto e
atribui aquele endereço à variável de referência.
Classes e Objetos
49
Variáveis de Instância
 A variável face na classe Moeda é denominada variável de
instância pois cada instância (objeto) da classe Moeda terá uma
cópia separada dele.
 Uma declaração da classe simplesmente declara o tipo do dado, mas
não reserva espaço para ele.
 Cada vez que um objeto da classe Moeda é criado, um anova
variável face também é criada.
 Os objetos da classe têm as mesmas definições de métodos, mas
têm espaços de memória próprios.

Só assim eles podem ter estados diferentes!
Classes e Objetos
50
Variáveis de Instância
 Os dados são parte da declaração dentro de uma classe se sua
declaração estiver dentro das chaves ( { } ) da declaração da
classe.
 As declarações devariáveis de instância têm a mesma sintaxe da
declaração de variáveis locais.
 A diferença é que as variáveis de instância são declaradas fora do
escopo de todos os métodos de uma classe.
Classes e Objetos
51
Variáveis de Instância
moeda1
classe moeda
face
int face;
0
moeda2
face
Classes e Objetos
1
52
Lembrando : Encapsulamento
 Podemos ter duas vistas de um objeto :

interna - a estrutura de seus dados e os algoritmos de seus
métodos.

externa - a interação do objeto com outros objetos do sistema.
 Do ponto de vista externo, um objeto deve ser uma entidade
encapsulada que provê serviços específicos, que definem a
interface do objeto.
 Tudo que não for visível na interface deve ser escondido do resto do
sistema.
Classes e Objetos
53
Lembrando : Encapsulamento
 Os métodos de um objeto deve ser os únicos autorizados a
modificar seu estado.
 Devemos fazer com que seja difícil, se não impossível, que outro
objeto possa alterar o objeto sem passar pelos seus métodos.
 O usuário, ou cliente, de um objeto deve poder requisitar seus
serviços (chamar seus métodos), mas não deve saber como estes
serviços são realizados.
Classes e Objetos
54
Modificadores de Visibilidade
 No Java, nós fazemos o encapsulamento através do uso dos
modificadores de visibilidade apropriados.
 Um modificador é uma palavra reservada do Java que especifica
uma característica particular de um método ou atributo.
• Por exemplo, nós usamos o modificador final para definir uma
constante.
 Java tem três modificadores de visibilidade básicos:
• public
• private
• protected
Classes e Objetos
55
Modificadores de Visibilidade
 Membros de uma classe que são declarados com visibilidade public
podem ser acessados de qualquer ponto.
 Membros de uma classe que são declarados com visibilidade
private só podem acessados de dentro da própria classe.
 Membros declarados sem modificadores de visibilidade têm a
chamada visibilidade padrão (default), que consiste em poder ser
acessados por qualquer classe dentro do mesmo pacote.
Classes e Objetos
56
Modificadores de Visibilidade
 De forma geral, nenhum atributo deveria ser declarado como
público.
 Métodos que realizam os serviços do objeto devem ser declarados
como públicos, para que possam ser invocados pelos clientes. Estes
métodos públicos são muitas vezes chamados de métodos de
serviço.
 Um método criado simplesmente para modularizar seu código e
ajudar um método de serviço é chamado de método de suporte e
não deve ter visibilidade publica.
Classes e Objetos
57
Decompondo métodos
 Um método deve ser relativamente pequeno, ou pelo menos, o mais
compreesível possível.
 Um método potencialmente grande ou de código compelxo pode ser
decomposto em vários métodos menores para aumentar sua clareza.
 Logo, um método de serviço pode chamar um ou mais métodos de
apoio para obtermos este resultado.
Classes e Objetos
58
Modificadores de Visibilidade
 O último destes modificadores é o protected, que impede que
qualquer outro objeto que não o dono e suas sub-classes acessem
aquele elemento.
 Suas vantagens vão ficar mais claras quando discutirmos herança,
mais adiante.
 Este modificador e o modificador private garantem
encapsulamento, não dependendo da boa vontade de ninguém.
o
 Por isto nós o usamos na classe Moeda. Dado que nós o usamos,
precisamos de métodos para pegar os valores dos atributos. Daí a
existência do getFace
Classes e Objetos
59
static
 Este modificador faz com que um membro de uma classe seja
definido como part da classe, sendo independente de todos os
objetos da classe.
 Nós já vimos isto aplicado a variáveis, mas pode ser usado também
em métodos (vide o método main)
 Este modificador faz com que se crie um membro de classe
(atributo ou método) que pode ser referenciado sem chamar um
objeto, mas sim uma classe.
 Exemplo: Math.abs
Classes e Objetos
60
main()
 O método main() é a primeira coisa, após o construtor da classe,
que é chamado quando iniciamos um aplicativo Java. O seu formato
é:
public static void main(String args[ ])
 Public significa que outras classes e objetos podem chamá-lo.
 Static significa que é um método de classe.
 Void significa que o método main() não retorna um valor.
 O parâmetro do método main() consiste nos valores que lhe são
passados por linha de comando.
Classes e Objetos
61
main()
 O método main recebe um parâmetro, que consiste em um array
contendo os parâmetros digitados após o nome da classe sendo
executada.
 O parâmetro args tem um comportamento idêntico a todos os outros
arrays de strings em Java.
 Exemplo: ao executar java classe1 x y 2.3, temos o seguinte:
• args.length=3
• args[0]=“x”
• args[1]=“y”
• args[2]=“2.3”
Classes e Objetos
62
Dot (.) Operator
 O dot(.) operator é usado para acessar vaiáveis e métodos dentro de
um objeto (se forem de instância) ou classe (se forem estáticos)
NomeObjetoouClasse.nomedavariável
NomeObjetoouClasse.método(lista-de-parâmetros)
 Pense nisso como um nome e sobrenome. Dentro da família todos
são conhecidos pelo nome (dentro da própria classe um
avariável/método é conhecido só pelo seu nome), mas fora da
família precisamos do nome e do sobrenome (fora da classe/objeto
precisamos do dot operator)
Classes e Objetos
63
Manipulando uma Pessoa
 Vamos analisar os conceitos que vimos até agora analisando a
classe Pessoa.
 Em uma abstração possível, um objeto da classe pessoa poderia ser
da seguinte forma:
nome
age
Sobrenome
Classes e Objetos
64
Manipulando uma Pessoa
Barreira de encapsulamento
nome
idade
Sobrenome
A barreira do encapsulamento protege os
atributos da classe Pessoa de interferência
externa indevida
Classes e Objetos
65
Manipulando uma Pessoa
• Criamos então métodos para que possamos alterar atributos dentro
de um objeto encapsulado.
Alteradores
(Mutators)
setnome
setIdade
setSobrenome
Classes e Objetos
66
Manipulando uma Pessoa
• Métodos são criados para permitir leitura de fora de um objeto
encapsulado.
Leitores (Getters)
getnome
getIdade
getSobrenome
Classes e Objetos
67
Manipulando uma Pessoa
 Para criar uma instância da classe Pessoa, nós podemos executar a
seguinte instrução dentro de qualquer método, como por exemplo o
método main ( ):
Person person1 = new Person( ) ;
 person1 é uma variável de referência para um objeto da classe
Pessoa, ou para simplificar, um objeto da classe Pessoa.
Classes e Objetos
68
Manipulando uma Pessoa
getIdade
getnome
setnome
setIdade
getSobrenome
setSobrenome
Person1
Classes e Objetos
69
Manipulando uma Pessoa
Lembre-se : o operador new cria uma única
instância de uma classe nomeada e retorna
uma referência a este objeto
Sua sintaxe é:
Classname variable = new Classname( )
A variável de referência criada é de escopo
local, mas o objeto para o qual ela aponta não!
Classes e Objetos
70
Manipulando uma Pessoa
 O dot (.) operator é usado para acessar métodos dentro de
um objeto (isto é, métodos que pertencem a um objeto e a
ele se aplicam)
 Sua sintaxe é:
NomedoObjeto.método (lista-de-parâmetros)
Classes e Objetos
71
Exemplo de alteradores:Classe Pessoa
getIdade
setIdade
getSobrenome
setnome
getnome
person1.setnome (“John”);
person1.setSobrenome (“Smith”);
person1.setIdade (21);
setSobrenome
Classes e Objetos
72
Exemplo de leitores: Classe Pessoa
getIdade
setIdade
getSobrenome
setnome
getnome
setSobrenome
String s=person1.getnome;
String s2=person1.getSobrenome;
int i=person1.getIdade;
Classes e Objetos
73
Exemplo de Classe
public class Ponto {
Propriedades encapsuladas dentro do objeto. Só com métodos
protected int x, y; apropriados elas podem ser acessadas de fora do objeto.
public Ponto()
{setPonto( 0, 0 );}
public Ponto( int xCoordinate, int yCoordinate ) {setPonto( xCoordinate, yCoordinate );}
public void setPonto( int xCoordinate, int yCoordinate ) {
x = xCoordinate; y = yCoordinate;
}
}
public int getX()
{return x;}
public int getY()
{return y;}
Construtor polimórfico  como as
assinaturas são diferentes, durante a
execução o construtor apropriado é
chamado.
Métodos alteradores  única maneira de
alterar o valor de x e y de fora do objeto
Métodos leitores  são públicos e do mesmo tipo de x e y. Única
maneira de um objeto externo à classe Ponto obter o valor de x e y.
Classes e Objetos
74
Download

Introdução ao uso de classes - Algoritmos Genéticos, por Ricardo