Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // PrintEmployers.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <string>
- class Printable {
- public:
- virtual void print() const;
- };
- void Printable::print()const {};
- class Employee : public Printable
- {
- public:
- Employee() {
- mName = "Vasulko";
- mYear = 2014;
- mSalary = 200;
- mTelephoneNumber = "380631234567";
- mAdress = " Lviv";
- };
- Employee(std::string Name, std::string TelephoneNumber, std::string Adress, double Salary, int Year) {
- mName = Name;
- mTelephoneNumber = TelephoneNumber;
- mAdress = Adress;
- mSalary = Salary;
- mYear = Year;
- };
- ~Employee() {};
- std::string Name() ;
- std::string TelephoneNumber() ;
- std::string Adress() ;
- double Salary() ;
- int Year() ;
- void setName(std::string Name) ;
- void setTelephoneNumber(std::string TelephoneNumber) ;
- void setAdress(std::string Adress) ;
- void setSalary(double Salary) ;
- void setYear(int Year) ;
- virtual void print() const override ;
- private:
- std::string mName;
- std::string mTelephoneNumber;
- std::string mAdress;
- double mSalary;
- int mYear;
- };
- void Employee::print() const {
- std::cout << mAdress << std::endl << mName << std::endl << mYear << std::endl << mTelephoneNumber << std::endl << mSalary << std::endl;
- };
- std::string Employee::Name() {
- return mName;
- };
- void Employee::setName(std::string Name) {
- mName = Name;
- };
- double Employee::Salary() {
- return mSalary;
- };
- void Employee::setSalary(double Salary) {
- mSalary = Salary;
- };
- std::string Employee::TelephoneNumber() {
- return mTelephoneNumber;
- };
- void Employee::setTelephoneNumber(std::string TelephoneNumber) {
- mTelephoneNumber = TelephoneNumber;
- };
- std::string Employee::Adress() {
- return mAdress;
- };
- void Employee::setAdress(std::string Adress) {
- mAdress =Adress;
- };
- int Employee::Year() {
- return mYear;
- };
- void Employee::setYear(int Year) {
- mYear = Year;
- };
- class Office : public Printable
- {
- public:
- Office() {
- mOfficeName = "Cipipi";
- mOfficeAdress = "Dragomanova 50";
- mOfficeArea = 3;
- mOfficeNumberOfEmployees = 2;
- };
- Office(std::string OfficeName, std::string OfficeAdress, double OfficeArea, int OfficeNumberOfEmployees) {
- mOfficeName = OfficeName;
- mOfficeAdress = OfficeAdress;
- mOfficeArea = OfficeArea;
- mOfficeNumberOfEmployees = OfficeNumberOfEmployees;
- };
- ~Office() {};
- std::string OfficeName();
- std::string OfficeAdress();
- double OfficeArea();
- int OfficeNumberOfEmployees();
- void setOfficeName(std::string Name);
- void setOfficeAdress(std::string Adress);
- void setOfficeArea(double Area);
- void setOfficeNumberOfEmployees(int NumberOfEmployees);
- virtual void print() const override;
- private:
- std::string mOfficeName;
- std::string mOfficeAdress;
- double mOfficeArea;
- int mOfficeNumberOfEmployees;
- };
- std::string Office::OfficeName()
- {
- return mOfficeName;
- };
- std::string Office::OfficeAdress()
- {
- return mOfficeAdress;
- };
- double Office::OfficeArea()
- {
- return mOfficeArea;
- };
- int Office::OfficeNumberOfEmployees()
- {
- return mOfficeNumberOfEmployees;
- };
- void Office::setOfficeName(std::string Name)
- {
- mOfficeName = Name;
- };
- void Office::setOfficeAdress(std::string Adress)
- {
- mOfficeAdress = Adress;
- };
- void Office::setOfficeArea( double Area)
- {
- mOfficeArea = Area;
- };
- void Office::setOfficeNumberOfEmployees(int NumberOfEmployees)
- {
- mOfficeNumberOfEmployees = NumberOfEmployees;
- };
- void Office::print() const
- {
- std::cout << mOfficeAdress <<std::endl<<mOfficeArea<<std::endl<<mOfficeName <<std::endl <<mOfficeNumberOfEmployees<<std::endl;
- };
- /*
- * Функція print друкує інформацію про кожен об'єкт у списку. Ідея полягає у тому, що функція
- * працює з нащадками класу Printable, який є базовим класом для всіх об'єктів, які можуть
- * роздрукувати інформацію про себе у консоль. Завдяки цьому ми можемо використовувати одну
- * і ту ж функцію для виводу інформації про об'єкти різних класів (головне щоб вони успадковували
- * від класу Printable). Тобто нам не потрібно змінювати функцію, чи писати її заново,
- * чи писати заново схожий код для виводу інших об'єктів - ми можемо використати функцію повторно.
- *
- * Для того, щоб функція print могла вивести інформацію про ваш клас необхідно успадкувати його
- * від класу Printable та перевизначити метод print().
- *
- * Параметер listToPrint - Список об'єктів про які необхідно вивести інформацію у консоль.
- */
- void printList(const std::vector<Printable *> listToPrint)
- {
- for (auto item : listToPrint)
- {
- item->print();
- std::cout << std::endl;
- }
- }
- int main()
- {
- Office *o1 = new Office;
- Office *o2 = new Office;
- std::vector <Office *> a;
- a.push_back(o1);
- a.push_back(o2);
- printList(a);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement