Documente Academic
Documente Profesional
Documente Cultură
Professor Rodrigo Freitas Silva Livro: Conceitos de Linguagens de Programao - 5o Ed. ca Autor: Robert W. Sebesta
Cincia da Computao/UFT e ca
17 de maio de 2011
1 / 48
Eiel e Java so L.P. OO, mais utilizam estruturas imperativas a CLOS uma verso OO do LISP e a C++ e Ada 95 suportam programao orientada por ca procedimentos (paradigma imperativo), e tambm e programao OO ca
2 / 48
Alguns consideram a Smalltalk a unica L.P. puramente OO Uma L.P. OO deve oferecer trs recursos essenciais e
1 2 3
3 / 48
Conceitos de Orientao a Objeto ca Tipos de Dados Abstratos em L.P. OO so chamados de a classes Instncias de classes so chamados objetos a a Uma classe denida pela herana de outra uma classe c e derivada ou subclasse Uma classe da qual a nova derivada a superclasse e e
4 / 48
Conceitos de Orientao a Objeto ca Subprogramas que denem operaes para os objetos so co a chamados de mtodos e Chamada a um mtodo chamado de mensagens e e O conjunto de mtodos de um objeto chamado de protocolo e e de mensagem ou interface de mensagem
Uma mensagem deve ter duas partes: o nome do mtodo e chamado e o objeto destino
Membros de dados so os dados denidos em uma denio a ca de classe Funes membro so as funes determinadas em uma co a co denio de classe ca
5 / 48
Como uma herana permite que a nova classe seja denida c em termos de outra existente?
Entidades e funcionalidades so herdados a Poss adicionar novas entidades vel Poss modicar mtodos herdados vel e
O novo mtodo sobrepe-se (overrride) a verso herdada e o a
6 / 48
Herana c Herana Simples: a classe criada por meio de herana possui c c uma unica superclasse Herana Mltipla: a classe possui mais de uma superclasse c u Desvantagem da herana como meio de aumentar a c reutilizao ca
Cria uma dependncia entre as classes em uma hierarquia de e herana Complica a manuteno c ca
7 / 48
Polimorsmo e Vinculao Dinmica ca a Terceira caracter stica das L.P. OO: polimorsmo proporcionado pela vinculao dinmica ca a Variveis polimrcas so denidas na superclasse e so a o a a capazes de referenciar (ou apontar para) objetos da classe e objetos de seus descendentes Quando uma classe hierarquizada inclui um mtodo e sobreposto, e tais mtodos so chamados por uma varivel e a a polimrca, a vinculao para o mtodo correto ser dinmica o ca e a a Um propsito permitir que os programas sejam mais o e facilmente estendidos durante o desenvolvimento e durante a manuteno ca
8 / 48
1 2 3 4 5 6 7
Exclusividade de objetos As subclasses so subtipos? a Herana de implementao e de interface c ca Vericao de tipos e polimorsmo ca Herana simples e mltipla c u Alocao e desalocao de objetos ca ca Vinculao dinmica e esttica ca a a
9 / 48
Exclusividade de Objetos
1
Tudo um objeto e
Vantagem: Elegncia e uniformidade pura da linguagem a Desvantagem: Operaes mais lentas, pois so feitas pelo co a processo de passagem de mensagens, at mesmo um simples e objeto Exemplo em Smalltalk: x + 7
O objeto 7 enviado como parmetro do mtodo + do objeto e a e x
10 / 48
Exclusividade de Objetos
2
Incluir uma estrutura de tipos ao estilo imperativo para os tipos escalares, mais fazer todo restante objeto
Vantagem: Operaes rpidas para objetos simples e um co a pequeno sistema de tipos Desvantagem: Ainda alguma confuso devido aos dois sistema a de tipos
11 / 48
As subclasses so subtipos? a Uma classe chamada subtipo se poder adicionar somente e variveis e mtodos, e se sobrepor a mtodos herdados de a e e maneira compat vel O mtodo que sobrepe pode substituir o sobreposto sem e o causar erros de tipo Nmero idntico de parmetros e idnticos tipos de parmetro u e a e a e retorno, garantem a compatibilidade Nossa denio de subtipo desautoriza a existncia de ca e entidades na superclasse que no sejam herdadas pela a subclasse
12 / 48
Vericao de Tipos e Polimorsmo ca O polimorsmo denido pelo uso de um ponteiro (ou de e uma referncia) polimrco, para acessar um mtodo cujo e o e nome sobreposto na hierarquia de classes e A vinculao de mensagens a mtodos enviados por variveis ca e a polimrcas deve ser dinmica o a Polimorsmo requer checagem dinmica de tipos dos a parmetros e o valor de retorno dos mtodos a e
Checagem dinmica de tipos mais custosa e possui maior a e atraso na deteco de erros ca
Se mtodos sobrepostos esto restritos a ter os mesmos tipos e a de parmetros e tipo de retorno, a checagem pode ser esttica a a
13 / 48
Herana Simples e Mltipla c u E permitido herana mltipla (alm da simples)? c u e O propsito de uma herana mltipla permitir uma nova o c u e classe herdar de duas ou mais que descrevem abstraes co distintas Desvantagens da herana mltipla: c u
Complexidade de implementao ca (relacionada a problemas como coliso de nomes) a Potencial inecincia: Exige uma operao extra para cada e ca mtodo vinculado dinmicamente e a
14 / 48
C herda nomes duplicados de A ou B? Qual verso de nome herdado (denido em Z) C utiliza? a Aquele herdado por A ou por B?
15 / 48
Estaticamente pelo compilador Objetos dinmicos na pilha em tempo de execuo a ca Criados explicitamente no monte com o operador new
Vantagens: Simplica operaoes de atribuio de objetos c ca Objetos podem ser desreferenciados implicitamente Outra questo: desalocao impl a ca e cita, expl cita ou ambas
16 / 48
Caracter sticas Gerais: Histria o Smalltalk (Golberg e Robson, 1989 - Smalltalk-80 the Language) L.P. OO denitiva (original) Desenvolvida no Xerox PARC nos anos 70 Smalltalk era hospedado no Xerox Alto e consistia em:
Um Sistema Operacional, Compilador Um ambiente de desenvolvimento integrado Um examinador de classes (class browser) Suporte para uma GUI baseada em mouse
Caracter sticas Gerais: Histria o Steve Jobs, aps visitar o Xerox PARC, usou a GUI baseada o em Smalltalk como base para o projeto das GUIs para os computadores Apple Lisa e Macintosh A Microsoft licenciou essa mesma interface da Xerox como base para o Windows Como L.P., Smalltalk era baseada na linguagem de simulao ca Simula 67 Smalltalk teve um decl nos anos 90 aps o nio o desenvolvimento de outras L.P. orientadas a objeto, como o Eiel e o Java
18 / 48
Todos objetos possuem memria local o Todas as computaes so feitas atravs de objetos enviando co a e mensagens para objetos No possui aparncia das L.P. imperativas a e Todos objetos so alocados no monte e referenciados por a variveis de referncia a e Desalocao impl ca e cita
(processo de coleta de lixo para reivindicao de armazenamento) ca
19 / 48
Expresses o Os mtodos Smalltalk so constru e a dos a partir de expresses o Uma expresso especica um objeto que ser o valor da a a expresso a Quatro tipos de expreses: o
1 2 3 4
20 / 48
Expresses: Literais o Literais mais comuns: nmeros, cadeias e palavras-chave u Nmeros so objetos literais que representam valores u a numricos e Literais numricos so objetos caracterizados por seu e a protocolo de mensagem e pelos resultados produzidos Uma literal inteira possui uma classe inteira
Fornece mtodos para os operadores aritmticos usuais, entre e e outras coisas
21 / 48
22 / 48
23 / 48
Expresses: Expresses de Mensagem o o Mensagens tm a forma de expresses e o Meio de comunicao entre objetos e so a maneira de ca a solicitar operaes de um objeto co Expresses de mensagem possuem duas partes: o
1 2
Os parmetros so como outras variveis: ponteiros para a a a outros objetos Expresses de mensagem = mensagem o
24 / 48
25 / 48
Expresses: Mensagens Unrias o a Tipo mais simples No h parmetros a a a Possui duas partes:
1 2
O objeto do qual a mensagem deve ser enviada O mtodo desse objeto receptor e
Exemplo:
primeiroAngulo
Objeto
seno
mtodo chamado e
26 / 48
Exemplo:
21 + 2
Essa mensagem passa o objeto parmetro 2 para o mtodo + a e do objeto 21 O objeto 2 utilizado para a construo do novo objeto 23 e ca Se o sistema j tiver o objeto 23, o resultado ser uma a a referncia a ele, ao invs de um novo objeto e e
28 / 48
Expresses: Expresses palavra-chave o o Uma ou mais palavras-chave: organizar a correspondncia e entre os parmetros reais da mensagem e os formais do a mtodo e Selecionam o mtodo ao qual a mensagem dirigida e e Exemplo: primeiroVetor at: 1 put: 5
Essa mensagem envia os objetos 1 e 5 a um mtodo, at:put:, e do objeto primeiroVetor As palavras-chave at: e put: identicam os parmetros formais a do mtodo no qual 1 e 5 devem ser enviados e
Expresses o Expresses de mensagens pode consistir de combinaes de o co diferentes tipos de expresses de mensagens o Expresses unrias tm precedncia mais alta, seguida pelas o a e e binrias e pelas de palavra-chave a As expresses unrias e binrias associam-se da esquerda para o a a a direita Pode se utilizar parenteses para forar a ordem de avaliao c ca dos operadores Mais exemplos de mensagens em Smalltalk:
1 2
31 / 48
As variveis no so tipicadas a a a
Qualquer nome pode ser vinculado a qualquer objeto
32 / 48
Os programas Smalltalk so mais lentos a (Se comparados a programas das L.P. imperativas) Vinculao dinmica impede que erros de tipos sejam ca a detectados at a execuo e ca A interface com o usurio teve impacto na computao a ca Tais itens dominam os sistemas contemporneos a
Uso integrado de janelas Uso de dispositivos apontados por mouse Uso de menus secundrios ou suspensos a
33 / 48
Caracter sticas Gerais Todos dados so objetos, exceto tipos primitivos a (booleano, caractere e numrico) e Todos tipos primitivos possuem uma classe envoltrio o (wrapper ) que armazenam um dado valor
Ex: Armazenar um tipo primitivo em uma estrutura de dados pr-denida tipo Vector e Vector pode conter somente objetos
1 meuVetor . a d d E l e m e n t ( new I n t e g e r ( 1 0 ) ) ;
35 / 48
Herana c Java suporta diretamente somente herana simples c Inclui uma classe abstrata (interface) que proporciona alguns dos benecios de herana mltipla c u
Interface similar a uma classe e Pode conter somente constantes nomeadas e declaraes (no co a denies) de mtodos co e Uma interface dene somente a especicao de uma classe ca
36 / 48
Classes Pacotes
Pacote um encapsulamento lgico e o Em uma denio de classe, ela pode especicar ser ca pertencente a um pacote
Se a classe no especica um pacote, colocada em um a e pacote no nomeado a
Qualquer mtodo ou varivel que no possui um modicador e a a de acesso possui escopo de pacote
Vis veis em todo o pacote do qual so declarados a
37 / 48
Public
Os membros so vis a veis por todas as outras classes, subclasses e pacotes do projeto Java Acessados por referncia ao objeto e
Private
O membro vis apenas para a classe em que este se e vel encontra
Protected
Os membros so vis a veis por todas as outras classes e subclasses que pertencem ao mesmo pacote
38 / 48
39 / 48
Vinculao esttica tambm usada se o mtodo for ca a e e e declarado como static ou private
No permitindo que o mtodo seja sobrecarregado a e
40 / 48
Avaliao ca O projeto POO em Java similar ao C++, com algumas e excesses o No permite classes sem pai a No suporta programao procedural a ca Vinculao dinmica como abordagem normal para vincular ca a chamada de mtodo a denies de mtodo e co e Utiliza interfaces para prov uma forma simples de suportar e herana mltipla c u
41 / 48
Caracter sticas Gerais C++ evolui a partir do C e do SIMULA 67 Meta de projeto oferecer suporte a POO e Variveis podem ser alocadas estaticamente, na pilha ou no a monte com o operador new A desalocao explicita necessria, utilizando o operador ca e a delete Todas as classes C++ incluem um mtodo construtor e Incluem tambm um mtodo destrutor, chamado e e implicitamente quando o objeto deixa de existir
42 / 48
Caracter sticas Gerais Inclui classes e estruturas Classes so similar as classes Java a Estruturas so construes menor poderosas a co
Vinculao dinmica na pilha ca e a No h herana a a c
43 / 48
Herana c Um classe C++ pode ser lha de uma superclasse Diferentemente do Smalltalk, C++ pode possuir uma classe sem uma superclasse Os membros de classe podem ser public, private ou protected Os private so acess a veis somente pelas funoes-membro e c amigas da classe Os public so acess a veis por qualquer funo ca Os protegidos so como os privados, exceto em classes a derivadas
Classes derivadas podem modicar a acessibilidade a seus membros herdados
44 / 48
Vinculao Dinmica ca a As funes membro so vinculadas estaticamente co a Funes membro vinculadas dinamicamente devem ser co declaradas como virtuais
O mtodo da classe base deve ter a palavra reservada virtual e Os mtodos correspondente nas classes derivadas so e a sobrecarregados
45 / 48
Avaliao ca O C++ oferece herana mltipla, o Smalltalk s a simples c u o No C++ o programador pode especicar se a vinculao ca e esttica ou dinmica a a E uma L.P. grande e complexa Filosoa incluir POO e a base de usurios do C e a Preserva a ecincia do C e oferece as vantagens da POO e
46 / 48
Chamber e Ungar (1991) em Making Pure Object-Oriented Language Practical: A Smalltalk executou um conjunto particular de benchmarks em somente 10% da velocidade em que foram executados em um compilador C otmizado
47 / 48
17 de maio de 2011
48 / 48