Introducao OO 6

11
Prof. Edson S. Cordeiro Desenvolvimento Orientado a Objetos Prof.: Edson dos Santos Cordeiro 11/08/2002 2 Prof. Edson S. Cordeiro Bibliografia LARMAN, Graig. Utilizando UML e padrões. Porto Alegre: Bookman, 2000. STAA, Arndt von. Programação modular. Rio de Janeiro: Campus, 2000. BORATTI, Isaias Camilo. Programação Orientada a Objetos. Florianópolis: Visual Books 2001. SCHMITZ, Eber; SILVEIRA, Denis. Desenvolvimento de Software Orientado a Objetos. Rio de Janeiro: Brasport, 2000. 11/08/2002 3 Prof. Edson S. Cordeiro Bibliografia DEITEL, H. M.; DEITEL, P. J. Java: como programar. Porto Alegre: Bookman, 2001. McCARTY, Bill; GILBERT, Stephen. Object- Oriented desing in Java. Corte Madera, CA: Mitchell Waite, 1999. SEBESTA, R. W. Conceitos de linguagens de programação. Bookman, 2000. JAMSA, K.; KLANDER, L. Programando em c/c++: a bíblia. Makron Books,1999. 11/08/2002 4 Prof. Edson S. Cordeiro Introdução Primeiras linguagens surgiram em 50; Simula no início de 60 empregou conceitos orientado a objetos; Início de 70 surgiu o conceito de Tipos de Dados Abstratos (TDA): Entre os anos 70 e 80, conceitos orientados a objetos foram consolidados (SmallTalk). O que você vê ? O azul está na parte de dentro, à esquerda ou na parte de fora, à frente?

description

Introdução a Orientação a Objetos

Transcript of Introducao OO 6

  • Prof. Edson S. Cordeiro

    Desenvolvimento Orientado a Objetos

    Prof.: Edson dos Santos Cordeiro

    11/08/2002 2Prof. Edson S. Cordeiro

    BibliografiaLARMAN, Graig. Utilizando UML e padres.Porto Alegre: Bookman, 2000.STAA, Arndt von. Programao modular. Rio deJaneiro: Campus, 2000.BORATTI, Isaias Camilo. ProgramaoOrientada a Objetos. Florianpolis: VisualBooks 2001.SCHMITZ, Eber; SILVEIRA, Denis.Desenvolvimento de Software Orientado aObjetos. Rio de Janeiro: Brasport, 2000.

    11/08/2002 3Prof. Edson S. Cordeiro

    BibliografiaDEITEL, H. M.; DEITEL, P. J. Java: comoprogramar. Porto Alegre: Bookman, 2001.McCARTY, Bill; GILBERT, Stephen. Object-Oriented desing in Java. Corte Madera, CA:Mitchell Waite, 1999.SEBESTA, R. W. Conceitos de linguagens deprogramao. Bookman, 2000.JAMSA, K.; KLANDER, L. Programando emc/c++: a bblia. Makron Books,1999.

    11/08/2002 4Prof. Edson S. Cordeiro

    IntroduoPrimeiras linguagens surgiram em 50;Simula no incio de 60 empregou conceitosorientado a objetos;Incio de 70 surgiu o conceito de Tipos deDados Abstratos (TDA):Entre os anos 70 e 80, conceitos orientados aobjetos foram consolidados (SmallTalk).

    O que voc v ?

    O azul est na parte de dentro, esquerdaou

    na parte de fora, frente?

  • Katimba era um excelentecaador.

    Katimba ficou conhecido naaldeia como um excelenteprojetista de lanas.

    Depois de algum tempo.

    Katimba somente projetavalanas para atender suaaldeia.

    Katimba no tinha mais tempopara caar.

    Mais um tempo se passou.

    Katimba continua projetandolanas.

    Ser que Katimba ainda umbom projetista de lanas?

    11/08/2002 11Prof. Edson S. Cordeiro

    Modelagem Orientada a ObjetosUniformizao dos formalizamos utilizados naanlise e projeto.Notao unificada (UML): utilizado umamesma notao entre as diversas fases doprojeto de desenvolvimento

    11/08/2002 12Prof. Edson S. Cordeiro

    Gap SemnticoDiferena entre Espao de Problemas eSolues.

    Carro

    Espao de problema Espao de soluo

    Diminuir Gap Semntico

  • 11/08/2002 13Prof. Edson S. Cordeiro

    Abordagem Orientada a ObjetosTradicionalmente

    Softwares so formados por dados e procedimentosindependentes.

    Paradigma OOSoftwares so formados, principalmente, por:

    Objetos parte interna (define o comportamento do objeto, ou seja,

    especifica os mtodos associados ao objeto) parte externa (interface - maneira que o objeto se apresenta

    para outros objetos)

    Mensagens.

    11/08/2002 14Prof. Edson S. Cordeiro

    Modelo ConceitualTarefa mais importante de um processo dedesenvolvimento de software:

    Anlise e Modelagem do domnio da aplicaoindependentemente da implementao.

    A tarefa de modelagem conceitual envolve doismecanismos:

    Abstrao e,Representao.

    11/08/2002 15Prof. Edson S. Cordeiro

    Abstraes e Representaes

    Casa

    11/08/2002 16Prof. Edson S. Cordeiro

    Processo de Abstrao

    ?Classificao

    11/08/2002 17Prof. Edson S. Cordeiro

    Processo de Abstrao

    Classificao: categorizao dos objetos em grupose/ou classes (categoria), com base em algum conjuntode propriedades comuns.

    11/08/2002 18Prof. Edson S. Cordeiro

    Processo de Abstrao

    Generalizao (Especializao) A partir de dois ou mais

    objetos, abstrai-se umacategoria mais genrica.

    sub-categorias satisfazemtodas as propriedades dascategorias de que elasconstituem especializaes.

    deve existir pelo menos umapropriedade que distingue duascategorias especializadas.

  • 11/08/2002 19Prof. Edson S. Cordeiro

    Processo de Abstrao

    Generalizao

    Especializao

    Telhado

    Janelas

    Portas

    Casa de campo

    Residencial

    Casa de praia

    11/08/2002 20Prof. Edson S. Cordeiro

    Processo de Abstrao

    Agregao / Decomposio

    Composio de uma novacategoria como um agregadode categorias pr-existentes.

    Decomposio de umacategoria agregada emoutras categorias atmicas.

    11/08/2002 21Prof. Edson S. Cordeiro

    O que so Objetos ?Um objeto pode ser considerado uma coisaque executa um conjunto de atividades;Um conjunto de atividades que pode serexecutada pelo objeto define o comportamentodesse objeto;Por exemplo: uma calculadora executa umconjunto de atividades (somar, subtrair,multiplicar, dividir ...). Esse conjunto deatividades define como a calculadora pode secomportar.

    11/08/2002 22Prof. Edson S. Cordeiro

    Mensagens

    O que so Objetos ?Um objeto como uma caixa pretaque pode receber e/ou enviarmensagens;Uma caixa preta pode conter cdigo(uma seqncia de instrues decomputador) e dados (informaesque so manipuladas pelasinstrues);Note que instrues e dados somesclados em uma nica coisaindivisvel: um objeto.

    Mensagens

    11/08/2002 23Prof. Edson S. Cordeiro

    O que so Objetos ?A interface do objeto consiste em um conjunto decomandos;Cada comando executa uma ao especfica;Um objeto pode solicitar a outro objeto que executeuma ao por meio do envio de uma mensagem;

    Qual seunome?

    Meu Mrio.

    11/08/2002 24Prof. Edson S. Cordeiro

    O que so Objetos ?Como o objeto receptor interpreta asmensagens enviadas por outro objeto?Como as mensagens so processadaspelo objeto?

  • 11/08/2002 25Prof. Edson S. Cordeiro

    O que so Atributos ?Todas as instncias de uma classe tm valores prpriospara os atributos especificados na classe;Os objetos representados por determinada classediferenciam-se entre si pelos valores de seus atributos.

    SAMSUNG

    14 polegadas6555

    SAMSUNG

    14 polegadas6555

    SAMSUNG

    14 polegadas6555

    MonitorPolegadasContrasteBrilhoSetPolegadasGetPolegadasSetContrasteGetContraste

    DAEWOOD

    15 polegadas6554

    SAMSUNG

    14 polegadas6555

    Classe

    Atributos

    Operaes

    Objetos

    11/08/2002 26Prof. Edson S. Cordeiro

    O que so Atributos ?Representam um conjunto de informaes;Cada objeto possui seu prprio conjunto de atributos;So variveis que definem o estado de um objeto, ouseja, caracterizam os objetos (situao do celular);Descrevem as informaes que ficam escondidas emum objeto para serem exclusivamente manipuladopelas operaes daquele objeto (Visibilidade -Encapsulamento);

    11/08/2002 27Prof. Edson S. Cordeiro

    O que so mtodos ?Cada mensagem tem um cdigo (instrues)associada a ela;Quando um objeto recebe uma mensagem, umcdigo (instrues) executado;Em outras palavras, essas mensagensdeterminam o comportamento do objeto e ocdigo determina como o objeto ir responder acada uma das mensagens recebidas.

    11/08/2002 28Prof. Edson S. Cordeiro

    O que Mensagem ?Mecanismo de comunicao entre objetos atravs doqual se desencadeia a execuo de uma tarefa.

    As mensagens existem somente em funo dosservios, e fazem o mapeamento:

    de um objeto para outro objeto;de um objeto para uma classe (criao de objetos) e,de uma classe para outra classe (criao de objetosdentro de outros objetos).

    11/08/2002 29Prof. Edson S. Cordeiro

    O que so mtodos ?O cdigo associado a cada mensagem chamado de mtodo;Quando um objeto recebe uma mensagem, eledetermina qual mtodo ir responder e passa ocontrole para esse mtodo;Mtodos so similares s subrotinas,procedimentos ou funes encontradas emlinguagens procedurais como C e Pascal.

    11/08/2002 30Prof. Edson S. Cordeiro

    O que so mtodos ?Por exemplo: o nome de um mtodo similarao nome de uma subrotina e o cdigo domtodo similar ao cdigo encontrado em umasubrotina;Enviar uma mensagem para um objeto similar a chamar uma subrotina.

  • 11/08/2002 31Prof. Edson S. Cordeiro

    O que so Objetos ? Parte IICada objeto precisa manter as informaes decomo executar um determinadocomportamento;Apenas os mtodos de um objeto podemmanipular os valores armazenados em suasvariveis.

    11/08/2002 32Prof. Edson S. Cordeiro

    O que encapsulamento ?Problema:

    O que fazer quando o programa atingemilhares de linhas de cdigo ? Programasextensos ...

    ... dificultam a organizao do cdigo;

    ... aumentam custo na compilao doprograma.

    Soluo (entre outras):Modularizao: organizar o programa emcontainers que incluem subprogramas e dadosrelacionados logicamente compilveisseparadamente.

    11/08/2002 33Prof. Edson S. Cordeiro

    O que encapsulamento ? um agrupamento de subprogramas e dosdados que eles manipulam (Sebesta, p. 397);O encapsulamento permite uma melhororganizao lgica para uma coleo decomputaes relacionadas;

    11/08/2002 34Prof. Edson S. Cordeiro

    O que encapsulamento ?Um objeto no pode manipular as variveis deoutros objeto diretamente;Um objeto apenas pode acessar variveis deoutro objeto mediante ao envio de mensagenspara esse objeto;Esse recurso chamado de encapsulamento egarante um processo seguro para amanipulao das variveis de um objeto.

    11/08/2002 35Prof. Edson S. Cordeiro

    O que encapsulamento ?Diferentemente das linguagens proceduraisonde reas comuns de dados so utilizadaspara compartilhamento de informaes, aprogramao orientada a objetos norecomenda o acesso direto reas comuns dedados;Apenas o objeto proprietrio do dado (varivel)pode manipular seu contedo. Outros objetospodem manipular os dados somente por meiodas mensagens enviadas ao objeto proprietriodo dado (varivel).

    11/08/2002 36Prof. Edson S. Cordeiro

    O que encapsulamento ?Na Programao Orientada aObjetos (POO), objetos interagemcom outros objetos apenas pormeio de mensagens;A nica coisa que um objetoconhece sobre outro objeto ainterface do objeto;A lgica e dados de um objeto soescondidos de outros objetos;A interface encapsula os dados ecdigo de um objeto.

  • 11/08/2002 37Prof. Edson S. Cordeiro

    O que encapsulamento ?

    Mtodo 1

    Mtodo 2

    Mtodo 3

    Dado 1Dado 2Dado 3Dado 4Dado 5Dado 6Dado 7

    Interface

    Objeto

    Mensagem 1

    Mensagem 2

    Mensagem 2

    11/08/2002 38Prof. Edson S. Cordeiro

    O que encapsulamento ?

    Mtodo 1

    Mtodo 2

    Mtodo 3

    Dado 1Dado 2Dado 3Dado 4Dado 5Dado 6Dado 7

    Interface

    Objeto

    Mensagem 1

    Mensagem 2

    Mensagem 2

    11/08/2002 39Prof. Edson S. Cordeiro

    O que encapsulamento ?O encapsulamento permite ao desenvolvedorseparar a implementao do objeto de seucomportamento;A separao o efeito caixa-preta onde ousurio do objeto isolado mudanasdecorridas de implementaes;Qualquer mudana interna ao objeto notransparece ao usurio do objeto.

    11/08/2002 40Prof. Edson S. Cordeiro

    O que encapsulamento ?Objetos encapsulam suas estruturas de dados(atributos).Restringe a visibilidade do objeto.Torna inacessvel os detalhes de manipulao do objetode seu meio externo.Os usurios do objeto compreendem quais operaespodem ser solicitadas de um objeto, mas noconhecem os detalhes de como a operao executada.

    11/08/2002 41Prof. Edson S. Cordeiro

    O que Visibilidade ?Cada um dos elementos que constituem umaclasse possui uma visibilidade (Staa, p. 296);Visibilidade a capacidade de um objeto poderver ou de ter referncia a outro objeto(Larman, p. 246);O conceito de visibilidade tambm conhecidocomo modificadores de acesso.

    11/08/2002 42Prof. Edson S. Cordeiro

    O que Visibilidade ?Os tipos de visibilidade que podem ser determinadosem uma classe para atributos e operaes so:

    + public: os elementos so acessveis por todas asclasses;

    # protected: os elementos so acessveis porsubclasses, ou pela prpria classe;

    private: os elementos so acessveis somentepela prpria classe;

  • 11/08/2002 43Prof. Edson S. Cordeiro

    O que Visibilidade ?Atributos:

    Atributos somente deveriam ser acessados pelosmtodos da classe a que pertence;

    Operaes:Pblicas (interface);Privadas (internas classe).

    Operaes

    Dados

    Classe

    11/08/2002 44Prof. Edson S. Cordeiro

    O que polimorfismo ?Outro benefcio decorrente da separao daimplementao do comportamento opolimorfismo;O polimorfismo permite que dois ou maisobjetos respondam a mesma mensagemdiferentemente.

    11/08/2002 45Prof. Edson S. Cordeiro

    O que polimorfismo ?

    Pare

    11/08/2002 46Prof. Edson S. Cordeiro

    O que Herana ?Problema:

    Como aumentar a produtividade ?Soluo (entre outras):

    Reutilizar cdigo (instrues) j existentes.

    11/08/2002 47Prof. Edson S. Cordeiro

    O que Herana ?

    Mdulo AVarivel A1Varivel A2Instruo I1

    Mdulo B????

    Para construir Bpreciso reutilizar

    apenas A1?

    Como realizarpequenas

    modificaes em I1para reutilizar em B ?

    11/08/2002 48Prof. Edson S. Cordeiro

    O que Herana ?Mecanismo que permite definir uma nova classe(subclasse) a partir de uma classe j existente(superclasse).Ao se estabelecer uma Especializao (subclasse) deuma classe, a subclasse herda as caractersticascomuns da superclasse, isto , a especificao dosatributos e dos mtodos da superclasse passam afazer parte da especificao dos atributos e dosmtodos da subclasse.A subclasse pode adicionar novos mtodos e/ouatributos, como tambm reescrever (sobrepor)mtodos herdados.

  • 11/08/2002 49Prof. Edson S. Cordeiro

    O que Herana ?Quando uma mensagem enviada para um objeto:

    A procura do mtodo correspondente comea pelaclasse do objeto;Se o mtodo no for encontrado, a procuracontinua na superclasse.

    A Herana pode ser de dois tipos:Herana Simples: quando uma classe subclassede somente uma superclasse e,Herana Mltipla: quando uma classe subclassede vrias superclasses e consequentemente herdaas caractersticas de cada uma delas

    11/08/2002 50Prof. Edson S. Cordeiro

    O que Herana ?Cobertura da herana:

    Total/Exclusiva:ocorre quando instanciada apenas a subclasse doconjunto de subclasses da superclasse.

    Parcial:ocorre quando somente a superclasse instanciada,no havendo necessidade de instanciar a subclasse.

    Sobreposio:ocorre quando mais de uma subclasse instanciada.

    11/08/2002 51Prof. Edson S. Cordeiro

    O que Herana ?Exclusiva

    Pessoa

    JurdicaFsica ou

    Pessoa

    ProfessorAluno

    Sobreposio

    e

    Funcionrio

    TerceirizadoHorista

    Parcial

    ou

    ouou

    Classe abstrata

    Classe concreta

    11/08/2002 52Prof. Edson S. Cordeiro

    Forjar ClassesClasses transcendem objetos;Resultado: Moldes;As classes moldamcaractersticas dos objetos;Objetos se comportam deacordo com o comportamentoda classe molde.

    11/08/2002 53Prof. Edson S. Cordeiro

    Categorizao em ClassesQuando estamos modelando umdomnio, observamos que h vriasentidades similares que podem serabstradas em um conceito nicoque engloba esta similaridade;O POO incorporou esta operaoatravs da abstrao dos atributose dos mtodos que caracterizamobjetos semelhantes, especificando-os na CLASSE.

    ClasseObjeto

    11/08/2002 54Prof. Edson S. Cordeiro

    OperaoOperao (Mtodo)

    aplicada ao objeto, ativada pelo envio de umamensagem. So executadas operaes sempre que umobjeto recebe uma mensagem.

    As operaes podem ser classificadas em categorias:

    Construtoras;

    Modificadoras;

    Destrutoras.

  • 11/08/2002 55Prof. Edson S. Cordeiro

    Mtodos ConstrutoresMtodos Construtores so utilizados para:

    Atribuem valores padres (default) para osatributos do objeto que ser criado;Criarem objetos que compem uma classe.

    Podem ser implementados com ou semargumentos de entrada;Mtodos construtores no retornam valores;Importante: Objetos com atributos do tipoclasse devem chamar (mensagem) o mtodoconstrutor do atributo do tipo classe.

    11/08/2002 56Prof. Edson S. Cordeiro

    Mtodos DestrutoresTem por objetivo destruir o objeto, ou seja,liberar o espao de memria alocado para esseobjeto.Aps a destruio, o objeto no poder recebernenhuma mensagem.Importante: Objetos com atributos do tipoclasse devem destruir os atributos do tipoclasse antes de se destrurem.

    11/08/2002 57Prof. Edson S. Cordeiro

    Agregao / Composio o princpio que permite ao desenvolvedor consideraralgo muito grande atravs do enfoque Todo-Parte.Todo-Parte tambm conhecido como Agregao. Essemecanismo permite a construo de uma classeagregada a partir de outras classes componentes. Usa-se dizer que um objeto da classe agregada (Todo) composta de objetos das classes componentes (Parte)ou, objetos da classes componentes (Partes) compemum objeto (Todo).

    11/08/2002 58Prof. Edson S. Cordeiro

    Classes Abstratas / ConcretasClasses Abstratas

    So classes para as quais no se pretendeinstanciar nenhum objeto;Fornece uma superclasse apropriada da qual asoutras classes (subclasses) podem herdar interfacee/ou implementao.

    Classes ConcretasAs classes da qual os objetos podem serinstanciados so chamadas classes concretas.

    11/08/2002 59Prof. Edson S. Cordeiro

    PolimorfismoPolimorfismo, significa muitas formas. Isto , quandouma mesma operao pode assumir vrioscomportamentos.

    Um nome pode denotar objetos de muitas classesdiferentes que esto relacionadas por algumasuperclasse comum.

    Ento, objetos denotados pelo mesmo nome tem acapacidade de responder a algum conjunto comum deoperaes de modos diferentes.

    11/08/2002 60Prof. Edson S. Cordeiro

    Sobreposio de Mtodos possvel, ao definirmos uma classe comosubclasse de outra, alguns mtodos herdadosno sirvam e necessitem de novaimplementao.A sobreposio de mtodos est diretamenteassociado ao conceito de Polimorfismo.

  • 11/08/2002 61Prof. Edson S. Cordeiro

    Mtodos AbstratosPermite determinar os mtodos que poderoser implementados em classes descendentes,porm sem implement-los na superclasse.Padroniza a interface das classes determinandoos servios que podero ser implementadospelas subclasses.Um mtodo abstrato um mtodo virtual queno implementado na classe onde ele declarado. Sua implementao realizada emclasses descendentes (subclasse).