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

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Бублик Володимир Васильович Програмування - 2 Лекція 3. Об'єктне програмування. Права доступу Лекції для студентів 2 курсу абсолютно бесплатно. Урок-презентация на эту тему содержит всего 38 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Технологии » Бублик Володимир Васильович Програмування - 2 Лекція 3. Об'єктне програмування. Права доступу Лекції для студентів 2 курсу



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    38 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    97.00 kB
  • Просмотров:
    69
  • Скачиваний:
    0
  • Автор:
    неизвестен



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

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

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

№3 слайд
Зв дки що видно? class Date
Содержание слайда: Звідки що видно? 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
Содержание слайда: Звідки що видно? 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; }

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

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

№8 слайд
Доступн для неконтрольованого
Содержание слайда: Доступні для неконтрольованого спотворення 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 створить аварійну ситуацію,

№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; }

№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); }

№12 слайд
Атрибути об кту Атрибути об
Содержание слайда: Атрибути об'єкту Атрибути об'єкту, як і методи _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; }

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

№15 слайд
include lt ctime gt void Date
Содержание слайда: #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;

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

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

№19 слайд
Приклад. Оф с
Содержание слайда: Приклад. Офіс

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

№21 слайд
Службовець class Employee
Содержание слайда: Службовець 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 слайд
Працедавець. class Employer
Содержание слайда: Працедавець.1 class Employer { friend void Accounter::payroll(); private: Accounter * _accounter; int _volume; struct Staff; //Hidden implementation Staff * _office; // *** pimpl

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

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

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

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

№27 слайд
Бухгалтер class Accountant
Содержание слайда: Бухгалтер 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() ); }

№29 слайд
Груба помилка class 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 ); }

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

№32 слайд
Утил ти bool operator const
Содержание слайда: Утиліти 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
Содержание слайда: Методи 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() ); }

№35 слайд
Методи без скорочень bool
Содержание слайда: Методи (без скорочень) 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
Содержание слайда: Позначення Замість u.operator==(v), як і раніше пишемо u == v; (до u добираємося через this) Нагадування. У випадку утиліти u == v; позначає operator==(u, v);

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

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

Скачать все slide презентации Бублик Володимир Васильович Програмування - 2 Лекція 3. Об&apos;єктне програмування. Права доступу Лекції для студентів 2 курсу одним архивом:
Похожие презентации