programação orientada a objetos (oop)rns/astroprog/oop_edu.pdf programas em c++ para compilar: ......

22
Programação Orientada a Objetos (OOP) J.E.S.Costa Dep. Astronomia – IF/UFRGS (maio/2010)

Upload: lamduong

Post on 20-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Programação

Orientada a Objetos

(OOP)

J.E.S.CostaDep. Astronomia – IF/UFRGS

(maio/2010)

Page 2: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

● Estrutura de (struct)

● Classes x Estruturas

● Classes & Objetos

● Público x Privado

● Variávies & Métodos

● Construtures

● Operadores

● Declaração x Implementação

● Polimorfismo

● Herança

Tópicos

Page 3: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Desenvolver um programa que faça o seguinte:

● Entrar dois vetores via teclado: v1=<x1, y1, z1> e v2=<x2,y2,z2>

● Calcular o módulo de cada vetor: d=|v1|=sqrt(x1*x1+y1*y1+z1*z1)

● Calcular o vetor unitário na direção de v1:

u1 = <x1/d, y1/d, z1/d>

● Calcular: v = v1 + v2

● Calcular: v = v1 – v2

● Calcular: v = v1 * v2 (produto escalar)

● Calvular: v = v1 x v2 (produto vetorial)

● Mostrar resultados.

Problema Proposto

Page 4: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Programas em C++

Para compilar: % g++ prog01.cpp -o prog01Para executar: % prog01

Page 5: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Uma solução baseada em programação estruturada

(prog01.cpp)

Page 6: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

ESTRUTURAS (struct)

Permite agrupar variáveis relacionadascom um mesmo objeto.

Todas as variáveis da estrutura sãoacessíveis → PÚBLICAS

Page 7: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Usando Estruturas de Dados (struct)

(prog02.cpp)

Page 8: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

CLASSES x ESTRUTURAS

Classes são “estruturas com superpoderes!”

As variáveis membros de umaclasse são PRIVADAS pordefault, ao contrário das dasestruturas, que são PÚBLICAS.

C é um “objeto” da classe“minhaClasse” →

Page 9: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

CLASSE = VARIÁVEIS + MÉTODOS

As classes possuem dois tipos de membros:VARIÁVEIS e MÉTODOS.

MÉTODOS são funções que podem retornarum valor de algum tipo (int, float, string, double)ou... não retornar nenhum valor (void = muda).

Todos os MÉTODOS enxergam as variáveis Membros da classe.

MÉTODOS PÚBLICOS podem ser chamadosde for a da classe.

MÉTODOS PRIVADOS só podem ser chamadosde dentro da classe onde estão.

OBJETOS são instâncias de uma classe.

Page 10: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Usando umaCLASSE

(prog03.cpp)

Page 11: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

MÉTODO CONSTRUTOR

Pode-se definir um MÉTODO CONSTRUTOR(constructor) que é chamado automaticamentelogo que um objeto da classe é criado.

O método construtor tem sempre o MESMO NOMEda classe (e não possui tipo).

Page 12: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Adicionando um

CONSTRUCTOR

(prog04.cpp)

Page 13: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

MÉTODOS OPERADORES (operators)

É possível definir OPERADORES (+ - = * / # ).

Page 14: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Declarando

OPERADORES

(prog05.cpp)

Page 15: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

(prog05.cpp)

Usando OPERADORES

Page 16: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Incluindo métodos de

Input e output

(prog06.cpp)

Page 17: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

DECLARAÇÃO x IMPLEMENTAÇÃO

É conveniente separar as duas partes.

declaração + Implementação → file.h

ou

declaração → file.hImplementação → file.cpp

Page 18: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Declaração e Implementaçãode uma Classe.

Page 19: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Versão final do programa

(prog07.cpp)

Page 20: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

POLIMORFISMO

Métodos diferentes podem ter o mesmo nome!

Polimorfismo = várias formas.

Page 21: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

HERANÇA

Uma classe pode herdar variáveis e métodos de outra classe.

Page 22: Programação Orientada a Objetos (OOP)rns/astroprog/oop_edu.pdf Programas em C++ Para compilar: ... Uma solução baseada em programação estruturada (prog01.cpp) ESTRUTURAS (struct)

Referências:

http://www.cplusplus.com/