Udacity C++
Udacity C++Petrix
c_cpp
4 years ago
1.2 kB
8
Indexable
#
#include <cassert>
#include <stdexcept>
#include <string>
using std::string;
// TODO: Define "Student" class
class Student {
public:
// constructor
Student(string name, int grade, float gpa) : name_(name), grade_(grade), gpa_(gpa) {
Validate();
}
// accessors
string Name() const {
return name_;
}
int Grade() const {
return grade_;
}
float GPA() const {
return gpa_;
}
// mutators
void Name(string name) {
name_ = name;
Validate();
}
void Grade(int grade) {
grade_ = grade;
Validate();
}
void GPA(float gpa) {
gpa_ = gpa;
Validate();
}
private:
string name_;
int grade_;
float gpa_;
void Validate() {
if(Grade() < 0 || Grade() > 12 || GPA() < 0.0 || GPA() > 4.0)
throw std::invalid_argument("argument out of bounds");
}
};
// TODO: Test
int main() {
Student david("David Silver", 10, 4.0);
assert(david.Name() == "David Silver");
assert(david.Grade() == 10);
assert(david.GPA() == 4.0);
bool caught{false};
try {
david.Grade(20);
}
catch(...) {
caught = true;
}
assert(caught);
}
Editor is loading...