Post on 08-Aug-2020
OrientaçãoaObjetos
LeonardoGrestaPaulinoMurtaleomurta@ic.uff.br
Paradigmaprocedimental• Sinônimo:paradigmaprocedural• Usodesubprogramação
– AgrupamentodecódigopermiAndoacriaçãodeaçõescomplexas– Atribuiçãodeumnomeparaessasaçõescomplexas– Chamadaaessasaçõescomplexasdequalquerpontodoprograma
• Essasaçõescomplexassãodenominadasprocedimentos,sub-roAnasefunções
Leonardo Murta OO 2
Paradigmaorientadoaobjetos(OO)• Classesdeobjetos
– Agrupamentodeprocedimentosevariáveisafins• Pacotesdeclasses
– Agrupamentodeclassesafins– Representambibliotecasdeapoio
Leonardo Murta 3 OO
ParadigmaprocedimentalversusOO
Leonardo Murta OO 4
• Oparadigmaprocedimentalorganizaoprogramaemtermosdealgoritmos
• OparadigmaOOorganizaoprogramaemtermosdeobjetos
AlgoritmosObjetos
AlgoritmosObjetos• Podemoscriarprogramapensandoemtermosdeobjetosaoinvésdealgoritmos?
• Omundoécompostodeobjetos– Umalojatemprodutos,pedidos,estoque,etc.– Umrestaurantetemmesas,garçons,comidas,bebidas,etc.
– Umauniversidadetemprofessores,alunos,disciplinas,etc.– Umarodoviáriatemônibus,passageiros,bagagens,etc.
• Esecriarmosprogramasbasicamentecriandoobjetosequivalentesaomundoreal,efazendocomqueessesobjetossecomuniquem?
Leonardo Murta OO 5
Leonardo Murta OO 6
• Definição– Umobjetoéarepresentaçãocomputacionaldeumelementoouprocessodomundoreal
– Cadaobjetopossuisuascaracterís:caseseucomportamento
• ExemplosdeObjetos
cadeira mesa caneta lápiscarro piloto venda mercadoriacliente aula programa computadoraluno avião
Objetos
Leonardo Murta OO 7
• Definição– UmacaracterísAcadescreveumapropriedadedeumobjeto,ouseja,algumelementoquedescrevaoobjeto.
– CadacaracterísAcaéchamadadeatributoefuncionacomoumavariávelpertencenteaoobjeto
• ExemplodecaracterísAcasdoobjetocarro– Cor– Marca– Númerodeportas– Anodefabricação– Tipodecombus[vel
CaracterísAcasdeobjetos
Leonardo Murta OO 8
• Definição– Umcomportamentorepresentaumaaçãoourespostadeumobjetoaumaaçãodomundoreal
– Cadacomportamentoéchamadodemétodoefuncionacomoumprocedimento/funçãopertencenteaoobjeto
• Exemplosdecomportamentoparaoobjetocarro– Acelerar– Frear– Virarparadireita– Virarparaesquerda
Comportamentodeobjetos
Leonardo Murta OO 9
Características
Comportamento
Objeto no Mundo Real
Atributos
Métodos
Objeto Computacional
Mapeamentodeobjetos
ParadigmaprocedimentalversusOO(exemplo:Agenda)
ParadigmaProcedimental• Variáveis
– Vetordenomes– Vetordeendereços– Vetordetelefones
• Procedimentos– Listagemdetodososnomes– Listagemdoendereçodadoum
nome– Listagemdotelefonedadoum
nome– Adiçãodenome,endereçoe
telefone– Remoçãodenome,endereçoe
telefone
ParadigmaOO• ObjetoAgenda
– Atributo• VetordeContatos
– Métodos• ListagemdeContatos• AdiçãodeumContato• RemoçãodeumContato
• ObjetoContato– Atributos
• Nome• Endereço• Telefone
– Métodos• Exibiçãodenome,endereçoe
telefone• Ediçãodenome,endereçoetelefone
Leonardo Murta OO 10
ParadigmaOO(exemplo:totaldacompra)
Leonardo Murta OO 11
Quais são os objetos participantes do cálculo do total da compra?
Pedido:12345Cliente:JoãodaSilvaEndereço:RuadosBobos,númerozero
Item Produto Preço QuanAdade 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
ParadigmaOO(exemplo:totaldacompra)
Leonardo Murta OO 12
Pedido:12345Cliente:JoãodaSilvaEndereço:RuadosBobos,númerozero
Item Produto Preço QuanAdade 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
Pedido12345
Item1
Item2
Item3
ProdutoAçúcar
ProdutoMacarrão
5
ProdutoFeijão
2
3
2,00
2,50
3,00
ParadigmaOO(exemplo:totaldacompra)
• Comoobterototaldacompra?1. OobjetoCaixapediriaaoobjetoPedidoseuvalor
total2. OobjetoPedido,porsuavez,percorreriatodosos
seusobjetosItemperguntandooseuvalorsubtotalesomariaessesvalorespararesponderaoobjetoCaixa
3. CadaobjetoItemperguntariaaoobjetoProdutooseupreçoemulAplicariaessepreçopelaquanAdadequeestásendocomprada,pararesponderaoobjetoPedido
Leonardo Murta OO 13
PrincípiosdoparadigmaOO
Abstração Encapsulamento
Modularidade Hierarquia
Leonardo Murta OO 14
Abstração• Arepresentaçãocomputacionaldoobjetorealdeveseconcentrar
nascaracterísAcasquesãorelevantesparaoproblema
Leonardo Murta OO 15
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Abstração• Sãocriadossomenteosatributosemétodosnecessáriosparao
problemaemmãos• QuaisseriamosatributosemétodosparaoobjetoCarroemcada
umadassituaçõesseguintes?– Sistemadeumalocadoradecarros– Sistemadeumarevendedoradecarros– Sistemadeumaoficinamecânica– SistemadoDETRAN
Leonardo Murta OO 16
Encapsulamento• Oobjetodeveesconderseusdadoseosdetalhesdesua
implementação
Leonardo Murta OO 17
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Leonardo Murta OO 18
• AtributoseMétodos– Osmétodosformamuma“cerca”emtornodosatributos– Osatributosnãodevemsermanipuladosdiretamente– Osatributossomentedevemseralteradosouconsultadosatravésdosmétodosdoobjeto
Encapsulamento
Encapsulamento
Chamadas de Métodos
Métodos Públicos
Métodos e Atributos privados Leonardo Murta OO 19
Modularidade• Umsistemadeveserdecompostoemumconjuntoaltamente
coesoefracamenteacopladodeobjetos
Leonardo Murta OO 20
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Leonardo Murta OO 21
• UmprogramaOOéumconjuntodeobjetosquecolaboramentresiparaasoluçãodeumproblema
• Objetoscolaboramatravésdechamadasdemétodosunsdosoutros
Motorista
Carro Freia
Modularidade
Hierarquia• Osobjetosdevemserorganizadosnosistemadeformahierárquica
Leonardo Murta OO 22
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Hierarquia• Objetosherdamatributosemétodosdosseusancestraisna
hierarquia
Leonardo Murta OO 23
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Classesversusobjetos• AClasseéo:podoObjeto
Leonardo Murta OO 24
Fonte: livro “Object-Oriented Analysis and Design with Applications”
Classesversusobjetos• ValorestêmAposprimiAvos
– 123éumvalorinteiro– Trueéumvalorbooleano– 12,3éumvalorreal
• Objetospertencemaclasses– João,PedroePaulosãodaclassePessoa– FuscaeFerrarisãodaclasseCarro– FlamengoeFluminensesãodaclasseTime
Leonardo Murta OO 25
TiposPrimiAvos Valores
Classes Objetos
Classesversusobjetos• Umaclasseéumafôrma,capazdeproduzirobjetos• Osprogramadorescriamclasses,asclassesinstanciamobjetos
Leonardo Murta OO 26
ClassePessoa
João,10anos,olhosverdes
Maria,14anos,olhosazuis
Pedro,56anos,olhos
marrons
Isabel,90anos,olhosverdes
Paulo,40anos,olhos
castanhos
Leonardo Murta OO 27
• AclassedescreveascaracterísAcasecomportamentodeumconjuntodeobjetos– EmJava,cadaobjetopertenceaumaúnicaclasse– Oobjetopossuiráosatributosemétodosdefinidosnaclasse
– Oobjetoéchamadodeinstânciadesuaclasse– AclasseéoblocobásicoparaaconstruçãodeprogramasOO
Classes
Exemplodeclassepublic class Carro {
private int velocidade;
public void acelera() {
velocidade++;
}
public void freia() {
velocidade--;
}
}
Leonardo Murta OO 28
Atributos (características) são variáveis globais acessíveis por
todos os métodos da classe
Métodos (comportamentos)
Leonardo Murta OO 29
• Paraviabilizarahierarquiaentreobjetos,asclassessãoorganizadasemestruturashierárquicas– Aclassequeforneceuoselementosherdadoséchamadadesuperclasse
– Aclasseherdeiraéchamadadesubclasse– Asubclassepodeherdarosmétodoseatributosdesuassuperclasses
– Asubclassepodedefinirnovosatributosemétodosespecíficos
Herança
Leonardo Murta OO 30
Veículo
Bicicleta Automóvel Navio Avião
Furgão Carro Caminhão Trator
Exemplodeherança
Exercício• IdenAfiqueasclassesparaaseguinteespecificação:
“Osupermercadovendediferentes7posdeprodutos.Cadaprodutotemumpreçoeumaquan7dadeemestoque.Umpedidodeumclienteécompostode itens,ondecada itemespecifica o produto que o cliente deseja e a respec7vaquan7dade.Essepedidopodeserpagoemdinheiro,chequeoucartão.”
Leonardo Murta OO 31
Interfaces• Tipoespecialdeclasse,quenãotemimplementação
– Umainterfacedefineumprotocolo– Classespodemimplementarumaoumaisinterfaces
• Umainterfaceéumcontratoassinadoporumaclasse– Ainterfacedefineasresponsabilidadesdaclasse– Asresponsabilidadessãomapeadasemmétodos– Aclassequeimplementaainterfaceimplementaosmétodos
– Ainterfacecontémsomenteassinaturademétodoseconstantes
Leonardo Murta OO 32
Interfaces
public interface Taxavel {
int ANO_INICIO = 1996; double calculaTaxa ();
}
Leonardo Murta OO 33
Classesabstratas• Umaclassequepossuialgummétodosemimplementação(abstratos)
• Classesabstratasnãopodemterinstâncias
abstract class Carro {
<atributos da classe Carro> <métodos comuns da classe Carro>
<métodos abstratos da classe Carro>
}
Leonardo Murta OO 34
Exemplopublic class Ferrari extends Carro implements Taxavel
{
<atributos da Ferrari>
<métodos da Ferrari>
<métodos redefinidos de Carro>
<métodos da interface Taxavel> }
Leonardo Murta OO 35
Pacotes
• UAlizadosparaagregarclassesrelacionadas package br.uff.ic;
public class Pessoa {
...
}
Leonardo Murta OO 36
Leonardo Murta OO 37
Pacotes• Modificadorespermitemquedeterminadasclasses
sejamvisíveisapenasparaoutrasclassesdomesmopacote
Pacotes• Semprequeforusarumaclassedeoutropacote,énecessárioimportar
package br.uff.ic;
import java.util.List;
public class Pessoa {
... }
Leonardo Murta OO 38
Modificadordevisibilidade• Indicaquempodeacessarométodo(ouatributo):
– Omodificadorprivateindicaqueométodopodeserchamadoapenasporoutrosmétodosdaprópriaclasse
– Aausênciademodificadoréconhecidacomopackage,eindicaqueométodopodeserchamadosomenteporclassesdomesmopacote
– Omodificadorprotectedindicaqueométodopodeserchamadosomenteporclassesdomesmopacoteousubclasses;
– Omodificadorpublicindicaqueométodopodeserchamadoporqualqueroutraclasse
Leonardo Murta OO 39
Leonardo Murta OO 40
• Indicaaquempertenceométodo(ouatributo)– Aoobjeto(instância)– Àclassecomoumtodo
• MétodosestáAcos(sta7c)pertencemàclassecomoumtodo– Podemserchamadosdiretamentenaclasse,semanecessidadedeinstanciarobjetos
– SópodemmanipularatributosestáAcos
Modificadordeescopo
Relacionamentoentreclasses• OutrasclassespodemseruAlizadascomoAposdosatributosdeumadeterminadaclasse
• Nestecaso,oatributorepresentaumarelaçãoentreasduasclasses
• Odesenvolvedordevedefiniravisibilidadedarelação,ouseja,quaisclassesconhecemarelação
Leonardo Murta OO 41
Objetoscomoatributosclass A {
private B b; …
} class B {
private A a; …
}
Classe A
Classe B
Leonardo Murta OO 42
Polimorfismo• Umasubclassepoderedefinirummétodoherdado– Estemecanismoéchamadodepolimorfismo– Opolimorfismoserealizaatravésdarecodificaçãodeumoumaismétodosherdadosporumasubclasse
– Emtempodeexecução,oJavasaberáqualimplementaçãodeveserusada
Leonardo Murta OO 43
Exercício• FaçaumaclasseAnimalcom
ummétodoabstrato“fala”• FaçaasclassesHomem,Cãoe
Gato,herdandodeanimal,redefinindoométodo“fala”pararetornar“Oi”,“Auau”e“Miau”,respecAvamente
• Crieumvetorde10AnimaiseinstancieHomens,CãeseGatosnessevetor
• Façaumloopportodososanimaisdovetor,pedindoparaelesfalarem
Leonardo Murta OO 44
Animal
Homem Cão Gato
OrientaçãoaObjetos
LeonardoGrestaPaulinoMurtaleomurta@ic.uff.br