Upload
liadownload
View
214
Download
0
Embed Size (px)
DESCRIPTION
informatica
Citation preview
7/21/2019 EDA_Aulas
1/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS
Classes, Objectos, Arrays/Vectores,Herana, Polimorfsmo, Ficheiros
7/21/2019 EDA_Aulas
2/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 2
Classe, Objectos [1], cap Programao orientada a objectos
Programas funcionam custa de entidades,objectos
Objectos so capazes de desempenhar tarefas
Objecto
Identidade (identicar !ados ou atributos (caracterizar "#todos (comportamento, ac$es, funciona%idades
&ntes de'ese denir a c%asse (um mo%de
)ue pode ser usado para criar objectos
7/21/2019 EDA_Aulas
3/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 3
!efnir "ma Classepub%ic c%ass NomeDaClasse*
++%ista de atributos pri'ate int atributo pri'ate -oat atributo . ++%ista de metodospub%ic 'oid metodo * ++instrunoes do m#todo /pub%ic 'oid metodo . * ++instrunoes do m#todo
//
Exemplo
public class Pessoa
{
//lista de atributos
private String bi
private String nome
private Date dataNasc
private String sexo
//lista de metodos
public Pessoa (String numBi, String nomeCompleto
Date dataAniv, Char sexoDaPessoa
{ //instrun!oes do m"todo
bi #numBi$
nome #nomeCompleto$
dataNasc#dataAniv$
sexo #sexoDaPessoa$
%
public void determina&dade (Date dataNasc
// {
//instrun!oes do m"todo
%
%
7/21/2019 EDA_Aulas
4/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 4
Constr"tor Exemplo pub%ic c%ass Pessoa *
++%ista de atributos pri'ate 0tring bi pri'ate 0tring nome pri'ate !ate data1asc pri'ate 0tring se2o ++%ista de metodos pub%ic Pessoa (0tring num3i, 0tring
nome4omp%eto
!ate data&ni', 4har se2o!aPessoa * ++instrunoes do m#todo bi 5num3i6 nome 5nome4omp%eto6 data1asc5data&ni'6 se2o 5se2o!aPessoa6 / pub%ic 'oid determinaIdade (!ate data1asc
++ * ++instrunoes do m#todo / /
4%asse7 Pessoa Objectos7 8889, Matusse, .
.88. 88:;2,Jose Joao, 88;
7/21/2019 EDA_Aulas
5/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 5
Cria#o $e objectos !ec%are o objecto com se fosse uma
'ar simp%es nome!a4%asse nome!oObjecto6
Int 26 0tring nome6 Pessoa joao6 Pessoa joao, matusse6
Operador >new? nome!oObjecto 5 ne@ nome!a4%asse (parametros
joao 5 ne@ Pessoa (88:;2,Jose Joao, 88;
7/21/2019 EDA_Aulas
6/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 6
&presentao do =raba%ho em Arupo
7/21/2019 EDA_Aulas
7/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 7
Arrays/Vectores [1], cap % int 2 so pode conter um Bnico 'a%or
'arias 'aria'eisC &rraDs+tabe%as unidimensionais
!ec%arao7 Int EF notas6
4riao7 notas 5 ne@ intE;F6 &cesso
7/21/2019 EDA_Aulas
8/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 8
&'erc(cio
E8F EF EGF EH
7/21/2019 EDA_Aulas
9/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 9
. !ena a c%asse estudante
H 4rie um arraD (turma deestudantes
7/21/2019 EDA_Aulas
10/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 10
Vectores Semelha!a "om a a##a$
%e"to# po&e "#es"e# Tem "apa"'&a&e (ue po&e "#es"e# "om as e"ess'&a&es Tem tamaho )s'*e+ (ue o # a"tual &e elemetos
%e"to# po&e a#ma*ea# elemetos &e t'pos&'-e#etes Ca&a elemeto um o.je"to )#e-e#e"'a+,
Nao po&e /ua#&a# o.je"tos &e t'pos .as'"os ) 't, &ou.le,et"0+ 1
Use "ast'/ )t$pe "asts+ ou "lasses2#appe# os %e"to#s %e"to# ao estao '"lu'&as a l'/ua/em .ase
Impo#te a pa"3a/e ja4a0ut'l %e"to#es s5o #elat'4amete letos %6#'os mto&os
7/21/2019 EDA_Aulas
11/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 11
4rie um 'ector de inteiros
4o%o)ue H na posio Meia para uma 'ariL'e% o 'a%or da posio H
: 4rie o 'ector (turma de estudantes
7/21/2019 EDA_Aulas
12/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 12
Herana [1], cap 11
7/21/2019 EDA_Aulas
13/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 13
Herana erana
Qeuti%izao de 0oft@are 4riao de no'as c%asses a partir de c%asses
e2istentes &bsor'em dados e comportamentos das c%asses e2istentes Rnri)uecem com no'as capacidades
0ubc%asses estendem as superc%asses 0ubc%asse
Grupos mais especializados de Objectos
Comportamentos herdados da superclasse
Podem ser personalizados Comportamentos adicionais
7/21/2019 EDA_Aulas
14/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 14
Herana ierar)uia de 4%asses
erana !ireta erdada e2p%icitamente (um nS'e% acima na hierar)uia
erana Indireta erdada de dois ou mais nS'eis acima na hierar)uia
erana 0imp%es erda de uma Bnica superc%asse
erana "B%tip%a erda de mB%tip%as superc%asses
7/21/2019 EDA_Aulas
15/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 15
Herana &bstrao
Toco nas associa$es entre os Objectos no sistema ># um? 's >tem um?
># um? erana
Objecto da subc%asse tratado como um Objecto da superc%asse R2emp%o7 4arro um'eScu%o As propriedades e comportamento de um veculo so tambm propriedades e
comportamentos de carros
>tem um? 4omposio
Um Objecto cont#m um ou mais Objectos de outras c%assescomo membros
R2emp%o7 4arro tem um'o%ante
7/21/2019 EDA_Aulas
16/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 16
)"perclasses e )"bclasses
0uperc%asses e subc%asses Objecto de uma c%asse V# umV Objecto de outra
c%asse R2emp%o7 Um QetWngu%o # um Nuadri%Ltero
A Classe Retnguloherda da Classe Quadriltero
Quadriltero : superclasse
Retngulo: subclasse & 0uperc%asse tipicamente representa um conjunto
maior de Objectos do )ue a c%asse herdeira R2emp%o7
superclasse:Veculo
Carros cami!es barcos bicicletas """ subclasse: Carro
Conjunto menor e mais espec#ico de veculos
* ) l ) b l
7/21/2019 EDA_Aulas
17/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 17
* )"perclasses e )"bclasses+Cont-
R2emp%os de erana
Classe Base Classe Derivada
Estudante EstudanteGraduao
EstudanteMestrado
Forma
Geomtrica
Crculo
TringuloRetngulo
Emprstimo Emprestimo!uisicaoCarro
EmprestimoRe"ormaResidencia
Emmprestimo!uisicaoCasaPropria
Empregado Pro"essor
FuncionarioTecnicodministrati#o
Conta ContaCorrenteContaPoupana
7/21/2019 EDA_Aulas
18/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 18
)"perclasses e )"bclasses +Cont- ierar)uia de erana
Qe%a$es de erana7 Rstrutura hierLr)uica emLr'ore
4ada c%asse pode ser 4%asse 3ase
$ornece dados%comportamento para as outras classes
OU 4%asse !eri'ada
&erda dados%comportamento de outras classes
7/21/2019 EDA_Aulas
19/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 19
Pessoa
Estudante Funcionario
E_MestradoE_Graduo
7/21/2019 EDA_Aulas
20/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 20
.o$ifca$ores $e isibili$a$e Public
priate protectedaccess
1S'e% intermediLrio de proteo entrepu$licepri#ate
membrosprotectedna superc%asse soacessS'eis a
m#todos na superc%asse m#todos nas subc%asses m#todos nas c%asses no mesmo pacote
"#todos nas subc%asses acessam membros nasuperc%asse
Pa%a'ra reser'ada supere um ponto (
7/21/2019 EDA_Aulas
21/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 21
Herana +e'emplo- abstract c%ass Pessoa *
pub%ic Pessoa(0tring n * nome 5 n6 / pub%ic abstract 0tring get!escricao(6 pub%ic 0tring get1ome( * return nome6 /
pri'ate 0tring nome6 /
7/21/2019 EDA_Aulas
22/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 22
Herana +e'emplo- c%ass Rstudante e2tends Pessoa *
pub%ic Rstudante(0tring n, 0tring m * super(n6 curso 5 m6 / pub%ic 0tring get!escricao( * return VUm estudante cursando em 7VXcurso6 /
pri'ate 0tring curso6 /
+ l -
7/21/2019 EDA_Aulas
23/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 23
Herana +e'emplo- c%ass Tuncionario e2tends Pessoa * pri'ate doub%e sa%ario6 pu.l'"7u"'oa#'o)St#'/n, doub%e s * super(n6 sa%ario 5 s6 / pu.l'" &ou.le /etSala#'o( * return sa%ario6
/ pu.l'" 4o'& aumetaSala#'o)&ou.lepercent * doub%e aumento 5 sa%arioYpercent+886 sa%arioX5aumento6 / pu.l'" St#'/ /etDes"#'"ao(
* return VO empregado e gerenteV6 / /
P li f
7/21/2019 EDA_Aulas
24/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 24
Polimorfsmo pub%ic c%ass Pessoa=est *
pub%ic static 'oid main(0tringEF args * PessoaEF p 5 ne@ PessoaE.F6 pE8F 5 ne@ Tuncionario(V&ntonioV,:8886 pEF 5 ne@ Rstudante(V"ariaV,VInformaticaV6
for(int i586iZp%ength6iXX * Pessoa pes 5 pEiF6 0Dstemoutprint%n(pesget1ome(XV ,
VXpesget!escricao(6 / / /
A $ [1] 1
7/21/2019 EDA_Aulas
25/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 25
A0en$a [1], cap 1 Ticheiros
Ticheiros de te2to Ticheiros de objectos 0eria%izao de objectos R2cep$es
2 t $ #
7/21/2019 EDA_Aulas
26/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 26
2ntro$"#o &s 'ariL'eis e objectos armazenados
na mem[ria Q&" perdemse no m dae2ecuo de um programa Uso de dispositi'os de
armazenamento Ticheiros 0tream+-u2o conceito ja'a para oar)ui'o e %eitura de dados de ch Nuais so os tipos de chC 4omo dec%ararC Nue
bib%iotecaC Nue m#todos possuemC
Fi h i $ t t
7/21/2019 EDA_Aulas
27/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 27
Ficheiros $e te'to 0[ podem conter caracteres, 4riao
\a'aio contem c%asses para a manip de ch Ti%e f 5 ne@ Ti%e (nome!oTicheiro6
Onde a c%asse Ti%e representa ch em disco nome!oTicheiro # um 0tring6
0e f e2istir7 "#todos7 de%ete(6 e2ists(6 %ength(6 rename(6
4omo criar um %e no discoC MerC Rscre'erC Use outras c%asses especia%izadas
Ti%eQeader frd5 ne@ Ti%eQeader(nome!oTicheiro6
Ti%e]riter f@t5 ne@ Ti%e]riter(nome!oTicheiro6 Os dados so tratados caracter a caracter6
Fi h i $ t t + t -
7/21/2019 EDA_Aulas
28/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 28
Ficheiros $e te'to +cont-=ratamento %inha a %inha
Use outro objecto especia%izado com as c%asses7
3u^eredQeader fQ 5 ne@ 3u^eredQeader (frd6 3u^ered]riter f] 5 ne@ 3u^ered]riter (fr@6
0o mais con'enientes para cheiros6
& 4%asse Ticheiro!e=e2to "#todos
abreMeitura(6 %erMinha(6 %er1umero(6 abreRscrita(6 escre'erMinha(6 escre'er1umero(6 fechaMeitura(6 fechaRscrita(
& emplo import ja'aioY6 pub%ic c%ass R2emp%oTicheiros
7/21/2019 EDA_Aulas
29/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 29
&'emplo * pub%ic static 'oid main(0tring argsEF thro@s IOR2ception * 0Dstemoutprint%n(V R2emp%oTicheirosV6 Ticheiro!e=e2to f 5 ne@ Ticheiro!e=e2to(6 fabreRscrita(Vtestet2tV6 for (int i586 iZ86iXX * fescre'er1umero(iYi6 / ffechaRscrita(6 0Dstemoutprint%n(V Nuadrado dos numeros de a
7/21/2019 EDA_Aulas
30/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 30
Ficheiros $e Objectos Os dados no cheiro representam objectos
=ratamento de objectos Use ObjectOutput0tream e ObjectInput0tream ObjectOutput0tream
]riteObject( organiza os dados do objectos para oen'io se)uencia% para o cheiro
ObjectInput0tream readObject( %e os dados de entrada e reconstitui o objecto inicia% ]riteObject(+QeadObject( para objectos
predenidos pub%ic c%ass Tu#ma imp%ements seria%izab%e
Tu#mafoi denido pe%o uti%izador !e'ese autorizar a reorganizacao para o armazenamento no
cheiro
Ficheiros $e Objectos +Cont -
7/21/2019 EDA_Aulas
31/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 31
Ficheiros $e Objectos +Cont- & 4%asse Ticheiro!eObjectos
"etodos abreMeitura(f6 abreRscrita(f6 MeObjecto(6 escre'eObjecto(o6 fechaMeitura(6 fechaRscrita(6
&'emplo import ja'aioY6
pub%ic c%ass Aere=urma_*
7/21/2019 EDA_Aulas
32/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 32
&'emplo * pub%ic static 'oid ma'(0tring EF args thro@s IOR2ception, 4%ass1otToundR2ception * 0tring nome6 int esco%ha6
=urma t5ne@ =urma(6 ++Me =urma a partir do Ticheiro
Ticheiro!eObjectos fo 5ne@ Ticheiro!eObjectos(6 foabreMeitura(Vturmat2tV6 t5(=urma fo%eObjecto(6 fofechaMeitura(6 do * s@itch (esco%ha * case 7 tjuntaRstudante(6 brea`6 case .7 0Dstemoutprint(V1ome do Rstudante7 V6 nome5Meread0tring(6
++te%iminaRstudante(nome6 brea`6 case H7 timprime=urma(6 brea`6 case 7 0Dstemoutprint(V1ome do Rstudante7 V6 nome 5 Meread0tring(6 ++tprocuraRstudante(nome6 brea`6 case :7 tordena=urma(6 brea`6 ++ &ntes de sair, guarda os dados no cheiro
case 87 foabreRscrita(VturmadatV6
foescre'eObjecto(t6 fofechaRscrita(6 0Dsteme2it(86 / / @hi%e (esco%ha586 / /
&'cep3es
7/21/2019 EDA_Aulas
33/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 33
&'cep3es &%go )ue ocorre na e2ecuo de um m#todo e
)ue o impede de funcionar como esta'a
pre'isto !etecao e tratamento de e2cep$es
=hro@s dec%ara a propagacao das e2cepcoes, ie, o metodonao consegue trata%a6
R2emp%o pub%ic 'oid a.#eLe'tu#a(0tring nome!oTicheiro thro@sIOR2ception
'
i( ) ne* Object+nput(tream ,ne* $ile+nput(tream,nome-o$icheiro../
0
&'cep3es
7/21/2019 EDA_Aulas
34/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 34
&'cep3es 1o gera%, )uando ha e2cepo7
Ignora%a7 o programa termina com uma msg6
=rata%a no m#todo onde ocorre (ha info=rata%a noutro m#todo da cadeia (propagao R2emp%o
pub%ic boo%ean a.#eLe'tu#a(0tring nome!oTicheiro'
1r2 'i( ) ne* Object+nput(tream ,ne* $ile+nput(tream,nome-o$icheiro../
return true/
0 catch ,+O34ception e. '
return #alse/
00
A Classe Ficheiro!eObjecto
7/21/2019 EDA_Aulas
35/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 35
A Classe Ficheiro!eObjecto pub%ic 'oid a.#eLe'tu#a(0tring nome!oTicheiro thro@s IOR2ception * i0 5 ne@ ObjectInput0tream (ne@ Ti%eInput0tream(nome!oTicheiro6 /
pub%ic 'oid a.#eEs"#'ta(0tring nome!oTicheiro thro@s IOR2ception * o0 5 ne@ ObjectOutput0tream (ne@ Ti%eOutput0tream(nome!oTicheiro6 / pub%ic Object leO.je"to( thro@s IOR2ception, 4%ass1otToundR2ception * return i0readObject(6 /
pub%ic 'oid es"#e4eO.je"to(Object o thro@s IOR2ception * o0@riteObject(o6 / pub%ic 'oid -e"haLe'tu#a( thro@s IOR2ception * i0c%ose(6 / pub%ic 'oid -e"haEs"#'ta( thro@s IOR2ception * o0c%ose(6 /
Abstrac#o
7/21/2019 EDA_Aulas
36/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 36
Abstrac#o !enio
=ipos de &bstraco=ipo &bstrato de !ados (=&! Imp%ementao de um =&!
R2ercScios PrLticos edauemgmai%com+edauem.88J
!efni#o 4 Abstrac#o
7/21/2019 EDA_Aulas
37/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 37
!efni#o 4 Abstrac#o A.st#a"!5o# o princSpio de ignorar os
aspectos de um assunto no re%e'antespara o prop[sito em )uesto, tornandopossS'e% uma concentrao maior nosassuntos principais
4onsiste na se%eco em )ue # efectuadape%o informLtico de a%guns aspectos,ignorando outros
Pense!ena a c%asse Rstudante do !"IRstudante do "estrado (!"I, 0uia
5ipos $e Abstrac#o
7/21/2019 EDA_Aulas
38/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 38
5ipos $e Abstrac#o R2istem duas formas de abstraco7
&bstraco de Procedimentos &bstraco de !ados
&bstraco de Procedimentos 4onsiste em considerar um procedimento com
uma operao bem denida como a%go Bnico,mesmo )ue uti%ize outros procedimentosinternos
&bstraco de !ados 4onsiste em denir um tipo de dados conforme
as opera$es ap%icL'eis aos objectos deste tipo Rstes objectos s[ podem ser modicados eobser'ados atra'#s destas opera$es
&'emplo $e 5A!46ista
7/21/2019 EDA_Aulas
39/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 39
&'emplo $e 5A! 6ista & %ista, em \a'a, # como um arraD R%a fornece
m#todos para e2trair o e%emento de um
determinado Sndice, e para substituir oe%emento de um determinado Sndice "as,diferente de um arraD, e%a tamb#m possuim#todos para inserir ou remo'er um e%ementoem um determinado Sndice Rm \a'a o tipo
List # uma interface com muitos m#todospublic class List {public List ();public void add (int i, Object e);public void set (int i, Object e);public void remove (int i);
public int size ();public Object get (int i);
}
A manipulao de dados realizada
apenas atras de mtodos!"ual#uer o$%e&to do tipo lista s' pode so(rer
modi(i&a)es atras dessas opera)es!
!efni#o $e "m 5A!
7/21/2019 EDA_Aulas
40/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 40
!efni#o $e "m 5A! Projectar um tipo abstracto en'o%'e a
esco%ha de boas opera$es e adeterminao de como e%as de'em secomportar &%gumas boas prLticas so7 me%hor ter a%gumas poucas opera$es simp%es
)ue podem ser combinadas para rea%izarfun$es mais comp%e2as, do )ue ter um montede opera$es comp%e2as
4ada operao de'e ter um prop[sito bemdenido, e ter um comportamento coerente aoin'#s de uma montanha de casos especiais noseu c[digo
!efni#o $e "m 5A! +Cont -
7/21/2019 EDA_Aulas
41/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 41
!efni#o $e "m 5A! +Cont- O conjunto de opera$es de'e ser ade)uado6
de'e ha'er o suciente para se rea%izar o tipo de
computao )ue os c%ientes pro'a'e%mente iroprecisar Um bom teste # 'ericar se todas aspropriedades de um objecto de um determinadotipo podem ser acedidas Por e2emp%o, em Listse no hou'esse a operao get, no serSamos
capazes de encontrar )uais so os e%ementos da%ista & obteno de informa$es bLsicas node'e ser uma comp%icao para o c%iente Om#todo size, por e2emp%o, no # estritamentenecessLrio, pois poderSamos ap%icar o m#todo
get sobre 'a%ores incrementais de Sndice, o )ue #ineciente e incon'eniente
5A! Ficheiro!eObjectos
7/21/2019 EDA_Aulas
42/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 42
5A! Ficheiro!eObjectospub%ic interface Ticheiro*
pub%ic 'oid abreMeitura (0tringnome!oTicheiropub%ic 'oid abreRscrita (0tringnome!oTicheiro
pub%ic Object %er!ados (pub%ic 'oid escre'e!ados (Object opub%ic 'oid fechaMeitura(
pub%ic 'oid fechaRscrita(/
2mplementa#o $o 5A!
7/21/2019 EDA_Aulas
43/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 43
2mplementa#o $o 5A! import ja'aioY6 pub%ic c%ass Ticheiro!eObjectos imp%ements Ticheiros * pri'ate ObjectInput0tream i06 pri'ate ObjectOutput0tream o06
pub%ic boo%ean abreMeitura (0tring nome!oTicheiro thro@s IOR2ception * trD* i0 5 ne@ ObjectInput0tream (ne@ Ti%eInput0tream(nome!oTicheiro6 return true6 /catch(IOR2ception e* return fa%se6 / / pub%ic 'oid abreRscrita (0tring nome!oTicheiro thro@s IOR2ception * o0 5 ne@ ObjectOutput0tream (ne@ Ti%eOutput0tream(nome!oTicheiro6 /
pub%ic Object %eObjecto ( thro@s IOR2ception, 4%ass1otToundR2ception * return i0readObject(6 / pub%ic 'oid escre'eObjecto (Object o thro@s IOR2ception * o0@riteObject(o6 / pub%ic 'oid fechaMeitura( thro@s IOR2ception * i0c%ose(6
/ pub%ic 'oid fechaRscrita( thro@s IOR2ception * o0c%ose(6 / /
7/21/2019 EDA_Aulas
44/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS
6istas
6istas
7/21/2019 EDA_Aulas
45/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 45
Mistas 0imp%esmente Migadas
0e)uencia de objectos a%ocados dinamicamente,cada )ua% fazendo referencia ao seu sucessor na%ista EPreiss, .888, pag KF
Mistas !up%amente Migadas
Conceitos
7/21/2019 EDA_Aulas
46/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 46
Uma Lista Ligadana sua forma
simp%es # uma co%eco de nodos )uejuntos denem uma ordem %inear 4ada nodo # um objecto composto7
Qeferencia a um e%emento
Qeferencia, next, para o pr[2imo nodo
Munguanaze
next
Clavia
next
Pedro
next
Ilda
next
headtail
Conceitos
7/21/2019 EDA_Aulas
47/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 47
ead!"abe#a o primeiro e%emento6
$ail!cauda B%timo e%emento (a)ue%e)ue tem nullna referencia next6 Os e%ementos na %ista esto numa
determinada ordem %inear, denidape%a se)uncia dos %in`s nextentre osnodos
& %ista usa espao proporciona% aos
e%ementos da %ista
Varia3es $as 6istas
7/21/2019 EDA_Aulas
48/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 48
ead
ead
=ai%
ead
tai%
(a
(b
(c
(dSet'ela
ead
ead
=ai%
ead
tai%
Set'ela
&'ercicios
7/21/2019 EDA_Aulas
49/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 49
0ugira as opera$es sobre uma %ista
"ostre gracamente ocomportamento das di'ersas %istascom a e2ecuo de a%gumasopera$es
2mplementa#o
7/21/2019 EDA_Aulas
50/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 50
p
*ista +imples
,a- ,$- ,&- ,d- !!!!
7/21/2019 EDA_Aulas
51/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 51
import ja'auti%Iterator6. pub%ic interface Mista
H * pub%ic boo%ean isRmptD(6: pub%ic int size(6; pub%ic Object get(int i thro@s
Inde2OutOf3oundsR2ception6K pub%ic int nd(Object 26
J pub%ic boo%ean e)ua%s(Mista outra6
7/21/2019 EDA_Aulas
52/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 52
. pri'ate c%ass 1odoH *
++'aria'eis de instancia: pri'ate Object e%em6 ++Rndereco )ue aponta para o objecto uti%; pri'ate 1odo ne2t6 ++ponteiro para o no seguinteK ++construtoresJ pri'ate 1odo(Object 2
7/21/2019 EDA_Aulas
53/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 53
pub%ic 'oid add(Object 2
. *H ++insere 2 na %ista 1odo p5ne@ 1odo(2,nu%%6
: if(isRmptD( inicio5p6; e%se mne2t5p6K m5p6
J numR%emXX6
7/21/2019 EDA_Aulas
54/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 54
"ostre gracamente os passos da
insero de a, f, g, h,c
aead ( . / &=ai%
ead
=ai%
ead
=ai%
aead=ai%
(
a
!!!!
1
1 2
1 52! 34
8emo#o
7/21/2019 EDA_Aulas
55/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 55
pub%ic Object remo'e(int i *++remo'e e retorna o e%emento em i if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6
Object antigo6 ++e%em a remo'er e de'o%'er if(i558 ++se for para remo'er o primeiro * antigo5inicioe%em6 if(inicio55m m5nu%%6 inicio5inicione2t6 / e%se * 1odo anterior5get1odo(i6 1odo coitado5anteriorne2t6++igua% a get1odo(i antigo5coitadoe%em6 anteriorne2t5coitadone2t6 if(coitado55m m5anterior6 /
numR%em6 return antigo6 /
!efni#o $a 2nter9ace 6ista
7/21/2019 EDA_Aulas
56/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 56
pub%ic interface Mista * pub%ic boo%ean isRmptD(6
++retorna true se a %ista for 'azia pub%ic int size(6 ++retorna o numero de e%ementos e2istentes na %ista pub%ic Object get(int i thro@s Inde2OutOf3oundsR2ception6
++retorna o objecto com indice i na %ista ++ou nu%% se nao ha esse e%emento ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em pub%ic int nd(Object 26
++retorna a posicao i da primeira ocorrencia ++de um objecto na %ista ++ou se 2 nao esat na %ista
!efni#o $a 2nter9ace 6ista +cont-
7/21/2019 EDA_Aulas
57/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 57
pub%ic boo%ean e)ua%s(Mista outra6 ++retorna true se a nossa %ista e a outra possuem
++o mesmo comprimento e cada e%emento da nossa %ista e igua% ++ao e%emento correspondente da outra %ista pub%ic 'oid c%ear(6 ++torna a %ista 'azia6igua% a ma`eRmptD pub%ic 'oid set(int i,Object 2 thro@s Inde2OutOf3oundsR2ception6
++substitui por 2 o e%emento na posicao i da %ista ++ou nao faz nada se e%e nao esti'er na %ista ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em pub%ic 'oid add(int i,Object 2 thro@s
Inde2OutOf3oundsR2ception6 ++insere 2 na posicao i ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em
!efni#o $a 2nter9ace 6ista +cont-
7/21/2019 EDA_Aulas
58/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 58
pub%ic 'oid addTim(Object 26 ++insere 2 no m da %ista pub%ic Object remo'e(int i thro@s
Inde2OutOf3oundsR2ception6 ++remo'e e retorna o e%emento na posicao i ++ou retorna nu%% se ta% e%emento nao e2iste ++dispara uma e2cepcao se o indice introduzido
++esti'er fora do inter'a%o 8numR%em /++m da interface Mista
2mplementa#o $e 6istas
7/21/2019 EDA_Aulas
59/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 59
import ja'auti%Y6
pub%ic c%ass MistaMigada imp%ements Mista * pri'ate 1odo inicio6 pri'ate 1odo m6 pri'ate int numR%em6 pub%ic MistaMigada(
* inicio5m5nu%%6 numR%em586 / pub%ic boo%ean isRmptD(
* return inicio55nu%%6 /
2mplementa#o $e 6istas +cont-
7/21/2019 EDA_Aulas
60/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 60
pub%ic int size( * return numR%em6
/ pub%ic Object get(int i thro@s Inde2OutOf3oundsR2ception * if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5get1odo(i6 return pe%em6
/ pri'ate 1odo get1odo(int i * 1odo p5inicio6 for(int j586jZi6jXX p5pne2t6 return p6 /
2mplementa#o $e 6istas +cont-
7/21/2019 EDA_Aulas
61/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 61
pub%ic int nd(Object 2 thro@s 1o0uchR%ementR2ception * if(isRmptD(
thro@ ne@ 1o0uchR%ementR2ception(VTind em %ista 'aziaV6 intcont56 for(1odo p5inicio6p5nu%%6p5pne2t * contXX6 if(2e)ua%s(pe%em return cont6 / return 6 /++m do nd
pub%ic boo%ean e)ua%s(Mista outra * MistaMigada %ista.5(MistaMigadaoutra6 if(numR%em 5%ista.numR%em return fa%se6 for(1odo p5inicio,)5%ista.inicio6p5nu%%6p5pne2t,)5)ne2t * if(pe%eme)ua%s()e%em return fa%se6 / ++m do for return true6 /
2mplementa#o $e 6istas +cont-
7/21/2019 EDA_Aulas
62/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 62
pub%ic 'oid c%ear( * ++torna a %ista 'azia6igua% a ma`eRmptD
inicio5m5nu%%6 numR%em586 / pub%ic 'oid set(int i,Object 2 thro@s Inde2OutOf3oundsR2ception * ++substituir por 2 o e%em no indice i da %ista ++ou nao faz nada se e%e nao esti'er na %ista ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5get1odo(i6
pe%em526 /
2mplementa#o $e 6istas +cont-
7/21/2019 EDA_Aulas
63/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 63
pub%ic 'oid add(int i,Object 2 thro@sInde2OutOf3oundsR2ception
*
if(iZ8inumR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5ne@ 1odo(2,nu%%6 if(i558 pne2t5inicio6 inicio5p6 e%se * 1odo anterior5get1odo(i6
pne2t5anteriorne2t6 anteriorne2t5p6 / if(pne2t55nu%% m5p6 numR%emXX6 / pub%ic 'oid addTim(Object 2 *
1odo p5ne@ 1odo(2,nu%%6 if(isRmptD( inicio5p6 e%se mne2t5p6 m5p6 numR%emXX6 /
2mplementa#o $e 6istas +cont-
7/21/2019 EDA_Aulas
64/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 64
pub%ic Object remo'e(int i * if(iZ8i5numR%em thro@ ne@
Inde2OutOf3oundsR2ception(6 Object antigo6 ++e%em a remo'er e de'o%'er if(i558 ++se for para remo'er o primeiro * antigo5inicioe%em6 if(inicio55m m5nu%%6 inicio5inicione2t6
/ e%se * 1odo anterior5get1odo(i6 1odo coitado5anteriorne2t6
antigo5coitadoe%em6anteriorne2t5coitadone2t6
if(coitado55m m5anterior6 / numR%em6 return antigo6 /
$efni#o $e 7o$o inner classi % d
7/21/2019 EDA_Aulas
65/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 65
pri'ate c%ass 1odo * pri'ate Object e%em6 ++Rndereco )ue aponta para o objecto uti%
pri'ate 1odo ne2t6 ++ponteiro para o no seguinte pri'ate 1odo(Object 2 * ++constructor de um no e%em526 ne2t5nu%%6 / pri'ate 1odo(Object 2,1odo seguinte * ++construtor de um no e%em526 ne2t5seguinte6
/ / ++m da c%asse 1odo /++m da c%asse MistaMigada
!
7/21/2019 EDA_Aulas
66/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS
Arores +5rees-
R!&
Conceitos, propriedades
eitor
7/21/2019 EDA_Aulas
67/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 67
Rela!5o h'e#6#(u'"a %s l'ea#
A#4o#e T um "ojuto &e o&os )o&es+(ue "otem elemetos tal (ue os o&es temuma #ela!5o 8pa'9:lho; e sat's-a*em asp#op#'e&a&es se/u'tes< Se T 5o 4a*'a, et5o tem um o&o espe"'al "hama&o #a'*
)#oot+ &a a#4o#e, (ue 5o tem pa'0 Ca&a o&o 4 &e T &'-e#ete &a #a'* tem um ='"o o&o pa'2> to&o o&o "om pa' 2 um :lho &e 20
i! +aude i! esportos i$lite&a i! A&ademi&a
as& emenino ursos ro(essores studantes
Conceitos +cont-
0ib%i (i d i d %h
7/21/2019 EDA_Aulas
68/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 68
0ib%ings (irmos dois nodos )ue sao %hosdo mesmo pai6
1odo e2terno 1odo sem %hos (fo%ha6 1odo interno nodo com ou mais %hos 1odo ancestra% (ancestor
Um nodo u # um ancestra% do nodo ' se u5' ou u #ancestra% de pai de ' Nue # descendenteC
O /#au &o o&ode uma Lr'orecorresponde ao nBmero de seus %hos (m
&r'ore ordenada L uma ordem %inear denida para %hos de cada nodo
Conceitos +Cont-
7/21/2019 EDA_Aulas
69/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 69
Classifca#o
&
7/21/2019 EDA_Aulas
70/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 70
&r'ores
&r'ore 3inLria &r'ore 3inLria de Pes)uisa (3usca Outras (eaps, &_M, 3=rees, etc
Classifcao
A ?' '
7/21/2019 EDA_Aulas
71/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 71
A#4o#e ?'a#'a 4onjunto nito de nodos )ue # ou 'azio ou #
di'idido em trs subconjuntos7 & raiz da ar'ore6 Uma ar'ore binLria chamada subar'ore es)uerda7 Uma ar'ores binLria chamada subar'ore direita
Outra denio Uma arvore binria uma arvore vazia ouum nodo com subarvores esquerda edireita que so ambas arvores binrias.
Classifca#o
& 3i L i d P i
7/21/2019 EDA_Aulas
72/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 72
&r'ore 3inLria de Pes)uisa uma ar'ore ordenada com as propriedades
seguintes7 4ada nodo tem no ma2imo . %hos6 4ada nodo %ho # designado ou %ho es)uerdo ou %ho dir 1a ordenacao dos %hos dum nodo, o %ho es)uerdo precede
o %ho direito
5raessia $e arore
=ra'essia de ar'ore
7/21/2019 EDA_Aulas
73/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 73
=ra'essia de ar'ore Preorder (Preordem Inorder (Inordem Postorder (PosOrdem
PreOr$er em 8ec"rs#o
7/21/2019 EDA_Aulas
74/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 74
ome dado ao pro&essamento (eito antes de &ada &/amadare&ursia
#oid "uncaoRec%int i& '
((( arra)*i+ , -.
'''
"uncaoRec%i/0&.
'''
1
re:rder
Pre4Or$er: &'emplo;mprimir um Arra
7/21/2019 EDA_Aulas
75/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 75
odese usar Preordempara imprimir uma estrutura
se#=en&ial ,arra lista> et&!- na ordem dada! asta imprimiro primeiro elemento> se.uido da impresso re&ursia dos
elementos posteriores
9 13 2 10 3 7 5 8
9rimeiro
elemento857310213
/amada
re&ursia
02 3 0- 2 4 5 67rordem
Pr;4Or$em: 2mprimin$o "m Array
7/21/2019 EDA_Aulas
76/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 76
9 13 2 10 37
0 a 4
13 2 10 3 7 021 a 4
2 10 3 7 02 32 a 4
10 3 7 02 3 0-3 a 4
3 7 02 3 0- 2&aso $ase
10 3 7 02 3 0- 23 a 4
2 10 3 7 02 3 0- 22 a 4
13 2 10 3 7 02 3 0- 21 a 4
9 13 2 10 3 7 02 3 0- 20 a 4
Pr;4Or$em: 2mprimin$o "m Array
7/21/2019 EDA_Aulas
77/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 77
Implementao:#oid imprimir%int arra)*+8 int i8 int 9& '
i" %i : 9&
return.
ar!ui#o(print%arra)*i+ / ;
7/21/2019 EDA_Aulas
78/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 78
ome dado ao pro&essamento (eito ap's &ada &/amadare&ursia
#oid "uncaoRec%int i& '
((( "uncaoRec%i/0&.
'''
arra)*i+ , -.
'''
1
's@or
P
7/21/2019 EDA_Aulas
79/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 79
odese usar ps-Ordempara imprimir uma estruturase#=en&ial na ordem inersa! asta imprimir o primeiro
elemento apsa impresso re&ursia dos elementos
posteriores
9 13 2 10 3 7 5 8
9rimeiro
elemento13 2 10 3 7 5 8
/amada
re&ursia
6 5 4 2 0- 3 02 7 's@or
P
7/21/2019 EDA_Aulas
80/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 80
9 13 2 10 3 0 a 4
13 2 10 3 1 a 4
2 10 3 2 a 4
10 3 3 a 4
3 2&aso $ase
10 3 2 0-3 a 4
2 10 3 2 0- 32 a 4
13 2 10 3 2 0- 3 021 a 4
9 13 2 10 3 2 0- 3 02 70 a 4
P
7/21/2019 EDA_Aulas
81/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 81
Implementao:#oid imprimir%int arra)*+8 int i8 int 9& '
i" %i : 9&
return.
imprimir%arra)8 i/08 9&.
ar!ui#o(print%arra)*i+ / ;
7/21/2019 EDA_Aulas
82/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 82
struturas dinBmi&as (ormada por ns#ue possuemrefernciaspara outros dois n's ,(il/os-! ada n' raiz de
uma su$Croreclass r#ore '
=or#ore rai>.
1
class =or#ore '
int #alor.
=or#ore es!.
=or#ore dir.1
A;D
12
5 9
17 2 4 1
8 7
Pr;4Or$em: =rores em Pr;4or$em
7/21/2019 EDA_Aulas
83/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 83
odese usar pr-Ordempara imprimir uma Crore em prordem> ou se%a> o alor do n' impresso antesde suas duas
su$Crores
12
03
5
03 5
17
03 5 04
8
03 5 04 6
203 5 04 6 3
9
03 5 04 6 3 74
03 5 04 6 3 7 ?7
03 5 04 6 3 7 ? 4
1
03 5 04 6 3 7 ? 4 0
Pr;4Or$em: =rores em Pr;4or$em
7/21/2019 EDA_Aulas
84/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 84
Implementao:#oid pre@rdem%=or#ore ar#& '
i" %ar# ,, null&
return.
ar!ui#o(print%ar#(#alor / ;
7/21/2019 EDA_Aulas
85/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 85
: mesmo &on&eito pode ser estendido para imprimirCrores em p'sordem ,em #ue o pai impresso apsos
(il/os- ou inordem ,o pai impresso entreos (il/os-
odese usar o &on&eito de ps-ordemtam$m para
en&ontrar a altura de uma Crore! A altura de uma rvorea maior distBn&ia entre a raiz e uma (ol/a
or padro> dizemos #ue uma folha uma Crore de altura
zero
P
7/21/2019 EDA_Aulas
86/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 86
Exemplos:
2
12
5 9
17 2
4
1
7
1
4
3
7
AlturaE 4
AlturaE 3
AlturaE 0
P
7/21/2019 EDA_Aulas
87/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 87
A altura de uma (ol/a zero> ou se%a> uma re(erFn&ia nula
seria uma Crore de altura1! A altura de um n' #ual#uer
i.ual a 1 + a altura da maior sub-rvore.
5
AlturaE 3
2
AlturaE 0
9
AlturaE 1
12
AlturaE 4
AlturaE 1 AlturaE 1
Ps-OrdemE a altura do pai &al&ulada apsas dos (il/os
P
7/21/2019 EDA_Aulas
88/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 88
12
5 9
17 2 1
4
7
1 1
10
1
1
2
1 1
0
3
4
1
1
1 1
0
P
7/21/2019 EDA_Aulas
89/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 89
Implementao:
int altura%=or#ore ar#& '
i" %ar# ,, null&
return A0.
int B0 , altura%ar#(es!&.
int B3 , altura%ar#(dir&.
return %0 / MatB(max%B08 B3&&.
1's:rdem
?este do &aso $ase
/amadas re&ursias
5A! Arorepub%ic interface &r'ore3inaria!ePes)uisa
7/21/2019 EDA_Aulas
90/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 90
* ++interface para abstraccao de uma 30=pub%ic int um7olhas(6
++retorna true se a 30= for 'azia de contrario fa%sepub%ic boo%ean 'sEmpt$( 6 ++insere um e%emento na 30=pub%ic boo%ean a&&(4omparab%e 26
++de'o%'e a a%tura da ar'orepub%ic int altu#a(6
++es'azia a 30=pub%ic 'oid "lea#(6
++'erica se um e%emento 2 esta ou nao na 30=++retorna true se 2 esta na 30= de contrario retorna fa%se
pub%ic boo%ean "ota's(4omparab%e 26++imprime a ar'ore segundo o percurso inorder
pub%ic 'oid 'o#&e#(6
5A! +Cont-++imprime a ar'ore segundo o percurso postorder
7/21/2019 EDA_Aulas
91/91
EDA ESTRUTURAS DE DADOS E ALGORITMOS 91
++imprime a ar'ore segundo o percurso postorder pub%ic 'oid posto#&e#(6
++imprime a ar'ore segundo o percurso preorderpub%ic 'oid p#eo#&e#(6++de'o%'e o numero de nos da ar'orepub%ic int umNo&os(6++metodo para remocao dum e%emento
++retorna true se encontrou 2 e remo'e o++de contrario retorna fa%sepub%ic boo%ean #emo4e(4omparab%e 26++retorna o e%emento procurado ou nu%% se nao esti'erpub%ic 4omparab%e sea#"h(4omparab%e 26++Qetorna o numero de e%ementos na 30=pub%ic int s'*e(6
/