Files
freeCodeCamp/guide/portuguese/cplusplus/object-oriented-programming/index.md
Flavia Schaller 54bbc5073f Added a paragraph and code (#33028)
Capitalized the first letter of the class name, translated a new paragraph in Inheritance and added the corresponding code example.
2019-08-16 07:36:19 -05:00

5.1 KiB
Raw Blame History

title, localeTitle
title localeTitle
Object Oriented Programming using C++ Programação Orientada a Objetos usando C ++

Programação Orientada a Objetos usando C ++

A programação orientada a objetos, abreviada para OOP, visa implementar entidades do mundo real como herança, ocultação e polimorfismo na programação. O principal objetivo da OOP é vincular os dados e as funções que operam neles, de modo que nenhuma outra parte do código possa acessar esses dados, exceto essa função.

Vamos aprender sobre diferentes características de uma linguagem de programação orientada a objetos:

Objeto:

Objetos são entidades básicas de tempo de execução em um sistema orientado a objetos, objetos são instâncias de uma classe, são definidos como tipos de dados definidos pelo usuário.

class Person 
 { 
    char name[20]; 
    int id; 
 public: 
    void getdetails(){} 
 }; 
 
 int main() 
 { 
   Person p1; //p1 é um objeto 
 } 

Objetos ocupam espaço na memória e possuem um endereço associado como um registro em pascal ou estrutura ou união em C.

Quando um programa é executado, os objetos interagem enviando mensagens entre si.

Cada objeto contém dados e código para manipular os dados. Os objetos podem interagir sem precisar conhecer detalhes dos dados ou códigos dos outros. É suficiente saber o tipo de mensagem aceita e o tipo de resposta retornada pelos objetos.

Classe:

Class é um modelo de dados e funções ou métodos. Classe não ocupa espaço.

class class_name 
 { 
  private: 
     //data members and member functions declarations 
  public: 
     //data members and member functions declarations 
  protected: 
     //data members and member functions declarations 
 }; 

Classe é um tipo de dados definido pelo usuário, como estruturas e uniões em C.

Por padrão, as variáveis de classe são privadas, mas no caso de estrutura, são públicas. no exemplo anterior, Person é uma classe.

Encapsulamento e abstração de dados:

Agrupar (combinar) dados e funções em uma única unidade é conhecido como encapsulamento. Os dados não são acessíveis ao mundo externo e apenas as funções que estão agrupadas na classe podem acessá-lo. Esse isolamento dos dados do acesso direto pelo programa é chamado de ocultação de dados ou ocultação de informações.

A abstração de dados se refere a fornecer apenas informações necessárias para o mundo externo e a ocultar detalhes da implementação. Por exemplo, considere uma classe Complex com funções públicas como getReal () e getImag (). Podemos implementar a classe como uma matriz de tamanho 2 ou como duas variáveis. A vantagem das abstrações é que podemos alterar a implementação a qualquer momento, os usuários da classe Complex não serão afetados, pois a interface do nosso método permanece a mesma. Se a nossa implementação fosse pública, não teríamos conseguido alterá-la.

Herança:

Herança é o processo pelo qual objetos de uma classe adquirem as propriedades de objetos de outra classe. Suporta o conceito de classificação hierárquica. A herança fornece reutilização. Isso significa que podemos adicionar recursos adicionais a uma classe existente sem modificá-la.

Aqui está um exemplo de herança para criar uma hierarquia, a qual podemos nos referir como possuindo uma relação 'É UM/UMA' entre as classes.

class animal { 
    private:
    public:
        void dormir();
    protected: 
        int qt_patas;
};

class gato: public animal {
    private:
    public:
        void purr();
    protected:
        char * cor_do_pelo;
};

No código acima, a classe gato deriva da classe animal, o que significa que gato É UM animal, com mais algumas características. A classe gato explicitamente possui uma variável para a cor do pêlo e uma função para ronronar, mas também tem implícita a variável para quantidade de patas e uma função para dormir.

Polimorfismo:

Polimorfismo significa capacidade de tomar mais de uma forma. Uma operação pode exibir diferentes comportamentos em diferentes instâncias. O comportamento depende dos tipos de dados usados na operação.

C ++ suporta sobrecarga do operador e sobrecarga de funções. A sobrecarga do operador é o processo de fazer com que um operador exiba comportamentos diferentes em instâncias diferentes. A sobrecarga de funções está usando um único nome de função para executar diferentes tipos de tarefas. O polimorfismo é amplamente utilizado na implementação de herança.

Ligação Dinâmica:

Na ligação dinâmica, o código a ser executado em resposta à chamada de função é decidido no tempo de execução. C ++ tem funções virtuais para suportar isso.

Passagem de mensagens:

Os objetos se comunicam entre si enviando e recebendo informações uns aos outros. Uma mensagem para um objeto é uma solicitação para execução de um procedimento e, portanto, invocará uma função no objeto de recebimento que gera os resultados desejados. A passagem de mensagens envolve a especificação do nome do objeto, o nome da função e as informações a serem enviadas.