Main

Классы, объекты, методы и свойства

<<< Азбука

Система MajorDoMo объединяет в себе различные компоненты, действие многих из которых сопряжено с чтением либо изменением каких-либо данных. Для организации эффективного обмена данными между различными частями системы была создана объектная модель. Данная модель во многом соответствует парадигме Объектно Ориентированного Программирования (ООП) и людям, знакомых с данной парадигмой, не составит труда разобраться в имеющейся модели, но знание принципов ООП совсем не обязательно, т.к. встроенная в систему модель достаточно упрощённая и может применяться без глубокого знания какого-либо языка программирования.

Ниже описаны основные составляющие этой модели.

Классы

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

Важное свойство классов это возможность создания под-классов, наследующих все свойства и методы "родительского" класса, но при этом способные обладать собственными свойствами и методами. Либо имеющие свои особенные реализации "родительских" методов.

Пример:

Объекты

Объект представляет собой состояние реального (или виртуального) объекта. Свойства объекта могут иметь конкретные значения (например "статус" ,"температура" и т.п.). Кроме того, в самом объекте могут быть заданы свойства, которые дополняют набор свойств класса, к которому объект относится. Так же, для объекта может быть задана собственная реализация методов, описанных в классе.

Пример:

Объект, относящийся к классу, который, в свою очередь, является под-классом, наследуюет свойства и методы всех родительских классов.

Свойства

Свойство -- это конкретный параметр, описывающий состояние объекта. Как уже было написано выше, классы могут лишь описывать свойства (название, описание и т.п.), но значение свойства может быть установлено только для какого-то конкретного объекта.

Пример (описание свойств класса объектов):

Пример (установка/чтение свойста объекта):

 setGlobal('myObject.myProperty',12345);
 $value=getGlobal('myObject.myProperty');

Методы

Методы представляют собой описание возможных действий объекта (или действий над объектом). Возвращаясь к физической аналогии, можно указать, что класс "Двери" может иметь методы "Открыть" и "Закрыть", т.е. все объекты класса так же будут иметь этот метод и мы можем открыть дверь вызвав метод "Дверь в ванную комнату.Открыть". Сама реализация метода представляет собой сценарий на языке программирования PHP. В данном случае частью сценария может быть установка свойства "Статус" в состояние "Открыта".

Пример (метод объекта):

Пример (код метода):

if ($this->getProperty('status')) {
 say("Движение в гараже");
}

Пример (вызов метода):

 callMethod('myObject.myMethod',$params); // $params не обязательный массив параметров

--

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

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

Пример (привязка свойства/метода к пункту меню управления):

 

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

 

Blix theme adapted by David Gilbert, powered by PmWiki