Classes – Inheritance e Override – C++

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

Inheritance (herança)

Programação orientada a objetos permite que classes possam herdar estados e comportamentos comuns usados de outras classes. Neste exemplo, bicicleta torna-se agora a superclasse de MountainBike. Na linguagem de programação, cada classe é permitido ter uma superclasse direta, e cada superclasse tem o potencial para um número ilimitado de subclasses.

Na herança, a classe derivada contém os membros da classe base acrescido de quaisquer novos membros adicionados. Como resultado, uma classe derivada pode se referir a membros da classe base (a não ser se os membros forem redefinidos na classe derivada). O operador de escopo resolução (::) pode ser usado para se referir a membros de classes base, diretos ou indiretos, quando os membros foram redefinidos na classe derivada.

Tipos de Heranças

A linguagem de programação C++ possui dois tipos de herança.

Simples:

Em “herança simples” uma forma comum de herança, as classes têm apenas uma classe base.

Múltiplas:

A nova versão do C + + introduziu um modelo de “herança múltipla”. Num gráfico de múltiplas heranças, as classes de derivados podem ter multiplos números de classes de bases diretas ou seja a classe AB deriva da classa A e de uma outra classe B.

Override

Métodos Override (substituição), em programação orientada a objeto, é um recurso de linguagem que permite que uma subclasse ou classe filha possa fornecer uma implementação específica de um método que já é fornecido por uma de suas superclasses ou classes pai.

A implementação Override das subclasses substitui a implementação na superclasse, fornecendo um método que tem o mesmo nome, mesmos parâmetros ou assinatura, e mesmo tipo de retorno como o método na classe pai.

Exemplo:

Neste exemplo damos a classe MountainBike todos os mesmos campos e métodos da classe bicicleta, e ainda permite que seu código se concentre exclusivamente sobre as características que a tornam única. Isso faz do código de suas subclasses fáceis de ler. Usamos metodos Override neste exemplo de duas maneiras, para substituir um método da subclasse e adicionar mais um construtor com parametros.

No entanto, você deve tomar cuidado para documentar corretamente o estado e o comportamento que cada superclasse define, uma vez que o código não irá aparecer no arquivo de origem de cada subclasse.

C++

Classe #1 – Principal.cpp

#include "stdafx.h"
#include <iostream>
#include <string>
#include "bicicleta.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
 {

// Metodo com Construtor Default
  Bicicleta bike1;
  bike1.modelo = "ZR069";
  bike1.quadro = "Ferro";
  bike1.rodas = "Ferro";
  bike1.freios = "Pastilhas";
  bike1.bicicleta();

  cout << endl;

  // Construtor Override

  Bicicleta bike2("XA 200", "Aluminio", "Pastilhas", "Aluminio");
  bike2.bicicleta();

  cout << endl;

// Herança - Montain Bike
  BicicletaMontanha  bike3;
  bike3.modelo = "Attack 500";
  bike3.quadro = "Fibra de Carbono";
  bike3.rodas = "Aluminio";
  bike3.freios = "Disco";
  bike3.amortecedores = "R3000";
  bike3.garrafa = "Aluminio 500ml";
  bike3.marchas = "18 Velocidades";
  bike3.gps = "Discovery 2.5";

// Metodo Override

  bike3.bicicleta();
  system("pause");
  return 0;

}

Classe #2 – Bicicleta.h

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

class Bicicleta
 {
 public:
   string modelo;
   string quadro;
   string freios;
   string rodas;

// Construtor Default
   Bicicleta()   {}

// Construtor Override

  Bicicleta(string bmodelo, string bquadro, string bfreios, string brodas)
  {
   modelo = bmodelo;
   quadro = bquadro;
   rodas  = brodas;
   freios = bfreios;
  }

void bicicleta()
  {
   cout << " Bicicleta:" + modelo << endl;
   cout << " Quadro:" + quadro << endl;
   cout << " Rodas:" + rodas << endl;
   cout << " Freios:" + freios << endl;
  }

};

class BicicletaMontanha : public Bicicleta
 {
 public:
   string marchas;
   string amortecedores;
   string garrafa;
   string gps;

//Metodo Override

void bicicleta()
  {
   cout << " Bicicleta:" + modelo << endl;
   cout << " Quadro:" + quadro << endl;
   cout << " Rodas:" + rodas << endl;
   cout << " Freios:" + freios << endl;
   cout << " Marchas:" + marchas << endl;
   cout << " Amortecedores:" + freios << endl;
   cout << " Garrafa:" + garrafa << endl;
   cout << " Gps:" + gps << endl;
  }
   BicicletaMontanha()
  {
  }

};
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