Introdução a Orientação a Objetos

Propaganda
Introduçãoa
OrientaçãoaObjetos
LeonardoGrestaPaulinoMurta
[email protected]ff.br
Auladehoje
•  Estudaremosoutrasduasestruturasde
encapsulamentodaOrientaçãoaObjetos
–  Classes
–  Pacotes
Leonardo Murta
Introdução a OO
2
ParadigmaprocedimentalversusOO
•  Oparadigmaprocedimentalorganizaoprograma
emtermosdealgoritmos
•  OparadigmaOOorganizaoprogramaemtermos
deobjetos
Algoritmos
Leonardo Murta
Objetos
Introdução a OO
3
AlgoritmosObjetos
•  Podemoscriarprogramapensandoemtermosde
objetosaoinvésdealgoritmos?
•  Omundoécompostodeobjetos
–  Umalojatemprodutos,pedidos,estoque,etc.
–  Umrestaurantetemmesas,garçons,comidas,bebidas,
etc.
–  Umauniversidadetemprofessores,alunos,disciplinas,etc.
–  Umarodoviáriatemônibus,passageiros,bagagens,etc.
•  Esecriarmosprogramasbasicamentecriando
objetosequivalentesaomundoreal,efazendocom
queessesobjetossecomuniquem?
Leonardo Murta
Introdução a OO
4
Objetos
•  Definição
–  Umobjetoéarepresentaçãocomputacionaldeumelementoou
processodomundoreal
–  Cadaobjetopossuisuascaracterís;caseseucomportamento
•  ExemplosdeObjetos
cadeira
carro
cliente
aluno
Leonardo Murta
mesa
piloto
aula
avião
caneta venda programa
Introdução a OO
lápis
mercadoria
computador
5
CaracterísOcasdeObjetos
•  Definição
–  UmacaracterísOcadescreveumapropriedadedeumobjeto,ou
seja,algumelementoquedescrevaoobjeto.
–  CadacaracterísOcaéchamadadeatributoefuncionacomouma
variávelpertencenteaoobjeto
•  ExemplodecaracterísOcasdoobjetocarro
– 
– 
– 
– 
– 
Leonardo Murta
Cor
Marca
Númerodeportas
Anodefabricação
TipodecombusSvel
Introdução a OO
6
ComportamentodeObjetos
•  Definição
–  Umcomportamentorepresentaumaaçãoourespostadeumobjeto
aumaaçãodomundoreal
–  Cadacomportamentoéchamadodemétodoefuncionacomoum
procedimento/funçãopertencenteaoobjeto
•  Exemplosdecomportamentoparaoobjetocarro
– 
– 
– 
– 
Acelerar
Frear
Virarparadireita
Virarparaesquerda
Leonardo Murta
Introdução a OO
7
MapeamentodeObjetos
Objeto no Mundo Real
Objeto Computacional
Características
Atributos
Comportamento
Métodos
Leonardo Murta
Introdução a OO
8
ParadigmaProcedimentalversusOO
(exemplo:Agenda)
ParadigmaProcedimental
ParadigmaOO
•  Variáveis
•  ObjetoAgenda
–  Atributo
–  Vetordenomes
–  Vetordeendereços
–  Vetordetelefones
•  VetordeContatos
–  Métodos
•  Procedimentos
–  Listagemdetodososnomes
–  Listagemdoendereçodadoum
nome
–  Listagemdotelefonedadoum
nome
–  Adiçãodenome,endereçoe
telefone
–  Remoçãodenome,endereçoe
telefone
Leonardo Murta
•  ListagemdeContatos
•  AdiçãodeumContato
•  RemoçãodeumContato
•  ObjetoContato
Introdução a OO
–  Atributos
•  Nome
•  Endereço
•  Telefone
–  Métodos
•  Exibiçãodenome,endereçoe
telefone
•  Ediçãodenome,endereçoetelefone
9
ParadigmaOO
(Exemplo:totaldacompra)
Pedido:12345
Cliente:JoãodaSilva
Endereço:RuadosBobos,númerozero
Item
Produto
Preço
QuanOdade
Subtotal
1
Açúcar
R$2,00
5
R$10,00
2
Macarrão
R$2,50
2
R$5,00
3
Feijão
R$3,00
3
R$9,00
TOTAL
R$24,00
Quais são os objetos participantes do cálculo do total da compra?
Leonardo Murta
Introdução a OO
10
ParadigmaOO
(Exemplo:totaldacompra)
Pedido:12345
Cliente:JoãodaSilva
Endereço:RuadosBobos,númerozero
Item
Produto
Preço
QuanOdade
Subtotal
1
Açúcar
R$2,00
5
R$10,00
2
Macarrão
R$2,50
2
R$5,00
3
Feijão
R$3,00
3
R$9,00
TOTAL
R$24,00
Item1
Pedido12345
Item2
Item3
Leonardo Murta
ProdutoAçúcar
2,00
5
ProdutoMacarrão
2,50
2
ProdutoFeijão
3,00
3
Introdução a OO
11
ParadigmaOO
(Exemplo:totaldacompra)
•  Comoobterototaldacompra?
1.  OobjetoCaixapediriaaoobjetoPedidoseuvalor
total
2.  OobjetoPedido,porsuavez,percorreriatodosos
seusobjetosItemperguntandooseuvalorsubtotal
esomariaessesvalorespararesponderaoobjeto
Caixa
3.  CadaobjetoItemperguntariaaoobjetoProdutoo
seupreçoemulOplicariaessepreçopelaquanOdade
queestásendocomprada,pararesponderaoobjeto
Pedido
Leonardo Murta
Introdução a OO
12
CLASSES
Leonardo Murta
Introdução a OO
13
ClassesversusObjetos
•  AClasseéo;podoObjeto
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Leonardo Murta
Introdução a OO
14
ClassesversusObjetos
•  ValorestêmOposprimiOvos
–  123éumvalorinteiro
–  Trueéumvalorbooleano
–  12,3éumvalorreal
•  Objetospertencemaclasses
–  João,PedroePaulosãodaclassePessoa
–  FuscaeFerrarisãodaclasseCarro
–  FlamengoeFluminensesãodaclasseTime
Leonardo Murta
TiposPrimiOvos
Valores
Classes
Objetos
Introdução a OO
15
ClassesversusObjetos
•  Umaclasseéumafôrma,capazdeproduzirobjetos
•  Osprogramadorescriamclasses,asclassesinstanciamobjetos
João,10
anos,
olhos
verdes
Paulo,40
anos,
olhos
castanhos
Classe
Pessoa
Isabel,90
anos,
olhos
verdes
Leonardo Murta
Maria,14
anos,
olhos
azuis
Pedro,56
anos,
olhos
marrons
Introdução a OO
16
Classes
•  AclassedescreveascaracterísOcase
comportamentodeumconjuntodeobjetos
–  EmJava,cadaobjetopertenceaumaúnicaclasse
–  Oobjetopossuiráosatributosemétodosdefinidosna
classe
–  Oobjetoéchamadodeinstânciadesuaclasse
–  Aclasseéoblocobásicoparaaconstruçãode
programasOO
Leonardo Murta
Introdução a OO
17
ExemplodeClasse
public class Carro {
private int velocidade;
Atributos (características) são
variáveis globais acessíveis por
todos os métodos da classe
public void acelera() {
velocidade++;
}
Métodos (comportamentos)
public void freia() {
velocidade--;
}
}
Leonardo Murta
Introdução a OO
18
Criaçãodeobjetos
•  Aclasseéresponsávelpelacriaçãodeseus
objetosviamétodoconstrutor
–  Mesmonomedaclasse
–  SemOpoderetorno
public Carro(int velocidadeInicial) {
velocidade = velocidadeInicial;
}
Leonardo Murta
Introdução a OO
19
Criaçãodeobjetos
•  ObjetosdevemserinstanciadosantesdeuOlizados
–  Ocomandonewinstanciaumobjeto,chamandooseu
construtor
•  Exemplo:
Qual a velocidade de cada
carro em cada momento?
Carro fusca = new Carro(10);
Carro bmw = new Carro(15);
fusca.freia();
bmw.acelera();
fusca = bmw;
Leonardo Murta
Introdução a OO
O que acontece aqui?
20
Criaçãodeobjetos
•  Valornull:
–  UOlizadopararepresentarumobjetonãoinicializado
–  Quandoummétodoretornaumobjeto,elepoderetornar
nullparaindicar,porexemplo,queoobjetonãofoi
encontrado
–  Épossívelatribuirnullparadescartarumobjeto
previamenteinstanciado
•  Exemplo:
Carro fusca = new Carro(10);
fusca.acelera();
fusca = null;
Leonardo Murta
Introdução a OO
21
PACOTES
Leonardo Murta
Introdução a OO
22
Pacotes
•  UOlizadosparaagregarclassesrelacionadas
•  Opacotedeumaclasseéindicadonaprimeiralinhadaclasse
–  Declaraçãopackage
•  Se uma classe não declara seu pacote, o interpretador assume
queaclassepertenceaumpacotedefault
package br.uff.ic;
public class Pessoa {
...
}
Leonardo Murta
Introdução a OO
23
Pacotes
•  Modificadorespermitemquedeterminadasclasses
sejamvisíveisapenasparaoutrasclassesdomesmo
pacote
Leonardo Murta
Introdução a OO
24
Pacotes
•  Semprequeforusarumaclassedeoutropacote,énecessário
importar
•  Aimportaçãoserealizaatravésdapalavra-chaveimport,
seguidadonomedaclassedesejada
–  Asimportaçõessãoapresentadasantesdadeclaraçãodaclassemas
depoisdadeclaraçãodopacote
–  Aimportaçãodeumpacotenãoimportaossubpacotes
recursivamente
package br.uff.ic.prog1;
import java.util.Scanner;
public class Fisica {
...
}
Leonardo Murta
Introdução a OO
25
Regradeouroparaclassesepacotes
•  Classesdevemsermapeadasemarquivoscomo
mesmonome
–  ClassePessoa
–  ArquivoPessoa.java
•  Pacotesdevemsermapeadosemdiretórios
–  Pacotebr.uff.ic
–  Diretóriobr\uff\ic
•  Seonomecompletodaclasseébr.uff.ic.Pessoa
–  Devehaverbr\uff\ic\Pessoa.java
Leonardo Murta
Introdução a OO
26
ATRIBUTOSEMÉTODOS
Leonardo Murta
Introdução a OO
27
Modificadores
•  Atributosemétodospodemterdiferentes
visibilidadeseescopos
–  Estamosatéagorausandosomenteosmodificadores
publicsta7c
–  Oquesignificamessesmodificadores?
–  Quaisoutrosmodificadoresexistem?
Leonardo Murta
Introdução a OO
28
Modificadordevisibilidade
•  Indicaquempodeacessaroatributooumétodo:
–  Omodificadorprivateindicaqueoatributooumétodopodeser
chamadoapenasporoutrosmétodosdaprópriaclasse
–  Aausênciademodificadoréconhecidacomopackage,eindicaqueo
atributooumétodopodeserchamadosomenteporclassesdo
mesmopacote
–  Omodificadorprotectedindicaqueoatributooumétodopodeser
chamadosomenteporclassesdomesmopacoteousubclasses;
–  Omodificadorpublicindicaqueoatributooumétodopodeser
chamadoporqualqueroutraclasse
Leonardo Murta
Introdução a OO
29
Modificadordeescopo
•  Indicaaquempertenceométodo(ouatributo)
–  Aoobjeto(instância)
–  Àclassecomoumtodo(comparOlhadoparatodasasinstâncias)
•  AtributosoumétodosestáOcos(sta7c)pertencemàclassecomo
umtodo
–  Podemserchamadosdiretamentenaclasse,semanecessidadede
instanciarobjetos
–  MétodosestáOcossópodemmanipularatributosestáOcos
•  Aausênciadomodificadorsta7cindicaqueoatributooumétodoé
deinstância
Leonardo Murta
Introdução a OO
30
Agorajásabemosler!!!
publicstaOcvoidmain(String[]args)
Leonardo Murta
Introdução a OO
31
Passagemporvalorvs.
passagemporreferência
•  Algumaslinguagenspermitempassagemde
argumentosporreferência
–  NãoéocasodeJava,quesemprefazpassagempor
valor
•  Diferenças
–  Passagemporvalor=cópiadosvaloresparaoutra
posiçãodememória
–  Passagemporreferência=reusodaposiçãode
memória
Leonardo Murta
Introdução a OO
32
Passagemporvalorvs.
passagemporreferência
•  VariáveisquecontêmOposprimiOvos(byte,short,
int,long,float,double,char,boolean)sempre
ocupamdiretamenteumaposiçãonamemória
Leonardo Murta
nota1
8.2
flaTheBest
true
nota2
6.0
nota3
7.1
bloco
‘A’
Variáveis Compostas
33
Passagemporvalorvs.
passagemporreferência
•  Variáveisquecontêmobjetosnaverdade
guardamaposiçãodememóriadosobjetos
velocidade:10
cor:branca
fusca
Leonardo Murta
&1234
&1234
Variáveis Compostas
34
Passagemporvalorvs.
passagemporreferência
•  Quandoépassadoumobjetoporvalora
referênciaécopiada
–  Mudançasnosatributosdosobjetossãovistasdefora
–  Instanciaçõesdenovosobjetosnasvariáveisnãosão
vistasdefora
Leonardo Murta
Introdução a OO
35
ClassessãoOpos!
•  ClassespodemseruOlizadascomo
–  Tiposdosatributosdeumaoutraclasse
–  Parâmetrosdeummétodo
–  Tipoderetornodeummétodo
Leonardo Murta
Introdução a OO
36
ClassessãoOpos!
Time
class Time
{
private Jogador[] jogadores;
…
public Jogador getJogador(int numero) {
...
public void escala(Jogador jogador) {
...
}
Jogador
class Jogador
{
private Time time;
…
}
Leonardo Murta
Introdução a OO
37
Exercício1
•  IdenOfiqueasclassesparaaseguinte
especificação:
“Osupermercadovendediferentes7posdeprodutos.Cada
produtotemumpreçoeumaquan7dadeemestoque.Um
pedidodeumclienteécompostodeitens,ondecadaitem
especifica o produto que o cliente deseja e a respec7va
quan7dade.Essepedidopodeserpagoemdinheiro,cheque
oucartão.”
Leonardo Murta
Introdução a OO
38
Exercício2
•  Refaçaoexercíciodaauladevariáveiscompostas
usandosomenteumvetor(eclasse)nolugarde
doisvetores(umdenomeseoutrodeidades)
–  Lembrete:oexercícioeraparalistar10pessoas
ordenadopornomeedepoisporidade
Leonardo Murta
Introdução a OO
39
Exercício3
•  Refaçaoexercíciodaauladesubprogramação
usandoumaclassepararepresentaracalculadora
Leonardo Murta
Introdução a OO
40
Introduçãoa
OrientaçãoaObjetos
LeonardoGrestaPaulinoMurta
[email protected]ff.br
Download