Neste tutorial de nosso livro de C++, vamos aprender a criar um array de objetos, bem como manipulá-los.
Criando um array com Objetos em C++
No tutorial passado, criamos uma classe que calculava médias de duas ou três notas, de estudantes. Vamos fazer algo parecido neste tutorial.
Vamos criar a classe Student, e inicialmente ela recebe duas notas. A função construtora seta corretamente as variáveis, e tem uma função chamada getAverage() que retorna a média das duas notas:
#include <iostream> using namespace std;class Student { private: double grade1, grade2; public: Student(); Student(double, double); double getAverage(); }; Student::Student() { grade1 = 0; grade2 = 0; }double Student::getAverage() { return (grade1+grade2)/2; } int main() { Student NeilPeart(10, 8); cout<<NeilPeart.getAverage()<<endl; return 0; }
Note que criamos apenas um objeto, o aluno Neil Peart. Mas que escola tem apenas um aluno? Tem milhares, mas vamos com calma. Vamos trabalhar agora com 5 alunos. Poderíamos fazer:
- Student alu1, alu2, alu3, alu4, alu5;
Mas, e se fosse um projeto real, com mil alunos? Ia fazer até o alu1000?
Claro que não, né, mané!
Você estudou pelo C++ Progressivo, é uma pessoa esperta e vai logo se lembrar dos nossos amados e queridos arrays, para se trabalhar com muitas variáveis ao mesmo tempo.
Para declarar 5 inteiros, fazemos:
int num[5];
Para declarar 5 chars, fazemos:
char letter[5];
Então adivinha só o que fazemos pra criar 5 objetos da classe Student? Isso mesmo:
- Student alu[5];
#include <iostream> using namespace std; class Student { private: double grade1, grade2; public: Student(); Student(double, double); double getAverage(); }; Student::Student() { grade1 = 0; grade2 = 0; } Student::Student(double g1, double g2) { grade1 = g1; grade2 = g2; } double Student::getAverage() { return (grade1+grade2)/2; } int main() { Student alu[5]; cout<<alu[0].getAverage()<<endl; return 0; }
Como inicializar Objetos de um Array
Student alu[5]; alu[0] = Student(10,9); alu[1] = Student(10,8); alu[2] = Student(10,7); alu[3] = Student(10,6); alu[4] = Student(10,5);
Student alu[5] = { Student(10,9), Student(10,8), Student(10,7), Student(10,6), Student(10,5) };
Student alu[5] = { {10,9}, {10,8}, {10,7}, {10,6}, {10,5} };
Como acessar membros do Array de Objetos
- name.var
- name.func()
- arr[0].grade
- arr[1].getAverage();
#include <iostream> using namespace std; class Student { private: double grade1, grade2; public: Student(); Student(double, double); double getAverage(); }; Student::Student() { grade1 = 0; grade2 = 0; } Student::Student(double g1, double g2) { grade1 = g1; grade2 = g2; } double Student::getAverage() { return (grade1+grade2)/2; } int main() { Student alu[5] = { {10,9}, {10,8}, {10,6}, {10,5} }; cout<<alu[0].getAverage()<<endl; cout<<alu[1].getAverage()<<endl; cout<<alu[2].getAverage()<<endl; cout<<alu[3].getAverage()<<endl; cout<<alu[4].getAverage()<<endl; return 0; }
Como eu faria para acessar os objetos dentro de uma função?
ResponderExcluirComo faço para criar um método que acessa os atributos de todos os objetos do array?
ResponderExcluir