orientação a objetos - uffleomurta/courses/2015.2/es1/aula3.pdf · 2020-02-03 · paradigma...

Post on 08-Aug-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related