programação orientada a objetos

22
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002

Upload: juliano-oliveira

Post on 06-Jun-2015

9.011 views

Category:

Documents


0 download

DESCRIPTION

Apostila de Programação Orientada a Objetos.

TRANSCRIPT

Page 1: Programação Orientada a Objetos

Introdução à Programação

Orientada à Objetos

Prof. Daniel Merli Lamosa

Maio de 2002

Page 2: Programação Orientada a Objetos

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!

Page 3: Programação Orientada a Objetos

08/05/2002 3

Conceitos (cont.)

- Exemplos:

Page 4: Programação Orientada a Objetos

08/05/2002 4

Conceitos (cont.)

- Exemplos:

Automóvel

Page 5: Programação Orientada a Objetos

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.

Page 6: Programação Orientada a Objetos

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]

Page 7: Programação Orientada a Objetos

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.

Page 8: Programação Orientada a Objetos

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

Page 9: Programação Orientada a Objetos

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

Page 10: Programação Orientada a Objetos

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

Page 11: Programação Orientada a Objetos

08/05/2002 11

Forma Geral de classclass nome-da-classe {

private:

dados e funções privadas

public:

dados e funções públicas

};

Page 12: Programação Orientada a Objetos

08/05/2002 12

Código Completo da classe Circulo

:: Operador de escopo de resolução

Page 13: Programação Orientada a Objetos

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.

Page 14: Programação Orientada a Objetos

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!

Page 15: Programação Orientada a Objetos

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;

Page 16: Programação Orientada a Objetos

08/05/2002 16

Exemplo: Pilha

Retirar

Elemento

Colocar

Elemento

Colocar

Elemento

Colocar

Elemento

Colocar

Elemento

Colocar

Elemento

Page 17: Programação Orientada a Objetos

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!

Page 18: Programação Orientada a Objetos

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;

Page 19: Programação Orientada a Objetos

08/05/2002 19

Alocação Dinâmica de Memória

- Para vetores e matrizes:

Page 20: Programação Orientada a Objetos

08/05/2002 20

Exemplo Pilha: Completo

- Situação: Criar uma pilha com capacidade n (n informado pelo

usuário).

Page 21: Programação Orientada a Objetos

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

Page 22: Programação Orientada a Objetos

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