Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -----------------------------------------------------------------------
- people.h
- -----------------------------------------------------------------------
- #pragma once
- #include <string>
- #include <set>
- enum class ProgrammingLanguage { CPP, JAVA, PYTHON, PHP };
- enum class Gender { MALE, FEMALE };
- class Person {
- public:
- Person(const std::string& name, int age, Gender gender) : name_(name),
- age_(age),
- gender_(gender) {}
- const std::string& GetName() const {
- return name_;
- }
- int GetAge() const {
- return age_;
- }
- Gender GetGender() const {
- return gender_;
- }
- private:
- std::string name_;
- int age_;
- Gender gender_;
- };
- class Programmer : public Person {
- public:
- Programmer(const std::string& name, int age, Gender gender) : Person(name,
- age,
- gender) {}
- void AddProgrammingLanguage(ProgrammingLanguage language);
- bool CanProgram(ProgrammingLanguage language) const;
- private:
- std::set<ProgrammingLanguage> language_;
- };
- enum class WorkerSpeciality { BLACKSMITH, CARPENTER, WOOD_CHOPPER, ENGINEER, PLUMBER };
- class Worker : public Person {
- public:
- Worker(const std::string& name, int age, Gender gender) : Person(name,
- age,
- gender) {}
- void AddSpeciality(WorkerSpeciality speciality);
- bool HasSpeciality(WorkerSpeciality speciality) const;
- private:
- std::set<WorkerSpeciality> speciality_;
- };
- -----------------------------------------------------------------------
- people.cpp
- -----------------------------------------------------------------------
- #include "people.h"
- #include <stdexcept>
- using namespace std;
- void Programmer::AddProgrammingLanguage(ProgrammingLanguage language) {
- language_.insert(language);
- }
- bool Programmer::CanProgram(ProgrammingLanguage language) const {
- return language_.count(language);
- }
- void Worker::AddSpeciality(WorkerSpeciality speciality) {
- speciality_.insert(speciality);
- }
- bool Worker::HasSpeciality(WorkerSpeciality speciality) const {
- return speciality_.count(speciality);
- }
- -----------------------------------------------------------------------
- main.cpp
- -----------------------------------------------------------------------
- #include "people.h"
- #include <cassert>
- #include <iostream>
- int main() {
- using namespace std;
- try {
- Programmer programmer{"Bjarne Stroustrup"s, 69, Gender::MALE};
- programmer.AddProgrammingLanguage(ProgrammingLanguage::CPP);
- assert(programmer.CanProgram(ProgrammingLanguage::CPP));
- Worker worker{"Mario"s, 42, Gender::MALE};
- worker.AddSpeciality(WorkerSpeciality::PLUMBER);
- assert(worker.HasSpeciality(WorkerSpeciality::PLUMBER));
- } catch (...) {
- cout << "Exception was thrown"s << endl;
- }
- cout << "OK"s << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment