Vous êtes sur la page 1sur 7

Programao Orientada a Objetos

Aula 1
1- Introduo
A programao ou modelagem de softwares orientados a objetos fruto da
necessidade que os programadores e engenheiros de software tinham para
representar aspectos do mundo real, de forma que esta programao fosse mais
compreensvel aos usurios. Assim, a modelagem de softwares orientados a objetos
surgiu para facilitar a idealizao de softwares (que feito por meio de entrevistas
com o usurio) e tambm para a documentao do mesmo. importante comentar
que a documentao de softwares tornou-se um processo imprescindvel, pois,
deste modo no h uma dependncia em relao a um programador ou equipe de
desenvolvimento.
Em toda a linguagem orientada a objetos h a necessidade de se declarar Classes,
nas quais iro apresentar os Objetos do mundo real, com suas Propriedades e
Eventos (Mtodos). Alm disso, h a possibilidade de se representar o
relacionamento entre esses Objetos.

2- Classes
Uma classe correspondente a uma estrutura que ir representar, de forma macro,
um conjunto de Objetos que tenham caractersticas similares, porm, no
necessariamente idnticas.

Costuma-se usar verbos para eventos e substantivos para classes.

Classe Leitor
Ler Cdigo()
Tipo: Carto, Compra
Mostrar na tela ()
Classe Clculo
Calcular Preos()
EmiteNota()
Desconto()
Classe Pagamento
Abrir Caixa()
Exemplos de Classes:
Cachorro
Propriedades
Raa:
Cor:
Sexo:
Eventos
Latir()
Morder()

Correr()
Pular()
Por fim, a estrutura de uma classe pode ser composta por Construtor e Destrutor. O
construtor utilizado para definir o comportamento inicial do objeto no momento de sua
criao. J o destrutor utilizado para liberar recursos computacionais (como memria).

Aula 2
Bsico de C++
Aquisio de Dados:
#include iostream.h
#include <iostream>
#include<iostream>

A biblioteca utilizada depende do ambiente de programao.


Sada de dados
std::cout<<a;
std::cin>>a;

Ou
using namespace std; //Evita uso de prefix std:: em nas entradas e sadas.
cout<<a;
cin>>a;

Encapsulamento
O encapsulamento corresponde ao englobamento de Eventos e Propriedades contidos em
uma Classe. Por exemplo, ao definirmos a classe Jogador temos:
Class Jogador
{
public:
Jogador();
//construtor
~Jogador();
//destrutor
void chutar();
void cabecear();
void correr();
void setJogador(float altura, float peso, int posio, int TipoPerna, float stamina);
float getAltura();
float getPeso();
float getPosicao();

Todos os itens terminados em () so eventos, mesmo construtores e


destrutores.

Todas as variveis so propriedades.

No possvel acessar dados privados diretamente, apenas atravs de


funes.

Como funes retornam um nico valor, necessrio uma classe para cada
varivel.

comum acumular classes em arquivos.h (bibliotecas) para encurtar o


programa.

Para programas muito grandes, usa-se esse recurso para definir bibliotecas que no
se tem certeza se j esto definidas:
#ifndef _JOGADOR_H //Caso a classe JOGADOR_H no esteja definida, defina JOGADOR_H
#define _JOGADOR_H
...
#endif

Exemplo:
//Programa principal.cpp
#include jogador.h
#include <iostream>
Jogador::Jogador();
{
}
Jogador::~Jogador()
//destrutor sempre vazio, e destri a classe inteira.
{
}
void Jogador::setJogador(float NovaAltura, float NovoPeso, int NovaPosicao, int NovoTipoPerna, float
NovaStamina)
{
Altura=NovaAltura;
peso=Novopeso;
posicao=NovaPosicao
tipoPerna=NovoTipoPerna;
stamina=NovaStamina;
}
float Jogador::getAltura()
{
return altura;
}

*Note que a ordem no importante, pois as classes ainda no foram chamadas no main.

Tarefa:
1- Criar Objetos Jogador 1 e Jogador 2
2- Usurio determina caractersticas de cada jogador. (Use lao de repetio, para
encurtar o programa)

Aula 3
void main()
{
Jogador J1;
Jogador J2;

//Construtor
//Construtor

J1.setJogador(1.9,80,1,1,6);
J2.setJogador(1.7,50,1,1,8);
delete J1;
cout<<J2.getAltura();

//Destrutor

* Do mesmo modo que as variveis so definidas como inteiras, flutuantes, etc, podemos
definir uma varivel J1 como Jogador.

Herana
possvel adaptar uma classe base para determinadas variaes, atravs da
herana. Exemplo:
Linha Jogador Goleiro

A herana permite que classes j definidas passam ser aprimoradas, porm, sem
que as mesmas precisem sofrer alteraes, ou seja, so construdas classes derivadas da
classe principal que iro dar suporte e aprimorar essa classe principal.
A boa prtica de programao pede que sejam contrudas classes de forma
incremental, ou seja, deve-se comear por classes mais bsicas e ir apromorando-as por
meio de Heranas. Assim, a cada derivao de uma classe, pode-se herdar algumas ou
todas as caractersticas da classe j criada (classe pai). Portanto, a reutilizao de cdigo
em C++ pode ser realizado pelo uso de heranas.

Class Jogador
{
public:
Jogador();
~Jogador();
void setJogador(float altura, float peso, float stamina);
float getAltura();
float getPeso();
gloat getStamina();
private:
float altura, peso, stamina;
};
class Goleiro : public Jogador
{
public:

int tipoMao
void setGoleiro (int mao)
{
tipoMao=mao;
}
};
class Atacante : public Jogador
{
public:
int tipoPerna;
void setAtacante(int perna)
{
tipoPerna=perna;
}
};
void main()
{
Atacante ATA1;
Atacante ATA2;
Goleiro GOL;
ATA1.setJogador(1.6, 50, 9);
ATA2.setJogador(1.7,60,8);
GOL.setJogador(1.9,80,5);
delete ATA2;
}
cout<<GOL.getAltura();

Aula 4
Polimorfismo: Funes de mesmo nome, que no executam rigorosamente as mesmas
tarefas.
a capacidade de instncias mltiplas assumirem eventos/mtodos em tempo de
execuo. Desta forma, o Polimorfismo permite que eventos de mesmo nome sejam
requisitados a objetos distintos que tambm iro responder chamada do evento de
maneira distinta.

Exemplo:
class empregado
{
private:
float salario;
public:
empregado(void)
{
salario=100;
}
virtual void AtualizarSalario(float s)
{
salario=s;
}
};
class vendedor : public empregado
{
private:
float comissao;
public:
vendedor(void) : empregado()
{
comissao=10;
}
virtual void AtualizarSalario(float s)
{
s+=s*comissao/100;
empregado::AtualizarSalario(s);
}
};

Vous aimerez peut-être aussi