Capitulo 03 - Introdução a Classes e Objetos
Neste capítulo veremos como criar uma classe função-membro para o exemplo de uma classe de um livro de notas para o calculo das notas dos alunos que tiraram nas provas, mais a frente veremos novamente em Arrays e Vetores no Capitulo 07.
Obs: os exemplos dos programas a seguir algumas de suas variáveis estão em portugues para melhor entendimento.
Exemplo 01:
//figura 3.1: ClassNotasLivro.cpp
#include <iostream>
using std::cout;
using std::endl;
//definiao da classe NotasLivro
class NotasLivro
{
public:
//funcao que exibe uma mensagem de boas vindas ao usuario do NotasLivro
void telaMensagem()
{
cout << "Bem vindo a Notas Livro!" << endl;
}
};
//a funcao main inicia a execucao do programa
int main()
{
NotasLivro minhaNotasLivro; //cria um objeto NotasLivro chamado minhaNotasLivro
minhaNotasLivro.telaMensagem(); //chama a funcao telaMensagem do objeto
return 0;
}
No exemplo 01 do programa ClassNotasLivro vemos que dentro da classe NotasLivro criamos a classe como public e dentro dela uma função chamada telamensagem no qual dentro da função int main, a função telaMensagem () será chamada pela classe minhaNotasLivro
e depois de compilado ficará assim na tela:
Exemplo 02:
//figura 3.3: ClassNotasLivro1.cpp
#include <iostream>
#include <string> //o programa utiliza classe de string padrao C++
using std::string;
using std::cout;
using std::endl;
//efinicao da classe NotasLivro
class NotasLivro
{
public:
//funcao que exibe uma mensagem de boas vindas ao usuario do NotasLivro
void telaMensagem(string nomeCurso)
{
cout << "Bem vindo ao notas livro\n" <<nomeCurso << "!" << endl;
}
};
//a funcao main inicia a execucao do programa
int main()
{
string nomeDoCurso; //strings de caracteres para armazenar o nome do curso
NotasLivro minhaNotasLivro; //cria um objeto Notaslivro chamado minhaNotasLivro
//prompt para entrada do nome do curso
cout << "Por favor entre com o nome do curso:" << endl;
getline(cin, nomeDoCurso); //le o nome de um curso com espacos em branco
cout << endl;
//chama a funcao telaMensagem de minhaNotasLivro
//e passa nomeDoCurso com um argumento
minhaNotasLivro.telaMensagem(nomeDoCurso);
return 0;
}
No exemplo 02 do programa ClassNotasLivro1 definimos a classe NotasLivro1 com uma função que aceita um parâmetro. Dentro de telaMensagem foi declara uma string do nome do curso no qual sera lida com cout entro da função void telaMensagem() chamando nomeCurso que depois de compilado ficara assim na tela:
Exemplo 03:
//Figura 3.5: ClassNotasLivro2.cpp
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class NotasLivro
{
public:
//funcao que configura o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcao que obtem o ome do curso
string getNomeCurso()
{
return nomeCurso;
}
//mensagem de boas vindas
void telaMensagem()
{
/*
essa instrucao chama getNomeCurso para obter o
nome do curso que esse NotasLivro representa
*/
cout << "Bem vindo a Notas Livro\n" << getNomeCurso() << "!" << endl;
}
private:
string nomeCurso;
};
int main()
{
string nomeDoCurso; //string par armazenar o nome do curso
NotasLivro minhaNotasLivro; //cria um objeto chamado minhaNotasLivro
cout << "\nPor favor entre com o nome do curso:" << endl;
getline(cin, nomeDoCurso); //le o nome de um curso com espacos em branco
minhaNotasLivro.setNomeCurso(nomeDoCurso); //cofigura o nome do curso
cout << endl; //gera saida de linha em branco
minhaNotasLivro.telaMensagem(); //exibe a mensagem com o novo nome do curso
return 0;
}
No exemplo do programa ClassNotasLivro2 Define Instanciando multiplos objetos da classe NotasLivro e utilizando o construtor NotasLivro para especificar o nome do curso quando cada objeto NotasLivro é criado.
e ao mandar compilar o aparecera dessa forma a mensagem:
Exemplo 04:
//figura 3.7: ClassNotasLivro3.cpp
#include <iostream>
#include <string>
using namespace std;
class NotasLivro
{
public:
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro(string nome)
{
setNomeCurso(nome); //chama a funcao ser para inicializar nomeCurso
}
//funcao que configura o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //chama a funcao set para inicializar nomeCurso
}
//funcao que obtem o nome do curso
string getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//mensagem de boas vindas
void telaMensagem()
{
/*
essa instrucao chama getNomeCurso para obter o
nome do curso que esse NotasLivro representa
*/
cout << "Bem vindo a Notas Livro\n" << getNomeCurso() << "!" << endl;
}
private:
string nomeCurso; //nome do curso para esta NotasLivro
};
int main()
{
//cria dois objetos NotasLivro
NotasLivro notasLivro1("C Como Programar");
NotasLivro notasLivro2("C++ Como Programar");
//exibe valor inicial de nomeCurso para cada NotasLivro
cout << "notasLivro1 curso criado: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 curso criado: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
No exemplo do programa ClassNotasLivro3 Instanciamos multiplos objetos da classe NotasLivro e utilizando o construtor NotasLivro para especificar o nome do curso
quando cada objeto NotasLivro é criado. Depoois de compilado a mensagem que aparecera na tela sera essa:
Exemplo 5:
//figura 3.9: NotasLivro4.h
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class NotasLivro
{
public:
//o construtor inicializa nomeCurso com a strigng fornecida como argumento
NotasLivro(string nome)
{
setNomeCurso(nome);
}
//funcao para configurar o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcao para obter o nome do curso
string getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem-vindo a NotasLivro\n" << getNomeCurso()
<< "!" << endl;
}
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Exemplo 06:
//Figura 3.10: NotasLivro4Main.cpp
#include <iostream>
#include "NotasLivro4.h"
using namespace std;
int main()
{
//cria 2 objetos NotasLivro
NotasLivro notasLivro1("Curso Logica de Programacao");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao em C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 criado nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 criado nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
Criamos a classe NotasLivro.h em um arquivo separado para ser chamado dentro do programa NotasLivro.cpp no qual usa a biblioteca #include "NotasLivro.h" sem essa biblioteca o programa nao seria executado e daria um erro no qual não encontraria a classe NotasLivr, quando executado o programa aparecera impresso na tela as duas mensagens do objeto notasLivro1 e notasLivro2:
Exemplos 07, 08 e 09:
//figura 3.11: NotasLivro5.h
#include <string>
using std:string;
class NotasLivro
{
public:
NotasLivro(string); //o construtor inicializa nomeCurso
void setNomeCurso(string); //funcao para configurar o nome do curso
string getNomeCurso(); //funcao para obter o nome do curso
void telaMensagem(); //exibe uma mensagem de boas-vindas
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Definicao de classe NotasLivro5. Esse arquivo apresenta a interface publica de
NotasLivro5.h sem revelar as implementacoes de funcao-membro de NotasLivro
que sao definidas em NotasLivro5Main.cpp
//Figura 3.12: NotasLivro5.cpp
#include <iostream>
#include "NotasLivro5.h"
using std::cout;
using std::endl;
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro::NotasLivro(string nome)
{
setNomeCurso(nome); //chama a funao set para inicializar nomeCurso
}
//funcao para configurar o nome do curso
void NotasLivro::setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcaom para obter o nome do curso
string NotasLivro::getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void NotasLivro::telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem vindo a NotasLivro:\n" << getNomeCurso()
<< "!" << endl;
}
No exemplo do programa tem definicoes de funcao-membro de NotasLivro5. Esse arquivo contem implementacoes das funcoes-membro prototipadas em NotasLivro5.h.
//figura 3.13: NotasLivro5Main.cpp
#include <iostream>
#include "NotasLivro5.cpp"
using std::cout;
using std::endl;
int main()
{
//cria 2 objetos NotasLivro
NotasLivro notasLivro1("Curso Logica de Programacao");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao em C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 criado nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 criado nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
No exemplo deste programa vemos a demonstração de classe NotasLivro5 depois de separar sua interface de sua implementação. executando o programa mostrará a mensagem na tela:
Exemplos 10, 11 e 12:
//figura 3.15: NotasLivro6.h
#include <iostream>
#include <string>
using std::string;
class NotasLivro
{
public:
NotasLivro(string); //o construtor inicializa nomeCurso
void setNomeCurso(string); //funcao para configurar o nome do curso
string getNomeCurso(); //funcao para obter o nome do curso
void telaMensagem(); //exibe uma mensagem de boas-vindas
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Definição de classe NotasLivro6. Esse arquivo apresenta a interface publica da
classe. Definições de função-membro aparecem em NotasLivro6.cpp
//figura 3.16: NotasLivro6.cpp
#include <iostream>
using std::cout;
using std::endl;
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro::NotasLivro(string nome)
{
setNomeCurso(nome); //valida e armazena nomeCurso
}
//funcao para configurar o nome do curso
//assegura que o nome do curso tenha no maximo 25 caracteres
void NotasLivro::setNomeCurso(string nome)
{
if(nome.length() <= 25) //se o nome tiver 25 ou menos caracteres
nomeCurso = nome; //armazena o nome do curso e do objeto
if(nome.length() > 25) //se o nome tiver mais de 25 caracteres
{
//confiura nomeCurso como os primeiros 25 caracteres do parametro nome
nomeCurso = nome.substr(0, 25); //inicia em 0, comprimento de 25
cout << "Nome \"" << nome << "\" excede o comprimento maximo (25).\n"
<< "Limitando nomeCurso nos primeiros 25 caracteres.\n" << endl;
} //fim do if
} //fim da funcao setNomeCurso
//funcaom para obter o nome do curso
string NotasLivro::getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void NotasLivro::telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem vindo a NotasLivro:\n" << getNomeCurso()
<< "!" << endl;
}
Definições de função-membro de NotasLivro6. Esse arquivo contem
implementações das funções-membro prototipadas em NotasLivro5.h.
//figura 3.17: NotasLivro6Main.cpp
#include <iostream>
#include "NotasLivro6.h"
#include "NotasLivro6.cpp"
using std::cout;
using std::endl;
int main()
{
//cria 2 objetos NotasLivro
//nome inicial de curso de notasLivro1 é muito longo
NotasLivro notasLivro1("Curso Oracle Database");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 nome do curso inicial: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 nome do curso inicial: " << notasLivro2.getNomeCurso()
<< endl;
//modifica nomeCurso da minhaNotasLivro (como uma string de comprimentyo valido)
notasLivro1.setNomeCurso("Curso de Pascal e Java");
//exibe o nomeCurso de cada NotasLivro
cout << "notasLivro1 nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
Cria e manipula um objeto NotasLivro6; ilustra a validação. Executando o programa, uma mensagem ira ser mostrada na tela:
Aqui terminamos o Capitulo 03 de Introdução a classes e objetos
ate a proxima
Obs: os exemplos dos programas a seguir algumas de suas variáveis estão em portugues para melhor entendimento.
Exemplo 01:
//figura 3.1: ClassNotasLivro.cpp
#include <iostream>
using std::cout;
using std::endl;
//definiao da classe NotasLivro
class NotasLivro
{
public:
//funcao que exibe uma mensagem de boas vindas ao usuario do NotasLivro
void telaMensagem()
{
cout << "Bem vindo a Notas Livro!" << endl;
}
};
//a funcao main inicia a execucao do programa
int main()
{
NotasLivro minhaNotasLivro; //cria um objeto NotasLivro chamado minhaNotasLivro
minhaNotasLivro.telaMensagem(); //chama a funcao telaMensagem do objeto
return 0;
}
No exemplo 01 do programa ClassNotasLivro vemos que dentro da classe NotasLivro criamos a classe como public e dentro dela uma função chamada telamensagem no qual dentro da função int main, a função telaMensagem () será chamada pela classe minhaNotasLivro
e depois de compilado ficará assim na tela:
Exemplo 02:
//figura 3.3: ClassNotasLivro1.cpp
#include <iostream>
#include <string> //o programa utiliza classe de string padrao C++
using std::string;
using std::cout;
using std::endl;
//efinicao da classe NotasLivro
class NotasLivro
{
public:
//funcao que exibe uma mensagem de boas vindas ao usuario do NotasLivro
void telaMensagem(string nomeCurso)
{
cout << "Bem vindo ao notas livro\n" <<nomeCurso << "!" << endl;
}
};
//a funcao main inicia a execucao do programa
int main()
{
string nomeDoCurso; //strings de caracteres para armazenar o nome do curso
NotasLivro minhaNotasLivro; //cria um objeto Notaslivro chamado minhaNotasLivro
//prompt para entrada do nome do curso
cout << "Por favor entre com o nome do curso:" << endl;
getline(cin, nomeDoCurso); //le o nome de um curso com espacos em branco
cout << endl;
//chama a funcao telaMensagem de minhaNotasLivro
//e passa nomeDoCurso com um argumento
minhaNotasLivro.telaMensagem(nomeDoCurso);
return 0;
}
No exemplo 02 do programa ClassNotasLivro1 definimos a classe NotasLivro1 com uma função que aceita um parâmetro. Dentro de telaMensagem foi declara uma string do nome do curso no qual sera lida com cout entro da função void telaMensagem() chamando nomeCurso que depois de compilado ficara assim na tela:
Exemplo 03:
//Figura 3.5: ClassNotasLivro2.cpp
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class NotasLivro
{
public:
//funcao que configura o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcao que obtem o ome do curso
string getNomeCurso()
{
return nomeCurso;
}
//mensagem de boas vindas
void telaMensagem()
{
/*
essa instrucao chama getNomeCurso para obter o
nome do curso que esse NotasLivro representa
*/
cout << "Bem vindo a Notas Livro\n" << getNomeCurso() << "!" << endl;
}
private:
string nomeCurso;
};
int main()
{
string nomeDoCurso; //string par armazenar o nome do curso
NotasLivro minhaNotasLivro; //cria um objeto chamado minhaNotasLivro
cout << "\nPor favor entre com o nome do curso:" << endl;
getline(cin, nomeDoCurso); //le o nome de um curso com espacos em branco
minhaNotasLivro.setNomeCurso(nomeDoCurso); //cofigura o nome do curso
cout << endl; //gera saida de linha em branco
minhaNotasLivro.telaMensagem(); //exibe a mensagem com o novo nome do curso
return 0;
}
No exemplo do programa ClassNotasLivro2 Define Instanciando multiplos objetos da classe NotasLivro e utilizando o construtor NotasLivro para especificar o nome do curso quando cada objeto NotasLivro é criado.
e ao mandar compilar o aparecera dessa forma a mensagem:
Exemplo 04:
//figura 3.7: ClassNotasLivro3.cpp
#include <iostream>
#include <string>
using namespace std;
class NotasLivro
{
public:
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro(string nome)
{
setNomeCurso(nome); //chama a funcao ser para inicializar nomeCurso
}
//funcao que configura o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //chama a funcao set para inicializar nomeCurso
}
//funcao que obtem o nome do curso
string getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//mensagem de boas vindas
void telaMensagem()
{
/*
essa instrucao chama getNomeCurso para obter o
nome do curso que esse NotasLivro representa
*/
cout << "Bem vindo a Notas Livro\n" << getNomeCurso() << "!" << endl;
}
private:
string nomeCurso; //nome do curso para esta NotasLivro
};
int main()
{
//cria dois objetos NotasLivro
NotasLivro notasLivro1("C Como Programar");
NotasLivro notasLivro2("C++ Como Programar");
//exibe valor inicial de nomeCurso para cada NotasLivro
cout << "notasLivro1 curso criado: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 curso criado: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
No exemplo do programa ClassNotasLivro3 Instanciamos multiplos objetos da classe NotasLivro e utilizando o construtor NotasLivro para especificar o nome do curso
quando cada objeto NotasLivro é criado. Depoois de compilado a mensagem que aparecera na tela sera essa:
Exemplo 5:
//figura 3.9: NotasLivro4.h
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class NotasLivro
{
public:
//o construtor inicializa nomeCurso com a strigng fornecida como argumento
NotasLivro(string nome)
{
setNomeCurso(nome);
}
//funcao para configurar o nome do curso
void setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcao para obter o nome do curso
string getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem-vindo a NotasLivro\n" << getNomeCurso()
<< "!" << endl;
}
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Exemplo 06:
//Figura 3.10: NotasLivro4Main.cpp
#include <iostream>
#include "NotasLivro4.h"
using namespace std;
int main()
{
//cria 2 objetos NotasLivro
NotasLivro notasLivro1("Curso Logica de Programacao");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao em C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 criado nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 criado nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
Criamos a classe NotasLivro.h em um arquivo separado para ser chamado dentro do programa NotasLivro.cpp no qual usa a biblioteca #include "NotasLivro.h" sem essa biblioteca o programa nao seria executado e daria um erro no qual não encontraria a classe NotasLivr, quando executado o programa aparecera impresso na tela as duas mensagens do objeto notasLivro1 e notasLivro2:
Exemplos 07, 08 e 09:
//figura 3.11: NotasLivro5.h
#include <string>
using std:string;
class NotasLivro
{
public:
NotasLivro(string); //o construtor inicializa nomeCurso
void setNomeCurso(string); //funcao para configurar o nome do curso
string getNomeCurso(); //funcao para obter o nome do curso
void telaMensagem(); //exibe uma mensagem de boas-vindas
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Definicao de classe NotasLivro5. Esse arquivo apresenta a interface publica de
NotasLivro5.h sem revelar as implementacoes de funcao-membro de NotasLivro
que sao definidas em NotasLivro5Main.cpp
//Figura 3.12: NotasLivro5.cpp
#include <iostream>
#include "NotasLivro5.h"
using std::cout;
using std::endl;
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro::NotasLivro(string nome)
{
setNomeCurso(nome); //chama a funao set para inicializar nomeCurso
}
//funcao para configurar o nome do curso
void NotasLivro::setNomeCurso(string nome)
{
nomeCurso = nome; //armazena o nome do curso no objeto
}
//funcaom para obter o nome do curso
string NotasLivro::getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void NotasLivro::telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem vindo a NotasLivro:\n" << getNomeCurso()
<< "!" << endl;
}
No exemplo do programa tem definicoes de funcao-membro de NotasLivro5. Esse arquivo contem implementacoes das funcoes-membro prototipadas em NotasLivro5.h.
//figura 3.13: NotasLivro5Main.cpp
#include <iostream>
#include "NotasLivro5.cpp"
using std::cout;
using std::endl;
int main()
{
//cria 2 objetos NotasLivro
NotasLivro notasLivro1("Curso Logica de Programacao");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao em C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 criado nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 criado nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
No exemplo deste programa vemos a demonstração de classe NotasLivro5 depois de separar sua interface de sua implementação. executando o programa mostrará a mensagem na tela:
Exemplos 10, 11 e 12:
//figura 3.15: NotasLivro6.h
#include <iostream>
#include <string>
using std::string;
class NotasLivro
{
public:
NotasLivro(string); //o construtor inicializa nomeCurso
void setNomeCurso(string); //funcao para configurar o nome do curso
string getNomeCurso(); //funcao para obter o nome do curso
void telaMensagem(); //exibe uma mensagem de boas-vindas
private:
string nomeCurso; //nome do curso para esse NotasLivro
};
Definição de classe NotasLivro6. Esse arquivo apresenta a interface publica da
classe. Definições de função-membro aparecem em NotasLivro6.cpp
//figura 3.16: NotasLivro6.cpp
#include <iostream>
using std::cout;
using std::endl;
//o construtor inicializa nomeCurso com a string fornecida como argumento
NotasLivro::NotasLivro(string nome)
{
setNomeCurso(nome); //valida e armazena nomeCurso
}
//funcao para configurar o nome do curso
//assegura que o nome do curso tenha no maximo 25 caracteres
void NotasLivro::setNomeCurso(string nome)
{
if(nome.length() <= 25) //se o nome tiver 25 ou menos caracteres
nomeCurso = nome; //armazena o nome do curso e do objeto
if(nome.length() > 25) //se o nome tiver mais de 25 caracteres
{
//confiura nomeCurso como os primeiros 25 caracteres do parametro nome
nomeCurso = nome.substr(0, 25); //inicia em 0, comprimento de 25
cout << "Nome \"" << nome << "\" excede o comprimento maximo (25).\n"
<< "Limitando nomeCurso nos primeiros 25 caracteres.\n" << endl;
} //fim do if
} //fim da funcao setNomeCurso
//funcaom para obter o nome do curso
string NotasLivro::getNomeCurso()
{
return nomeCurso; //retorna nomeCurso do objeto
}
//exibe uma mensagem de boas-vindas para o usuario NotasLivro
void NotasLivro::telaMensagem()
{
//chama getNomeCurso para obter o nomeCurso
cout << "Bem vindo a NotasLivro:\n" << getNomeCurso()
<< "!" << endl;
}
Definições de função-membro de NotasLivro6. Esse arquivo contem
implementações das funções-membro prototipadas em NotasLivro5.h.
//figura 3.17: NotasLivro6Main.cpp
#include <iostream>
#include "NotasLivro6.h"
#include "NotasLivro6.cpp"
using std::cout;
using std::endl;
int main()
{
//cria 2 objetos NotasLivro
//nome inicial de curso de notasLivro1 é muito longo
NotasLivro notasLivro1("Curso Oracle Database");
NotasLivro notasLivro2("Curso Algoritmos e Logica de Programacao C, Pascal e Java");
//exibe o valor inicial de nomeCuros para cada NotasLivro
cout << "notasLivro1 nome do curso inicial: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 nome do curso inicial: " << notasLivro2.getNomeCurso()
<< endl;
//modifica nomeCurso da minhaNotasLivro (como uma string de comprimentyo valido)
notasLivro1.setNomeCurso("Curso de Pascal e Java");
//exibe o nomeCurso de cada NotasLivro
cout << "notasLivro1 nome do curso: " << notasLivro1.getNomeCurso()
<< "\nnotasLivro2 nome do curso: " << notasLivro2.getNomeCurso()
<< endl;
return 0;
}
Cria e manipula um objeto NotasLivro6; ilustra a validação. Executando o programa, uma mensagem ira ser mostrada na tela:
Aqui terminamos o Capitulo 03 de Introdução a classes e objetos
ate a proxima
Comentários
Postar um comentário