ALUNO: Álvaro Veloso Neto
Linguagens Orientadas a Objeto
1
Conceito de Abstração
• Conhecer apenas as coisas que são indispensáveis para o uso de
algo.
2
Abstração de Processo
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
void ordenaBolha(listaNumeros *lista){
•
•
•
•
•
int main(){
• Facilidade na construção,
leitura e entendimento do
programa.
int i = 0;
int j = 0;
int aux;
for(; i < lista->tamanho; i++){
for(j = i + 1; j < lista->tamanho; j++){
if(lista->elemento[i] > lista->elemento[j]){
aux = lista->elemento[i];
lista->elemento[i] = lista->elemento[j];
lista->elemento[j] = aux;
}
}
}
}
ordenaBolha( &listaImpares);
ordenaBolha( &listaPares);
}
3
Abstração de Dados
•
class funcionario{
•
•
•
•
•
•
•
•
•
private:
int id;
•
•
•
•
•
•
•
•
Tipos de dados já estabelecidos e
operações Sobre eles
–
–
•
public:
float salario;
data dataNascimento;
Ponto-Flutuante
Dados Definidos pelo Usuário
Cliente
–
–
–
Objeto
Interface
Mudanças Centralizadas no Módulo
char* descricaoAtividade();
}
int main(){
funcionario motorista;
funcionario medico;
•
class relatorio{
private:
funcionario motorista;
funcionario medico;
.
.
.
public:
string geraRelatorioFuncionarios();
•
•
motorista.descricaoAtividade();
medico.descricaoAtividade();
}
•
•
}
4
Encapsulamento
• Modularização (dados logicamente relacionados)
–
–
Unidade de Compilação
Programas Independentes para Reuso
5
Paradigma de Orientação a Objeto
• Programação Orientada a Procedimentos
• Programação Orientada a Objeto
6
Linguagens O.O
• Exemplos
–
–
–
–
–
C++
Eiffel
Ada 95
Java
Smalltalk
7
Linguagens O.O
• Herança
– Facilitar o Reuso
– Organização
– Prejudica o Encapsulamento
• Herança Múltipla
8
Linguagens O.O
• Dados Abstratos
– Dados e métodos sobre esses
dados
– Classes
•
•
•
•
•
Variáveis da Instancia (objeto)
Variáveis da Classe
Variáveis Públicas
Variáveis Privadas
Variáveis Protegidas
•
class funcionario{
•
•
•
•
•
•
•
•
•
protected:
int id;
•
•
•
•
•
•
•
•
•
•
public:
float salario;
data dataNascimento;
char* descricaoAtividade();
}
class estagiario : public funcionario{
private:
char* nomeCurso;
public:
int getId(){
return id;
}
}
9
Linguagens O.O
•
•
•
Polimorfismo
–
Estático
•
–
Funções Sobrepostas
Dinâmico
•
Definição do tipo de forma dinâmica
•
•
•
•
•
•
•
•
•
•
•
class poligono {
public:
void desenhar();
}
class triangulo : public poligono{
public:
void desenhar() { ... };
}
class quadrado : public poligono{
public:
void desenhar() { ... };
}
int main(){
triangulo triang;
quadrado quad;
triang.desenhar();
poligono polig = quad;
polig.desenhar();
•
}
10
Linguagens O.O
• Dados Abstratos
• Encapsulamento
• Herança
• Polimorfismo
• Comunicação Eficiente Entre Objetos
11
C++
• Encapsulamento
– Classes
• Variáveis e Funções
• Função Tipo Constructor e Destructor
• Tipos Incorporados
12
C++
• Herança
– Herança Múltipla
13
C++
• Polimorfismo
– Estático
– Dinâmico
14
Padrões de Projeto O.O
• Designs comprovadamente eficientes.
• Alterações facilitadas.
15
Padrões de Projeto O.O
• Acoplamento Fraco e Coesão Forte.
– Formas de Acoplamento
•
•
•
•
Atributos
Variável local
É subclasse
Implementa uma interface.
– Benefícios
• Classes não são afetadas por mudanças em outras classes.
• São fáceis de compreender isoladamente.
• A migração fica facilitada.
16
Padrões de Projeto O.O
• GoF.
– Membros
•
•
•
•
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
– Livro
• Padrões de Projeto – Soluções Reutilizáveis de Software O.O
17
Padrões de Projeto O.O
• Strategy
– Definição
• “Definir uma família de algoritmos, encapsular cada um, e torná-los
intercambiáveis. Strategy permite mudar os algoritmos independentemente
dos clientes que os usam.” GoF
– Resumindo
• Ter uma interface padrão para diversas estratégias.
18
Padrões de Projeto O.O
• Strategy
19
REFERÊNCIAS
• Conceitos de Linguagens de Programação (Robert W. Sebesta)
• Use a Cabeça! Padrões de Projetos (Eric Freeman, Elisabeth
Freeman)
• Wikipedia
– Paradigma de programação
– Programação procedural
– Orientação a objetos
20
Download

Linguagens Orientadas a Objeto