Você está na página 1de 22

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

Conceitos (cont.)

- Exemplos:

Conceitos (cont.) - Exemplos: 08/05/2002 3
Conceitos (cont.) - Exemplos: 08/05/2002 3
Conceitos (cont.) - Exemplos: 08/05/2002 3
Conceitos (cont.) - Exemplos: 08/05/2002 3

Conceitos (cont.)

- Exemplos:

Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4
Conceitos (cont.) - Exemplos: Automóvel 08/05/2002 4

Automóvel

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.

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]

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.

Círculo

R

R (x, y)

(x, y)

Exemplo

Abstração Atributos
Abstração
Atributos

Círculo

Raio: Real

x : Real

y : Real

Mover(x, y) Aumentar(R)

Classe
Classe

Operações

Exemplo (cont.)

Círculo

Raio: Real

x : Real

y : Real

Mover(x, y) Aumentar(R)

Real y : Real Mover( ∆ x, ∆ y) Aumentar( ∆ R) Dados privados Mover(∆x, ∆y)
Dados privados Mover(∆x, ∆y) Raio: Real x : Real y : Real Funções membro públicas
Dados privados
Mover(∆x, ∆y)
Raio: Real
x : Real
y : Real
Funções membro
públicas
Aumentar(∆R)

Geralmente, funções são o único meio de acesso as atributos da classe!!

Exemplo (cont.)

Definição para dados privados Círculo Raio: Real x : Real Em C++ fica Definição para
Definição para dados privados
Círculo
Raio: Real
x : Real
Em C++ fica
Definição para dados públicos
y : Real
Mover(∆x, ∆y)
Aumentar(∆R)

Forma Geral de class

class nome-da-classe { private:

dados e funções privadas public:

dados e funções públicas

};

Código Completo da classe Circulo

Código Completo da classe Circulo :: Operador de escopo de resolução 08/05/2002 12
Código Completo da classe Circulo :: Operador de escopo de resolução 08/05/2002 12

::

Código Completo da classe Circulo :: Operador de escopo de resolução 08/05/2002 12

Operador de escopo de resolução

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.

Exemplo Construtor/Destrutor

Exemplo Construtor/Destrutor Declaração do Construtor Declaração do destrutor Ação do Construtor Construtor e
Declaração do Construtor Declaração do destrutor
Declaração do
Construtor
Declaração do
destrutor
Declaração do Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são
Declaração do Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são
Declaração do Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são
Declaração do Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são
Ação do Construtor
Ação do
Construtor
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na
Construtor Declaração do destrutor Ação do Construtor Construtor e Destrutor não são chamados explicitamente na

Construtor e Destrutor não são chamados explicitamente na função principal!

Operações de Entrada e Saída

- cout: usado para escrever em tela. Similar ao printf

Ex: printf(“Teste”); printf(“n = %d”, n);

ao printf Ex: printf(“Teste”); printf(“n = %d”, n); cout << “Teste”; cout << “n = “
ao printf Ex: printf(“Teste”); printf(“n = %d”, n); cout << “Teste”; cout << “n = “

cout << “Teste”; cout << “n = “ << n;

-cin: usado para ler uma entrada do teclado. Similar ao scanf

Ex: scanf(“%d”, &a)

: usado para ler uma entrada do teclado. Similar ao scanf Ex: scanf(“%d”, &a) cin >>

cin >> a;

Exemplo: Pilha

Colocar

Elemento

Colocar

Elemento

Retirar

Elemento

Colocar

Elemento

Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16

Colocar

Elemento

Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16

Colocar

Elemento

Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar Elemento 08/05/2002 16
Colocar Elemento Colocar Elemento Retirar Elemento Colocar Elemento Colocar Elemento Colocar 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!
Sobrecarga do Construtor
O mesmo nome de função, mas
executam ações diferentes!
O mesmo nome de função, mas executam ações diferentes! Compilador é responsável pela decisão de qual
O mesmo nome de função, mas executam ações diferentes! Compilador é responsável pela decisão de qual
O mesmo nome de função, mas executam ações diferentes! Compilador é responsável pela decisão de qual
O mesmo nome de função, mas executam ações diferentes! Compilador é responsável pela decisão de qual

Compilador é responsável pela decisão de qual construtor chamar!

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;

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:

Alocação Dinâmica de Memória - Para vetores e matrizes: 08/05/2002 19
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).

Exemplo Fila: Completo

- Situação: Criar uma fila com capacidade n (n informado pelo usuário).

Criar uma fila com capacidade n (n informado pelo usuário). 1 Colocar elemento Tempo 2 1
1
1

Colocar elemento

Tempo

2

1

Tempo 2 1 Colocar elemento

Colocar elemento

3

2

1

3 2 1 Colocar elemento

Colocar elemento

3

2

 
 

Retirar elemento

 

Herança

- Classe Carro e Subclasse Ferrari

Carro

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( )

Ferrari : Carro

N_Mulheres_Bonitas: Inteiro

Set_N_MB(Int : Val_N_MB ) Get_N_MB( )