Classes – C++

Publicado: 7 de fevereiro de 2014 em C/C++

Programação Orientada a objeto

Programação orientada a objetos representa o mundo real. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software.

Classes

Em orientação a objetos, uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos. Classes, que podem conter dados e funções, apresentar tipos definidos pelo usuário em um programa. Tipos definidos pelo usuário em linguagens de programação tradicionais são coleções de dados que, em conjunto, descrevem atributos de um objeto e estado. Tipos de classe em C + + permitem que você para descrever os atributos e estado, e para definir o comportamento.

Polimorfismo

Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa “muitas formas” (poli = muitas, morphos = formas).

O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto.

Instanciando Objetos

Instanciação de objetos é o processo de criar a estrutura lógica dos mesmos na memória. Isto ocorre quando declaramos os objetos, pois neste momento todo o processo de construção dos mesmos é efetivado. Assim, toda vez que declaramos um objeto estamos instanciando-o, ou seja, estamos criando uma instância da classe.

Exemplo:

Neste cenário temos  duas classes,  a classe cachorro e a classe espécie, na classe cachorro temos o que todos os cachorros tem em comum e na classe  espécie temos toda a herança da classe cachorro e mais algumas descrições da espécie. Usamos polimorfismo para escrever uma função virtual no qual as duas classes tem em comum:


// Exemplo da palavrea chave class
// Exibe polimorfismo/virtual functions.

#include "stdafx.h"
#include <iostream>
#include <string>
#define TRUE = 1

using namespace std;

// Classe Cachorro
class cachorro
{
public:  cachorro()
{
   _pernas = 4;
   _latido = true;
  }

int getPernas()
  {
   return _pernas;
  }

void setTamanhoCachorro(string tamanhoCachorro)
{
   _tamanhoCachorro = tamanhoCachorro;
}

// Função virtual
virtual void setOrelhas(string tipo)
{
   _tipoOrelhas = tipo;
  }

private:
  string _tamanhoCachorro, _tipoOrelhas;  int _pernas;  bool _latido;

};

// Classe especie
class especie : public cachorro
{
public:

especie(string cor, string tamanho)

{   _cor = cor;
_tamanho = tamanho;
setTamanhoCachorro(tamanho);
  }

string getCor()
  {
   return _cor;
  }

string getTamanhoCachorro()
  {
   return _tamanho;
  }

string getOrelhasComprimento()
  {
   return _orelhaComprimento;

}

string getOrelhaTipo()
  {
   return _orelhaTipo;
  }

// Função virtual redefinida (polimorfismo)
void setOrelhas(string comprimento, string tipo)
  {
   _orelhaComprimento = comprimento;
   _orelhaTipo = tipo;  }

protected:
  string _cor, _orelhaComprimento, _orelhaTipo, _tamanho;
};

// Executa o programa
int main()
 {
  cachorro mongrel;
  especie labrador("amarelo", "grande");

  // Polimorfismo da Classes
  mongrel.setOrelhas("pontuda");
  labrador.setOrelhas("longa", "caidas");

cout << "Bob um mongrel de " << mongrel.getPernas() << " patas " << endl;

cout << "Cody um labrador "  << labrador.getTamanhoCachorro() << " e "
     << labrador.getCor() << " com orelha "
     << labrador.getOrelhasComprimento() << " e "   << labrador.getOrelhaTipo() << endl;

system("pause"); }

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s