Click here to load reader
View
215
Download
0
Embed Size (px)
TpicosemLinguagemdeProgramaoProf.TiagoEugeniodeMelo,MSc
www.tiagodemelo.info
mailto:[email protected]://www.tiagodemelo.info/
2
Sumrio
Introduo ObjetoseClasses Herana Polimorfismo AcoplamentoDinmico
Pacotes Construtores UsodeHerana UsodePolimorfismo
3
Introduo
Estruturaodesoftware Sistemas de software modernos requerem um alto
graudeconfiabilidade,disponibilidadee tolernciaafalhas.
Sistemasdesoftwareso intrisicamentecomplicadose tm se tornado ainda mais complicados com osnovosrequisitosimpostospelasaplicaesmodernas:
Altaconfiabilidade. Altodesempenho. Desenvolvimentodesoftwarerpidoebarato. Complexidadeetamanhosgrandes.
4
Introduo
A chave do sucesso para um promissordesenvolvimentodesoftwareestnocontroledesuacomplexidade.
Necessidadedemelhoresferramentasemetodologiasparagerenciaracomplexidade.
Tcnicasparareduodacomplexidade: Particionamento do sistema em partes que sejam muito
bemlimitadas(modularidade). Representaodosistemacomoumahierarquia. Maximizaoda independnciaentre aspartesdo sistema
(baixoacoplamentoealtacoeso).
5
Introduo
Na Crise de Software (1968) foi possvel identificarvriosproblemasnaproduodesoftware:
Poucopredizvel. Baixaqualidade. Altocustodemanuteno. Muitaduplicaodeesforos.
Criao de diversas metodologias dedesenvolvimento.
SurgimentodoParadigmaOrientadoaObjetos.
6
Introduo
Objetosemsoftware:idiasbsicas Acaractersticamaisimportante(ediferente)da
abordagemorientadaaobjetosaunificaodedoiselementos:dadosefunes.
Aunificaodessesdoiselementosdeuorigemaoquechamamosdeencapsulamento.
Objeto=dados(privados)+funes(pblicas)
7
Introduo
AbstraodeDados Umadastarefasmaisimportantesemdesenvolvimentode
softwareaanlisedodomniodoproblemaeamodelagemdasentidadesefenmenosrelevantesparaaaplicao.
Amodelagemconceitualenvolvedoisaspectosrelevantes: Abstrao. Representao.
Abstraodefinidacomoummecanismoatravsdoqualnsobservamosodomniodeumproblemaefocamosnosobjetoseaesquesorelevantesparaumaaplicaoespecfica,ignorandotodososoutrospontosquesoirrelevantes.
8
Introduo
Aabstraoenvolvetrsoperaes: Classificao/Instanciao. Generalizao/Especializao. Agregao/Decomposio.
9
Introduo
Classificao/Instanciao Permiteagruparobjetossimilaresemumamesma
categoria. Exemplo
Empregado
Joo Maria Cla
ssifi
ca
o
Instancia
o
10
Introduo
Generalizao/Especializao Ageneralizaopermitequetodasasinstnciasdeuma
categoriaespecficasejamtambmconsideradasinstnciasdeumacategoriamaisabrangente.
Oinversononecessariamentevlido. Exemplo:
Empregado
Secretria EngenheiroMotorista Gen
eral
iza
o
Especializa
o
11
Introduo
Agregao/Decomposio Agregaoumaabstraoquepermiteaidentificaodas
categoriasconstituintesdeoutrascategorias. Elaummecanismoqueformaotodoapartirdaspartes.
Exemplo:
Lmpada
Bulbo FilamentoBase
Agr
ega
o
Decom
posi
o
12
Introduo
AgregaovsGeneralizao Agregaoegeneralizaosonoescompletamente
diferentesecomplementares. Elassoconceitosortogonais. Nashierarquiasdegeneralizao/especializaoanoode
heranaestimplicitamenterepresentada,enquantoquenashierarquiasdeagregao/decomposioissonemsempreverdade.
13
Introduo
Omodelodeobjetosproporcionamodularidade,trazendoosseguintesbenefcios:
Reusabilidade:softwarepodeserescritoapartirdecomponentesjexistentesquepodemserusadosemdiversasaplicaes.
Extensibilidade:novoscomponentesdesoftwarepodemserdesenvolvidosapartirdecomponentesjexistentessemafetaroscomponentesoriginais.
14
Introduo
DeacordoMeyer,existemcincocritriosparaaobtenodemodularidade:
Decomposibilidade:particionamentodeumsistemaunidadesmanejveis.
Composibilidade:mdulospodemserlivrementecombinadosemoutrossistemas.
Entendimento:acompreensodeumapartecontribuiparaoentendimentodotodo.
Continuidade:pequenasmudanasnosistemaimplicamempequenasmudanasnocomportamento.
Proteo:Condiesexcepcionaisouerrneassoconfinadasaossubsistemasnasquaiselasocorremouafetamapenasaspartesdiretamenteaelasrelacionadas.
15
Introduo
LinguagensdeProgramaoOrientadasaObjetos Paratransformarasabstraesdomundodiretamente
nasabstraesdeumalinguagemdeprogramaonecessrioapassagemporpassosintermedirios.
16
Introduo
Passosintermediriosdamodelagemdarealidade
ModeloOOdarealidade
Realidade
ProjetoOO
Cdigo
17
Introduo
Evoluodaabstraoemlinguagensdeprogramao Noinciododesenvolvimentodaslinguagensde
programao,aslinguagensdemontagempermitiamaosprojetistasescreverprogramasbaseadoseminstruesdemquina(operadores)quemanipulavamcontedodememria(operandos).
FortraneCobolintroduziramanoodesubprogramasfuneseprocedimentos.
Algol60introduziuoconceitodeestruturadebloco,procedimentoetc.
Desdeosanos70,aslinguagensdeprogramaotmsepreocupadoemdarmaissuporteparaprogramaoemlargaescala.Surgindooconceitodemdulo.
18
Introduo
Ummduloumaunidadedeprogramaquepodeserimplementadodeumamaneiramaisoumenosindependentedosoutrosmdulos.
Em1972,surgeoconceitodeocultamentodainformao,tambmconhecidocomoencapsulamento.
Aidiaeraencapsularvariveisglobaisemummdulojuntamentecomogrupodeoperaesquetinhamacessodiretoaelas.
19
Introduo
Somenteoqueomdulofazpassadoparaoclientedomdulo;ocomoimplementadosomentedizrespeitoaoimplementadordomdulo.
Acomunicaoentremdulosfeitaatravsdeinterfacesbemdefinidasqueprevinemoacessodiretoaestruturasdedadosdedentrodeummdulo.
20
Introduo
Existemdoismecanismosdelinguagensdeprogramaoquedoapoioaessasidias:
Mdulo. Tipoabstratodedados.
Ummduloconsistededuaspartes: Especificaodomdulo(spec). Implementaodomdulo(body).
Specumconjuntodedeclaraesdeestruturasdedadoseassinaturasdeprocedimentos.
Bodycontmasimplementaesdaentidadedeclaradasnapartespec.
21
Introduo
Anoodetiposabstratosdedadosrefereseaoencapsulamentodeumaestruturadedadosjuntamentecomasoperaesquemanipulamessasestruturasdentrodeumaregioprotegida.
22
Introduo
Brevehistriadeorientaoaobjetos
1967 Simula 6719721976198319881995
Artigo de Dahl sobre ocultamento da informaoPrimeira verso de Smalltalk
Primeira verso de C++Primeira verso de EifelPrimeira verso de Java
23
Introduo
ProgramaoOrientadaaObjetos Programaoorientadaaobjetosummodelode
programaobaseadoemconceitos,taiscomoobjetos,classes,tipos,ocultamentodeinformaes,heranaepolimorfismo.
Aessnciadaprogramaoorientadaaobjetosaresoluodeproblemasbaseadanaidentificaodeobjetosdomundorealpertencentesaodomniodaaplicaoeoprocessamentorequeridoporessesobjetose,ento,nacriaodesimulaesdeles.
24
Introduo
Esteestilodeprogramaotemasseguintescaractersticaspositivas:
Modularidade. Suporteexplcitoparageneralizao/especializao. Visounificadadedadoseprocessos. Atividadeincrementaleevolucionria. Reusabilidade.
Muitodointeressenomodelodeobjetosdevidocrescentepercepodaindstriadequeeleumamaneiramelhordeconstruirprogramascomplexos,poisconseguepromoverareutilizaodesoftware,melhorandoasuaqualidadeereduzindooseucustodedesenvolvimento.
25
Introduo
LinguagensOrientadasaObjetosvsLinguagensBaseadasemObjetos
Umalinguagembaseadaemobjetosquandoeladapoioexplcitosomenteaoconceitodeobjetos.
Umalinguagembaseadaemclassesquandoeladapoioparaacriaodeobjetoseexisteummecanismodeagrupamentodeobjetosparaacriaodenovasclasses,masnodsuporteparaummecanismodeherana.
JavaScriptumexemplodelinguagembaseadaemobjetos.
26
Introduo
Umalinguagemditaorientadaaobjetosquandoelaproporcionasuportelingsticoparaobjetos,requerqueessesobjetossejaminstnciasdeclassese,almdisso,oferecesuporteparaummecanismodeherana.
Resumindo:
LinguagemOrientadaaObjetos=Objetos+Classes+Herana
27
Introduo
LinguagensOrientadasaObjetosvsLinguagensProcedurais
Cumexemplodelinguagemqueorientadaaaes,enquantoJavaorientadaaobjetos.
AunidadedeprogramaoemCafuno/procedimento,enquantoqueemJavaaclasse.
Noparadigmaproceduralusamseosverbosparaidentificaodosrequisitos,enquantoquenoparadigmaorientadoaobjetosusamseossubstantivos.
28
Introduo
Atabelaabaixotraaumparaleloentreaabordagemproceduraleorientadaaobjetos.
Paradigma Procedural Paradigma de Objetostipos de dados classes/tipos abstratos de dados
varivel objeto/instnciafuno/procedimento operao/serviochamada de funo envio de mensagem
29
Introduo
ErroscomunsquandoseconheceaOrientaoaObjetos: PensarnaPOOsimplesmentecomoumalinguagem
Suporqueseestprogramandodemaneiraorientadaaobjetossimplesmenteporqueusaumalinguagemorientadaaobjetos.
AverdadeiraPOOumestadodamentequeexigequeoprogramadorvejaseusproblemascomoumgrupodeobjetoseuseencapsulamento,heranaepolimorfismo.
30
Introduo
ErroscomunsquandoseconheceaOrientaoaObjetos: Medodereutilizao
Osprogramadoresgostamdecriaremuitasvezesnoconsideraminteressantereutilizarumcomponente.Comisso,perdemaoportunidadedecriaralgomaioredemaneiramaiseficiente.
Muitosprogramadoresnoconfiamnosoftwarequenoescreveram.Umbomprogramadetestepoderesolverestemedo.
31
Introduo
ErroscomunsquandoseconheceaOrientaoaObjetos: PensarnaOOcomoumasoluoparatudo