programação orientada a objetos
DESCRIPTION
Apostila de Programação Orientada a Objetos.TRANSCRIPT
Introdução à Programação
Orientada à Objetos
Prof. Daniel Merli Lamosa
Maio de 2002
08/05/2002 2
Conceitos
- O que são Objetos?
- Objeto: *“-1. Tudo que se oferece aos nossos sentidos ou à nossa alma. 2. Coisa
material: Havia na estante vários objetos. 3. Tudo que constitui a matéria de ciências ou artes.
4. Assunto, matéria. 5. Fim a que se mira ou que se tem em vista-”.
* DICMAXI - Dicionário Multimídia Michaelis
- Objeto é a abstração de coisas do mudo real!
08/05/2002 3
Conceitos (cont.)
- Exemplos:
08/05/2002 4
Conceitos (cont.)
- Exemplos:
Automóvel
08/05/2002 5
Conceitos (cont.)
- Objetos possuem 4 características:
- Identidade: 2 objetos são distintos mesmo que todos os valores de seus
atributos sejam iguais.
- Classificação: Objetos com a mesma estrutura de dados (atributos) e
mesmo comportamento (operações) são agrupados em uma classe.
- Polimorfismo: A mesma operação pode atuar de modos diversos em
classes diferentes.
- Herança: Compartilhamento de atributos e operações entre classes com
base em um relacionamento hierárquico.
08/05/2002 6
Conceitos (cont.)
- * “A abordagem baseada em objetos preocupa-se primeiro em
identificar os objetos contidos no domínio da aplicação e depois
em estabelecer os procedimentos relativos a eles. Embora isso
possa parecer mais indireto, o software baseado em objetos
mantém-se melhor à medida que os requisitos evoluem, por se
apoiar na própria estrutura fundamental do domínio da
aplicação, ao invés de apoiar-se nos requisitos funcionais ad
hoc de um único problema.”
* Rumbaugh [94]
08/05/2002 7
Conceitos (cont.)
- 6 Características da Tecnologia Baseada em objetos:
- Abstração: Concentração nos aspectos essenciais, próprios, de uma entidade e em
ignorar suas propriedades acidentais.
- Encapsulamento: Separação dos aspectos externos de um objeto, acessíveis por
outros, dos detalhes internos da implementação que ficam ocultos dos demais.
- Combinação de Dados e Comportamento: Polimorfismo dos objetos.
- Compartilhamento: Compartilhar a estrutura comum (classes) por diversas
subclasses sem redundâncias (Herança).
- Ênfase na Estrutura de Objetos: Especificar o objeto e não como ele é utilizado.
- Sinergia: Seguir todas as características simultaneamente.
08/05/2002 8
Exemplo
R
(x, y)
Círculo
Abstração
Raio: Real
x : Real
y : Real
Mover(∆x, ∆y)
Aumentar(∆R)
Círculo
Classe
Atributos
Operações
08/05/2002 9
Exemplo (cont.)
Raio: Real
x : Real
y : Real
Mover(∆x, ∆y)
Aumentar(∆R)
Círculo
Raio: Real
x : Real
y : Real
Mover(∆x, ∆y)
Aumentar(∆R)
Geralmente, funções são o único meio de acesso as
atributos da classe!!
Dados privados
Funções membro
públicas
08/05/2002 10
Exemplo (cont.)
Raio: Real
x : Real
y : Real
Mover(∆x, ∆y)
Aumentar(∆R)
Círculo
Em C++ fica
Definição para dados privados
Definição para dados públicos
08/05/2002 11
Forma Geral de classclass nome-da-classe {
private:
dados e funções privadas
public:
dados e funções públicas
};
08/05/2002 12
Código Completo da classe Circulo
:: Operador de escopo de resolução
08/05/2002 13
Construtor e Destrutor
- Construtor: Como o encapsulamento de dados é comum, o C++
permite aos objetos serem “inicializados” (iniciados) por si
mesmo quando criados. Por exemplo, alocação dinâmica de
memória.
- Destrutor: Em diversos casos é necessário realizar alguma(s)
ação(ões) para o objeto poder ser destruído. Por exemplo,
“desalocação” dinâmica de memória.
08/05/2002 14
Exemplo Construtor/Destrutor
Declaração do
Construtor
Declaração do
destrutor
Ação do
Construtor
Construtor e Destrutor não são chamados explicitamente
na função principal!
08/05/2002 15
Operações de Entrada e Saída
- cout: usado para escrever em tela. Similar ao printf
Ex: printf(“Teste”); cout << “Teste”;
printf(“n = %d”, n); cout << “n = “ << n;
-cin: usado para ler uma entrada do teclado. Similar ao scanf
Ex: scanf(“%d”, &a) cin >> a;
08/05/2002 16
Exemplo: Pilha
Retirar
Elemento
Colocar
Elemento
Colocar
Elemento
Colocar
Elemento
Colocar
Elemento
Colocar
Elemento
08/05/2002 17
Sobrecarga de funções
- Polimorfismo entre ou na classe.
- Um mesmo nome de operação (função) pode realizar diferentes
ações!Sobrecarga do Construtor
O mesmo nome de função, mas
executam ações diferentes!
Compilador é responsável pela decisão de qual construtor chamar!
08/05/2002 18
Alocação Dinâmica de Memória
- new: Aloca memória suficiente para guardar o valor desejado.
- delete: Desaloca memória reservada por new.
Formato: variavel_ponteiro = new var_tipo;
delete variavel_ponteiro;
08/05/2002 19
Alocação Dinâmica de Memória
- Para vetores e matrizes:
08/05/2002 20
Exemplo Pilha: Completo
- Situação: Criar uma pilha com capacidade n (n informado pelo
usuário).
08/05/2002 21
Exemplo Fila: Completo
- Situação: Criar uma fila com capacidade n (n informado pelo
usuário).
1
2
3
3
1
2
2
1
Tempo
Colocar elemento
Colocar elemento
Retirar elemento
Colocar elemento
08/05/2002 22
Herança
- Classe Carro e Subclasse Ferrari
P_Motor: Real
N_Portas : Inteiro
Preco : Real
Set_P_Motor(Real : Val_P_Motor )
Get_P_Motor( )
Set_N_Portas(Int : Val_ N_Portas)
Get_ N_Portas ( )
Set_Preco(Real: Preco)
Get_Preco( )
Carro
N_Mulheres_Bonitas: Inteiro
Set_N_MB(Int : Val_N_MB )
Get_N_MB( )
Ferrari : Carro