Факультет Информационных Технологий, 2-й курс, II семестр Курс: Объектно-ориентированное программирование Семинар №3. Введение в классы План Ссылки Ключевое слово class, разделение класса на .h и .cpp файлы Модификаторы доступа Конструктор: несколько конструкторов, инициализация членов класса, значение по умолчанию 5. Деструктор 6. Константные функции-члены класса, селекторы и модификаторы 1. 2. 3. 4. Simple class Date.h class Date { private: int day; int month; int year; public: Date(int dd=0, int mm=0, int yy=0); Date(const std::string& str); Date(const Date& date); int getDay() const; int getMonth() const; int getYear() const; int compare(const Date& date) const; Date& addDay(int n); Date& addMonth(int n); Date& addYear(int n); }; Date.cpp #include "Date.h" #include <string> Date::Date(int dd, int mm, int yy) : day(dd), month(mm), year(yy) {} Date::Date(const std::string& str) { // parse string and set day, month, year } Date::Date(const Date& date) { day = date.day; month = date.month; year = date.year; } int Date::getDay() const { return day; } int Date::getMonth() const { return month; } int Date::getYear() const { return year; } int Date::compare(const Date& date) const { if (year == date.year) { 1 Факультет Информационных Технологий, 2-й курс, II семестр Курс: Объектно-ориентированное программирование if (month == date.month) { return day - date.day; } else { return month - date.month; } } else { return year - date.year; } } Date& Date::addDay(int n) { // add day return *this; } Date& Date::addMonth(int n) { // add month return *this; } Date& Date::addYear(int n) { // add year return *this; } Задание 3-1 Написать программу решения квадратного уравнения, использую класс Quadric, у которого есть публичные методы: void setA(double a); void setB(double b); void setC(double c); int getRoots(); double getX1(); double getX2(); и один приватный метод: void resolve(); Объект класса Quadric в любой момент времени содержит правильные корни уравнения для установленных параметров a, b и c. При изменении значения любого из параметров (через методы setA(), setB(), setC()) корни уравнения пересчитываются через приватный метод resolve(). Метод getRoots() возвращает кол-во корней уравнения (0, 1 или 2). Изначально Quadric содержит корни уравнения x*x-1=0. Метод main() запрашивает параметры квадратного уравнения, решает его через класс Quadric и показывает результат. Корни квадратного уравнения считаются как: X1 = (-b + sqrt(b*b – 4ac)) / 2a X2 = (-b - sqrt(b*b – 4ac)) / 2a Примерный код использования Quadric: Quadric q; cout << q.getX1(); // выведет 1 cout << q.getX2(); // выведет -1 q.setA(1); q.setB(2); q.setC(1); 2 Факультет Информационных Технологий, 2-й курс, II семестр Курс: Объектно-ориентированное программирование cout << q.getRoots(); // выведет 1 cout << q.getX1(); // выведет 1 3