Recapitulando
Você deve estar lembrando também que eu disse que o C++ é capaz de trabalhar com o paradigma de Programação Orientada a Objetos (POO). Certo? Mas afinal é que é essa tal de POO?
Programação Orientada a Objetos (POO) é uma forma de programar onde a lógica de programação organiza o código em torno de objetos. Mas o que seriam esses objetos?
Os objetos
Objeto seria uma representação de algo concreto ou abstrato do mundo real. Por exemplo, digamos que você precisa fazer um sistema para gerenciar uma escola de alunos de computação.
Nesse sistema cada aluno poderia ser um objeto. Cada professor também poderia ser um objeto. Outros objetos poderiam ser cada uma das turmas, cada uma das salas, das aulas dadas, etc... Enfim tudo que fosse cadastrado e controlado pelo sistema poderia ser representado como um objeto.
A essa capacidade de reduzir a complexidade de um problema em partes mais simples como os objetos, nós chamamos de Abstração e ela é um dos quatro pilares da POO. Agora que você entendeu o que é um objeto vamos abstrair um pouco mais e tentar entender o que é uma classe.
Diferença entre objetos e classes
Com eu disse, nesse sistema de escola cada aluno seria um objeto. Cada um desses objetos teria um nome, uma data de nascimento, pertenceria a uma turma, teria um CPF, etc.
Eu posso ter um aluno chamado Júlio, outro chamado Gabriel, Marta, etc... Enfim, cada aluno teria uma série de atributos e características próprias que os individualizam, mas todos eles seriam Alunos.
Alunos seria o termo que eu usaria para agrupar e classificar todos essas pessoas que estudam na escola. Alunos é o que chamamos de Classe. As classes são grupos maiores aos quais os objetos pertencem.
Sendo assim, em POO eu posso ter um objeto aluno que pertence a classe alunos. Tá complicado? Vamos então a outro exemplo mais fácil de entender.
Digamos que eu tenho uma classe chamada Países. Os objetos dessa classe poderiam ser Brasil, EUA, Russia, China, etc... Todos eles teriam atributos em comum como uma população, um idioma, um PIB, etc. Entendeu agora?
Só mais uma coisinha: Eu falei em classe alunos, em classe países, todas com nomes no plural para facilitar o seu entendimento, mas na prática os nomes vão geralmente vão aparecer no singular.
Entendendo os termos instância e instanciamento
Você reparou na imagem do topo da página? É uma foto de moldes para massa de modelar. Você usa esse moldes para criar na massa outros objetos com a forma do molde.
Estou falando isso porque você precisa entender que uma Classe em POO é como esses moldes. Com ela você cria outros objetos a partir das características da classe.
Cada objeto desses criados com a Classe é o que a POO chama de instâncias e ao processo de criação do objeto chamamos de instanciamento. Então os objetos são instâncias das classes. Brasil, EUA, Russia seriam instâncias da classe País.
Entendendo Atributos e Métodos
Para caracterizar as classes eu defino atributos. Por exemplo, quais seriam os atributos para caracterizar uma classe Carros? Você poderia listar por exemplo:
- Marca
- Modelo
- Ano
- Cor
- Potência do Motor
- Número de Portas
No entanto um carro também apresenta comportamentos e ações ao longo da sua existência. Por exemplo, um carro pode estar:
- Ligado
- Desligado
- Estacionado
- Andando
- Parado
- Consertando
A essas características que definem a Classe a POO chama de atributos. Já esses comportamentos e ações da Classe a POO chama de métodos.
Porque eu precisei explicar esses conceitos teóricos no meio do curso de C++? Porque eu vou precisar explicar uma série de recursos e diferenças do C para o C++.
Você verá que muitas vezes eu vou usar um recurso que parece uma função, mas na realidade ele é um método de uma classe, por isso sua sintaxe será diferente.
Uma função geralmente tem essa aparência...
nome_da_função(parâmetros)
... mas um método geralmente vai ser escrito dessa forma:
nome_do_objeto.método_do_objeto()
Existem outros conceitos de POO que eu precisarei explicar, mas deixarei para um outro momento para o texto não ficar tão complexo.
Referências
DEITEL, H. M. DEITEL, P. J. C++: Como programar. Pearson Education do Brasil. 2006.
GBDONLINE. Learn C++ Programming. Disponível em: <https://learn.onlinegdb.com/c%2B%2B_for_beginners> Acesso em 05 ago. 2024.
W3SCHOOLS. C++ Tutorial. Disponível em: <https://www.w3schools.com/cpp/default.asp> Acesso em 05 ago. 2024.