Семинар #3 - Факультета информационных технологий НГУ

advertisement
Факультет Информационных Технологий, 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
Download