🗊Бублик Володимир Васильович Програмування - 2 Лекція 3. Об'єктне програмування. Права доступу Лекції для студентів 2 курсу

Категория: Технологии
Нажмите для полного просмотра!
Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №1Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №2Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №3Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №4Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №5Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №6Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №7Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №8Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №9Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №10Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №11Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №12Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №13Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №14Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №15Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №16Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №17Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №18Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №19Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №20Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №21Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №22Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №23Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №24Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №25Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №26Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №27Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №28Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №29Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №30Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №31Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №32Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №33Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №34Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №35Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №36Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №37Бублик Володимир Васильович  Програмування - 2  Лекція 3. Об'єктне програмування.  Права доступу     Лекції для студентів 2 курсу, слайд №38

Содержание

Вы можете ознакомиться и скачать Бублик Володимир Васильович Програмування - 2 Лекція 3. Об'єктне програмування. Права доступу Лекції для студентів 2 курсу. Презентация содержит 38 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Бублик Володимир Васильович

Програмування - 2

Лекція 3. Об'єктне програмування.

Права доступу
 

Лекції для студентів 2 курсу
Описание слайда:
Бублик Володимир Васильович Програмування - 2 Лекція 3. Об'єктне програмування. Права доступу Лекції для студентів 2 курсу

Слайд 2





Оголошення
Для студентів другого курсу відкрито форум з об'єктно-орієнтованого програмування
Зайти на сторінку http://moodle.ukma.kiev.ua/
Зареєструватися
Одержати електронною поштою підтвердження
Записатися на курс об'єктно-орієнтованого програмування
Спілкуватися
Описание слайда:
Оголошення Для студентів другого курсу відкрито форум з об'єктно-орієнтованого програмування Зайти на сторінку http://moodle.ukma.kiev.ua/ Зареєструватися Одержати електронною поштою підтвердження Записатися на курс об'єктно-орієнтованого програмування Спілкуватися

Слайд 3





Звідки що видно?
class Date
{
public:
	Date ( int d =0, int m=0, int y=0);
	Date (string USdate); // “yyyy/mm/dd”
	Date (const Date&);
	~Date();
private:
	int _day, _month, _year;
	void fillDate (int d, int m, int y);
}
Описание слайда:
Звідки що видно? class Date { public: Date ( int d =0, int m=0, int y=0); Date (string USdate); // “yyyy/mm/dd” Date (const Date&); ~Date(); private: int _day, _month, _year; void fillDate (int d, int m, int y); }

Слайд 4





Звідки що видно?
class Date
{
public:	//Відкрита частина видна усім
	Date ( int d =0, int m=0, int y=0);
	Date (string USdate); // “yyyy/mm/dd”
	Date (const Date&);
	~Date();
private:	//Закрита частина, недоступна зовні
	int _day, _month, _year;
	void fillDate (int d, int m, int y);
}
Описание слайда:
Звідки що видно? class Date { public: //Відкрита частина видна усім Date ( int d =0, int m=0, int y=0); Date (string USdate); // “yyyy/mm/dd” Date (const Date&); ~Date(); private: //Закрита частина, недоступна зовні int _day, _month, _year; void fillDate (int d, int m, int y); }

Слайд 5





Для чого закрита частина в заголовному файлі?
#include “Date.h”
int main()
{
	Date today(22,1,2007);
//	Як виділити пам’ять під today, не знаючи
//	типів кожного з атрибутів?
	cout<<today<<endl;
	return 0;
}
Описание слайда:
Для чого закрита частина в заголовному файлі? #include “Date.h” int main() { Date today(22,1,2007); // Як виділити пам’ять під today, не знаючи // типів кожного з атрибутів? cout<<today<<endl; return 0; }

Слайд 6





Закриті атрибути
Закриті атрибути, розміщені в заголовному файлі, видимі всім, хто має доступ до заголовного файлу
Закриті атрибути доступні для використання лише членам класу, а також функціям або класам, яким надані для цього спеціальні повноваження (friends)
Закриті атрибути можна зробити невидимими, якщо перейти до указників (ідіома pimple ― pointer to implementation)
Описание слайда:
Закриті атрибути Закриті атрибути, розміщені в заголовному файлі, видимі всім, хто має доступ до заголовного файлу Закриті атрибути доступні для використання лише членам класу, а також функціям або класам, яким надані для цього спеціальні повноваження (friends) Закриті атрибути можна зробити невидимими, якщо перейти до указників (ідіома pimple ― pointer to implementation)

Слайд 7





Для чого закривають атрибути?
Уявімо собі, що атрибути
public:
int _day, _month, _year;
стануть відкритими.
Описание слайда:
Для чого закривають атрибути? Уявімо собі, що атрибути public: int _day, _month, _year; стануть відкритими.

Слайд 8





Доступні для неконтрольованого спотворення
Date myDay(18, 2, 2006);
Якщо атрибути відкриті, то зміну їх значень користувачем, яка може привести до некоректності, важко контролювати
myDay._day = 32;
myDay._month = 13;
myDay._year = 3333;
Описание слайда:
Доступні для неконтрольованого спотворення Date myDay(18, 2, 2006); Якщо атрибути відкриті, то зміну їх значень користувачем, яка може привести до некоректності, важко контролювати myDay._day = 32; myDay._month = 13; myDay._year = 3333;

Слайд 9





Доступ за допомогою модифікатора
Модифікатор локалізує місця можливих змін значень атрибутів та контролює їх коректність
void Date::setDay (int day)
{
	fillDate(day, Month(_month), _year);
	return;
}
якщо атрибут некоректний, функція fillDate створить аварійну ситуацію,
Описание слайда:
Доступ за допомогою модифікатора Модифікатор локалізує місця можливих змін значень атрибутів та контролює їх коректність void Date::setDay (int day) { fillDate(day, Month(_month), _year); return; } якщо атрибут некоректний, функція fillDate створить аварійну ситуацію,

Слайд 10





Для чого закривають методи?
Закривають службові методи, не призначені для вживання за межами класу
bool Date::leapYear (int y)
{
	bool leap;
	if (y % 4) leap=false;
	else if (y % 100) leap=true;
	else if (y % 400) leap=false;
	else leap=true;
	return leap;
}
Описание слайда:
Для чого закривають методи? Закривають службові методи, не призначені для вживання за межами класу bool Date::leapYear (int y) { bool leap; if (y % 4) leap=false; else if (y % 100) leap=true; else if (y % 400) leap=false; else leap=true; return leap; }

Слайд 11





Приклади використання закритого методу
Різні види конструкторів забезпечують інтерфейс до одного і того ж методу
Date::Date ( int d, Month m, int y)
{
	fillDate(d, m, y);
}
Date::Date ( int d, int m, int y)
{
	fillDate(d, Month(m), y);
}
Описание слайда:
Приклади використання закритого методу Різні види конструкторів забезпечують інтерфейс до одного і того ж методу Date::Date ( int d, Month m, int y) { fillDate(d, m, y); } Date::Date ( int d, int m, int y) { fillDate(d, Month(m), y); }

Слайд 12





Атрибути об'єкту
Атрибути об'єкту, як і методи
_day, _month, _year
позбавлені сенсу поза об'єктом
Метод, наприклад,
fillDate; setDay(5); month();
не можна викликати без об'єкту.
Метод завжди знає свій об'єкт, до якого його застосовано. Він звертається до свого об'єкту неявно (_day, _month, _year ) або через указник 
this  (this->_day, this->fillDate(d, m, y); )
Описание слайда:
Атрибути об'єкту Атрибути об'єкту, як і методи _day, _month, _year позбавлені сенсу поза об'єктом Метод, наприклад, fillDate; setDay(5); month(); не можна викликати без об'єкту. Метод завжди знає свій об'єкт, до якого його застосовано. Він звертається до свого об'єкту неявно (_day, _month, _year ) або через указник this (this->_day, this->fillDate(d, m, y); )

Слайд 13





Статичні атрибути і методи
Статичний атрибут не належить жодному об'єкту
Статичний метод не застосовується до жодного окремого об'єкту (він не знає this)
class Date
{
public:
	static void setDefault (); //за таймером
private:
	static Date defaultDate;
	static bool defaultSet;
}
Описание слайда:
Статичні атрибути і методи Статичний атрибут не належить жодному об'єкту Статичний метод не застосовується до жодного окремого об'єкту (він не знає this) class Date { public: static void setDefault (); //за таймером private: static Date defaultDate; static bool defaultSet; }

Слайд 14





Визначення статичного об'єкту
Виклик конструктора
Date Date::defaultDate;// = Date();
bool Date::defaultSet = false;
void Date::fillDate(int d, Month m, int y)	
{
	if (!defaultSet)
	{
		defaultSet =true;
		setDefault();
	}
……………………………………………
Описание слайда:
Визначення статичного об'єкту Виклик конструктора Date Date::defaultDate;// = Date(); bool Date::defaultSet = false; void Date::fillDate(int d, Month m, int y) { if (!defaultSet) { defaultSet =true; setDefault(); } ……………………………………………

Слайд 15





#include <ctime>
void Date::setDefault ()
{
	struct tm * today =new tm;
	time_t timer;
	time( &timer );
	today = gmtime(&timer);
	defaultDate._day = today->tm_mday;
	defaultDate._month = ++(today->tm_mon);
	defaultDate._year = today->tm_year+=1900;
}
Описание слайда:
#include <ctime> void Date::setDefault () { struct tm * today =new tm; time_t timer; time( &timer ); today = gmtime(&timer); defaultDate._day = today->tm_mday; defaultDate._month = ++(today->tm_mon); defaultDate._year = today->tm_year+=1900; }

Слайд 16





Обробка параметрів у конструкторі
Відсутні параметри дати тепер беруться з defaultDate
	_day = d? d: defaultDate._day;
	_month=m? m: defaultDate._month;
	_year= y? y: defaultDate._year;
Описание слайда:
Обробка параметрів у конструкторі Відсутні параметри дати тепер беруться з defaultDate _day = d? d: defaultDate._day; _month=m? m: defaultDate._month; _year= y? y: defaultDate._year;

Слайд 17





Статичні методи vs. утиліти класу
Статичний метод, наприклад, Point::amount має доступ до закритої частини класу і викликається поза класом через оператор розв'язання області дії
	Point :: amount();
Утиліта класу, наприклад, 
ostream& operator<<(ostream&, const Point&);
не має доступу до закритої частини класу і не потребує оператора розв'язання області дії
Описание слайда:
Статичні методи vs. утиліти класу Статичний метод, наприклад, Point::amount має доступ до закритої частини класу і викликається поза класом через оператор розв'язання області дії Point :: amount(); Утиліта класу, наприклад, ostream& operator<<(ostream&, const Point&); не має доступу до закритої частини класу і не потребує оператора розв'язання області дії

Слайд 18





Порушення прав доступу
Виняткові права доступу до атрибутів
Виняткові права доступу до закритих методів
Виняткові права на створення і видалення об'єктів
Виняткові права можна надати
Всьому класу
Окремому методу
Позакласній функції
Для надання виняткових прав потрібні серйозні підстави
Описание слайда:
Порушення прав доступу Виняткові права доступу до атрибутів Виняткові права доступу до закритих методів Виняткові права на створення і видалення об'єктів Виняткові права можна надати Всьому класу Окремому методу Позакласній функції Для надання виняткових прав потрібні серйозні підстави

Слайд 19





Приклад. Офіс
Описание слайда:
Приклад. Офіс

Слайд 20





Винятки
Тільки працедавець Employer має право створити робоче місце Employee і призначити особу Person на певну посаду Position
Тільки бухгалтеру Accountant, а точніше його методу нарахування зарплати payroll() працедавець Employer надає доступ до свого штатного розпису
Тільки бухгалтеру Accountant, а точніше його методу нарахування зарплати payroll (const Employee &) доступна інформація про заробітну плату посади, яку займає службовець
Описание слайда:
Винятки Тільки працедавець Employer має право створити робоче місце Employee і призначити особу Person на певну посаду Position Тільки бухгалтеру Accountant, а точніше його методу нарахування зарплати payroll() працедавець Employer надає доступ до свого штатного розпису Тільки бухгалтеру Accountant, а точніше його методу нарахування зарплати payroll (const Employee &) доступна інформація про заробітну плату посади, яку займає службовець

Слайд 21





Службовець
class Employee
{
friend class Employer;
private:
	const Person & _who;
	const Position & _what;
	Employee(const Person & who, const Position & what);
	~Employee();
public:
	const Person& who() const;
	const Position& what() const;
};
Описание слайда:
Службовець class Employee { friend class Employer; private: const Person & _who; const Position & _what; Employee(const Person & who, const Position & what); ~Employee(); public: const Person& who() const; const Position& what() const; };

Слайд 22





Працедавець.1
class Employer
{
	friend void Accounter::payroll();
private:
	Accounter * _accounter;
	int _volume;
	struct Staff;		//Hidden implementation
	Staff * _office;	// *** pimpl
Описание слайда:
Працедавець.1 class Employer { friend void Accounter::payroll(); private: Accounter * _accounter; int _volume; struct Staff; //Hidden implementation Staff * _office; // *** pimpl

Слайд 23





Працедавець.2
public:
	Employer(int volume);
	~Employer();
	void hire
		(const Person &, const Position &);
	void fire(int);
	void pay();
};
Описание слайда:
Працедавець.2 public: Employer(int volume); ~Employer(); void hire (const Person &, const Position &); void fire(int); void pay(); };

Слайд 24





Посада.1
class Position
{
friend void Accounter::payroll(const Employee&);
private:
	const int _len;
	string _name;
	int _salary;
	int getSalary() const;
Описание слайда:
Посада.1 class Position { friend void Accounter::payroll(const Employee&); private: const int _len; string _name; int _salary; int getSalary() const;

Слайд 25





Посада.2
public:
	string getPositionName() const;
	Position(int, char [], int);
	~Position();
};
Описание слайда:
Посада.2 public: string getPositionName() const; Position(int, char [], int); ~Position(); };

Слайд 26





Особа
class Person
{
private:
	const int _len;
	string _name;
public:
	string getName() const;
	Person(int, char []);
	~Person();
};
Описание слайда:
Особа class Person { private: const int _len; string _name; public: string getName() const; Person(int, char []); ~Person(); };

Слайд 27





Бухгалтер
class Accountant
{
private:
	void payroll (const Employee &);
	const Employer & _myEmployer;
public:
	Accountant (Employer & employer): 
			_myEmployer(employer){};
	~Accountant ()
	void payroll();
};
Описание слайда:
Бухгалтер class Accountant { private: void payroll (const Employee &); const Employer & _myEmployer; public: Accountant (Employer & employer): _myEmployer(employer){}; ~Accountant () void payroll(); };

Слайд 28





Висновки
Для порушення прав доступу повинні бути серйозні підстави, що випливають з умови задачі
Статус утиліти класу ще не дає виняткових прав
const Point operator+ (const Point & u, const Point & v)
{
	return Point ( u.x()+v.x(), u.y()+v.y() );
}
Описание слайда:
Висновки Для порушення прав доступу повинні бути серйозні підстави, що випливають з умови задачі Статус утиліти класу ще не дає виняткових прав const Point operator+ (const Point & u, const Point & v) { return Point ( u.x()+v.x(), u.y()+v.y() ); }

Слайд 29





Груба помилка
class Point
{
friend  Point operator+(const Point &, const Point &)
	double _x;
	double _y;
public:
	Point (double x=0, double y=0);
	Point (const Point &);
	~Point();
};
Описание слайда:
Груба помилка class Point { friend Point operator+(const Point &, const Point &) double _x; double _y; public: Point (double x=0, double y=0); Point (const Point &); ~Point(); };

Слайд 30





Невиправдане порушення прав доступу
Прямий доступ до атрибутів нічого корисного не дає
Point operator+ (const Point & u, const Point & v)
{
	return Point ( u._x+v._x, u._y+v._y );
}
Описание слайда:
Невиправдане порушення прав доступу Прямий доступ до атрибутів нічого корисного не дає Point operator+ (const Point & u, const Point & v) { return Point ( u._x+v._x, u._y+v._y ); }

Слайд 31





Утиліта vs. метод
Утиліта ― це функція, що обслуговує клас, але не належить до класу
Метод ― це функція-член класу, можливо, статичний
Конструктори, деструктор, присвоєння не можуть бути утилітами, вони обов'язково повинні належати класу
Багато функцій допускають визначення як утилітою, так і методом
Описание слайда:
Утиліта vs. метод Утиліта ― це функція, що обслуговує клас, але не належить до класу Метод ― це функція-член класу, можливо, статичний Конструктори, деструктор, присвоєння не можуть бути утилітами, вони обов'язково повинні належати класу Багато функцій допускають визначення як утилітою, так і методом

Слайд 32





Утиліти
bool operator==(const Point & u, const Point & v)
{
	return ( u.x() == v.x() ) && (u.y() == v.y() );
}
const Point operator+ (const Point & u, const Point & v)
{
	return Point ( u.x()+v.x(), u.y()+v.y() );
}
Утиліта не знає this
Описание слайда:
Утиліти bool operator==(const Point & u, const Point & v) { return ( u.x() == v.x() ) && (u.y() == v.y() ); } const Point operator+ (const Point & u, const Point & v) { return Point ( u.x()+v.x(), u.y()+v.y() ); } Утиліта не знає this

Слайд 33





Методи
bool Point ::operator==(const Point & u) const
{
	return ( _x == u._x ) && ( _y == u._y );
}
const Point Point :: operator+ (const Point & v) const
{
	return Point ( _x+v._x, _y+v._y );
}
Описание слайда:
Методи bool Point ::operator==(const Point & u) const { return ( _x == u._x ) && ( _y == u._y ); } const Point Point :: operator+ (const Point & v) const { return Point ( _x+v._x, _y+v._y ); }

Слайд 34





Методи (технологічне рішення)
bool Point ::operator==(const Point & u) const
{
	return ( x() == u.x() ) && ( y() == u.y() );
}
const Point Point :: operator+ (const Point & v) const
{
	return Point ( x()+v.x(), y()+v.y() );
}
Описание слайда:
Методи (технологічне рішення) bool Point ::operator==(const Point & u) const { return ( x() == u.x() ) && ( y() == u.y() ); } const Point Point :: operator+ (const Point & v) const { return Point ( x()+v.x(), y()+v.y() ); }

Слайд 35





Методи (без скорочень)
bool Point ::operator==(const Point & u) const
{
	return ( this->x() == u.x() ) && (this-> y() == u.y() );
}
const Point Point :: operator+ (const Point & v) const
{
	return Point (this-> x()+v.x(), this-> y()+v.y() );
}
Описание слайда:
Методи (без скорочень) bool Point ::operator==(const Point & u) const { return ( this->x() == u.x() ) && (this-> y() == u.y() ); } const Point Point :: operator+ (const Point & v) const { return Point (this-> x()+v.x(), this-> y()+v.y() ); }

Слайд 36





Позначення
Замість
u.operator==(v), 
як і раніше пишемо 
u == v;
(до u добираємося через this)
Нагадування. У випадку утиліти
u == v;
позначає
operator==(u, v);
Описание слайда:
Позначення Замість u.operator==(v), як і раніше пишемо u == v; (до u добираємося через this) Нагадування. У випадку утиліти u == v; позначає operator==(u, v);

Слайд 37





Вправа. Облік точок
class InventList
{
friend class Point;
private:
	InventList();
…………………………
};
Див. Lab3
Описание слайда:
Вправа. Облік точок class InventList { friend class Point; private: InventList(); ………………………… }; Див. Lab3

Слайд 38





Висновок
Завжди ведіть облік об'єктам, слідкуйте за їх створенням, копіюванням і видаленням
Поділ класу на методи і утиліти є важливою проблемою проектування класів
Не можна доповнити чужий клас методом, а лише утилітою
Описание слайда:
Висновок Завжди ведіть облік об'єктам, слідкуйте за їх створенням, копіюванням і видаленням Поділ класу на методи і утиліти є важливою проблемою проектування класів Не можна доповнити чужий клас методом, а лише утилітою



Похожие презентации
Mypresentation.ru
Загрузить презентацию