You are on page 1of 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

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
Raio: Real
R
Abstração x : Real Classe
(x, y) y : Real
Mover(∆x, ∆y)
Aumentar(∆R)
Atributos

Operações

08/05/2002 8
Exemplo (cont.)
Dados privados
Mover(∆x, ∆y)
Círculo
Raio: Real
x : Real Raio: Real
x : Real Funções membro
y : Real
y : Real 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 Em C++ fica Definição para dados públicos
y : Real
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

:: Operador de escopo de resolução

08/05/2002 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

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

08/05/2002 14
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 15
Exemplo: Pilha
Colocar Colocar
Retirar
Colocar Elemento Elemento
Elemento
Colocar Elemento

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!

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

1 Colocar elemento

Tempo 2 1 Colocar elemento

3 2 1 Colocar elemento

3 2 Retirar elemento

08/05/2002 21
Herança
- Classe Carro e Subclasse Ferrari

Carro Ferrari : Carro
P_Motor: Real
N_Portas : Inteiro N_Mulheres_Bonitas: Inteiro
Preco : Real
Set_P_Motor(Real : Val_P_Motor )
Get_P_Motor( )
Set_N_MB(Int : Val_N_MB )
Set_N_Portas(Int : Val_ N_Portas)
Get_N_MB( )
Get_ N_Portas ( )

Set_Preco(Real: Preco)
Get_Preco( )

08/05/2002 22