Click here to load reader

Prof. Tiago Eugenio de Melo, MSc [email protected] ...tiagodemelo.info/aulas/uea/2008/topicos-linguagem-programacao/aula... · PDF fileEstruturação de software ... – Na Crise de Software

  • View
    215

  • Download
    0

Embed Size (px)

Text of Prof. Tiago Eugenio de Melo, MSc [email protected]

  • TpicosemLinguagemdeProgramaoProf.TiagoEugeniodeMelo,MSc

    [email protected]

    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

Search related