Académique Documents
Professionnel Documents
Culture Documents
Suporte para
a Programao
Orientada a Objetos
Conceitos de Linguagens de Programao Robert W. Sebesta
Tpicos do Captulo 12
Introduo
Programao orientada a objetos
Questes de projeto para programao orientada a objetos
Suporte para programao orientada a objetos em Smalltalk
Suporte para programao orientada a objetos em C++
Suporte para programao orientada a objetos em Java
Suporte para programao orientada a objetos em C#
Suporte para programao orientada a objetos em Ada 95
Suporte para programao orientada a objetos em Ruby
Implementao de construes orientadas a objetos
Conceitos de Linguagens de Programao Robert W. Sebesta
Introduo
Muitas linguagens de programao orientadas a objeto
Algumas suportam programao procedural e orientada a dados (por
exemplo, Ada 95 e C++)
Algumas suportam programao funcional (por exemplo, CLOS)
Linguagens mais novas no suportam outros paradigmas, mas usam suas
estruturas imperativas (por exemplo, Java e C#)
Algumas so linguagens de programao orientadas a objetos puras (por
exemplo, Smalltalk e Ruby)
Conceitos de Linguagens de Programao Robert W. Sebesta
Herana
Aumento de produtividade pode ocorrer com o reso
Tipos de dados abstratos so difceis de reusar sempre precisam
de mudanas
Definies de tipos de dados abstratos so todas independentes e no
mesmo nvel
Herana permite novas classes definidas nos termos das j existentes
Conceitos de Linguagens de Programao Robert W. Sebesta
Vinculao dinmica
Uma varivel polimrfica pode ser definida em uma classe que capaz
de referenciar (ou apontar) os objetos da classe e objetos de qualquer
dos seus descendentes
Quando uma hierarquia de classe inclui as classes que sobrescrevem
mtodos e esses mtodos so chamados por uma varivel polimrfica,
a ligao para o mtodo correto ser dinmica
Conceitos de Linguagens de Programao Robert W. Sebesta
Questes de projeto
A exclusividade dos objetos
As subclasses so subtipos?
Verificao de tipos e polimorfismo
Herana simples e mltipla
Alocao e liberao de objetos
Vinculao esttica e dinmica
Classes aninhadas
Inicializao de objetos
Conceitos de Linguagens de Programao Robert W. Sebesta
As subclasses so subtipos?
Um relacionamento -um(a) se mantm entre uma classe derivada e
sua classe pai?
Se uma classe derivada um(a) classe pai, ento os objetos da classe
derivada devem expor todos os membros que so expostos por objetos da
classe pai
Uma classe derivada um subtipo se tiver um relacionamento -um(a)
com sua classe pai
Os mtodos da subclasse que sobrescrevem mtodos da classe pai
devem ser compatveis em relao ao tipo com seus mtodos sobrescritos
correspondentes
Conceitos de Linguagens de Programao Robert W. Sebesta
Classes aninhadas
Se uma nova classe necessria em apenas uma classe, no h razo
para definir para que ele possa ser vista por outras classes
Pode a nova classe ser aninhada dentro da classe que a usa?
Em alguns casos, a nova classe est aninhada em um subprograma, em
vez de em outra classe
Questes de projeto:
Quais recursos da classe aninhadora so visveis para a classe aninhada
e vice-versa?
Conceitos de Linguagens de Programao Robert W. Sebesta
Inicializao de objetos
Quando um objeto de uma subclasse criado, a inicializao associada
do membro herdado da classe pai implcita ou o programador deve
lidar explicitamente com ela?
Conceitos de Linguagens de Programao Robert W. Sebesta
Reexportao em C++
Um membro que no acessvel em uma subclasse (por causa da
derivao privada) pode ser declarado para ser visvel usando um
operador de resoluo de escopo (::), por exemplo,
class subclass_3 : private base_class {
base_class :: c;
}
Conceitos de Linguagens de Programao Robert W. Sebesta
Reexportao (continuao)
Uma motivao para usar derivao privada
Uma classe fornece membros que devem ser visveis, ento eles so
definidos para serem membros pblicos. Uma classe derivada adiciona
alguns novos membros, mas no quer que seus clientes vejam os
membros da classe pai, mesmo que tivessem de ser pblicos na definio
da classe pai
Conceitos de Linguagens de Programao Robert W. Sebesta
Mtodos podem ser difinidos como final (no pode ser sobrescrito)
Conceitos de Linguagens de Programao Robert W. Sebesta
Resumo
A programao orientada a objetos envolve trs conceitos fundamentais: tipos de dados,
abstratos, herana e vinculao dinmica
Questes de projeto: exclusividade de objetos, subclasses e subtipos, verificao de
tipo e polimorfismo, herana simples e mltipla, vinculao dinmica, liberao explcita
ou implcita de objetos e classes aninhadas
Smalltalk uma linguagem orientada a objetos pura
C++ tem dois sistemas de tipos (hbrida)
Java no uma linguagem hbrida como C++; suporta apenas programacao orientada
a objetos
C# baseada em C++ e Java
Ruby uma nova linguagem orientada a objetos pura
JavaScript no uma linguagem de programao orientada a objetos, mas fornece
variaes interessantes
Implementar linguagens de programao orientada a objetos envolve novas estruturas
de dados