Relembrando
Vimos nos cursos anteriores de Algoritmos e linguagem C, que as instruções usadas nas linguagens para executar tarefas podem ser declarações de comandos ou funções prontas chamadas de funções nativas que são oferecidas pelas bibliotecas padrão.
As funções são diferenciadas das declarações pela presença de um abre e fecha parênteses após o seu nome, como, por exemplo, a função printf() da linguagem C.
Além disso vimos que existem funções criadas pelo próprio desenvolvedor que são blocos de instruções que são executados ao serem chamados. Essas funções podem ou não receber parâmetros dentro dos seus parênteses para a execução de instruções.
Também vimos que as funções podem ou não retornar algum valor para a linha de instruções que a chamou. Para refrescar sua memória vão dar alguns exemplos em Linguagem C, antes de avançar em C++:
- #include <stdio.h>
- void mensagem(char texto[]){
- printf("\n*************************\n");
- printf("%s",texto);
- printf("\n*************************\n");
- }
- int quadrado(int numero){
- return numero*numero;
- }
- int main()
- {
- int x;
- x=quadrado(5);
- mensagem("Cálculo do Quadrado");
- printf("O quadrado de 5 é %d",x);
- return 0;
- }
Neste exemplo nós criamos a função mensagem() entre as linhas 2 e 6 de forma que ela pode receber uma cadeia de caracteres como parâmetro. Na linha 16 nós a estamos chamando passando o parâmetro "Cálculo do Quadrado".
Já entre as linhas 8 e 10 nós criamos a função quadrado() que além receber um número como parâmetro, pode devolver para a linha que a chamou o quadrado desse número. Repare que na linha 15 nos estamos fazendo a variável x receber esse quadrado.
Com isso acho que você relembrou o básico e agora podemos avançar.
Funções no C++
Basicamente, o que vimos na linguagem C continua valendo no C++. A novidade agora é que podemos utilizar os chamado parâmetros com valor default. O que seria isso? São funções que, se o usuário NÃO passar um parâmetro durante a chamada da função, a função usará um valor de parâmetro padrão.
Por exemplo, na nossa função de mostrar mensagem usada acima, eu passei um parâmetro, mas eu poderia ter falado para a função que, se não houvesse parâmetro ela poderia mostrar a mensagem "fim de programa". Como ficaria o mesmo programa de exemplo acima, agora em C++ e com esse parâmetro default:
- #include <iostream>
- #include <string>
- using namespace std;
- void mensagem(string texto="Fim do Programa!"){
- cout << "\n*************************\n";
- cout << texto;
- cout << "\n*************************\n";
- }
- int quadrado(int numero){
- return numero*numero;
- }
- int main()
- {
- int x;
- x=quadrado(5);
- mensagem("Cálculo do Quadrado");
- cout << "O quadrado de 5 é %"<<x;
- mensagem();
- return 0;
- }
Neste exemplo, eu também criei a função mensagem() com parâmetro na linha 5, mas dessa vez eu coloquei um valor padrão para esse parâmetro. Com isso eu posso usar a função normalmente passando parâmetros como na linha 19, mas também posso usá-la sem parâmetro, como na linha 21.
Métodos: Uma função dentro da Classe
Nós recapitulamos toda essa parte de função da Linguagem C para poder falar sobre o métodos no C++. O que seriam os métodos? Para isso precisamos lembrar o que é uma Classe.
Nós já vimos que na Programação Orientada a Objetos as Classes são um conceito abstrato na tentativa de representar o mundo real dentro de um sistema computacional na forma de objetos. Por, exemplo, eu posso ter uma classe Alunos.
Vimos também que as classes possuem atributos, que nada mais são do que variáveis declaradas dentro dela. Por exemplo, a classe Alunos pode possuir os atributos nome, nota, faltas, etc.
Seguindo o mesmo raciocínio usado para simplificar a definição de atributos, podemos dizer que, de maneira simplificada, os métodos são as funções criadas dentro de uma classe. Vamos ilustrar com um exemplo para facilitar o entendimento:
- #include <iostream>
- #include <string>
- using namespace std;
- int main() {
- class aluno {
- public:
- string nome;
- int nota;
- int faltas;
- void faltou(){
- faltas++;
- }
- };
- aluno aluno1;
- aluno1.nome = "Gabriel";
- aluno1.nota = 10;
- aluno1.faltas = 0;
- aluno1.faltou();
- aluno1.faltou();
- aluno1.faltou();
- cout <<"Nome: "<< aluno1.nome << "\n";
- cout <<"Nota: "<< aluno1.nota << "\n";
- cout <<"Faltas: "<< aluno1.faltas << "\n";
- return 0;
- }
No exemplo acima, nas linhas 6 a 14 eu criei uma classe chamada aluno que possui os atributos nome, nota e faltas. Das linhas 11 a 13, eu também criei o método faltou() que faz o atributo faltas ser incrementado em uma unidade ou seja ele aumentará o número de faltas do aluno toda vez que é executado.
Na linha 15 eu instanciei um objeto com base nessa classe aluno, criando aluno1 e atribui um valor para os seus atributos nome, nota e faltas. Nas linhas 19 a 21 e chamei o método faltou() para esse aluno por três vezes.
O resultado disso é que, ao solicitar a exibição dos atributos desse objeto aluno1 , ele mostrei que o aluno tinha três faltas.
Lembrando que ao se referir aos atributos do objeto eu preciso indicar o nome do objeto ao qual o atributo pertence, por isso usamos a instrução aluno1.nome, por exemplo. Da mesma forma, ao se referir ao método do objeto eu indico o nome do objeto.
Como o método é uma espécie de função, a referência inclui o uso de abre e fecha parênteses, por isso o uso da instrução aluno1.faltou();
Nas aulas seguintes aprofundaremos esses conceitos com mais exemplos.
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.