Escolar Documentos
Profissional Documentos
Cultura Documentos
POO
Programao Orientada a Objetos
Adaptado de:
Carlos Alberto Alonso Sanches
Juliana de Melo Bezerra
Introduo
Programao Estruturada
Tambm chamada de Programao Modular ou Procedimental
Baseia-se no conceito de mdulo (funo, procedimento, rotina)
O foco est nas aes: no que fazem
Programao Orientada a Objetos
Baseia-se nos conceitos de classe e objeto
O foco passa a estar nos dados: no que so e tm
Permite herana
Exemplos de Linguagens Orientadas a Objetos
Simula (1967), SmallTalk (1970) 2
C++, Java, C#
Introduo
POO x Estruturada - O zelador pega a chave e abre a porta
- Estruturada:
Pensa-se automaticamente em como o zelador faz para abrir a porta
utilizando a chave (cada verbo vira um procedimento);
- POO:
3
Introduo
ReceberConta
Programao Orientada a Objetos: EnviarConta
RemoverEstoque
Os dados tambm so encapsulados
dentro de uma classe, e seu acesso EncomendarEstoque
Progr. Estruturada
protegido atravs de mtodos
especficos.
Cada classe determina o comportamento
(definido nos mtodos ou funes-
membro) e os estados possveis
(atributos) dos seus objetos, assim como
o relacionamento com outras classes.
POO
Conceitos bsicos
Classe uma categoria de entidades.
Corresponde a um tipo: coleo ou conjunto de entidades afins.
Exemplo: Pessoa
Classe base
nome
idade
come()
anda()
respira()
Herana
Professor
salrio
Aluno
nmero
leciona()
corrigeProva() notas Classes derivadas
assisteAula()
fazProva()
class Data {
public: Dentro da classe, melhor ficar
int dia,mes,ano; apenas o prottipo dos mtodos.
void alteraData(int d, int m, int a);
};
std::cout << "inteiro: " << i << " double: " << d << " long: " << l <<
"\n";
}
Entrada e sada em C++
cout << "inteiro: " << i << " double: " << d << " long: " << l << "\n";
}
Para que serve namespace?
Imagine o cdigo de um jogo tridimensional moderno,
em que h muitos desenvolvedores, separados por
equipes especializadas (Grfico, Fsica, Inteligncia
Artificial, etc.).
Imagine que cada equipe trabalha em um arquivo
diferente (grafico.h, fisica.h, ia.h etc.).
Imagine ento que ambas as equipes de Grfico e de
Fsica criam classes para representar um crculo com
mesmo nome Circulo.
Para que serve namespace?
As duas classes no so iguais. A classe Circulo de
grafico.h provavelmente ter mtodos como
desenhar(), enquanto a Circulo de fisica.h ter
outros como detectarColisao(Circulo outroCirculo).
Em algum lugar, Grfico e Fsica precisam ser
integrados:
#include <grafico.h>
#include <fisica.h>
Porm, o programa no vai compilar porque a classe
Circulo estar sendo declarada duas vezes!
Para que serve namespace?
O programa no vai compilar porque a classe Circulo
estar sendo declarada duas vezes!
Tambm, no h como diferenciar uma classe da
outra:
Circulo c; // a qual Circulo esta linha se refere?
Para que serve namespace?
Soluo:
namespace grafico {
class Circulo {
// Declaracao de Circulo para Grafico
};
}
namespace fisica {
class Circulo {
// Declaracao de Circulo para Fisica
};
}
Para que serve namespace?
Uso:
grafico::Circulo circuloGrafico;
fisica::Circulo circuloFisica;
Observe que se pode dar using namespace em apenas
um desses namespaces (por isso using namespace
considerado m prtica).
Exemplo de Classe
#include <iostream>
#include <conio>
using namespace std;
class Circulo {
public:
int x,y,raio;
void deslocar(int dx,int dy); void main() {
void aumentarRaio(int dR); Circulo c1;
void imprimir(); c1.x = 50;
}; c1.y = 50;
c1.raio = 20;
void Circulo::imprimir() { c1.imprimir();
std::cout<<"Circulo de centro em c1.deslocar(5,5);
("<<x<<","<<y<<") e raio="<<raio<<endl; c1.imprimir();
} c1.aumentarRaio(3);
c1.imprimir();
void Circulo::deslocar(int dx,int dy) {
getch();
x = x + dx; y = y + dy;
}
}
class Circulo {
private:
int x,y,raio; // dados e operaes privativos
29