Объектно ориентированное...
TRANSCRIPT
07.06.201307.06.2013
11
ОбъектноОбъектно--ориентированное ориентированное программированиепрограммированиеОсновные понятия и примеры Основные понятия и примеры использованияиспользования
CODESYS V3.CODESYS V3.
07.06.201307.06.2013
22
О чем пойдет речь?О чем пойдет речь?
Кратко об истории ООПКратко об истории ООП
Принцип ОбъектноПринцип Объектно--ориентированного подходаориентированного подхода
Пример реализацииПример реализации
Преимущества и недостаткиПреимущества и недостатки
ЗаключениеЗаключение
07.06.201307.06.2013
33
Из историиИз истории
ООП ООП -- следствие развития идеологии следствие развития идеологии процедурного программированияпроцедурного программирования
Первый язык программирования Первый язык программирования -- Симула (1967)Симула (1967)
Широкое распространение получил с языком Широкое распространение получил с языком Smalltalk (1970)Smalltalk (1970)
1971 1971 -- первый процессорный ПЛКпервый процессорный ПЛК
2006 2006 -- CODESYS V3CODESYS V3
07.06.201307.06.2013
44
Принцип ООППринцип ООПЧто такое объект?Что такое объект?Объект Объект -- ключевое понятие объектноключевое понятие объектно--ориентированного подходаориентированного подхода
Весь Мир состоит из множества объектовВесь Мир состоит из множества объектов
Пример: Ваш домашний питомецПример: Ваш домашний питомец
Ваш столВаш стол
Ваш телефонВаш телефон
07.06.201307.06.2013
55
Объекты реального мираОбъекты реального мира
Описываются двумя основными Описываются двумя основными характеристиками:характеристиками:
свойствами описывающие их состояниесвойствами описывающие их состояние
поведениемповедением
07.06.201307.06.2013
66
Пример: объект Пример: объект -- орелорел
Свойства: высота полета, вес, размах крыльевСвойства: высота полета, вес, размах крыльев
Поведение: летать, охотитьсяПоведение: летать, охотиться
07.06.201307.06.2013
77
Пример: велосипедПример: велосипедСвойства: скорость, передняя и задняя передачиСвойства: скорость, передняя и задняя передачи
Поведение: ускорение, переключение передачПоведение: ускорение, переключение передач
07.06.201307.06.2013
88
Объект Объект -- в программев программе
представляет модель объекта реального мира, представляет модель объекта реального мира, которая обладает свойством и поведениемкоторая обладает свойством и поведением
Свойства Свойства -- это переменныеэто переменные
Поведение Поведение -- это методыэто методы
Объект Объект -- это программное объединение это программное объединение переменных и методов, связанных с ними.переменных и методов, связанных с ними.
07.06.201307.06.2013
99
Пример объекта Пример объекта CODESYS V3CODESYS V3
Свойства:Свойства:Методы:Методы:
07.06.201307.06.2013
1010
Понятие КлассаПонятие Класса
Класс представляет Класс представляет описание объектов, описание объектов, которые имеют общие которые имеют общие свойства и общее свойства и общее поведение.поведение.
07.06.201307.06.2013
1111
Класс двереКласс двере йй Каждый Объект имеет Каждый Объект имеет состояния и четко состояния и четко определенное определенное поведение.поведение.
Class DoorClass Doorproperties:properties:
knob;knob;lock;lock;
texture;texture;Methods:Methods:
open();open();close();close();
Class DoorClass Doorproperties:properties:
knob;knob;lock;lock;
texture;texture;Methods:Methods:
open();open();close();close();
07.06.201307.06.2013
1212
ИнкапсуляцияИнкапсуляцияИнкапсуляция Инкапсуляция -- механизм языка механизм языка программирования, который ограничивает доступ программирования, который ограничивает доступ к составляющим к составляющим объектобъект компонентам (методам и компонентам (методам и переменным), делает их приватными, т.е. переменным), делает их приватными, т.е. доступными только внутри объекта.доступными только внутри объекта.
07.06.201307.06.2013
1313
НаследованиеНаследование
07.06.201307.06.2013
1414
ПолиморфизмПолиморфизм
07.06.201307.06.2013
1515
Упаковочный комплексУпаковочный комплекс
07.06.201307.06.2013
1616
Дерево классовДерево классов ObjectObjectСвойства:Свойства:
in_emergencyStopin_emergencyStopout_emergencyStopout_emergencyStop
ObjectObjectСвойства:Свойства:
in_emergencyStopin_emergencyStopout_emergencyStopout_emergencyStop
KnifeHeaterKnifeHeaterСвойства:Свойства:in_realTemperature;in_desirein_realTemperature;in_desire
dTemperature;dTemperature;out_main_switch;out_main_switch;
out_heater_1;out_heater_1;out_ready;out_ready;
Методы:Методы:MainSwitchOF()MainSwitchOF()MainSwitchON()MainSwitchON()
SwitchOF()SwitchOF()SwitchON()SwitchON()
KnifeHeaterKnifeHeaterСвойства:Свойства:in_realTemperature;in_desirein_realTemperature;in_desire
dTemperature;dTemperature;out_main_switch;out_main_switch;
out_heater_1;out_heater_1;out_ready;out_ready;
Методы:Методы:MainSwitchOF()MainSwitchOF()MainSwitchON()MainSwitchON()
SwitchOF()SwitchOF()SwitchON()SwitchON()
OvenOvenСвойства:Свойства:
Методы:Методы:MainSwitchON()MainSwitchON()
OvenOvenСвойства:Свойства:
Методы:Методы:MainSwitchON()MainSwitchON()
MovableMovableСвойства:Свойства:
out_parked;out_parked;err_double_coerr_double_co
mmand;mmand;Методы:Методы:
init()init()Switcher()Switcher()
MovableMovableСвойства:Свойства:
out_parked;out_parked;err_double_coerr_double_co
mmand;mmand;Методы:Методы:
init()init()Switcher()Switcher()
Conveyor_type_M7Conveyor_type_M7Свойства:Свойства:
out_moveForward;out_moveForward;out_moveBackout_moveBack
;;Методы:Методы:
EmergencyStop()EmergencyStop()MoveBack()MoveBack()
MoveForward()MoveForward()Stop()Stop()
MoveConveyor()MoveConveyor()
Conveyor_type_M7Conveyor_type_M7Свойства:Свойства:
out_moveForward;out_moveForward;out_moveBackout_moveBack
;;Методы:Методы:
EmergencyStop()EmergencyStop()MoveBack()MoveBack()
MoveForward()MoveForward()Stop()Stop()
MoveConveyor()MoveConveyor()
Conveyor_type_M4Conveyor_type_M4Свойства:Свойства:
out_startMotor_1;out_startMotor_1;Методы:Методы:
MoveConveyor()MoveConveyor()StartVentilation()StartVentilation()
Conveyor_type_M4Conveyor_type_M4Свойства:Свойства:
out_startMotor_1;out_startMotor_1;Методы:Методы:
MoveConveyor()MoveConveyor()StartVentilation()StartVentilation()
Pneumatic_type_V4Pneumatic_type_V4Свойства:Свойства:
out_push;out_push;out_pull;out_pull;
Методы:Методы:EmergencyStop()EmergencyStop()
MovePiston()MovePiston()PullPiston()PullPiston()
PushPiston()PushPiston()
Pneumatic_type_V4Pneumatic_type_V4Свойства:Свойства:
out_push;out_push;out_pull;out_pull;
Методы:Методы:EmergencyStop()EmergencyStop()
MovePiston()MovePiston()PullPiston()PullPiston()
PushPiston()PushPiston()
Pneumatic_type_V1Pneumatic_type_V1Свойства:Свойства:
out_backPosition;out_backPosition;out_frontPositiout_frontPositi
on;on;out_halfDistanout_halfDistan
ceBack;ceBack;Методы:Методы:
EmergencyStop()EmergencyStop()SetErrorState()SetErrorState()
Pneumatic_type_V1Pneumatic_type_V1Свойства:Свойства:
out_backPosition;out_backPosition;out_frontPositiout_frontPositi
on;on;out_halfDistanout_halfDistan
ceBack;ceBack;Методы:Методы:
EmergencyStop()EmergencyStop()SetErrorState()SetErrorState()
Pneumatic_type_V2Pneumatic_type_V2Свойства:Свойства:
out_backPosition;out_backPosition;out_frontPositiout_frontPositi
on;on;out_halfDistanout_halfDistan
ceBack;ceBack;Методы:Методы:
SetErrorState()SetErrorState()
Pneumatic_type_V2Pneumatic_type_V2Свойства:Свойства:
out_backPosition;out_backPosition;out_frontPositiout_frontPositi
on;on;out_halfDistanout_halfDistan
ceBack;ceBack;Методы:Методы:
SetErrorState()SetErrorState()
07.06.201307.06.2013
1717
ПреимуществаПреимущества
Упрощение функционального масштабированияУпрощение функционального масштабирования
Классы Классы -- конструирование из компонентов, обладающих простыми конструирование из компонентов, обладающих простыми инструментами, что дает возможность абстрагироваться от деталей инструментами, что дает возможность абстрагироваться от деталей реализации.реализации.
Данные и операции вместе образуют определенную сущность. Они не Данные и операции вместе образуют определенную сущность. Они не «размазываются» по всей программе.«размазываются» по всей программе.
Локализация кода и данных улучшает наглядность и удобство Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.сопровождения программного обеспечения.
Инкапсуляция информации защищает наиболее критичные данные от Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.несанкционированного доступа.
07.06.201307.06.2013
1818
НедостаткиНедостатки
Необходимо понимать базовые концепции, такие как классы, Необходимо понимать базовые концепции, такие как классы, наследование.наследование.
Многоразовое использование требует от программиста необходимости Многоразовое использование требует от программиста необходимости познакомиться с большими библиотеками классов.познакомиться с большими библиотеками классов.
Проектирование классов Проектирование классов —— задача куда более сложная, чем их задача куда более сложная, чем их использование.использование.
Сложность переподготовки специалистов.Сложность переподготовки специалистов.
07.06.201307.06.2013
1919
ЗаключениеЗаключение
В дополнение к ООП компания 3S ведет В дополнение к ООП компания 3S ведет интеграцию UML диаграмм в CODESYS.интеграцию UML диаграмм в CODESYS.
ООП является продуктом более чем 25 летней ООП является продуктом более чем 25 летней практики реализаций и развития во многих языках практики реализаций и развития во многих языках программирования. Но будут ли перспективными программирования. Но будут ли перспективными методы использования объектнометоды использования объектно--ориентированного подхода в областях ориентированного подхода в областях автоматизации? Этот вопрос остается открытым.автоматизации? Этот вопрос остается открытым.