Sunteți pe pagina 1din 48

Linguagens de Programao: ca Suporte para Programao Orientada a Objeto ca

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

Suporte para Programao Orientada a Objeto ca


Introduo ca

Muitas Linguagens de Programao Orientada a Objeto ca (POO)


O conceito de POO se iniciou no SIMULA 67 Smalltalk 80 foi a 1o L.P. a oferecer suporte completo a POO
L.P. puramente Orientada a Objeto (OO) Todos os dados so objetos a

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

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

Introduo ca Possui suas ra no SIMULA 67 zes


No amplamente desenvolvida at a Smalltalk verso 80 a e a

Alguns consideram a Smalltalk a unica L.P. puramente OO Uma L.P. OO deve oferecer trs recursos essenciais e
1 2 3

Tipos de Dados Abstratos Herana c Polimorsmo

3 / 48

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

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

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

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

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

Herana c Como a herana aumenta a produtividade? c


Reutilizao: os TDA exigem na maioria das vezes pequenas ca modicaes para serem reutilizveis co a

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

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

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

Suporte para Programao Orientada a Objeto ca


Programao Orientada a Objeto ca

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

Exclusividade de Objetos
2

Manter um sistema de tipicao imperativo completo e ca adicionar o modelo de objetos


Alternativa ao uso exclusivo de objetos Comum nas L.P. imperativas nas quais foi adicionado suporte a OO Vantagem: Operaes mais rpidas para objetos simples co a Desvantagem: Resulta em uma L.P. maior cuja estrutura de tipos confusa e

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

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

Vantagem: Muitas vezes conveniente sua utilizao e ca

14 / 48

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

Herana Simples e Mltipla: Exemplo de Herana Diamante c u c

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

Suporte para Programao Orientada a Objeto ca


Questes de Projeto para Linguagens Orientada a Objeto o

Alocao e Desalocao de Objetos ca ca Os objetos podem ser alocados:


1 2 3

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

Suporte para Programao Orientada a Objeto ca


Viso Geral do Smalltalk a

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

Parte do sistema Smalltalk teve desenvolvimento escrito em Smalltalk


Usurio pode modic-lo para suas necessidades a a
17 / 48

Suporte para Programao Orientada a Objeto ca


Viso Geral do Smalltalk a

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

Suporte para Programao Orientada a Objeto ca


Viso Geral do Smalltalk a

Caracter sticas Gerais Smalltalk uma L.P. puramente OO e


Tudo um objeto e
Elegncia simples e uniformidade de projeto a

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

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

Literais Nomes de variveis a Expresses de mensagem o Expresses de bloco o

20 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

Expresses: Literais o Uma literal de cadeia : e


Sintaticamente, uma sequncia de caracteres delimitados por e apstofros o Semanticamente, um objeto capaz de responder a mensagens que acessam caracteres individuais, que substituem subcadeias e que executam comparaes com outras cadeias co

Uma palavra-chave um identicador e


Pode ser denido pelo usurio, sucedido por dois pontos a

22 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

Expresses: Variveis o a Um nome em Smalltalk sintaticamente como nas outras L.P. e


Sequencia de letras e/ou d gitos que se inicia por uma letra

As variveis podem ser privadas ou compartilhadas a Variveis em Smalltalk so referncias a a e


Podem referir somente a objetos ou classes

As variveis no possuem tipo a a (qualquer varivel pode apontar para um objeto) a

23 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

Especicao do objeto que deve receber a mensagem ca A prpria mensagem o

Os parmetros so como outras variveis: ponteiros para a a a outros objetos Expresses de mensagem = mensagem o

24 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

Expresses: Expresses de Mensagem o o Trs categorias de mensagens e


1 2 3

Unrias a Binrias a Palavra-chave

25 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

Expresses: Mensagens Binrias o a Unico parmetro a


Um objeto passado ao mtodo especicado do objeto receptor e especicado

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

Nmeros so objetos com operaes, denidas na classe u a co Integer


27 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

Expresses: Mensagens Binrias o a Exemplo: soma / cont


O objeto referenciado pela varivel cont passado como a e parmetro para o mtodo / do objeto referenciado por soma a e

28 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

Mtodos palavra-chave no possuem nomes e a


So identicados por suas palavra-chave a No exemplo acima, a concatenao at:put: chamada seletor ca e
29 / 48

Suporte para Programao Orientada a Objeto ca


Introduo a Linguagem Smalltalk ca

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

total - 3 * divisor primeiroVetor at: indice - 1 put: 77


30 / 48

Suporte para Programao Orientada a Objeto ca


Recursos em Grande Escala da Smalltalk

Vericao de Tipos e Polimorsmo ca Vinculao dinmica de mensagens a mtodos: ca a e


primeiramente, a busca feita na classe ao qual o objeto e pertence Se no encontrar, a busca feita na superclasse dessa classe e a e assim por diante At a classe de sistema, Object, que no possui superclasse e a Object a raiz da rvore de derivao de classes e a ca

31 / 48

Suporte para Programao Orientada a Objeto ca


Recursos em Grande Escala da Smalltalk

Vericao de Tipos e Polimorsmo ca A vericao de tipos dinmica ca e a


Unico erro de tipo ocorre quando uma mensagem enviada a e um objeto que no possui mtodo coincidente (ou localmente a e ou por herana) c Objetivo de assegurar que a mensagem coincida com um mtodo e

As variveis no so tipicadas a a a
Qualquer nome pode ser vinculado a qualquer objeto

32 / 48

Suporte para Programao Orientada a Objeto ca


Avaliao da Smalltalk ca

A Smalltalk uma L.P. pequena e


Apesar de possuir um sistema grande

Programao feita utilizando somente uma hierarquia de ca classes


Constru utilizando-se herana, objetos e passagem de da c mensagens

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

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 ) ) ;

addElement um mtodo de Vector e e Integer a classe envoltrio para int e o 34 / 48

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

Caracter sticas Gerais Todos objetos possuem alocao heap-dynamic explicitamente ca


Referenciados por variveis de referencia a A maioria alocada com o operador new e O mtodo nalize implicitamente chamado e e Coleta de lixo usada para reclamao de armazenamento e ca

35 / 48

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

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

Mdodos podem ser denidos como nal e


O mdodo no pode ser sobrecarregado e a

36 / 48

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

Encapsulamento Dois tipos de encapsulamento:


1 2

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

Visibilidade dos Modicadores


1

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

Package - (nenhum modicador especicado) e


Classes do mesmo pacote possuem acesso aos membros de outras classes diretamente por referncia ao objeto e

Protected
Os membros so vis a veis por todas as outras classes e subclasses que pertencem ao mesmo pacote
38 / 48

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

Visibilidade dos Modicadores


Modicador Public Protected Sem modicador Private Classe Sim Sim Sim Sim Pacote Sim Sim Sim No a Subclasse Sim Sim No a No a Globalmente Sim No a No a No a

39 / 48

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

Vinculao Dinmica ca a Todas as chamadas a mtodos so vinculadas dinamicamente e a


Exceto se for denido como nal
O mtodo no pode ser sobreposto e a Vinculaoes so estticas c a a

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em Java

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Suporte para Programao Orientada a Objeto ca


Suporte para POO em C++

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

Linguagens de Programao: ca Suporte para Programao Orientada a Objeto ca


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

48 / 48

S-ar putea să vă placă și