Você está na página 1de 74

JAVA

Orientao a Objetos

SOBRE MIM
Bruno Thiago da Silva
Programador Java Trainee na empresa G&P.
Cursando 2 ano de Bacharel em Sistemas de Informao na FGP
(Faculdade Gennari e Peartree), em Pederneiras.
Formado Tcnico em Informtica com nfase em programao, na
ETEC Astor de Mattos Carvalho de Cabrlia Paulista.
Linkedin: https://br.linkedin.com/in/brunosilvajava

SOBRE A APOSTILA
O objetivo desta apostila apresentar ao estudante de
programao Java os conceitos bsicos de Programao Orientada a
Objetos e da linguagem Java de forma sucinta, sem entrar em
muitos detalhes a respeito de cada assunto, para que o aluno tenha
um uma viso geral a respeito da linguagem e, assim, ter mais
facilidade de aprendizagem quando se aprofundar em Java.
Espero que goste... ento mos a obra!

INTRODUO
Orientao a Objetos um paradigma de desenvolvimento, essa
apostila ensina como trabalhar com este paradigma na linguagem
Java.
Vrias outras linguagens de programao trabalham com esse
paradigma, porm nem todas so 100% orientada a objetos como
Java. Portanto, desde o primeiro contato com Java j se tem contato
com Orientao a Objetos.

INTRODUO
muito importante conhecer os conceitos da Orientao a
Objetos antes de se deparar com os cdigos de Java, porque isso ir
facilitar a aprendizagem. Sendo que depois ser preciso apenas
enxergar estes conceitos na linguagem de programao.
Algumas vantagens da Orientao a
Cdigo mais flexvel
Facilidade na alterao do cdigo
Reaproveitamento de cdigo

so
o
i
d
e
Objetos:
r t
e
s
no
,
e
p
ocu
r
e
p
se
o

CONCEITOS DE ORIENTAO
A OBJETOS
Orientao a Objetos funciona com base nos objetos do mundo
real, como uma pessoa, um carro, um animal, etc... Perceba que OO
trata tudo como um objeto.
Existem alguns conceitos muito importantes na OO. Como j dito
anteriormente, OO baseado no mundo real, portanto estes
conceitos existem no mundo real, entendendo como eles funcionam
no seu dia-a-dia fica fcil entender como eles funcionam na
= Orientao
a Objetos
programao. Na prxima apostila veremos elesOOcom
mais detalhes

na programao.

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
OO trata tudo como um objeto.
Mas como esses objetos so definidos na programao?
Eles so definidos atravs das CLASSES.
As classes servem de base na construo de um objeto. Elas
funcionam como a planta de uma casa, a partir desta planta vrias casas
podem ser construdas, a planta a mesma, mas as casas so objetos
distintos uns dos outros. Assim podem ter certas caractersticas
diferentes, como a cor por exemplo.

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
Outro exemplo.
Outro exemplo que podemos dar para a funcionalidade de uma classe
o projeto de um carro. Um modelo de um carro, antes dele ser
construdo tambm tem todo seu projeto definido em plantas. Com essa
mesma planta podem ser feitos vrios carros, porm uns podem ter
algumas caractersticas diferentes dos outros, como o tipo da roda, a cor
do carro, o ano de fabricao e a potncia do motor.

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
As classes so compostas por ATRIBUTOS e MTODOS, tambm chamados de membros.
Os atributos so as caractersticas do objeto. Exemplos:
Atributos de um carro: modelo, cor, ano, quilometragem, combustvel, potncia,

etc...
Atributos de um animal: raa, idade, data de nascimento, tipo, etc...
Atributos de um apartamento: qtde quartos, andar, endereo, bloco, nmero,

etc...

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
As classes so compostas por ATRIBUTOS e MTODOS, tambm chamados de
membros.
Os mtodos so as aes do objeto. Exemplos:
Mtodos de um carro: acelerar, correr, parar, frear, acender farol, abrir porta...
Mtodos de um animal: comer, nascer, morrer, andar, voar, nadar, correr,
olhar...
Mtodos de um apartamento: Alugar, vender, etc...

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
Atributos tem tipos pr-definidos na classe. Como tipo texto ou tipo
numrico, por exemplo.
Mtodos podem receber como parmetros variveis e retornar alguma
informao para quem utiliz-los, como por exemplo, receber dois nmeros
retornar o resultado de uma conta matemtica.
* Variveis so utilizadas para se trabalhar com valores dentro dos mtodos.
* Iremos estudar detalhadamente variveis e seus tipos na prxima apostila.

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
Exemplo simples de uma classe Funcionrio.

CONCEITOS DE ORIENTAO
A OBJETOS
Conceito de CLASSES e OBJETOS
Exerccios:
Defina alguns atributos e mtodos para as seguintes classes:
Conta Corrente; Avio; Computador; Televiso; Calculadora.

CONCEITOS DE ORIENTAO
A OBJETOS
Vamos falar agora de 4 importantes conceitos de OO:

1. Abstrao
2. Encapsulamento
3. Herana
a. Generalizao
b. Especificao

4. Polimorfismo

CONCEITOS DE ORIENTAO
A OBJETOS
1. ABSTRAO (Abstrair algo) transformar algo no tcnico em algo
tcnico.
Como assim?
Imagine uma pessoa que no sabe fazer contas. E ela te diz:
Eu preciso comprar 10 caixas de leite, cada uma custa R$ 2,00, tambm vou
comprar 2 latas de achocolatado, cada uma custa R$ 4,00. Tenho uma nota de R$ 50,00,
mas no sei quanto vou receber de troco.

E voc transforma isso em conta matemtica, voc abstrai:


50 (10 * 2 + 2 * 4)

Algo
tcnico

Algo no
tcnico

CONCEITOS DE ORIENTAO
A OBJETOS
2. ENCAPSULAMENTO (Encapsular algo) esconder algo tcnico.
Como assim?
Imagine um controle remoto de TV.
Para trocar de canal basta voc clicar no boto do nmero
correspondente do canal. Atravs dele o controle emite uma frequncia e
muda para o canal desejado. Voc no faz ideia do procedimento tcnico
que est sendo realizado e que frequncia essa, pois isso est escondido,
est encapsulado.

CONCEITOS DE ORIENTAO
A OBJETOS
2. ENCAPSULAMENTO (Encapsular algo) esconder algo tcnico.
Agora imagine que, se voc tivesse que digitar a frequncia do canal ao
invs de digitar apenas um nmero, e este canal mudasse a sua frequncia
sem voc saber. Voc no conseguiria mais acessar o canal, at descobrir a
nova frequncia. Com a frequncia encapsulada e acessada atravs de um
nico nmero, mesmo com a frequncia do canal sendo alterada voc
continuar acessando o canal normalmente, sem nem mesmo saber da
alterao. Isso encapsulamento.

CONCEITOS DE ORIENTAO
A OBJETOS
3. HERANA (Herdar algo) receber algo de outra coisa.
Esse conceito fcil.
Um bom exemplo o reino animal.
* O ser humano e os macacos tem caractersticas em comum, pois ambos
so primatas, ento podemos dizer que tudo que h de comum entre eles
pertencem a primata e so herdadas disto.
* O leo e a ona tambm tem caractersticas em comum, pois ambos
herdam as caractersticas do felino.

CONCEITOS DE ORIENTAO
A OBJETOS
3. HERANA (Herdar algo) receber algo de outra coisa.
Mas e as caractersticas NICAS de cada animal?
Nesse ponto entram os conceitos de GENERALIZAO e ESPECIALIZAO.
a.Generalizao quando subimos a hierarquia, exemplo:
Felino a generalizao de Leo, Gato, etc. Felino abrange vrios animais.
b.Especializao quando descemos a hierarquia, exemplo:
Leo especializao de Felino. Leo um animal em especfico.
Leo seria uma subclasse de Felino.
Felino seria a superclasse de leo.

CONCEITOS DE ORIENTAO
A OBJETOS

Sem herana
no h polim
orfismo

4. POLIMORFISMO (Mltiplas Formas) poder ser vrias coisas.


Como assim?

Lembre-se do exemplo que tivemos de herana, de que leo e ona


so felinos. Podemos dizer que felino pode ser vrios animais, como um
leo ou uma ona. Isso ser mltiplas formas, felino polimrfico.
Ento correto afirmar que leo um felino, porm no correto
afirmar que felino um leo, pois pode ser tambm um gato, uma ona,
um tigre, entre outros.

CONCEITOS DE ORIENTAO
A OBJETOS
SOBRESCRITA E SOBRECARGA DE MTODOS
Agora que j sabemos o que so classes, mtodos e herana. Vamos
ver um pouco sobre o que sobrescrita e sobrecarga de mtodos para
podermos dar andamento nos estudos.
Quando uma classe herda mtodos de outra classe, porm sua ao
diferente da superclasse, ento possvel modificar a ao deste mtodo
utilizando a sobrescrita de mtodos, que consiste em escrever
novamente o mtodo na classe filha, modificando seu contedo.

CONCEITOS DE ORIENTAO
A OBJETOS
SOBRESCRITA E SOBRECARGA DE MTODOS
E quando um mtodo de uma classe pode ser feito de vrias formas
diferentes, possvel ter na classe ou em uma subclasse mais de um
mtodo com o mesmo nome, porm com contedo diferente, isso se
chama sobrecarga de mtodos.
Existem algumas regras para sobrescrever ou sobrecarregar um
mtodo, porm veremos na prxima apostila. No momento importante
apenas saber o contexto geral de sua utilizao.

CONCEITOS DE ORIENTAO
A OBJETOS
PACOTES
As classes ficam separadas por pacotes. Cada pacote pode ter uma ou
vrias classes.
Pacote um agrupador que une e organiza um conjunto de classes e
demais arquivos que possuem interesses em comum.
Pense em pacotes como caixas organizadoras.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Os modificadores de acesso so padres de VISIBILIDADE DE ACESSO
s classes, atributos e mtodos. Resumindo, um modificador de acesso
defini se uma determinada classe deixar outra ter acesso ela e aos
seus membros (atributos e mtodos).
So eles: public, private, protected e package (default).
Observao: Classes trabalham apenas com os modificadores public e
default, enquanto os membros trabalham com todos.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Agora vamos entender qual acesso cada modificador defini s classes
e aos seus membros.
Public Classe com public pode ser acessada por qualquer outra
classe, independente do pacote que esta esteja.
Public Membro com public pode ser acessado por qualquer outra
classe que tenha acesso classe que ele pertence, independente do
pacote que aquela esteja.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Package (Default) Classe com package pode ser acessada apenas por
outra classe que esteja no mesmo pacote que ela.
Package (Default) Membro com package pode ser acessado apenas
por classe que esteja no mesmo pacote da classe que ele pertence.
Observao: Como classes s podem ter default ou public, classes do
mesmo pacote sempre tem acesso umas as outras. Porm o acesso aos
membros depende do modificador de acesso de cada um.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Protected Membro com protected pode ser acessado apenas por classe
que esteja no mesmo pacote da classe que ele pertence, como no package,
mas tambm por classe que herda a classe que ele pertence, ou seja, por
subclasses, independente do pacote que esteja.
Observao: importante que o conceito de HERANA esteja bem entendido,
porque o protected tem sua funcionalidade para classes com herana. isto
que o diferencia do package, sendo que ele d acesso aos membros para as
classes filhas.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Private Membro com private no pode ser acessado por nenhuma
outra classe, apenas por outros mtodos da prpria classe que pertence,
mesmo se outra classe herdar a classe do membro.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE ACESSO
Um esquema para exemplificar a permisso de acesso de cada
modificador de acesso.
Acesso em:

PRIVATE

DEFAULT

PROTECTED

PUBLIC

Mesma classe

Sim

Sim

Sim

Sim

Mesmo pacote

No

Sim

Sim

Sim

Pacote diferente
(subclasse)

No

No

Sim (herana)

Sim

Pacote diferente
(sem subclasse)

No

No

No

Sim

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO
Os modificadores de no acesso (NonAccess) so padres de
COMPORTAMENTO das classes, atributos e mtodos. Diferentemente dos
modificadores de acesso, os modificadores de no acesso no funcionam
exatamente da mesma forma para classes e membros, portanto iremos
estuda-los separadamente.
So eles: abstract, final, static, synchronized, native, strictfp,
transiente e volatile.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA CLASSES

Instanciar
criar um objeto
da classe

Os modificadores de no acesso utilizados em classes so: final, abstract e


strictfp.
Final Classe com final no pode ser herdada. utilizado em classes que no tem
ou no devem ter subclasses.
Abstract Classe com abstract no pode ser instanciada. utilizado em classes que
tem que ser herdadas por outras classes pois sozinhas no tem sentido. Ex: no
possvel existir um animal felino que no seja um gato, leo, tigre, etc... Ele tem que ser
algum desses animais. Como o prprio nome diz, um objeto abstrato e no concreto.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA CLASSES
Strictfp Classe com strictfp coloca padro em ponto flutuante.
utilizado em classes que trabalham com clculos para resolver problemas
com ponto flutuantes. Utiliza o padro IEEE 754.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA MTODOS
Os modificadores de no acesso utilizados em mtodos so: final,
abstract, strictfp, static, synchronized e native.
Final Mtodo com final no herdado da superclasse. Subclasses
no conseguem herdar um mtodo final da superclasse.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA MTODOS
Abstract Mtodo com abstract deve ser implementado pela
primeira subclasse concreta (no abstrata). Um mtodo abstrato no tem
contedo. Ele serve para determinar que a primeira subclasse concreta
deve ter aquele comportamento, porm a subclasse que defini como o
comportamento ser feito.
Observao: Apenas classes abstratas porm conter mtodos abstratos.
Mas elas (as classes) tambm podem conter mtodos concretos.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA MTODOS
Strictfp Mtodo com strictfp tem padro para ponto flutuante.
utilizado em mtodos que trabalham com clculos e resolve problemas
com ponto flutuantes. Utiliza o padro IEEE 754. Funciona exatamente da
mesma forma que na classe, porm funciona apenas para o mtodo em
que utilizado.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA MTODOS
Synchronized Mtodo com synchronized acessado por uma thread
de cada vez. Quando um mtodo synchronized est sendo executado por
uma thread, as demais threads devero aguardar para iniciar a sua
execuo, assim o mtodo acessado por apenas uma thread por vez.
Observao: Threads so, basicamente, partes de um programa que foi
dividido para ser processado mais rpido, sendo que duas threads podem
ser processadas ao mesmo tempo.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA MTODOS
Native Mtodo com native pode ser implementado em outra
linguagem nativa. Pode ser escrito em outra linguagem nativa do Java,
como o C ou o C++. No tem contedo, assim como um mtodo abstract.

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA ATRIBUTOS
Os modificadores de no acesso utilizados em atributos so: final,
static, transient e volatile.
Final Atributo com final no pode ter seu valor alterado. Atributos
que tem um valor constante utilizam final para garantir que seu valor no
seja alterado, um exemplo seria o valor de .

CONCEITOS DE ORIENTAO
A OBJETOS
MODIFICADORES DE NO ACESSO PARA ATRIBUTOS
Static Atributo com static tem escopo de classe, e no de objeto. Isso significa
que no necessrio criar uma instancia daquela classe para ter acesso ao atributo.
Transient Atributo com transient no enviado na serializao pelo transient.

Volatile Atributo com volatile tem seu valor alterado para todas as threads.
Observao: Na utilizao so combinados modificadores de acesso e de no
acesso, veremos as regras no decorrer do curso.

CONCEITOS DE ORIENTAO
A OBJETOS
INTERFACES

Interfaces no s
o herdadas
Interfaces so im
plementadas

Interface como um contrato, pois define as aes que as classes


devem assumir. Ento a classe que implementar uma interface deve
implementar (ter) seus mtodos, porm cada classe pode executar a ao
de uma forma diferente da outra.
possvel que uma classe implemente mais de uma interface. E
tambm que uma interface implemente outras.

CONCEITOS DE ORIENTAO
A OBJETOS
INTERFACES
Toda interface...
abstract;
seus atributos so public, static e final;
e seus mtodos so public e abstract.
Portanto nenhum mtodo deve possuir corpo, garantindo que cada
classe que implement-la poder ter um contedo diferente para o
mtodo. E todo atributo em interface uma constante e no
poder ter seu valor alterado nas classes.

CONCEITOS DE ORIENTAO
A OBJETOS
REVISO
Classes: Definem um objeto.
Objetos: Instncias das classes.
Atributos: Caractersticas de um objeto.
Mtodos: Aes de um objeto.
Interfaces: Contratos de aes de uma classe.

CONCEITOS DE ORIENTAO
A OBJETOS
REVISO
Abstrao: Transformar algo no tcnico em algo tcnico.
Encapsulamento: esconder algo tcnico.
Herana: Herdar membros de outra classe.
Generalizao: Subir a hierarquia.
Especializao: Descer a hierarquia.
Polimorfismo: Ser mltiplas formas.

CONCEITOS DE ORIENTAO
A OBJETOS
REVISO
Sobrescrita de mtodos: Reescrever a ao de um mtodo da
superclasse na subclasse.
Sobrecarga de mtodos: Vrios mtodos com a mesma ao em
uma classe, porm com contedos diferentes.
Pacotes: Agrupadores que unem e organizam classes com
interesses em comum.

CONCEITOS DE ORIENTAO
A OBJETOS
REVISO
Modificador de acesso: Padres de visibilidade de acesso s
classes e membros.
* public, private, protected e default (package).
Modificador de no acesso: Padres de comportamento de
classes e membros.
* abstract, final, static, synchronized, native, strictfp, transiente e
volatile.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA
FINALMENTE VAMOS PRATICA!!!
Agora vamos ver na pratica e em cdigo Java, num exemplo simples,
um pouco do que foi explicado e mais alguns detalhes importantes.
Vamos montar um esquema para animais.
Interface: Animal
Superclasses: Felino e Primata
Classes: Leao, Gato, Macaco e SerHumano.

Esquema

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA
Interface: Animal
Todo animal deve nascer e morrer, portanto criaremos a interface Animal
com os mtodos nascer e morrer, obrigando todos as classes que
implementarem a interface Animal terem estas aes.

Superclasses: Felino e Primata


As classes Felino e Primata sero abstratas, pois no fazem sentido
sozinhas. De incio faremos a apenas classe Felino, criaremos um atributo
para raa e um mtodo para a ao de caar um animal.

SubClasses: Leao, Gato, Macaco e SerHumano.


As classes Leao, Gato, Macaco e SerHumano sero final, considerando que
elas no tero subclasses.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA INTERFACE ANIMAL

Comentrios em
Java
// comentrio
ou
/* coment o */
ri

public interface Animal {


void nascer ( ); // mtodo nascer
void morrer ( ); // mtodo morrer
}

A interface Animal public e abstract, ou seja, qualquer classe ter acesso


ela e no pode ser criado um objeto a partir dela, apenas a partir das
classes que a implementarem. Lembrando que seus mtodos so public
abstract por padro.
Observaes:
Todo animal deve nascer e morrer, portanto foram definidos mtodos para essas aes
O contedo (atributos e mtodos) da interface fica entre colchetes { }
O nome de uma interface deve ter a primeira letra em maisculo

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CLASSE FELINO
public abstract class Felino implements Animal {
// contedo da classe (atributos e mtodos)

A classe Felino public e abstract, ou seja, qualquer classe ter acesso


ela e no pode ser criado um objeto a partir dela, apenas a partir de suas
subclasses.
Observaes:
O nome de uma class deve ter a primeira letra em maisculo
O contedo (atributos e mtodos) da class fica entre colchetes { }
A classe implementa a interface Animal, mas no obrigada a implementar os mtodos da
interface porque ela abstract

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA ATRIBUTO RAA
private String raca;

// atributo da classe Felino

O atributo raa private e do tipo String, ou seja, apenas a classe


Felino ter acesso ele e seus valores sero tratados como um texto.
Observaes:
O nome de um atributo deve ser em minsculo e no pode conter caracteres
especiais.
String um tipo de atributo utilizado para textos
A declarao de um atributo deve terminar com ;

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA MTODO CAAR
public abstract void cacar (String animal); // mtodo caar da classe felino

O mtodo caar public, abstract e tem retorno do tipo void, ou seja,


qualquer classe ter acesso ela, desde que tenha acesso classe
Felino, a primeira classe concreta que herdar a classe felino ter que
implementar o mtodo caar e no retornar nenhuma informao.
Observaes:
O nome de um mtodo deve ser escrito em minsculo
Os parmetros de um mtodo so declarados entre parnteses, neste caso uma
varivel do tipo String chamada animal
Um mtodo abstract no tem corpo (contedo) e termina com ;

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CLASSE LEO
public final class Leao extends Felino {
public void nascer ( ) { /*contedo do mtodo*/ }
public void morrer ( ) { /*contedo do mtodo*/ }
public void cacar (String animal) { /*contedo do mtodo*/ }
}

A classe Leo public e final, ou seja, qualquer classe ter acesso


ela e no pode ser herdada por nenhuma outra classe.
Observaes:
O contedo dos mtodos fica entre colchetes { }
A classe herda a classe Felino
A classe obrigada a implementar os mtodos da classe Felino e da interface
Animal, pois esta implementada pela classe Felino

Resultado
public interface Animal {
void nascer ( );
void morrer ( );
}
public abstract class Felino implements Animal {
private String raca;
public abstract void cacar (String animal);
}
public final class Leao extends Felino {
public void nascer ( ) { /*contedo do mtodo*/ }
public void morrer ( ) { /*contedo do mtodo*/ }
public void cacar (String animal) { /*contedo do mtodo*/ }
}

Organizando em pacotes

Pacote Interfaces

Pacote abstratos

Pacote concretos

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA PACOTES
package concretos; // pacote em que a classe Leo pertence

pacote

import abstratos.Felino; // importao

classe importada

public final class Leao extends Felino {


// contedo da classe

a palavra package informa o pacote em que a classe Leo est.


a palavra import faz a importao de uma classe de outro pacote
utilizada pela classe. Neste caso a classe Leo importa a classe Felino
que est no pacote abstratos, para que a herana seja possvel.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA PACOTES
Observao:
Para importar todos as classes ou interfaces de um pacote, preciso
apenas colocar um * onde colocado o nome da classe.
Ex: import abstratos.*;

Resultado
package interfaces;
public interface Animal {
void nascer ( );
void morrer ( );
}
package abstratos;
import interfaces.Animal;
public abstract class Felino implements Animal {
private String raca;
public abstract void cacar (String animal);
}
package concretos;
import abstratos.Felino;
public final class Leao extends Felino {
public void nascer ( ) { /*contedo do mtodo*/ }
public void morrer ( ) { /*contedo do mtodo*/ }
public void cacar (String animal) { /*contedo do mtodo*/ }
}

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA MTODOS GETTERS E SETTERS
J sabemos que um atributo private no acessado por outra classe.
Ento como o atributo raa ser acessado por quem utilizar a classe
Leo, por exemplo?
Para isso so utilizados os mtodos chamados de Getters e Setters.
Um mtodo set utilizada para inserir um valor para um atributo, j um
mtodo get utilizado para ter acesso ao valor do atributo.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA MTODOS GETTERS E SETTERS
Mtodo set
public String setRaca(String raca){
this.raca = raca;
}

O mtodo setRaca recebe como parmetro um atributo do tipo String


chamado raca, o valor desta String ser passada por quem utilizar o
mtodo, e passa o valor para o atributo raca.
O this indica que a palavra aps o ponto referente ao atributo raca.
O this representa a instncia corrente do mtodo, neste caso a
instncia da classe que herdar Felino.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA MTODOS GETTERS E SETTERS
Mtodo get
public String getRaca( ){
return raca;
}

O mtodo getRaca retorna uma String, neste caso o atributo raca da


classe que herdar a classe Felino.

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA MTODOS GETTERS E SETTERS
Observao:
Perceba que a forma que atribudo um valor para o atributo dentro
do mtodo set fica encapsulada, pois quem utiliza o mtodo no
sabe como a atribuio feita.
Os mtodos Getters e Setters fazem parte do padro JavaBeans que
ser explicado na prxima apostila.

Resultado
package abstratos;
import interfaces.Animal;
public abstract class Felino implements Animal {
private String raca;
public abstract void cacar (String animal);
public String setRaca (String raca){
this.raca = raca;
}
public String getRaca ( ){
return raca;
}
}

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA SOBRECARGA E SOBRESCRITA DE MTODOS
Agora vamos considerar que no existe apenas uma forma de um
Leo caar um animal, ento preciso ter mais de um mtodo para a
ao de caar, e neste mtodo no ser necessrio passar um
parmetro. Ento ns faremos a sobrecarga do mtodo caar, criando o
novo mtodo caar na classe Leao da seguinte forma:
public final class Leao extends Felino {
public
public
public
public
}

void
void
void
void

nascer ( ) { /*contedo do mtodo*/ }


morrer ( ) { /*contedo do mtodo*/ }
cacar (String animal) { /*contedo do mtodo*/ }
cacar ( ) { /*contedo do mtodo*/ } // mtodo sobrecarregado

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA SOBRECARGA E SOBRESCRITA DE MTODOS
Agora vamos considerar que para inserir a raa do Leo, primeiro
preciso verificar se o usurio no est passando um valor vazio para o
parmetro. Ento feita a sobrescrita do mtodo setRaca() da seguinte
forma:
public final class Leao extends Felino {

[...]
// mtodo sobrescrito
public String setRaca (String raca){
if (raca == ){
this.raca = raca;
}
}
}

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CONSTRUTOR
Uma classe instanciada atravs do CONSTRUTOR, ele que constri
os objetos atravs das classes.
Um construtor parecido com um mtodo. Ele pode receber
parmetros para construir os objetos com valores j definidos para seus
atributos e tem modificador de acesso. Porm ele j implcito na classe,
ou seja, mesmo que voc no o coloque a classe j o ter assim que for
criada. Exemplo de construtor padro:
public Felino( ){
}

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CONSTRUTOR
Se o programador desejar possvel criar outro construtor para receber
parmetros e instanciar o objeto com valores para seus atributos:
public Felino (String raca){
this.raca = raca;
}

Perceba que no foi necessrio utilizar o mtodo setRaca dentro do


construtor pois dentro da classe Felino se tem acesso direto ao atributo.
Observao: Ao criar um construtor com parmetro, o construtor padro
deixa de existir, portanto importante cri-lo tambm.

Resultado
package abstratos;
import interfaces.Animal;
public abstract class Felino implements Animal {
private String raca;
public abstract void cacar (String animal);
public Felino( ){
}
public Felino (String raca){
this.raca = raca;
}
public String setRaca (String raca){
this.raca = raca;
}
public String getRaca ( ){
return raca;
}
}

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA - EXERCCIOS
Agora defina a arquitetura para as classes Primata e Humano.
Lembretes:
Humano herda Primata, e Primata implementa Animal
Faa um construtor que receba algum parmetro para a classe
Humano
Os atributos devem ser private e faa os mtodos Getters e Setters
No esquea de especificar o pacote da classe e de fazer as
importaes necessrias

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA INSTANCIANDO UM OBJETO
Como dito anteriormente, uma classe instanciado pelo construtor.
Abaixo um exemplo de como um objeto instanciado.
Leao leao = new Leao ();

Construtor padro, sem parmetro


new -> Palavra que chama o construtor
varivel de referncia -> referncia o objeto criado
Classe que ser instanciada

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA INSTANCIANDO UM OBJETO
Outro exemplo utilizando um construtor com parmetro.
Leao leao = new Leao ( Silvestre );
Construtor com parmetro

Um texto String fica entre aspas. Ex: Exemplo de texto String

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CHAMANDO UM MTODO PELA INSTNCIA
Sintaxe para utilizao de mtodos do objeto criado
Leao leao = new Leao ( Silvestre );
leao.cacar(antlope);

parmetro passado ao mtodo


mtodo caar
varivel de referncia -> referncia o objeto criado

CONCEITOS DE ORIENTAO
A OBJETOS
PRATICA CHAMANDO UM MTODO PELA CLASSE
Agora considere que o mtodo caar (sem parmetro) fosse static,
no precisaramos criar um instncia de Leo para utiliz-lo. Ficando da
seguinte forma:
Leao.cacar( );
mtodo caar
nome da classe, no uma varivel de referncia

CONCEITOS DE ORIENTAO
A OBJETOS
E AGORA?
Chegamos ao fim desta apostila. Parabns!!!
Mas e agora? Tenho certeza que voc est se perguntando como
trabalhar realmente na prtica. Isso ser visto na prxima apostila, assim
como os detalhes de cada coisa explicada, como foi prometido.
Acredito que de agora em diante a aprendizagem da linguagem Java
ficar muito mais fcil e interessante para voc. Se assim for, meu
objetivo com esta apostila foi concludo.
Muito obrigado pela ateno. Espero que tenha gostado.
Bruno Silva