Объектно Ориентированное-Программирование простое описание — различия между версиями
Тест (обсуждение | вклад) м (→Определения Класса и связанных понятий) |
Тест (обсуждение | вклад) м (→Определения Класса и связанных понятий) |
||
Строка 15: | Строка 15: | ||
* Функции и процедуры объявляются в самом конце программы между операторами '''КонецПроцедуры''' (Старт) и '''КонецПрограммы'''. | * Функции и процедуры объявляются в самом конце программы между операторами '''КонецПроцедуры''' (Старт) и '''КонецПрограммы'''. | ||
− | '''Класс''' — это составной тип, который, для удобства программиста, логически объединяет вместе переменные, процедуры и функции, которые | + | '''Класс''' — это составной тип, который, для удобства программиста, логически объединяет вместе переменные, процедуры и функции, которые с этими переменными преимущественно используют. Аналогом класса в процедурном программировании является ТИП переменной. |
Класс состоит из: | Класс состоит из: | ||
− | * | + | * Переменных - чтобы отличать их от обычных переменных в классах они называются '''Поля''' или '''Свойства''' (объекта). |
− | |||
− | '''Объект''' — это один экземпляр | + | * Функций и Процедур использующих эти переменные - чтобы отличать их от обычных функций и процедур в классах они называются '''Методы''' и '''События''' (функции которые реагируют на внешние по отношению к объекту события, например пользователь щёлкает по кнопке "Закрыть окно", или приходит сообщение в Программу обмена сообщениями) |
+ | |||
+ | '''Объект''' — это один экземпляр Класса, т.е. Класс — это "штамп" из заготовок переменных и привязанных к ним процедур, которые работают с этими переменными. Используя Класс как образец можно сделать сколько угодно объектов по образцу и подобию Класса. | ||
Чем отличается Переменная от Поля? | Чем отличается Переменная от Поля? | ||
− | * '''Переменная''' - используется при вычислениях внутри Функции или Процедуры. Как только | + | * '''Переменная''' - используется при вычислениях внутри Функции или Процедуры. Как только Процедура или Функция завершила свою работу и передала результат работы в то место программы откуда её вызвали, то все используемые ей переменные уничтожаются, чтобы не занимать память. |
− | * '''Поле''' — это «переменная», используемая внутри объектов. С точки зрения компилятора она организованна совсем по-другому. В Поле одного объекта может писать или читать другой объект (если ему разрешать читать или писать в поле, принадлежащее другому объекту). Поле гораздо более мощная конструкция, при создании | + | |
+ | * '''Поле''' — это «переменная», используемая внутри объектов. С точки зрения компилятора она организованна совсем по-другому. В Поле одного объекта может писать или читать другой объект (если ему разрешать читать или писать в поле, принадлежащее другому объекту). Поле гораздо более мощная конструкция, при создании Поля программист может не только указать Тип хранящегося в нём значения, но и разрешить или запретить другим методом других объектов читать содержащееся в этом Поле значения с помощью специальных атрибутов. | ||
+ | |||
+ | А если при использовании '''Поля''' другой объект попытается записать в '''Поле''' "переменную правильного типа, но неправильного значения" или у Объекта необходимо изменять несколько '''Полей''' синхронно или по определённому алгоритму? | ||
− | + | Для этого к выбранному '''Полю''' можно добавить 2 специальных метода со стандартными именами '''Прочитать''' и '''Установить'''. При попытке прочитать значение этого поля или записать в него какое либо значение автоматически будут вырываться соответствующие методы '''Прочитать''' и '''Установить''' - внутри которых будут прописаны соответствующие алгоритмы по проверке значения присваиваемых переменных и/или синхронному изменению значений нескольких Полей этого объекта. Чтобы отличить такое "Поле" от обычных его называют - '''Свойство'''. | |
− | + | Т.о. '''Свойство''' можно представить, как своеобразную «обёртку» над Полем. Свойство имеет оба или только один из методов '''Получить'''/'''Установить''', а также может иметь одно или несколько Полей для хранения связанных с ним данных. Свойство может не иметь «своих» Полей, а оказывать влияние на Поля других Свойств или на Поля, логически не связанные со свойствами, но такое поведение встречается довольно редко. | |
'''Конструктор Класса''' — это просто специальная процедура, которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам. | '''Конструктор Класса''' — это просто специальная процедура, которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам. |
Версия 19:49, 27 сентября 2020
- Интерфейсы - внешние переменные объекта все остальные переменные внутренние
Содержание
Причины появления ООП
Спагетти код
Решение
Модули - разбиваем код программы на части
Записи - объединяем переменные в группы
Код в капсулах - Инкапсулирование. Появление понятия Класс и Объект
Наследование - используем ранее созданные объекты как образец для сознания новых объектов
Полиморфизм - изменяем поведение новых объектов, сознанных по образцу старых
Определения Класса и связанных понятий
Важно: * Классы объявляются после конца программы (после оператора КонецПрограммы). * Функции и процедуры объявляются в самом конце программы между операторами КонецПроцедуры (Старт) и КонецПрограммы.
Класс — это составной тип, который, для удобства программиста, логически объединяет вместе переменные, процедуры и функции, которые с этими переменными преимущественно используют. Аналогом класса в процедурном программировании является ТИП переменной.
Класс состоит из:
- Переменных - чтобы отличать их от обычных переменных в классах они называются Поля или Свойства (объекта).
- Функций и Процедур использующих эти переменные - чтобы отличать их от обычных функций и процедур в классах они называются Методы и События (функции которые реагируют на внешние по отношению к объекту события, например пользователь щёлкает по кнопке "Закрыть окно", или приходит сообщение в Программу обмена сообщениями)
Объект — это один экземпляр Класса, т.е. Класс — это "штамп" из заготовок переменных и привязанных к ним процедур, которые работают с этими переменными. Используя Класс как образец можно сделать сколько угодно объектов по образцу и подобию Класса.
Чем отличается Переменная от Поля?
- Переменная - используется при вычислениях внутри Функции или Процедуры. Как только Процедура или Функция завершила свою работу и передала результат работы в то место программы откуда её вызвали, то все используемые ей переменные уничтожаются, чтобы не занимать память.
- Поле — это «переменная», используемая внутри объектов. С точки зрения компилятора она организованна совсем по-другому. В Поле одного объекта может писать или читать другой объект (если ему разрешать читать или писать в поле, принадлежащее другому объекту). Поле гораздо более мощная конструкция, при создании Поля программист может не только указать Тип хранящегося в нём значения, но и разрешить или запретить другим методом других объектов читать содержащееся в этом Поле значения с помощью специальных атрибутов.
А если при использовании Поля другой объект попытается записать в Поле "переменную правильного типа, но неправильного значения" или у Объекта необходимо изменять несколько Полей синхронно или по определённому алгоритму?
Для этого к выбранному Полю можно добавить 2 специальных метода со стандартными именами Прочитать и Установить. При попытке прочитать значение этого поля или записать в него какое либо значение автоматически будут вырываться соответствующие методы Прочитать и Установить - внутри которых будут прописаны соответствующие алгоритмы по проверке значения присваиваемых переменных и/или синхронному изменению значений нескольких Полей этого объекта. Чтобы отличить такое "Поле" от обычных его называют - Свойство.
Т.о. Свойство можно представить, как своеобразную «обёртку» над Полем. Свойство имеет оба или только один из методов Получить/Установить, а также может иметь одно или несколько Полей для хранения связанных с ним данных. Свойство может не иметь «своих» Полей, а оказывать влияние на Поля других Свойств или на Поля, логически не связанные со свойствами, но такое поведение встречается довольно редко.
Конструктор Класса — это просто специальная процедура, которая присваивает значения одному или нескольким Полям объекта при его создании по прописанным в неё алгоритмам.