poo aula 01

Upload: marciot

Post on 01-Mar-2016

19 views

Category:

Documents


1 download

DESCRIPTION

POO Aula 01

TRANSCRIPT

  • Programao Orientada a Objetos

    quarta-feira, 2 de maio de 2012

  • Conceitos Orientao a Objetos: Conceito e

    Vantagens

    Metodologias da OO Orientao a Objetos Classes

    quarta-feira, 2 de maio de 2012

  • Introduo Paradigmas de Programao Programao Estruturada Procedimentos e Funes. Ex.: C e Pascal. Compostos de: seqncia, deciso e

    iterao

    Programao Orientada a Eventos RAD. Ex: Delphi e Visual Studio.

    Programao Orientada Objetos Foco em classes (atributos e mtodos) e

    comunicao entre classes.quarta-feira, 2 de maio de 2012

  • Introduo

    Programao funcional Lisp

    Programao Orientado a aspecto Java(AspectJ)

    quarta-feira, 2 de maio de 2012

  • Programao Orientada a Objetos um paradigma de Anlise, Projeto e Programao que baseado na relao entre objetos que iro compor o sistema.

    Conceito

    quarta-feira, 2 de maio de 2012

  • Conceitos

    Linguagens OO: C++, Java, C# , Object-Pascal, Ruby, Python.

    Reuso de cdigo Encapsulamento Acoplamento

    quarta-feira, 2 de maio de 2012

  • Anlise: Investigar o que tem de ser feito.

    Projeto: Planejar como ser feito.

    Implementao: Colocar a mo na massa.

    Conceitos

    quarta-feira, 2 de maio de 2012

  • O objeto uma representao de algo que seja real ou abstrato que contenha traos bem definidos.

    Objeto

    quarta-feira, 2 de maio de 2012

  • Facilidade de manuteno.Reusabilidade.Simplicidade.Agilidade.

    Vantagens

    quarta-feira, 2 de maio de 2012

  • Classes Defini a estrutura do objeto

    Objetos contm: Atributos(Definio de seus traos,

    caractersticas)

    Mtodos - Comportamentos Construtores - Criar um objeto

    Principais Elementos

    quarta-feira, 2 de maio de 2012

  • Exemplo de Objetos Objetos: Mesa, Cadeira, Pessoa, Carro,

    Conta bancaria, Clima

    E os traos?? Como classificar objetos: Objetos com os mesmo traos

    recebem a mesma classificao.

    Os objetos podem ser concretos ou abstrato:

    Concretos: pessoa, carro, casa Abstratos: conta, msica

    quarta-feira, 2 de maio de 2012

  • Linguagem Java

    Poderosa Abrangente Hbrida - Compilada / Interpretada Funciona em qualquer equipamento - Mquinas

    virtuais

    quarta-feira, 2 de maio de 2012

  • Linguagem Java

    Ciclo de funcionamento: cdigo fonte --> compilador --> bytecode(sada)

    --> execuo(mquina virtual)

    quarta-feira, 2 de maio de 2012

  • o "O '. -ro o:: o .!: ::J Ol L-O) ctI 2 > E ctI 3.500 :::1 -,

  • Problemtica

    Era uma vez em uma loja de softwares, dois programadores que receberam as mesmas espec i f i caes e a ordem "construam". O Gerente de Projetos Muito Chato forou os dois codificadores a competirem, prometendo que quem acabasse primeiro ganharia uma daquelas modernas cadeiras AeronTM que todo mundo no Vale de Santa Clara tem.

    quarta-feira, 2 de maio de 2012

  • quarta-feira, 2 de maio de 2012

  • Guerra nas Cadeiras (ou como os objetos podem mudar sua vida) Era uma vez em uma loja de softwares, dois programadores que receberam as mesmas especificaes e a ordem "construam". O Gerente de Projetos Muito Chato forou os dois codificadores a competirem, prometendo que quem acabasse primeiro ganharia uma daquelas modernas cadeiras Aeron que todo mundo no Vale de Santa Clara tem. Tanto Larry, o programador de procedimeritos, quanto Brad, o adepto da 00, sabiam que isso seria fcil. Sentado em sua baia, LaITy pensou: "O que esse prorama precisa fazer? de que procedimentos precisamos?". E respondeu "girar e emitir som". Portanto, ele comeou a construir os procedimentos . Afinal, o que um programa alm de uma pilha de procedimentos?

    As especificaes t

    Enquanto isso, Brad voltou ao restaurante e pensou: "Que itens existiriam nesse programa ... Quem so os principais envolvidos?" Primeiro ele pensou nas Formas Geomtricas. claro que ele considerou outros objetos como o Usurio, o Som e o evento de Clicar. Mas j tinha uma biblioteca de cdigos para esses itens, portanto, se dedicou construo das Formas . Continue a ler para saber como Brad e Larry construram seus programas e para conhecer a resposta inquietante pergunta "Mas quem ganhou aAeron?"

    A cadeira

    Na baia de Larry No laptop de Brad dentro do restaurante Como j tinha feito milhares de vezes, Larry comeou a escrever seus Procedimentos Importantes. Ele criou rotate e playSound sem demora.

    Brad criou uma classe para cada uma das trs formas Square

    rotate(shapeNum) ( rota t e II faz a forma girar 360' II c

    }

    playSound(shapeNum) playSo1.; II u sa shapeNum para p esquisa r II que som AIF reproduzir e execut-lo

    . } }

    Larry achou que tinha conseguido. Podia quase sentir as rodas de ao da Aeron rolando embaixo de seu ... Mas espere! Houve uma alterao nas especificaes. "Certo, tecnicamente voc venceu. Larry", disse o Gerente, "mas temos que adicionar apenas mais um pequeno item ao programa. No ser problema para programadores avanados como vocs doi s." "Se eu ganhasse uma moeda sempre que ouvisse isso ", pensou Larry, sabendo que alteraes nas especificaes sem problemas era iluso. "E mesmo assim Brad parece estranhamento tranqilo. O que estar acontecendo?" Larry continuou mantendo sua crena de que fazer da man"eira orientada a objetos, embora avanado, era lento. E que, se algum quisesse faz-lo mudar de idia, teria que fazer isso fora.

    20 captulo 2

    II c II de

    11 11 Circle

    I; rotate (

    /I c Triangle }

    r otate () { playSou II cdigo para gira r um tringulo

    /I c } II de

    } p laySound () { fi cdigo para reproduzi r o arquivo AIF I / de um tringulo

    } _.

    eba na d U\:na am , formatO e f :nas. Havera o as outras on ba ela . to CO\:n , . a ame ' tela, .lun ur'o ClICar n _ e Quando o us s outras formas bif , O\:nO a . de SO\:n .

  • Tanto Larry, o programador de procedimentos, quanto Brad, o adepto da 0 0 , sabiam que isso seria fcil.

    quarta-feira, 2 de maio de 2012

  • Larry

    Como j tinha feito milhares de vezes, Larry comeou a escrever seus Procedimentos Importantes. Ele criou rotate e playSound sem demora.

    rotate(shapeNum)

    { faz a forma girar 360' } playSound(shapeNum) {usa shapeNum para

    pesquisar que som AIF reproduzir e execut-lo}

    quarta-feira, 2 de maio de 2012

  • Brad

    Brad criou classes para representar os elementos grficos:

    Guerra nas Cadeiras (ou como os objetos podem mudar sua vida) Era uma vez em uma loja de softwares, dois programadores que receberam as mesmas especificaes e a ordem "construam". O Gerente de Projetos Muito Chato forou os dois codificadores a competirem, prometendo que quem acabasse primeiro ganharia uma daquelas modernas cadeiras Aeron que todo mundo no Vale de Santa Clara tem. Tanto Larry, o programador de procedimeritos, quanto Brad, o adepto da 00, sabiam que isso seria fcil. Sentado em sua baia, LaITy pensou: "O que esse prorama precisa fazer? de que procedimentos precisamos?". E respondeu "girar e emitir som". Portanto, ele comeou a construir os procedimentos . Afinal, o que um programa alm de uma pilha de procedimentos?

    As especificaes t

    Enquanto isso, Brad voltou ao restaurante e pensou: "Que itens existiriam nesse programa ... Quem so os principais envolvidos?" Primeiro ele pensou nas Formas Geomtricas. claro que ele considerou outros objetos como o Usurio, o Som e o evento de Clicar. Mas j tinha uma biblioteca de cdigos para esses itens, portanto, se dedicou construo das Formas . Continue a ler para saber como Brad e Larry construram seus programas e para conhecer a resposta inquietante pergunta "Mas quem ganhou aAeron?"

    A cadeira

    Na baia de Larry No laptop de Brad dentro do restaurante Como j tinha feito milhares de vezes, Larry comeou a escrever seus Procedimentos Importantes. Ele criou rotate e playSound sem demora.

    Brad criou uma classe para cada uma das trs formas Square

    rotate(shapeNum) ( rota t e II faz a forma girar 360' II c

    }

    playSound(shapeNum) playSo1.; II u sa shapeNum para p esquisa r II que som AIF reproduzir e execut-lo

    . } }

    Larry achou que tinha conseguido. Podia quase sentir as rodas de ao da Aeron rolando embaixo de seu ... Mas espere! Houve uma alterao nas especificaes. "Certo, tecnicamente voc venceu. Larry", disse o Gerente, "mas temos que adicionar apenas mais um pequeno item ao programa. No ser problema para programadores avanados como vocs doi s." "Se eu ganhasse uma moeda sempre que ouvisse isso ", pensou Larry, sabendo que alteraes nas especificaes sem problemas era iluso. "E mesmo assim Brad parece estranhamento tranqilo. O que estar acontecendo?" Larry continuou mantendo sua crena de que fazer da man"eira orientada a objetos, embora avanado, era lento. E que, se algum quisesse faz-lo mudar de idia, teria que fazer isso fora.

    20 captulo 2

    II c II de

    11 11 Circle

    I; rotate (

    /I c Triangle }

    r otate () { playSou II cdigo para gira r um tringulo

    /I c } II de

    } p laySound () { fi cdigo para reproduzi r o arquivo AIF I / de um tringulo

    } _.

    eba na d U\:na am , formatO e f :nas. Havera o as outras on ba ela . to CO\:n , . a ame ' tela, .lun ur'o ClICar n _ e Quando o us s outras formas bif , O\:nO a . de SO\:n .

  • Alterao na especificao

    Guerra nas Cadeiras (ou como os objetos podem mudar sua vida) Era uma vez em uma loja de softwares, dois programadores que receberam as mesmas especificaes e a ordem "construam". O Gerente de Projetos Muito Chato forou os dois codificadores a competirem, prometendo que quem acabasse primeiro ganharia uma daquelas modernas cadeiras Aeron que todo mundo no Vale de Santa Clara tem. Tanto Larry, o programador de procedimeritos, quanto Brad, o adepto da 00, sabiam que isso seria fcil. Sentado em sua baia, LaITy pensou: "O que esse prorama precisa fazer? de que procedimentos precisamos?". E respondeu "girar e emitir som". Portanto, ele comeou a construir os procedimentos . Afinal, o que um programa alm de uma pilha de procedimentos?

    As especificaes t

    Enquanto isso, Brad voltou ao restaurante e pensou: "Que itens existiriam nesse programa ... Quem so os principais envolvidos?" Primeiro ele pensou nas Formas Geomtricas. claro que ele considerou outros objetos como o Usurio, o Som e o evento de Clicar. Mas j tinha uma biblioteca de cdigos para esses itens, portanto, se dedicou construo das Formas . Continue a ler para saber como Brad e Larry construram seus programas e para conhecer a resposta inquietante pergunta "Mas quem ganhou aAeron?"

    A cadeira

    Na baia de Larry No laptop de Brad dentro do restaurante Como j tinha feito milhares de vezes, Larry comeou a escrever seus Procedimentos Importantes. Ele criou rotate e playSound sem demora.

    Brad criou uma classe para cada uma das trs formas Square

    rotate(shapeNum) ( rota t e II faz a forma girar 360' II c

    }

    playSound(shapeNum) playSo1.; II u sa shapeNum para p esquisa r II que som AIF reproduzir e execut-lo

    . } }

    Larry achou que tinha conseguido. Podia quase sentir as rodas de ao da Aeron rolando embaixo de seu ... Mas espere! Houve uma alterao nas especificaes. "Certo, tecnicamente voc venceu. Larry", disse o Gerente, "mas temos que adicionar apenas mais um pequeno item ao programa. No ser problema para programadores avanados como vocs doi s." "Se eu ganhasse uma moeda sempre que ouvisse isso ", pensou Larry, sabendo que alteraes nas especificaes sem problemas era iluso. "E mesmo assim Brad parece estranhamento tranqilo. O que estar acontecendo?" Larry continuou mantendo sua crena de que fazer da man"eira orientada a objetos, embora avanado, era lento. E que, se algum quisesse faz-lo mudar de idia, teria que fazer isso fora.

    20 captulo 2

    II c II de

    11 11 Circle

    I; rotate (

    /I c Triangle }

    r otate () { playSou II cdigo para gira r um tringulo

    /I c } II de

    } p laySound () { fi cdigo para reproduzi r o arquivo AIF I / de um tringulo

    } _.

    eba na d U\:na am , formatO e f :nas. Havera o as outras on ba ela . to CO\:n , . a ame ' tela, .lun ur'o ClICar n _ e Quando o us s outras formas bif , O\:nO a . de SO\:n .

  • Larry

    Larry teve de rescrever o cdigo para tocar a msica

    quarta-feira, 2 de maio de 2012

  • Brad

    Brad criou apenas mais uma classe para representar a Amoeba

    h

    h, k h, '-... ,

    ..

    -:1 !

    i I 1 _____

    .. '"

    I: J -:1/"" 1 1"\ I l'" _1

    classes e objetos

    Oe volta baia de Larry Usando o laptop de Brad na praia o procedimento de rotao ainda funcionaria; o cdigo usava uma tabela de pesquisa para comparar o argumento shapeNum com a fi gura de uma{orma real. Mas playSound teria que mudar. E o que diabos um arqui vo .hif?

    Brad sorriu, tomou um gole de sua marguerita e criou uma nova classe . s vezes o que ele mais adorava na 00 era no ser preciso mexer em cdigo que j tivesse sido testado e distribudo. "Flexibilidade, extensibilidade ... " ele pensou, refletindo sobre os benefcios da 00. playSound(shapeNum) (

    I I se a forma n o for urna a meba, Amoeba II II use shapeNurn para pesquisar que II som AIF reproduzir e e xecu te-o

    II ou rotate () I I reproduza o s om .hif da ameba

    No pareceu ser uma grande idia, mas ele se sentia desconfortvel em alterar cdigo j testado. Entre todas as pessoas, ele sabia que, independentemente do que o gerente de projetos dissesse, as especificaes sempre seriam alteradas.

    Larry acabou alguns minutos na frente de Brad.

    II c digo para girar a ameba

    playSound ( ) 1/ cdigo para reprodu z ir o novo I I a rquivo .hif de uma a me ba

    (Ah! Tanto barulho por aquela besteira de 00.) Mas o sorriso de Larry desapareceu quando o Gerente de Projetos Muito Chato disse (com esse tom de desapontamento): "Oh. no, no assim que a ameba deve girar...!" Os dois programadores acabaram escrevendo seu cdigo de rotao dessa forma: 1) determine o retngulo que circula a forma 2) calcule o centro desse retngulo e gire a forma ao redor desse ponto . Mas a forma de ameba devia girar ao redor de um ponto em uma extremidade, como um ponteiro de relgio. "Estou frito" pensou Larry, visualizando um Wonderbread chamuscado. "Porm, hmmm. Eu poderia apenas adicionar outra instruo if/else ao procedimento de rotao e, em seguida, embutir o cdigo do ponto de rotao da ameba. Provavelmente isso no atrapalhar nada." Mas uma voz longnqua em sua mente dizia: " um grande erro. Voc acha honestamente que as especificaes no mudaro novamente?"

    ba na versa da ame de rotaao ponto d' de Larry e Bra .

    da ameba de rotaao Onde o O

    (1' a estar. deve

    I;

    o que as especificaes esqueceram de mencionar adequadamente

    ______________________ __ voc est aqui 21 r--.

    quarta-feira, 2 de maio de 2012

  • Nova Mudana

    h

    h, k h, '-... ,

    ..

    -:1 !

    i I 1 _____

    .. '"

    I: J -:1/"" 1 1"\ I l'" _1

    classes e objetos

    Oe volta baia de Larry Usando o laptop de Brad na praia o procedimento de rotao ainda funcionaria; o cdigo usava uma tabela de pesquisa para comparar o argumento shapeNum com a fi gura de uma{orma real. Mas playSound teria que mudar. E o que diabos um arqui vo .hif?

    Brad sorriu, tomou um gole de sua marguerita e criou uma nova classe . s vezes o que ele mais adorava na 00 era no ser preciso mexer em cdigo que j tivesse sido testado e distribudo. "Flexibilidade, extensibilidade ... " ele pensou, refletindo sobre os benefcios da 00. playSound(shapeNum) (

    I I se a forma n o for urna a meba, Amoeba II II use shapeNurn para pesquisar que II som AIF reproduzir e e xecu te-o

    II ou rotate () I I reproduza o s om .hif da ameba

    No pareceu ser uma grande idia, mas ele se sentia desconfortvel em alterar cdigo j testado. Entre todas as pessoas, ele sabia que, independentemente do que o gerente de projetos dissesse, as especificaes sempre seriam alteradas.

    Larry acabou alguns minutos na frente de Brad.

    II c digo para girar a ameba

    playSound ( ) 1/ cdigo para reprodu z ir o novo I I a rquivo .hif de uma a me ba

    (Ah! Tanto barulho por aquela besteira de 00.) Mas o sorriso de Larry desapareceu quando o Gerente de Projetos Muito Chato disse (com esse tom de desapontamento): "Oh. no, no assim que a ameba deve girar...!" Os dois programadores acabaram escrevendo seu cdigo de rotao dessa forma: 1) determine o retngulo que circula a forma 2) calcule o centro desse retngulo e gire a forma ao redor desse ponto . Mas a forma de ameba devia girar ao redor de um ponto em uma extremidade, como um ponteiro de relgio. "Estou frito" pensou Larry, visualizando um Wonderbread chamuscado. "Porm, hmmm. Eu poderia apenas adicionar outra instruo if/else ao procedimento de rotao e, em seguida, embutir o cdigo do ponto de rotao da ameba. Provavelmente isso no atrapalhar nada." Mas uma voz longnqua em sua mente dizia: " um grande erro. Voc acha honestamente que as especificaes no mudaro novamente?"

    ba na versa da ame de rotaao ponto d' de Larry e Bra .

    da ameba de rotaao Onde o O

    (1' a estar. deve

    I;

    o que as especificaes esqueceram de mencionar adequadamente

    ______________________ __ voc est aqui 21 r--.

    quarta-feira, 2 de maio de 2012

  • Larry

    Teve de rescrever praticamente todo o cdigo

    quarta-feira, 2 de maio de 2012

  • Brad

    era uma vez e-n O;:'jt=lpo:is

    De volta baia de Larry Ele achou que seria melhor adicionar os pontos de rotao como argumentos do procedimento de rotao. Grande parte do cdigo foi afetada. Teste, compilao, todo o trabalho teve que ser feito novamente. O que funcionava deixou de funcionar.

    rotate(shapeNum, xPt, yPt) { II se a forma no for urna ameba,

    II calcule o ponto central II baseado em um retngulo, II e, em seguida, gire

    II ou II use xPt e ypt corno II o deslocamento do ponto de rotao II e, em seguida, gire

    ____ Usando o laptop de Brad em Bl1B espreguiadeira no Festival de B!uegrass de Telluride Sem perder nada, Brad modificou o mtodo de rotao, mas s na classe Amoeba. Ele no tocou no cdigo funcionalj testado e compilado das outras partes do programa. Para fornecer classe Amoeba um ponto de rotao, ele adicionou um atributo que todos os objetos Amoeba teriam. Ele modificou, testou e di stribuiu (com tecnologia sem fio) o programa revisto apenas durante o show de Bela Fleck.

    Amoeba

    in t x point; int y point; rotate() (

    II c digo para girar a ameba / 1 usan do os pontos x e y

    playSound() I I cdigo para reproduzir o novo 1/ a rqui vo .hi f d e uma ameba

    iJ

    Ento, Brad, o adepto da 00 ganhou a cadeira, certo? No to rpido. Larry encontrou uma falha na abordagem de Brad. E, j que tinha certeza de que, se ganhasse a cadeira, tambm se daria bem com a Lucy da contabilidade, tinha que reverter a situao. Larry: Voc tem cdigo duplicado! O procedimento de rotao aparece em todos os quatro itens Shape. Brad: Trata-se de um mtodo e no um procedimento. E essas so classes e no itens. Larry: No importa, um projeto estpido. Voc tem que manter quaTro "mtodos" de rotao diferentes. Em que isso poderia ser bom? Brad: Oh, acho que voc no viu o projeto final. Deixe que eu lhe mostre como a herana da 00 funciona, Larry.

    o Procurei o que as quatro classes tinham

    Square Circle Triangle

    o que Larry queria (ele achava que a cadeira a impressionaria)

    Amoeba

    em comum . rotate () i.j playSound () j rotate() .1 playSound ( ) i rotate () playSound () i'1

    r otate () playSound ( )

    Shape

    rotate () playSound ( )

    Elas so formas e todas giram e reproduzem som. Portanto, extrai os recursos comuns e os

    em uma nova classe chamada Shape. ____

    Voc pode ler isso como "Square herda de Shape", "Circle herda de Shape" e assim por dian te. Removi rotate( ) e playSoLlnd( ) das outras formas. portanto, agora h apenas uma cpia a manter. Diz-se que a classe Shape a supel'Classe das outras quatro classes. As outras quatro so as

    Square

    Shape

    Superclasse

    o Em seguida, vincule i as outras quatro classes de formas nova classe Shape , em um relacionamento chamado herana.

    Amoeba

    subclasses de Shape. As subclasses herdam os mtodos da superclasse. Em outras palavras, se ({ c/asse Shape Tipa uma fn.c ionalidade, emo, automalic(l/11el1le, as suhclasses tero essa /TI.esma fnc ion.alidade . 22 captuio 2

    quarta-feira, 2 de maio de 2012

  • Mas ento quem ganhou a cadeira?

    quarta-feira, 2 de maio de 2012

  • .___1

    "J ---I

    - I

    I ..-1

    1 r"

    E quanto ao mtodo rotate( ) de Amoeba? Larry: No esse o problema aqui - que a forma de ameba tinha um procedimento de rotao e reproduo de som totalmente diferentes? Brad: Mtodo. Larry: No importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da classe Shape? Brad: Essa a ltima etapa. A classe Amoeba sobrepe os mtodos da classe Shape. Portanto, no tempo de execuo, a JVM saber exatamente que mtodo rotate( ) executar quando algum solicitar que o objeto Amoeba gire.

    classes _ objetos

    Shape ro ta te ()

    Fiz com que a classe Amoeba sobrepusesse os mtodos rotate( ) e playSound( ) da superclasse Shape. Sobrepor significa apenas que uma subclasse redefinir um de seus mtodos herdados quando precisar alterar ou estender o comportamento desse mtodo.

    Superclasse (mais abstrata)

    Square

    Subclasses (mais especficas)

    da ameba playSound ( ) Il cdigo de reproduo de som Ilespecfico da ameba

    Mtodos de sobreposio

    Larry: Como voc "diria" a um objeto Amoeba para fazer algo? No preciso chamar o procedimento, desculpe - mtodo, e, em seguida, lhe informar que item girar? Brad: Isso o que h de mais interessante na 00. Quando for hora. digamos, de o tringulo girar, o cdigo do programa referenciar (chamar) o mtodo rotate( ) no objeto Triangle. O resto do programa no saber ou se importar realmente em como o tlingulo o far. E quando voc precisar adicionar algo novo ao programa, apenas criar uma nova classe para o novo tipo de objeto, para que os novos objetos tenham seu prprio comportamento.

    Sei como um objeto Shape deve se comportar. Sua tarefa

    me informar o que fazer e a minha fazer acontecer. No

    o

    o O

    voc est aqui !lo-- 23

    .___1

    "J ---I

    - I

    I ..-1

    1 r"

    E quanto ao mtodo rotate( ) de Amoeba? Larry: No esse o problema aqui - que a forma de ameba tinha um procedimento de rotao e reproduo de som totalmente diferentes? Brad: Mtodo. Larry: No importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da classe Shape? Brad: Essa a ltima etapa. A classe Amoeba sobrepe os mtodos da classe Shape. Portanto, no tempo de execuo, a JVM saber exatamente que mtodo rotate( ) executar quando algum solicitar que o objeto Amoeba gire.

    classes _ objetos

    Shape ro ta te ()

    Fiz com que a classe Amoeba sobrepusesse os mtodos rotate( ) e playSound( ) da superclasse Shape. Sobrepor significa apenas que uma subclasse redefinir um de seus mtodos herdados quando precisar alterar ou estender o comportamento desse mtodo.

    Superclasse (mais abstrata)

    Square

    Subclasses (mais especficas)

    da ameba playSound ( ) Il cdigo de reproduo de som Ilespecfico da ameba

    Mtodos de sobreposio

    Larry: Como voc "diria" a um objeto Amoeba para fazer algo? No preciso chamar o procedimento, desculpe - mtodo, e, em seguida, lhe informar que item girar? Brad: Isso o que h de mais interessante na 00. Quando for hora. digamos, de o tringulo girar, o cdigo do programa referenciar (chamar) o mtodo rotate( ) no objeto Triangle. O resto do programa no saber ou se importar realmente em como o tlingulo o far. E quando voc precisar adicionar algo novo ao programa, apenas criar uma nova classe para o novo tipo de objeto, para que os novos objetos tenham seu prprio comportamento.

    Sei como um objeto Shape deve se comportar. Sua tarefa

    me informar o que fazer e a minha fazer acontecer. No

    o

    o O

    voc est aqui !lo-- 23

    .___1

    "J ---I

    - I

    I ..-1

    1 r"

    E quanto ao mtodo rotate( ) de Amoeba? Larry: No esse o problema aqui - que a forma de ameba tinha um procedimento de rotao e reproduo de som totalmente diferentes? Brad: Mtodo. Larry: No importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da classe Shape? Brad: Essa a ltima etapa. A classe Amoeba sobrepe os mtodos da classe Shape. Portanto, no tempo de execuo, a JVM saber exatamente que mtodo rotate( ) executar quando algum solicitar que o objeto Amoeba gire.

    classes _ objetos

    Shape ro ta te ()

    Fiz com que a classe Amoeba sobrepusesse os mtodos rotate( ) e playSound( ) da superclasse Shape. Sobrepor significa apenas que uma subclasse redefinir um de seus mtodos herdados quando precisar alterar ou estender o comportamento desse mtodo.

    Superclasse (mais abstrata)

    Square

    Subclasses (mais especficas)

    da ameba playSound ( ) Il cdigo de reproduo de som Ilespecfico da ameba

    Mtodos de sobreposio

    Larry: Como voc "diria" a um objeto Amoeba para fazer algo? No preciso chamar o procedimento, desculpe - mtodo, e, em seguida, lhe informar que item girar? Brad: Isso o que h de mais interessante na 00. Quando for hora. digamos, de o tringulo girar, o cdigo do programa referenciar (chamar) o mtodo rotate( ) no objeto Triangle. O resto do programa no saber ou se importar realmente em como o tlingulo o far. E quando voc precisar adicionar algo novo ao programa, apenas criar uma nova classe para o novo tipo de objeto, para que os novos objetos tenham seu prprio comportamento.

    Sei como um objeto Shape deve se comportar. Sua tarefa

    me informar o que fazer e a minha fazer acontecer. No

    o

    o O

    voc est aqui !lo-- 23

    Soluo detalhada de BRAD

    quarta-feira, 2 de maio de 2012

  • .___1

    "J ---I

    - I

    I ..-1

    1 r"

    E quanto ao mtodo rotate( ) de Amoeba? Larry: No esse o problema aqui - que a forma de ameba tinha um procedimento de rotao e reproduo de som totalmente diferentes? Brad: Mtodo. Larry: No importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da classe Shape? Brad: Essa a ltima etapa. A classe Amoeba sobrepe os mtodos da classe Shape. Portanto, no tempo de execuo, a JVM saber exatamente que mtodo rotate( ) executar quando algum solicitar que o objeto Amoeba gire.

    classes _ objetos

    Shape ro ta te ()

    Fiz com que a classe Amoeba sobrepusesse os mtodos rotate( ) e playSound( ) da superclasse Shape. Sobrepor significa apenas que uma subclasse redefinir um de seus mtodos herdados quando precisar alterar ou estender o comportamento desse mtodo.

    Superclasse (mais abstrata)

    Square

    Subclasses (mais especficas)

    da ameba playSound ( ) Il cdigo de reproduo de som Ilespecfico da ameba

    Mtodos de sobreposio

    Larry: Como voc "diria" a um objeto Amoeba para fazer algo? No preciso chamar o procedimento, desculpe - mtodo, e, em seguida, lhe informar que item girar? Brad: Isso o que h de mais interessante na 00. Quando for hora. digamos, de o tringulo girar, o cdigo do programa referenciar (chamar) o mtodo rotate( ) no objeto Triangle. O resto do programa no saber ou se importar realmente em como o tlingulo o far. E quando voc precisar adicionar algo novo ao programa, apenas criar uma nova classe para o novo tipo de objeto, para que os novos objetos tenham seu prprio comportamento.

    Sei como um objeto Shape deve se comportar. Sua tarefa

    me informar o que fazer e a minha fazer acontecer. No

    o

    o O

    voc est aqui !lo-- 23

    quarta-feira, 2 de maio de 2012

  • Classe

    Quando formos criar uma classe temos de nos preocupar com duas coisas:

    o que o OBJETO conhece o que o OBJETO faz

    quarta-feira, 2 de maio de 2012

  • pensando .-

    o suspense est me matando. Quem ganhou a cadeira? Amy, que trabalha no segundo andar. (Sem que ningum soubesse. o Gerente de Projetos tinha dado as especificaes para trs programadores.) .-..

    .. o que voc gosta na OO? "Ajuda a projetar de um modo mais natural. As coisas tm uma maneira de evoluir."

    - Joy, 27, engenheir:a de software

    "No preciso mexer em cdigo que j testei, s para-adicionar um -novo recurso.'" -

    - Brad, 32, programador ;"\ '

    "Gosto do fato de qu os dados eos mtodos que os ficam Juritos uma .' '.

    - Josh, 22, bebedor de cerveja

    ''A reutilizao do cdigo eni outros aplicativos. Quando crio uma nova classe, posso torn-la . flexyel o suficiente para que seja usada em algo novo pQsteriormente."

    - Chris, 39, gerente de projetos

    "No. posso 'acreditar que Chris .disseisso. Ele no .. ' "'escreve uma linha de digo h 5 .anos."

    :Daryl, 44, trabalha para qlr!s __

    "Alm da cadeira?" Amy, 34, programadora

    poder do crebro

    Hora de ativar alguns neurnios Voc acabou de ler uma histria sobre um programador de procedimentos competindo com um programador orientado a objetos. Tivemos uma breve viso geral de alguns conceitos-chave da 00, que incluiu as classes, mtodos e atributos. Passaremos o resto do captulo examinando as classes e objetos (retornaremos herana e sobreposio em captulos posteriores). Baseado no que voc viu at agora Ce no que deve de alguma linguagem orientada a objetos com a qual j trabalhou), faa uma pausa para pensar nestas perguntas: Quais so os itens fundamentais que voc ter que considerar quando projetar uma classe Java? Que perguntas ter que fazer para voc mesmo? Se pudesse projetar uma lista de conferncia para usar quando estiver projetando uma classe, o que incluiria nela?

    dica metacognitiva Se voc empacou em um exerccio, tente

    falar sobre ele em voz alta. Falar Ce ouvir) ativar uma parte diferente de seu crebro.

    Embora isso funcione melhor quando temos outra pessoa com quem discutir, tambm funciona com animais de estimao. Foi assim que

    deu imorfismo.

    Quando voc projetar uma classe, pense nos objetos que sero criados com esse tipo de classe. Considere: - as coisas que objeto conhece - as coisas que () objeto faz

    Despertador

    h o r a Alarme modoAlarme

    configurarHoraAlarme ( carJtur a1. Ho [CtAlarme ( ) a l a rmeEs!:..iC:1n f i g u rado( s o n e ca ( )

    conhece

    faz

    carrinhoCompras

    con t e doCarrinho

    ad i c i onarAoCarrinho( removerDoCa r r i nho( ) passarCaixa ( )

    conhece

    faz

    Boto

    rtul o conhece c o r

    con fi g u r arCor ( ) conf i gurarR t u l o( ) faz soltar( ) pressionarNovarnente ( )

    I

    .1

    I

    ri r

    ,-. ,

    "

    pensando .-

    o suspense est me matando. Quem ganhou a cadeira? Amy, que trabalha no segundo andar. (Sem que ningum soubesse. o Gerente de Projetos tinha dado as especificaes para trs programadores.) .-..

    .. o que voc gosta na OO? "Ajuda a projetar de um modo mais natural. As coisas tm uma maneira de evoluir."

    - Joy, 27, engenheir:a de software

    "No preciso mexer em cdigo que j testei, s para-adicionar um -novo recurso.'" -

    - Brad, 32, programador ;"\ '

    "Gosto do fato de qu os dados eos mtodos que os ficam Juritos uma .' '.

    - Josh, 22, bebedor de cerveja

    ''A reutilizao do cdigo eni outros aplicativos. Quando crio uma nova classe, posso torn-la . flexyel o suficiente para que seja usada em algo novo pQsteriormente."

    - Chris, 39, gerente de projetos

    "No. posso 'acreditar que Chris .disseisso. Ele no .. ' "'escreve uma linha de digo h 5 .anos."

    :Daryl, 44, trabalha para qlr!s __

    "Alm da cadeira?" Amy, 34, programadora

    poder do crebro

    Hora de ativar alguns neurnios Voc acabou de ler uma histria sobre um programador de procedimentos competindo com um programador orientado a objetos. Tivemos uma breve viso geral de alguns conceitos-chave da 00, que incluiu as classes, mtodos e atributos. Passaremos o resto do captulo examinando as classes e objetos (retornaremos herana e sobreposio em captulos posteriores). Baseado no que voc viu at agora Ce no que deve de alguma linguagem orientada a objetos com a qual j trabalhou), faa uma pausa para pensar nestas perguntas: Quais so os itens fundamentais que voc ter que considerar quando projetar uma classe Java? Que perguntas ter que fazer para voc mesmo? Se pudesse projetar uma lista de conferncia para usar quando estiver projetando uma classe, o que incluiria nela?

    dica metacognitiva Se voc empacou em um exerccio, tente

    falar sobre ele em voz alta. Falar Ce ouvir) ativar uma parte diferente de seu crebro.

    Embora isso funcione melhor quando temos outra pessoa com quem discutir, tambm funciona com animais de estimao. Foi assim que

    deu imorfismo.

    Quando voc projetar uma classe, pense nos objetos que sero criados com esse tipo de classe. Considere: - as coisas que objeto conhece - as coisas que () objeto faz

    Despertador

    h o r a Alarme modoAlarme

    configurarHoraAlarme ( carJtur a1. Ho [CtAlarme ( ) a l a rmeEs!:..iC:1n f i g u rado( s o n e ca ( )

    conhece

    faz

    carrinhoCompras

    con t e doCarrinho

    ad i c i onarAoCarrinho( removerDoCa r r i nho( ) passarCaixa ( )

    conhece

    faz

    Boto

    rtul o conhece c o r

    con fi g u r arCor ( ) conf i gurarR t u l o( ) faz soltar( ) pressionarNovarnente ( )

    I

    .1

    I

    ri r

    ,-. ,

    "

    quarta-feira, 2 de maio de 2012

  • Classe

    O que o OBJETO conhece chamamos de variveis de instancia ou atributos

    o que o OBJETO faz chamamos de mtodos a parte comportamental

    quarta-feira, 2 de maio de 2012

  • Atividade

    h

    I ,-----

    'r'\

    , . '"" 1 ,

    '::1...,..-.

    I - 1

    "1 ' -., ';1' . .,. ;:,J----1

    ,I I

    1-Jr"

    - 0 J--

    classes '? objetos

    As coisas que um objeto conhece sobre si mesmo se chamam - varive is de instncia As coisas que um objeto pode fazer se chamam - mtodos variveis de

    instncia (estado)

    mtodos (comportamento)

    Cano

    ttulo artista

    configurarTtulo( ) configurarArtista( ) rep roduzir ( )

    -As coisas que um objeto conhece sobre ele so chamadas d variveis de instncia. Elas representam o estado de um objeto (os dados) e podem ter valores exclusivos para cada objeto desse tipo. , Aponte seu lpis Considere instncia como outra maneira de dizer objeto.

    Preencha com o que um objeto televiso pode ter que saber e fazer. Televiso

    conhece

    faz

    As coisas que um objeto faz so chamadas de mtodos. Quando projetar uma classe, voc pensar nos dados que um objeto ter que conhecer sobre si mesmo e tambm projetar os mtodos que operaro sobre esses dados. comum um objeto ter mtodos que leiam ou gravem os valores das variveis de instncia. Por exemplo, os objetos Despertador tm uma varivel de instncia que armazena a hora de despertar e dois mtodos que capturam e configuram essa hora.

    li li variveis de instncia (estado)

    Portanto, os objetos tm variveis de instncia e mtodos, mas essas variveis de instncia e mtodos so projetadas como parte da classe. I!

    mtodos (comportamento)

    Qual a diferena entre uma classe e um objeto? Co

    tamanho r aa

    uma classe

    muitos objetos

    Olhe dessa forma ...

    E T E Nome polimorfismo Telefone 555-0343

    Uma classe no um objeto . (Mas usada para constru-los.) Uma classe o projeto de um objeto. Ela informa mquina virtual como criar um objeto desse tipo especfico. Cada objeto criado a partir dessa classe ter seus prprios valores para as variveis de instncia da classe. Por exemplo, voc pode usar a classe Button para criar vrios botes diferentes, e cada boto poder ter sua prpria cor, tamanho, forma, rtulo e assim por diante.

    Um objeto seria como um registro de sua agenda de endereos. Uma analogia que poderamos usar para os objetos seria um conjunto de fichas Rolodex no utilizadas. Todas as fichas tem os mesmos campos em branco (as variveis de instncia). Quando voc preencher uma ficha , estar criando uma instncia (objeto), e as entro.das que criar nessa ficha representaro seu estado. Os mtodos da classe so as coisas que voc pode fazer com uma ficha especfica; obterNome( ), alterarNome( ), configurarNome( ), todos poderiam ser mtodos da classe Rolodex. Portanto, todas as fichasfzem. as mesmas coisas (obterNome( ). alterarNome( ), etc.) , mas cada uma conhece coisas exclusi vas sobre si mesma.

    25 .. _--------r--.

    quarta-feira, 2 de maio de 2012

  • um grupo de mtodos sem nenhuma implementao que d a liberdade de se criar elementos que possam se comunicar e trocar mensagens. Uma classe em java pode-se utilizar de vrias interfaces ao mesmo tempo.

    Interface

    quarta-feira, 2 de maio de 2012

  • public interface Veiculo {

    boolean ligar(); boolean desligar();

    }public class Carro implements Veiculo{

    public boolean ligar(){...}

    Exemplo

    quarta-feira, 2 de maio de 2012

  • Forma com que uma classe possa herdar os comportamentos de outra classe, no herda os atributos apenas os mtodos. Em java existe apenas a herana simples.

    Herana

    quarta-feira, 2 de maio de 2012

  • public abstract class Veiculo { ..... }

    public class Carro extends Veiculo {

    .....

    Exemplo

    quarta-feira, 2 de maio de 2012

  • Forma de abstrao em que possvel utilizar uma classe pai ou interface como referencia do objeto. Com isso possvel se utilizar de chamadas polimorficas sem a necessidade de identificar qual classe realmente se esta trabalhando.

    Polimorfismo

    quarta-feira, 2 de maio de 2012

  • public interface Veiculo { boolean ligar(); boolean desligar();}public class Carro implements Veiculo{

    ....} Main{

    Veiculo c = new Carro(); c.ligar();

    Exemplo

    quarta-feira, 2 de maio de 2012

  • public abstract class Veiculo { public boolean ligarVeiculo(){} public boolean desligarVeiculo(){}}public class Carro extends Veiculo{

    ....} Main{

    Veiculo c = new Carro(); c.ligar();

    Exemplo

    quarta-feira, 2 de maio de 2012

  • Utilizando se da atividade anterior(Carro,Motor) cria uma interface Veiculo com os seguintes mtodos:

    boolean ligar(); boolean desligar(); boolean andar(); boolean parar();

    Atividade

    quarta-feira, 2 de maio de 2012