Программирование на языке Си#. ООП (Объектно-Ориентированное Программирование)

Содержание

Слайд 2

ООП - это способ организации кода программы.
Класс - это структура данных, которая

ООП - это способ организации кода программы. Класс - это структура данных,
воедино объединяет данные и функции для работы с ними(поля класса и методы класса);
Объект - это конкретный экземпляр класса, полям которого заданы конкретные значения.

Слайд 3

Пример:

В окружающем нас мире существуют различные классы объектов — растения, животные, голодные

Пример: В окружающем нас мире существуют различные классы объектов — растения, животные,
люди, инопланетяне и так далее.
Пальма - объект (она входит в класс, называемый «растениями»).
Слон – объект (Слон входит в класс под названием «животные» и имеет некоторые важные для нас свойства).
Во-первых, все животные могут двигаться.
Во-вторых, слон очень тяжелый, наверное, тонны две.
В-третьих, у него скверный характер, что тоже может оказаться полезным.

Слайд 4

Об объектах можно думать как о существах, которые «живут» в вашей программе

Об объектах можно думать как о существах, которые «живут» в вашей программе
и коллективно решают некоторую прикладную задачу.
Вы создаете этих существ, распределяете между ними обязанности и устанавливаете правила их взаимодействия.
В общем случае каждый объект «помнит» необходимую информацию, «умеет» выполнять некоторый набор действий и характеризуется набором свойств.
То, что объект «помнит», хранится в его полях.
То, что объект «умеет делать», реализуется в виде его внутренних процедур и функций, называемых методами.
Свойства объектов аналогичны свойствам, которые мы наблюдаем у обычных предметов. Значения свойств можно устанавливать и читать. Программно свойства реализуются через поля и методы.

Слайд 5

Пример:
Объект «кнопка» имеет свойство «цвет».
Значение цвета кнопка запоминает в одном из

Пример: Объект «кнопка» имеет свойство «цвет». Значение цвета кнопка запоминает в одном
своих полей.
При изменении значения свойства «цвет» вызывается метод, который перерисовывает кнопку.
Этот пример позволяет сделать важный вывод: свойства имеют первостепенное значение для программиста, использующего объект.
Чтобы понять суть и назначение объекта, вы обязательно должны знать его свойства, иногда — методы, очень редко — поля (объект и сам знает, что с ними делать).

Слайд 6

ООП включает три ключевых подхода:

Инкапсуляция — свойство системы, позволяющее объединить данные

ООП включает три ключевых подхода: Инкапсуляция — свойство системы, позволяющее объединить данные
и методы, работающие с ними, в классе.
Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
Полиморфизм — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Слайд 7

Инкап­су­ля­ция — объ­ект неза­ви­сим: каж­дый объ­ект устро­ен так, что нуж­ные для него

Инкап­су­ля­ция — объ­ект неза­ви­сим: каж­дый объ­ект устро­ен так, что нуж­ные для него
дан­ные живут внут­ри это­го объ­ек­та, а не где-то сна­ру­жи в про­грам­ме.
Напри­мер, если у меня есть объ­ект «Поль­зо­ва­тель», то у меня в нём будут все дан­ные о поль­зо­ва­те­ле: и имя, и адрес, и всё осталь­ное. И в нём же будут мето­ды «Про­ве­рить адрес» или «Под­пи­сать на рас­сыл­ку».
Абстрак­ция — у объ­ек­та есть «интер­фейс»: у объ­ек­та есть мето­ды и свой­ства, к кото­рым мы можем обра­тить­ся извне это­го объ­ек­та. Так же, как мы можем нажать кноп­ку на блен­де­ре. У блен­де­ра есть мно­го все­го внут­ри, что застав­ля­ет его рабо­тать, но на глав­ной пане­ли есть толь­ко кноп­ка. Вот эта кноп­ка и есть абстракт­ный интер­фейс.

Слайд 8

В про­грам­ме мы можем ска­зать: «Уда­лить поль­зо­ва­те­ля». На язы­ке ООП это будет

В про­грам­ме мы можем ска­зать: «Уда­лить поль­зо­ва­те­ля». На язы­ке ООП это будет
«пользователь.удалить()» — то есть мы обра­ща­ем­ся к объ­ек­ту «поль­зо­ва­тель» и вызы­ва­ем метод «уда­лить». Нам не так важ­но, как имен­но будет про­ис­хо­дить уда­ле­ние: ООП поз­во­ля­ет нам не думать об этом в момент обра­ще­ния.
Напри­мер, над мага­зи­ном рабо­та­ют два про­грам­ми­ста: один пишет модуль зака­за, а вто­рой — модуль достав­ки.
У пер­во­го в объ­ек­те «заказ» есть метод «отме­нить». И вот вто­ро­му нуж­но из-за достав­ки отме­нить заказ. И он спо­кой­но пишет: «заказ.отменить()». Ему неваж­но, как дру­гой про­грам­мист будет реа­ли­зо­вы­вать отме­ну: какие он отпра­вит пись­ма, что запи­шет в базу дан­ных, какие выве­дет пре­ду­пре­жде­ния.

Слайд 10

Насле­до­ва­ние — спо­соб­ность к копи­ро­ва­нию.
ООП поз­во­ля­ет созда­вать мно­го объ­ек­тов по обра­зу

Насле­до­ва­ние — спо­соб­ность к копи­ро­ва­нию. ООП поз­во­ля­ет созда­вать мно­го объ­ек­тов по обра­зу
и подо­бию дру­го­го объ­ек­та. Это поз­во­ля­ет не копировать код по две­сти раз, а один раз нор­маль­но напи­сать и потом мно­го раз исполь­зо­вать.

Слайд 11

Напри­мер, у вас может быть некий иде­аль­ный объ­ект «Поль­зо­ва­тель»: в нём вы

Напри­мер, у вас может быть некий иде­аль­ный объ­ект «Поль­зо­ва­тель»: в нём вы
про­пи­сы­ва­е­те всё, что может про­ис­хо­дить с поль­зо­ва­те­лем.
У вас могут быть свой­ства: имя, воз­раст, адрес, номер кар­ты. И могут быть мето­ды «Дать скид­ку», «Про­ве­рить заказ», «Най­ти зака­зы», «Позво­нить».
На осно­ве это­го иде­аль­но­го поль­зо­ва­те­ля вы може­те создать реаль­но­го «Поку­па­те­ля Ива­на». У него при созда­нии будут все свой­ства и мето­ды, кото­рые вы зада­ли у иде­аль­но­го поку­па­те­ля, плюс могут быть какие-то свои, если захо­ти­те.
Иде­аль­ные объ­ек­ты про­грам­ми­сты назы­ва­ют клас­са­ми.

Слайд 12

Поли­мор­физм — еди­ный язык обще­ния.
В ООП важ­но, что­бы все объ­ек­ты обща­лись

Поли­мор­физм — еди­ный язык обще­ния. В ООП важ­но, что­бы все объ­ек­ты обща­лись
друг с дру­гом на понят­ном им язы­ке. И если у раз­ных объ­ек­тов есть метод «Уда­лить», то он дол­жен делать имен­но это и писать­ся вез­де оди­на­ко­во.
Нель­зя, что­бы у одно­го объ­ек­та это было «Уда­лить», а у дру­го­го «Сте­реть».