introdução à programação orientada à objetos prof. daniel merli lamosa maio de 2002

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

Upload: internet

Post on 17-Apr-2015

124 views

Category:

Documents


1 download

TRANSCRIPT

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

Introdução à Programação Introdução à Programação Orientada à ObjetosOrientada à Objetos

Prof. Daniel Merli Lamosa

Maio de 2002

Page 2: Introdução à Programação Orientada à 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!

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

08/05/2002 3

Conceitos (cont.)Conceitos (cont.)

- Exemplos:

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

08/05/2002 4

Conceitos (cont.)Conceitos (cont.)

- Exemplos:

Automóvel

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

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.

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

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]

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

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.

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

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

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

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

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

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

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

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

};

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

08/05/2002 12

Código Completo da classe CirculoCódigo Completo da classe Circulo

:: Operador de escopo de resolução

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

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.

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

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!

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

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;

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

08/05/2002 16

Exemplo: PilhaExemplo: Pilha

Retirar

ElementoColocar

Elemento

Colocar

Elemento

Colocar

Elemento

Colocar

Elemento

Colocar

Elemento

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

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!

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

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;

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

08/05/2002 19

Alocação Dinâmica de MemóriaAlocação Dinâmica de Memória

- Para vetores e matrizes:

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

08/05/2002 20

Exemplo Pilha: CompletoExemplo Pilha: Completo

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

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

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

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

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