Ir para conteúdo
Sistema de Servidores de Jogos ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Posts Recomendados

A melhor forma de entender a programação orientada a objetos (OOP) é começar com uma analogia simples. Suponha que você queira dirigir um carro e fazê-lo ir mais rápido pressionado o acelerador. O que deve acontecer antes que você seja capaz de fazer isso? Bem, antes que você possa dirigir um carro, alguém tem que projetá-lo. Um carro geralmente começa com desenhos feitos pelos engenheiros responsáveis por tal tarefa, tal qual a planta de uma casa. Tais desenhos incluem o projeto de um acelerador que possibilita ao carro ir mais rápido. O pedal do acelerador “oculta” os mecanismos complexos responsáveis por fazer o carro ir mais rápido, da mesma forma que o pedal de freio “oculta” os mecanismos que fazem o carro ir mais devagar e o volante “oculta” os mecanismos que fazem com que o carro possa virar para a direita ou esquerda. Isso permite que pessoas com pequeno ou nenhum conhecimento de motores possam facilmente dirigir um carro.

 

Infelizmente, não é possível dirigir o projeto de um carro. Antes que possamos dirigí-lo, o carro deve ser construído a partir do projeto que o descreve. Um carro já finalizado tem um pedal de aceleração de verdade, que faz com que o carro vá mais rápido. Ainda assim, é preciso que o motorista pressione o pedal. O carro não acelerará por conta própria.

 

Agora vamos usar nosso exemplo do carro para introduzir alguns conceitos de programação importantes à programação orientada a objetos. A execução de uma determinada tarefa em um programa exige um método. O método descreve os mecanismos que, na verdade, executam a tarefa. O método oculta tais mecanismos do usuário, da mesma forma que o pedal de aceleração de um carro oculta do motorista os mecanismos complexos que fazem com que um carro vá mais rápido. Em C++, começamos criando uma unidade de programa chamada classe para abrigar um método, da mesma forma que o projeto de um carro abriga o design do pedal de acelerador. Em uma classe fornecemos um ou mais métodos que são projetados para executar as tarefas da classe. Por exemplo, a classe que representa uma conta bancária poderia conter muitos métodos, incluindo um método para depositar dinheiro na conta, outro para retirar dinheiro, um terceiro para verificar o saldo, e assim por diante.

 

Da mesma forma que não podemos dirigir o projeto de um carro, nós não podemos “dirigir” uma classe. Da mesma forma que alguém teve que construir um carro a partir de seu projeto antes que pudessémos dirigí-lo, devemos construir um objeto de uma classe antes de conseguirmos executar as tarefas descritas nela.

 

Quando dirigimos um carro, o pressionamento do acelerador envia uma mensagem ao carro informando-o da tarefa a ser executada (neste caso informando-o de que queremos ir mais rápido). Da mesma forma, enviamos mensagens aos objetos de uma classe. Cada mensagem é uma chamada de método e informa ao objeto qual ou quais tarefas devem ser executadas.

 

Até aqui nós usamos a analogia do carro para introduzir classes, objetos e métodos. Já é hora de saber que um carro possui atributos (propriedades) tais como cor, o número de portas, a quantidade de gasolina em seu tanque, a velocidade atual, etc. Tais atributos são representados como parte do projeto do carro. Quando o estamos dirigindo, estes atributos estão sempre associados ao carro que estamos usando, e cada carro construído a partir do projeto sofrerá variações nos valores destes atributos em um determinado momento. Da mesma forma, um objeto tem atributos associados a ele quando o usamos em um programa. Estes atributos são definidos na classe a partir da qual o objeto é instanciado (criado) e são chamados de variáveis de instância da classe.

 

Veremos agora como definir uma classe em C++ e usar um objeto desta classe em um programa. Veja o trecho de código abaixo:

 

#include <iostream>

 

using namespace std;

 

class Cliente{

public:

// uma função que permite definir o nome do cliente

void definir_nome(char *n);

 

// uma função que permite obter o nome do cliente

char* obter_nome();

private:

char nome[50];

};

 

void Cliente::definir_nome(char *n){

strcpy(this->nome, n);

}

 

char* Cliente::obter_nome(){

return this->nome;

}

 

int main(int argc, char *argv[])

{

// Cria uma instância da classe Cliente

Cliente *cliente = new Cliente();

 

// Define o nome do cliente

cliente->definir_nome("Osmar J. Silva");

 

// Obtém o nome do cliente

char *nome = cliente->obter_nome();

 

// Exibe o resultado

cout << "O nome do cliente é: " << nome << "\n\n";

 

system("PAUSE");

return EXIT_SUCCESS;

}

Controlando o acesso a membros de uma classe C++ usando o modificar public

 

Membros de uma classe são suas funções e variáveis. A visibilidade de tais membros pode ser controlada, ou seja, algumas funções e variáveis podem ser ocultadas do mundo externo. Este é o princípio de encapsulamento da programação orientada a objetos.

 

O modificador public define que os membros de uma classe estarão acessíveis a qualquer função fora da classe. Veja um exemplo:

 

#include <iostream>

 

using namespace std;

 

class Cliente{

public:

char *nome;

};

 

int main(int argc, char *argv[])

{

// Cria uma instância da classe Cliente

Cliente *cliente = new Cliente();

 

// Define o nome do cliente

cliente->nome = "Osmar J. Silva";

 

// Obtém o nome do cliente

cout << "Nome do cliente: " << cliente->nome << "\n\n";

 

system("PAUSE");

return EXIT_SUCCESS;

}

Como o atributo nome foi declarado na seção public, o código da função main possui acesso a ele sem a necessidade de métodos acessórios (get) ou mutatórios (set).

 

Quando usamos o modificador public antes do nome de uma classe base (durante a herança), estamos definindo que os membros public e protected da classe base serão public e protected na classe derivada.

 

O acesso padrão (sem modificador) dos membros de uma classe é private. Em uniões (union) e estruturas (structure), o acesso padrão é public.

 

O acesso padrão de uma classe base (durante a herança) é private para classes e public para estruturas. Uniões não podem possuir classes bases.

 

Criando uma classe C++ completa, incluindo os arquivos de definição .h e implementação .cpp

 

Esta dica o guiará passo-a-passo na criação de uma classe C++, incluindo os arquivos .h e .cpp. Para isso vamos usar o Dev-C++ (acreditamos que o procedimento é parecido com outros compiladores).

 

Vamos começar com o arquivo de definição. Com um projeto já iniciado no Dev-C++, vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes.

 

Salve o arquivo com o nome de “pessoa.h” e inclua nele o seguinte código:

 

/*

Código de definição: pessoa.h

*/

 

#ifndef PESSOA_H

#define PESSOA_H

 

#include <string>

using std::string;

 

class Pessoa{

public:

void setNome(string nome);

void setIdade(int idade);

string getNome();

int getIdade();

private:

string nome;

int idade;

};

 

#endif

Salve este código como pessoa.h no diretório de sua aplicação C++. Este é o arquivo de definição da classe. É nele que declaramos os membros públicos e privados, incluindo as assinaturas dos métodos da classe. Passemos agora ao arquivo de implementação. Novamente vá em File -> New -> Source File. Quando perguntado se deseja adicionar o arquivo ao projeto existente, clique Yes. Salve o novo arquivo como “pessoa.cpp” e inclua nele o seguinte conteúdo:

 

/*

Código de implementação: pessoa.cpp

*/

 

#include "pessoa.h"

 

void Pessoa::setNome(string nome){

this->nome = nome;

}

 

void Pessoa::setIdade(int idade){

this->idade = idade;

}

 

string Pessoa::getNome(){

return this->nome;

}

 

int Pessoa::getIdade(){

return this->idade;

}

Salve este código como pessoa.cpp no diretório de sua aplicação C++. Este é o arquivo de implementação dos métodos da classe Pessoa. Veja o uso da palavra-chave this quando queremos referenciar o objeto atual da classe e, é claro, evitar ambiguidade entre o nome das variáveis da classe e os nomes dos parâmetros dos métodos.

 

Hora de testar. Crie o arquivo principal da aplicação (aquele que contém o método main()):

 

#include <iostream>

#include "pessoa.h"

 

using namespace std;

 

int main(int argc, char *argv[])

{

// declara um objeto da classe Pessoa

Pessoa p;

 

// informa o nome e idade da pessoa

p.setNome("Osmar J. Silva");

p.setIdade(27);

 

// obtém o nome e idade da pessoa

cout << "Nome: " << p.getNome() << endl;

cout << "Idade: " << p.getIdade() << endl;

 

cout << "\n" << endl;

system("PAUSE"); // pausa o programa

return EXIT_SUCCESS;

}

Funcionou tudo como planejado? Se funcionou, parabéns! Já fizemos um bom progresso na criação e uso de classes em C++.

 

Bom por enquanto é isso, ja da pra ter uma base em POO para C++

Abraços e bons estudos

Link para o comentário
https://www.webcheats.com.br/topic/262232-programa%C3%A7%C3%A3o-orientada-a-objetos-em-c/
Compartilhar em outros sites

  • 1 mês depois...

Bem ai não tem nada que eu não sabia, mas é uma otima ajuda em Progamação Orientada a Objeto para os iniciantes recebeu meu thnx \o/;)

Link para o comentário
https://www.webcheats.com.br/topic/262232-programa%C3%A7%C3%A3o-orientada-a-objetos-em-c/#findComment-1602454
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.