ЧЕТВЕРТОЕ ЗАНЯТИЕ ООП ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ПРИНЦИПЫ

  • Размер: 1.2 Мб
  • Автор: Максим Макущенко
  • Количество слайдов: 15

Описание презентации ЧЕТВЕРТОЕ ЗАНЯТИЕ ООП ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ПРИНЦИПЫ по слайдам

ЧЕТВЕРТОЕ ЗАНЯТИЕ ЧЕТВЕРТОЕ ЗАНЯТИЕ

ООП ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ  ООП ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

ПРИНЦИПЫ ООП • ИНКАПСУЛЯЦИЯ • КАК ДАННЫЙ ЯЗЫК СКРЫВАЕТ ДЕТАЛИ ВНУТРЕННЕЙ РЕАЛИЗАЦИИ ОБЪЕКТОВ И ПРЕДОХРАНЯЕТ ЦЕЛОСТНОСТЬПРИНЦИПЫ ООП • ИНКАПСУЛЯЦИЯ • КАК ДАННЫЙ ЯЗЫК СКРЫВАЕТ ДЕТАЛИ ВНУТРЕННЕЙ РЕАЛИЗАЦИИ ОБЪЕКТОВ И ПРЕДОХРАНЯЕТ ЦЕЛОСТНОСТЬ ДАННЫХ? • НАСЛЕДОВАНИЕ • КАК ДАННЫЙ ЯЗЫК СТИМУЛИРУЕТ МНОГОКРАТНОЕ ИСПОЛЬЗОВАНИЕ КОДА? • ПОЛИМОРФИЗМ • КАК ДАННЫЙ ЯЗЫК ПОЗВОЛЯЕТ ТРАКТОВАТЬ СВЯЗАННЫЕ ОБЪЕКТЫ СХОДНЫМ ОБРАЗОМ? • АБСТРАКЦИЯ • КАК ДАННЫЙ ЯЗЫК ПОЗВОЛЯЕТ ОТДЕЛЯТЬ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ОБЪЕКТОВ ОТ ИХ КОНКРЕТНОЙ РЕАЛИЗАЦИИ?

КЛАССЫ И ОБЪЕКТЫ КЛАССЫ И ОБЪЕКТЫ

КЛАСС ПРЕДСТАВЛЯЕТ СОБОЙ ШАБЛОН, ПО КОТОРОМУ ОПРЕДЕЛЯЕТСЯ ФОРМА ОБЪЕКТА. В НЕМ УКАЗЫВАЮТСЯ ДАННЫЕ И КОД, КЛАСС ПРЕДСТАВЛЯЕТ СОБОЙ ШАБЛОН, ПО КОТОРОМУ ОПРЕДЕЛЯЕТСЯ ФОРМА ОБЪЕКТА. В НЕМ УКАЗЫВАЮТСЯ ДАННЫЕ И КОД, КОТОРЫЙ БУДЕТ ОПЕРИРОВАТЬ ЭТИМИ ДАННЫМИ. В C# ИСПОЛЬЗУЕТСЯ СПЕЦИФИКАЦИЯ КЛАССА ДЛЯ ПОСТРОЕНИЯ ОБЪЕКТОВ, КОТОРЫЕ ЯВЛЯЮТСЯ ЭКЗЕМПЛЯРАМИ КЛАССА.

ПРОСТЕЙШИЙ КЛАСС CLASSSAMPLE { } ПРОСТЕЙШИЙ КЛАСС CLASSSAMPLE { }

СОЗДАНИЕЭКЗЕМПЛЯРА (ОБЪЕКТА) SAMPLEVAR = NEW SAMPLE(); СОЗДАНИЕЭКЗЕМПЛЯРА (ОБЪЕКТА) SAMPLEVAR = NEW SAMPLE();

ПОЛЯ КЛАССА CLASS BOOK {  PUBLICSTRINGNAME;  PUBLICSTRINGAUTHOR;  PUBLICINT YEAR; } ПОЛЯ КЛАССА CLASS BOOK { PUBLICSTRINGNAME; PUBLICSTRINGAUTHOR; PUBLICINT YEAR; }

МЕТОД ДЛЯ РАБОТЫ С ДАННЫМИ CLASS BOOK { …  PUBLICVOIDINFO()  { CONSOLE. WRITELINE( МЕТОД ДЛЯ РАБОТЫ С ДАННЫМИ CLASS BOOK { … PUBLICVOIDINFO() { CONSOLE. WRITELINE( $»BOOK {NAME} AUTHOR {AUTHOR} YEAR — {YEAR}»); } }$ ИСПОЛЬЗУЕТСЯ ДЛЯ ПОДСТАНОВКИ ЗНАЧЕНИЙ

КОНСТРУКТОР. ПРЕДНАЗНАЧЕН ДЛЯИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ CLASSBOOK { … PUBLIC BOOK() { } PUBLIC BOOK(STRING NAME, STRING AUTHOR,КОНСТРУКТОР. ПРЕДНАЗНАЧЕН ДЛЯИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ CLASSBOOK { … PUBLIC BOOK() { } PUBLIC BOOK(STRING NAME, STRING AUTHOR, INT YEAR) { NAME = NAME; AUTHOR = AUTHOR; YEAR = YEAR; } }ВАЖНО! Конструктор не имеет возвращаемого типа! Даже не void

СТАТИЧНЫЕ ПОЛЯ ЕСЛИ НАМ НЕОБХОДИМООПРЕДЕЛИТЬ ПОВЕДЕНИЕ НЕ ДЛЯ КОНКРЕТНОГО ОБЪЕКТА КНИГИ, А ДЛЯ ВСЕГО КЛАССА КНИГАМЫСТАТИЧНЫЕ ПОЛЯ ЕСЛИ НАМ НЕОБХОДИМООПРЕДЕЛИТЬ ПОВЕДЕНИЕ НЕ ДЛЯ КОНКРЕТНОГО ОБЪЕКТА КНИГИ, А ДЛЯ ВСЕГО КЛАССА «КНИГА»МЫ МОЖЕМ ИСПОЛЬЗОВАТЬ КЛЮЧЕВОЕ СЛОВО STATIC. ЕСЛИ МЫ ОПРЕДЕЛЯЕМПОЛЯ, МЕТОДЫ ИЛИ СВОЙСТВАКАК СТАТИЧЕСКИЕ, ТО ОНИСУЩЕСТВУЮ НЕНА УРОВНЕ КОНКРЕТНОГО ОБЪЕКТА, АНА УРОВНЕ ВСЕГО КЛАССА. ТАКИМ ОБРАЗОМ МЫ МОЖЕМ ОБРАЩАТЬСЯ КНИМ ТАК: .

МОДИФИКАТОРЫ ДОСТУПА • PUBLIC: ПУБЛИЧНЫЙ, ОБЩЕДОСТУПНЫЙ КЛАСС ИЛИ ЧЛЕН КЛАССА. ТАКОЙ ЧЛЕН КЛАССА ДОСТУПЕН ИЗ ЛЮБОГОМОДИФИКАТОРЫ ДОСТУПА • PUBLIC: ПУБЛИЧНЫЙ, ОБЩЕДОСТУПНЫЙ КЛАСС ИЛИ ЧЛЕН КЛАССА. ТАКОЙ ЧЛЕН КЛАССА ДОСТУПЕН ИЗ ЛЮБОГО МЕСТА В КОДЕ, А ТАКЖЕ ИЗ ДРУГИХ ПРОГРАММ И СБОРОК. • PRIVATE: ЗАКРЫТЫЙ КЛАСС ИЛИ ЧЛЕН КЛАССА. ПРЕДСТАВЛЯЕТ ПОЛНУЮ ПРОТИВОПОЛОЖНОСТЬ МОДИФИКАТОРУ PUBLIC. ТАКОЙ ЗАКРЫТЫЙ КЛАСС ИЛИ ЧЛЕН КЛАССА ДОСТУПЕН ТОЛЬКО ИЗ КОДА В ТОМ ЖЕ КЛАССЕ ИЛИ КОНТЕКСТЕ. • PROTECTED: ТАКОЙ ЧЛЕН КЛАССА ДОСТУПЕН ИЗ ЛЮБОГО МЕСТА В ТЕКУЩЕМ КЛАССЕ ИЛИ В ПРОИЗВОДНЫХ КЛАССАХ. • INTERNAL: КЛАСС И ЧЛЕНЫ КЛАССА С ПОДОБНЫМ МОДИФИКАТОРОМ ДОСТУПНЫ ИЗ ЛЮБОГО МЕСТА КОДА В ТОЙ ЖЕ СБОРКЕ, ОДНАКО ОН НЕДОСТУПЕН ДЛЯ ДРУГИХ ПРОГРАММ И СБОРОК (КАК В СЛУЧАЕ С МОДИФИКАТОРОМ PUBLIC). • PROTECTED INTERNAL: СОВМЕЩАЕТ ФУНКЦИОНАЛ ДВУХ МОДИФИКАТОРОВ. КЛАССЫ И ЧЛЕНЫ КЛАССА С ТАКИМ МОДИФИКАТОРОМ ДОСТУПНЫ ИЗ ТЕКУЩЕЙ СБОРКИ И ИЗ ПРОИЗВОДНЫХ КЛАССОВ.

СВОЙСТВА В ТО ВРЕМЯ, КАК КЛАСС ХРАНИТ В СВОИХ ПОЛЯХ НЕОБХОДИМЫЕ ЕМУ ДАННЫЕ, ОН НЕ ДОЛЖЕНПРЕДОСТАВЛЯТЬВНЕШНЕМУСВОЙСТВА В ТО ВРЕМЯ, КАК КЛАСС ХРАНИТ В СВОИХ ПОЛЯХ НЕОБХОДИМЫЕ ЕМУ ДАННЫЕ, ОН НЕ ДОЛЖЕНПРЕДОСТАВЛЯТЬВНЕШНЕМУ КОДУ ПРЯМОЙ ДОСТУП К НИМ. ОН ДОЛЖЕНКАК-О ОГРАЖДАТЬСВОИ ДАННЫЕ ЛИБО МЕТОДАМИЛИБО СВОЙСТВАМИ

ОПРЕДЕЛЕНИЕ ЕСТЬ ПРИВАТНОЕ ПОЛЕ PRIVATE INTFIELD; ТОЛЬКО КЛАСС, В КОТОРОМ ЭТО ПОЛЕ ОБЪЯВЛЕНО, ИМЕЕТ ДОСТУП КОПРЕДЕЛЕНИЕ ЕСТЬ ПРИВАТНОЕ ПОЛЕ PRIVATE INTFIELD; ТОЛЬКО КЛАСС, В КОТОРОМ ЭТО ПОЛЕ ОБЪЯВЛЕНО, ИМЕЕТ ДОСТУП К ДАННОМУ ПОЛЮ ЧТОБЫ ПРЕДОСТАВИТЬ ДОСТУП К ПОЛЮ, МЫ МОЖЕМ ОБЕРНУТЬДАННОЕ ПОЛЕ В СВОЙСТВО PUBLICINTFIELD { GET{ RETURN FIELD; } SET{ FIELD = VALUE; }} ВАЖНО ПОНИМАТЬ, ЧТО СВОЙСТВО -ЭТО ПРОСТО ПАРАОБЫЧНЫХ МЕТОДОВ, ОФОРМЛЕННЫХ БОЛЕЕ ЭЛЕГАНТНО. НЕ БОЛЕЕ. И КРОМЕСТРОКИ ДЛЯ ВОЗВРАЩЕНИЯ ЗНАЧЕНИЯ И ПРИСВАИВАНИЯ МЫ МОЖЕМ ПИСАТЬ ЧТО УГОДНО

АВТО СВОЙСТВА ДЛЯ УДОБСТВА, ЕСЛИ НАМ НЕ НАДОСОВЕРШАТЬ КАКИЕ ЛИБОДЕЙСТВИЯ КРОМЕ ИЗМЕНЕНИЯ ЗНАЧЕНИЯ САМОГО ПОЛЯ МЫАВТО СВОЙСТВА ДЛЯ УДОБСТВА, ЕСЛИ НАМ НЕ НАДОСОВЕРШАТЬ КАКИЕ ЛИБОДЕЙСТВИЯ КРОМЕ ИЗМЕНЕНИЯ ЗНАЧЕНИЯ САМОГО ПОЛЯ МЫ МОЖЕМ ИСПОЛЬЗОВАТЬАВТОМАТИЧЕСКИЕ СВОЙСТВА. PUBLICINT FIELD {GET; SET; } ТАКОЙ КОД САМ СГЕНЕРИРУЕТ ПРИВАТНОЕ ПОЛЕ ДЛЯ ХРАНЕНИЯ ЗНАЧЕНИЯИМЕТОДЫ, КОТОРЫЕЭТИМ ПОЛЕМ МАНИПУЛИРУЮТ. ПОЗЖЕ, ЕСЛИ ПОНАДОБИТСЯ, МЫ СМОЖЕМИЗМЕНИТЬ ЛОГИКУ ПОВЕДЕНИЯДАННОГО СВОЙСТВА НА НЕОБХОДИМУЮ НАМ. ПРИ ЭТОМ МЫ НЕ ЗАТРОНЕМ ВНЕШНИЙ КОД, КОТОРЫЙ ПОЛЬЗУЕТСЯ НАШИМ КЛАССОМ.