Orientação a objetos.Caio Argolo Luiz Daud Jorge Roberto
Orientação a objetos.
Caio Argolo Luiz Daud Jorge Roberto
1 - Tipos abstratos de dados
O que é abstração? Empresa x Academia Vamos abstrair? Quais atributos importantes em cada contexto?
Abstração de processos e de dados
Quais são os processos? Quando vieram os dados?
O escalonamento
Como facilitar a vida de um programador? A modularização (processos, containers, módulos E quando a coisa é muito grande? As unidades de compilação! O grande trunfo do escalonamento!!!
Tipos abstratos de dados
É um encapsulamento que inclui somente a representação dos dados de um tipo específico de dado e os subprogramas relacionados a ele. Cuma? Classes e objetos! E assim surgiu a orientação a objetos!
O caso do float!
E ele é um dado abstrato? E quem aceita ele? O que fazemos com ele? A revelação!
Trabalhando com os dados abstratos
As unidades sintáticas. Iteradores – Permissão de acesso a todos os dados do objeto de forma segura (Get e Set); Construtores – Permissão de criação de uma instância do objeto respeitando normas internas do tipo de dado abstrato. Destrutores – Indicadores de descarte de instâncias.
Simula 67
Abstração de dados! Encapsulamento! Garbage collection! Ocultação da informação.
Ada
Abstração de dados! Encapsulamento! Garbage collection! Ocultação da informação. Tipos de dados (private, limited private) Acesso e modificação!
2 - Programação Orientada a Objetos (POO)
Simula Smalltalk O que define se o paradigma é orientação a objetos? Tipos de dados abstratos Herança Vinculação dinâmica
A Herança
Aumentando a produtividade Estabelecimento de um padrão A coexistência de tipos de dados semelhantes Vamos criar então as subclassses! Classe pai = Superclasse Classe filho = Subclasse E esses tais métodos? E essas tais mensagens? Que história é essa de sobrecarga?
Um exemplo de arquitetura
Classe FrenchGothic que tem um método com o estilo de fachada. Suas subclasses terão particularidades nesse método de estilo, cada uma com seus toques especiais. Então as subclasses Reims, Amien e Chartres terão métodos diferentes da classe pai.
Cuidado com a herança...
Jamais limite a liberdade oferecida pela utilização de dados abstratos. Fique atento a hierarquização para não causar dependência! Herança simples - Há somente uma classe pai Herança múltipla - Há várias classes pai C++ & Python O curioso caso do Java! Mas desde quando interfaces são classes?
Interfaces
São pseudo-classes, definem um tipo, métodos e propriedades. As classes que implementarem essa interface deverão adquirir também seus métodos. Não podemos restringir acesso aos membros da interface, isso só é possível nas classes nas quais elas forem implementadas.
Classes abstratas
São classes que podem possuir métodos ou propriedades não implementados quanto alguns já implementados. É o meio termo entre interfaces e classes. Não podem ser instanciadas, apenas utilizadas como superclasses. Durante gerações de herança os métodos podem ou não ser implementados, mas a classe só deixará de ser abstrata quando estiver com todos os métodos implementados.
Polimorfismo
Classes diferentes Métodos de mesmo nome Reutilizando os métodos! E as classes abstratas? A economia de tempo! Pode-se comparar a orientação a objetos a uma sinulação onde a computação é separada entre diferentes computadores. Cada objeto seria um computador que representa um elemento do mundo real, com suas características, métodos e afins.
Um rápido exemplo
public class OperacaoMatematica { calculaCoisa(float a, float b) { } } public class Multiplica extends OperacaoMatematica{ calculaCoisa(float a, float b){ return a*b; } } public class Soma extends OperacaoMatematica{ calculaCoisa(float a, float b){ return a+b; } }
Vinculação estática e dinâmica
Quando nos referimos a vinculação dos métodos aos objetos através das mensagens, a vinculação será dinâmica. Caso o programador opte por vincular estaticamente, estará ganhando tempo de execução em troca de tempo de produção.
Comments