Escolar Documentos
Profissional Documentos
Cultura Documentos
C++
Histrico de Orientao a
Objetos
A OO surgiu no final da dcada de 60, quando dois
cientistas dinamarqueses criaram a linguagem Simula
(Simulation Language)
1967 - Linguagem de Programao Simula-67-conceitos
de classe e herana
O termo Programao Orientada a Objetos (POO)
introduzido com a linguagem Smalltalk (1980)
Inicio dos anos 90 Paradigma de Orientao a Objetos
abordagem poderosa e prtica para o desenvolvimento de
software
2
Vantagens da Orientao a
Objetos
Abstrao de dados: os detalhes referentes s
representaes das classes sero visveis apenas a seus
atributos;
Reutilizao: o encapsulamento dos mtodos e
representao dos dados para a construo de classes
facilitam o desenvolvimento de software reutilizvel,
auxiliando na produtividade de sistemas;
Flexibilidade: as classes delimitam-se em unidades
naturais para a alocao de tarefas de
desenvolvimento de software;
3
Vantagens da Orientao a
Objetos
Extensibilidade: facilidade de estender o software
devido a duas razes:
Exemplos de Linguagens
Orientada a Objetos
Existem diversas linguagens OO, tais como:
Smalltalk (1980)
Ada (1983)
Eiffel (~1985)
Object Pascal (1986)
Common Lisp (1986)
C++ (~1989)
Java
JWO-4567
Automvel
Parati
KLJ-0978
Marca
Placa
Celta
JDK-6543
CLASSE
OBJETOS
(Instncias da classe Automvel)
Conceitos de Classe
Classes:
Conceitos de Classe
Exemplos de Classes:
aluno
conta corrente
folha de cheque
automvel
cliente
fornecedor
time de futebol
jogo de futebol
9
Conceito de Objetos
Objetos:
Conceito de Objetos
Exemplos de objetos:
Conceito de Atributos
Atributos:
Conceitos Bsicos
Mtodos:
13
CLASSE
ATRIBUTOS
MTODOS
14
CLASSE
ATRIBUTOS
MTODOS
15
int Cpf;
char Nome[30];
int DataNascimento;
Definio de uma
classe Pessoa em C+
+
Dados encapsulados
// Metodos
void
CadastrarPessoa();
void ImprimirPessoa();
void CalcularIdade();
};
main()
{
Pessoa p;
}
return 0;
Mtodos
Instanciao de um
objeto Pessoa (p)
16
Conceito de Encapsulamento
Encapsulamento:
18
main()
{
Pessoa p;
p.AnoNasc = 1971;
p.CadastrarPessoa();
p.ImprimirPessoa();
system("pause");
}
20
//Prottipo
Nome do mtodo
void funcionario::exibe_func(void)
Nome da classe
{
};
21
Exerccios:
1.
2.
3.
4.
Conceito de Herana
Herana:
23
Herana
Automovel
Placa
Fabricante
Modelo
Proprietario
Passeio
Taxi
Lotao
Cor
NumeroTaxi
NumeroPassag
24
Exemplo Herana
SuperClasse Automovel
...
void Passeio::RegistrarCor()
{ cout << "Cor: ";
cin.getline (Cor,16);
};
int main()
{
Passeio Pass;
25
Exerccios:
1. Fazer um programa para criar as subclasses mostradas no slide
base e 4 mtodos:
1. ler a base e a altura,
2. calcular a rea (base*altura) (declarar como funo),
3. calcular o permetro (soma dos todos os lados) (declarar
como funo),
4. mostrar os valores da rea e do permetro.
26
Exerccios:
3. Crie a classe ContaBancaria, com os seguintes atributos:
NumeroConta e Saldo. Esta classe dever ter os seguintes
mtodos:
Exerccios:
4. Implementar em C++ as classes que seguem abaixo:
Pessoa
Nome
Endereo
Cidade
CadastrarPessoa
AlterarEndereo
PessoaFisica
PessoaJuridica
Sexo
Idade
CPF
NomeFantasia
CNPJ
IncluirDadosPJuridica
IncluirDadosPFisica
28
29
private:
int NumeroTaxi;
public:
void RegistrarTaxi();
{ cout << "Numero Taxi ";
cin >> NumeroTaxi;
}; };
int main()
{
Taxi Tx;
Tx.RegistrarDados();
Tx.RegistrarTaxi();
return 0;
}
void Automovel::ImprimirDados()
....
30
Exerccios
1.
2.
31
Dados Protected
Os atributos da classe pai no podem ser acessados pelos mtodos das
classes filhas, se estes estiverem declarados como private.
Para que os atributos da classe pai possam ser acessados pelos mtodos das
classes filhas, estes devem ser declarados como protected.
Exemplo:
class Automovel
{
protected:
.....
char Placa[7];
32
Polimorfismo
Geralmente representa a qualidade ou estado de um objeto ser
capaz de assumir diferentes formas.
Mais especificamente, propriedade segundo o qual vrios
mtodos podem existir com o mesmo nome.
Ao receber uma mensagem para efetuar uma Operao, o
objeto quem determina como a operao deve ser efetuada;
Permite a criao de vrias classes com interfaces idnticas,
porm objetos e implementaes diferentes.
33
Polimorfismo
Veculo
Verificar()
Reparar()
Limpar()
Automvel
Bicicleta
Verificar()
Reparar()
Limpar()
Verificar()
Reparar()
Limpar()
34
Classes Abstratas
Classes abstratas so classes que no produzem instncias. Elas
agrupam caractersticas e comportamentos que sero herdados
por outras classes. Fornecem padres de comportamento que
sero implementados nas suas subclasses.
Podem ter mtodos com implementao definida.
Figura
Atributos
area
Operaes
calcularArea {abstrato}
informarArea
35
Exerccios
1. Implementar as classes da figura abaixo, usando o conceito de
polimorfismo e classe abstrata.
Figura
Atributos
Operaes
Area,altura,base
ler altura,base
calcularArea {abstrato}
MostrarArea
Tringulo
Retngulo
Atributos
Atributos
Operaes
Operaes
calcularArea
altura*base
calcularArea
(base*altura)/2
36
Construtor
So mtodos declarados como funes que so chamados no
momento da criao de um objeto.
So usados para inicializar os objetos.
Este tipo de mtodo no possu valor de retorno.
Um construtor tem sempre o mesmo nome da classe.
Se nenhum for declarado ser criado um construtor default
37
Exemplo Construtor
#include <iostream>
using namespace std;
class ponto
{
float x;
float y;
public:
ponto(int a,int b);
//esse e o construtor, note a ausncia do valor de retorno
void mostra(void);
};
ponto::ponto(int a,int b) //mtodo construtor: tem sempre o nome da classe
{
x=a;
//incializando atributos da classe
y=b;
};
void ponto::mostra(void)
{cout << "X:" << x << " , Y:" << y;
system ("pause");
};
main()
{
ponto ap(1,2);
ap.mostra();
}
38
Destrutor
O destrutor diz como o objeto ser destrudo quando sair de
escopo.
O funcionamento anlogo ao mtodo Construtor, ou seja:
No
Exemplo Destrutor
#include <iostream>
using namespace std;
class ponto
{ float x;
float y;
public:
ponto(int a,int b);
// mtodo construtor
~ponto(void);
// mtodo destrutor
void mostra();
};
ponto::ponto(int a,int b) //cdido do mtodo construtor
{ x=a;
y=b;
};
ponto::~ponto(void)
// mtodo destrutor: tem o mesmo nome da classe precedido de ~
{ cout << " Variaveis destruidas";
system("pause"); };
void ponto::mostra(void)
{ cout << "X:" << x << " , Y:" << y << "\n";
system ("pause"); };
main()
{ ponto ap(1,2);
ap.mostra(); }
40
Linguaguens Tradicionais
Objeto
Valor
Classe
Tipo (TAD)
Mensagem
Chamada de Procedimento
Mtodo
Procedimento ou Funo
Interface
41