Introdução à Programação Introdução à Programação Orientada à ObjetosOrientada à Objetos
Prof. Daniel Merli Lamosa
Maio de 2002
08/05/2002 2
ConceitosConceitos
- 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.)Conceitos (cont.)
- Exemplos:
08/05/2002 4
Conceitos (cont.)Conceitos (cont.)
- Exemplos:
Automóvel
08/05/2002 5
Conceitos (cont.)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.)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.)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
ExemploExemplo
R
(x, y)
Círculo
AbstraçãoRaio: Realx : Realy : Real
Mover(x, y)Aumentar(R)
Círculo
Classe
Atributos
Operações
08/05/2002 9
Exemplo (cont.)Exemplo (cont.)
Raio: Realx : Realy : Real
Mover(x, y)Aumentar(R)
Círculo
Raio: Realx : Realy : 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.)Exemplo (cont.)
Raio: Realx : Realy : 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 Forma Geral de classclassclass 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 CirculoCódigo Completo da classe Circulo
:: Operador de escopo de resolução
08/05/2002 13
Construtor e DestrutorConstrutor 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/DestrutorExemplo Construtor/DestrutorDeclaraçã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ídaOperaçõ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: PilhaExemplo: Pilha
Retirar
ElementoColocar
Elemento
Colocar
Elemento
Colocar
Elemento
Colocar
Elemento
Colocar
Elemento
08/05/2002 17
Sobrecarga de funçõesSobrecarga de funções
- Polimorfismo entre ou na classe.
- Um mesmo nome de operação (função) pode realizar diferentes ações!
Sobrecarga do ConstrutorO 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óriaAlocaçã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óriaAlocação Dinâmica de Memória
- Para vetores e matrizes:
08/05/2002 20
Exemplo Pilha: CompletoExemplo Pilha: Completo
- Situação: Criar uma pilha com capacidade n (n informado pelo usuário).
08/05/2002 21
Exemplo Fila: CompletoExemplo 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çaHerança
- Classe Carro e Subclasse Ferrari
P_Motor: RealN_Portas : InteiroPreco : 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