This repository has been archived on 2023-05-13. You can view files and clone it, but cannot push or open issues or pull requests.
mipt_cpp/seminar02_encapsulation/classroom_tasks/code/0book/10m.cpp

57 lines
1.9 KiB
C++
Raw Normal View History

2022-09-14 19:05:27 +03:00
/*
Некоторые замечания по оформлению
1) Как правило в классе сначала описываются публичные методы, а потом приватные
Так делают потому что если другой программист захочет воспользоваться вашим классом,
то его будет в первую очередь будет интересовать что ваш класс может делать
и уже потом его будет интересовать строение класса.
2) Приватные поля класса желательно называть так, чтобы их можно было отличить от обычных переменных
Это может сильно упростить понимание при написании/использовании больших програм и библиотек
В данном курсе мы будем называть приватные поля начиная с буквы m
Например, mTitle вместо title
*/
#include <iostream>
#include <cmath>
#include <string.h>
#include <cstdlib>
using std::cout, std::endl;
class Book
{
public:
Book(const char title[], float price, int pages)
{
if (pages < 0 || price < 0 || strlen(title) >= 100)
{
cout << "Error while creating Book!" << endl;
std::exit(1);
}
strcpy(mTitle, title);
mPrice = price;
mPages = pages;
}
void print() const
{
cout << mTitle << ", price = " << mPrice << ", pages = " << mPages << endl;
}
private:
char mTitle[100];
float mPrice;
int mPages;
};
int main()
{
Book a = Book("War and Peace", 1700, 900);
a.print();
}