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