Introdução à Programação Orientada à Objetos
Prof. Daniel Merli Lamosa Maio de 2002
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-”.
- Objeto é a abstração de coisas do mudo real!
* DICMAXI - Dicionário Multimídia Michaelis
08/05/2002
2
Conceitos (cont.) - Exemplos:
08/05/2002
3
Conceitos (cont.) - Exemplos:
Automóvel
08/05/2002
4
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
5
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
6
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
7
Exemplo Círculo Círculo R
(x, y)
Abstração
Raio: Real x : Real y : Real
Classe
Mover(∆x, ∆y) Aumentar(∆R) Atributos Operações
08/05/2002
8
Exemplo (cont.) Dados privados Círculo Raio: Real x : Real y : Real
Mover(∆x, ∆y) Raio: Real x : Real y : Real
Funções membro públicas
Mover(∆x, ∆y) Aumentar(∆R) Aumentar(∆R)
Geralmente, funções são o único meio de acesso as atributos da classe!! 08/05/2002
9
Exemplo (cont.) Definição para dados privados Círculo Raio: Real x : Real y : Real
Em C++ fica
Definição para dados públicos
Mover(∆x, ∆y) Aumentar(∆R)
08/05/2002
10
Forma Geral de class class nome-da-classe { private: dados e funções privadas public: dados e funções públicas };
08/05/2002
11
Código Completo da classe Circulo
::
08/05/2002
Operador de escopo de resolução
12
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
13
Exemplo Construtor/Destrutor Declaração do Construtor
Declaração do destrutor
Ação do Construtor 08/05/2002
Construtor e Destrutor não são chamados explicitamente na função principal!
14
Operações de Entrada e Saída - cout: usado para escrever em tela. Similar ao printf Ex: printf(“Teste”); printf(“n = %d”, n);
cout << “Teste”; cout << “n = “ << n;
-cin: usado para ler uma entrada do teclado. Similar ao scanf Ex: scanf(“%d”, &a)
08/05/2002
cin >> a;
15
Exemplo: Pilha Colocar Colocar Colocar Colocar
Elemento
Elemento
Retirar Elemento
Colocar Elemento
Elemento
Elemento
08/05/2002
16
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
17
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
18
Alocação Dinâmica de Memória - Para vetores e matrizes:
08/05/2002
19
Exemplo Pilha: Completo
- Situação: Criar uma pilha com capacidade n (n informado pelo usuário).
08/05/2002
20
Exemplo Fila: Completo - Situação: Criar uma fila com capacidade n (n informado pelo usuário). Colocar elemento
1 Tempo
08/05/2002
2
1
Colocar elemento
3
2 1
Colocar elemento
3
2
Retirar elemento
21
Herança - Classe Carro e Subclasse Ferrari Carro P_Motor: Real N_Portas : Inteiro Preco : Real
Ferrari : Carro N_Mulheres_Bonitas: Inteiro
Set_P_Motor(Real : Val_P_Motor ) Get_P_Motor( ) Set_N_Portas(Int : Val_ N_Portas) Get_ N_Portas ( )
Set_N_MB(Int : Val_N_MB ) Get_N_MB( )
Set_Preco(Real: Preco) Get_Preco( ) 08/05/2002
22