Объектно Ориентированное-Программирование простое описание — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м (Определения Класса и связанных понятий)
м
Строка 1: Строка 1:
 
 
* Интерфейсы - внешние переменные объекта все остальные переменные внутренние  
 
* Интерфейсы - внешние переменные объекта все остальные переменные внутренние  
 
=== Причины появления ООП===
 
=== Причины появления ООП===
Строка 8: Строка 7:
 
==== Код в капсулах - Инкапсулирование. Появление понятия Класс и Объект ====
 
==== Код в капсулах - Инкапсулирование. Появление понятия Класс и Объект ====
 
===== Наследование - используем ранее созданные объекты как образец для сознания новых объектов =====
 
===== Наследование - используем ранее созданные объекты как образец для сознания новых объектов =====
===== Полиморфизм - изменяем поведение новых объектов сознанных по образцу старых =====
+
===== Полиморфизм - изменяем поведение новых объектов, сознанных по образцу старых =====
  
 
== Определения Класса и связанных понятий ==
 
== Определения Класса и связанных понятий ==
Строка 16: Строка 15:
 
  * Функции и процедуры объявляются в самом конце программы между операторами '''КонецПроцедуры''' (Старт) и '''КонецПрограммы'''.
 
  * Функции и процедуры объявляются в самом конце программы между операторами '''КонецПроцедуры''' (Старт) и '''КонецПрограммы'''.
  
'''Класс''' - это составной тип, который, для удобства программиста, логические объединяет вместе переменный, процедуры и функции которые эти переменные используют. Аналогом класса в процедурном программировании является ТИП переменной.
+
'''Класс''' это составной тип, который, для удобства программиста, логические объединяет вместе переменный, процедуры и функции, которые эти переменные используют. Аналогом класса в процедурном программировании является ТИП переменной.
  
 
Класс состоит из:
 
Класс состоит из:
Строка 23: Строка 22:
 
* Функции и Процедуры использующие эти переменные - чтобы отличать их от обычных функций и процедур в классах они называются '''Методы''' и '''События''' (функции которые реагируют на внешние по отношению к объекту события, например пользователь Щёлкает по кнопке "Закрыть окно")
 
* Функции и Процедуры использующие эти переменные - чтобы отличать их от обычных функций и процедур в классах они называются '''Методы''' и '''События''' (функции которые реагируют на внешние по отношению к объекту события, например пользователь Щёлкает по кнопке "Закрыть окно")
  
'''Объект''' - это один экземпляр класса, т.е. Класс это "штамп" из заготовок переменных и привязанных к ним процедур которые работают с этими переменными.
+
'''Объект''' это один экземпляр класса, т.е. Класс это "штамп" из заготовок переменных и привязанных к ним процедур, которые работают с этими переменными.
  
Чем отличается Переменная от Поля ?  
+
Чем отличается Переменная от Поля?  
  
* Переменная - используется при вычислениях внутри Функции или Процедуры. Как только процедура или функция завершила свою работу и передала результат работы в то место программы откуда её вызвали, то все используемые ей переменные уничтожаются, чтобы не занимать память.
+
* '''Переменная''' - используется при вычислениях внутри Функции или Процедуры. Как только процедура или функция завершила свою работу и передала результат работы в то место программы откуда её вызвали, то все используемые ей переменные уничтожаются, чтобы не занимать память.
* Поле - это "переменная" используемая внутри объектов. Сточки зрения компилятора она организованна совсем по другому. В Поле одного объекта может писать или читать другой объект (если ему разрешать читать или писать в поле принадлежащее другому объекту). Поле гораздо более мощная конструкция, при создании поля программист может не только указать Тип хранящегося в нём значения, но и разрешить или запретить другим методом других объектов читать содержащееся в этом Поле значения.
+
* '''Поле''' — это «переменная», используемая внутри объектов. С точки зрения компилятора она организованна совсем по-другому. В Поле одного объекта может писать или читать другой объект (если ему разрешать читать или писать в поле, принадлежащее другому объекту). Поле гораздо более мощная конструкция, при создании поля программист может не только указать Тип хранящегося в нём значения, но и разрешить или запретить другим методом других объектов читать содержащееся в этом Поле значения.
  
А если при использования '''Поля''' другой объект попытается записать в '''Поле''' "переменную правильного типа, но неправильного значения" или у объекта необходимо изменять несколько '''Полей''' синхронно или по определённому алгоритму ?
+
А если при использовании '''Поля''' другой объект попытается записать в '''Поле''' "переменную правильного типа, но неправильного значения" или у объекта необходимо изменять несколько '''Полей''' синхронно или по определённому алгоритму?
  
 
Для этого к выбранному '''Полю''' можно добавить 2 специальных метода со стандартными именами '''Прочитать''' и '''Установить'''. При попытке прочитать значение этого поля или записать в него какое либо значение автоматически будут вырываться соответствующие методы '''Прочитать''' и '''Установить''' - внутри которых будут прописаны соответствующие алгоритмы по проверке значения присваиваемых переменных и/или синхронному изменению значений нескольких Полей этого объекта. Чтобы отличить такое "Поле" от обычных его называют - '''Свойство'''. Т.о. '''Свойство''' можно представить, как своеобразную «обёртку» над Полем. Свойство имеет оба или только один из методов '''Получить'''/'''Установить''', а также может иметь одно или несколько Полей для хранения связанных с ним данных. Свойство может не иметь «своих» Полей, а оказывать влияние на Поля других Свойств или на Поля, логически не связанные со свойствами, но такое поведение встречается довольно редко.
 
Для этого к выбранному '''Полю''' можно добавить 2 специальных метода со стандартными именами '''Прочитать''' и '''Установить'''. При попытке прочитать значение этого поля или записать в него какое либо значение автоматически будут вырываться соответствующие методы '''Прочитать''' и '''Установить''' - внутри которых будут прописаны соответствующие алгоритмы по проверке значения присваиваемых переменных и/или синхронному изменению значений нескольких Полей этого объекта. Чтобы отличить такое "Поле" от обычных его называют - '''Свойство'''. Т.о. '''Свойство''' можно представить, как своеобразную «обёртку» над Полем. Свойство имеет оба или только один из методов '''Получить'''/'''Установить''', а также может иметь одно или несколько Полей для хранения связанных с ним данных. Свойство может не иметь «своих» Полей, а оказывать влияние на Поля других Свойств или на Поля, логически не связанные со свойствами, но такое поведение встречается довольно редко.
  
'''Конструктор Класса''' - это просто специальная процедура которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам.
+
'''Конструктор Класса''' это просто специальная процедура, которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам.
 
 
  
 
[[Категория:Программирование]]
 
[[Категория:Программирование]]
 
[[Категория:Перфолента.NET]]
 
[[Категория:Перфолента.NET]]
 
[[Категория:Перфо.NET]]
 
[[Категория:Перфо.NET]]

Версия 19:02, 27 сентября 2020

  • Интерфейсы - внешние переменные объекта все остальные переменные внутренние

Причины появления ООП

Спагетти код

Решение

Модули - разбиваем код программы на части

Записи - объединяем переменные в группы

Код в капсулах - Инкапсулирование. Появление понятия Класс и Объект

Наследование - используем ранее созданные объекты как образец для сознания новых объектов
Полиморфизм - изменяем поведение новых объектов, сознанных по образцу старых

Определения Класса и связанных понятий

Важно: 
* Классы объявляются после конца программы (после оператора КонецПрограммы).
* Функции и процедуры объявляются в самом конце программы между операторами КонецПроцедуры (Старт) и КонецПрограммы.

Класс — это составной тип, который, для удобства программиста, логические объединяет вместе переменный, процедуры и функции, которые эти переменные используют. Аналогом класса в процедурном программировании является ТИП переменной.

Класс состоит из:

  • Переменные - чтобы отличать их от обычных переменных в классах они называются Поля или Свойства (объекта).
  • Функции и Процедуры использующие эти переменные - чтобы отличать их от обычных функций и процедур в классах они называются Методы и События (функции которые реагируют на внешние по отношению к объекту события, например пользователь Щёлкает по кнопке "Закрыть окно")

Объект — это один экземпляр класса, т.е. Класс — это "штамп" из заготовок переменных и привязанных к ним процедур, которые работают с этими переменными.

Чем отличается Переменная от Поля?

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

А если при использовании Поля другой объект попытается записать в Поле "переменную правильного типа, но неправильного значения" или у объекта необходимо изменять несколько Полей синхронно или по определённому алгоритму?

Для этого к выбранному Полю можно добавить 2 специальных метода со стандартными именами Прочитать и Установить. При попытке прочитать значение этого поля или записать в него какое либо значение автоматически будут вырываться соответствующие методы Прочитать и Установить - внутри которых будут прописаны соответствующие алгоритмы по проверке значения присваиваемых переменных и/или синхронному изменению значений нескольких Полей этого объекта. Чтобы отличить такое "Поле" от обычных его называют - Свойство. Т.о. Свойство можно представить, как своеобразную «обёртку» над Полем. Свойство имеет оба или только один из методов Получить/Установить, а также может иметь одно или несколько Полей для хранения связанных с ним данных. Свойство может не иметь «своих» Полей, а оказывать влияние на Поля других Свойств или на Поля, логически не связанные со свойствами, но такое поведение встречается довольно редко.

Конструктор Класса — это просто специальная процедура, которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам.