19
07.06.2013 07.06.2013 1 Объектно Объектно- ориентированное ориентированное программирование программирование Основные понятия и примеры Основные понятия и примеры использования использования CODESYS V3. CODESYS V3.

Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

  • Upload
    others

  • View
    40

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

11

ОбъектноОбъектно--ориентированное ориентированное программированиепрограммированиеОсновные понятия и примеры Основные понятия и примеры использованияиспользования

CODESYS V3.CODESYS V3.

Page 2: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

22

О чем пойдет речь?О чем пойдет речь?

Кратко об истории ООПКратко об истории ООП

Принцип ОбъектноПринцип Объектно--ориентированного подходаориентированного подхода

Пример реализацииПример реализации

Преимущества и недостаткиПреимущества и недостатки

ЗаключениеЗаключение

Page 3: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

33

Из историиИз истории

ООП ООП -- следствие развития идеологии следствие развития идеологии процедурного программированияпроцедурного программирования

Первый язык программирования Первый язык программирования -- Симула (1967)Симула (1967)

Широкое распространение получил с языком Широкое распространение получил с языком Smalltalk (1970)Smalltalk (1970)

1971 1971 -- первый процессорный ПЛКпервый процессорный ПЛК

2006 2006 -- CODESYS V3CODESYS V3

Page 4: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

44

Принцип ООППринцип ООПЧто такое объект?Что такое объект?Объект Объект -- ключевое понятие объектноключевое понятие объектно--ориентированного подходаориентированного подхода

Весь Мир состоит из множества объектовВесь Мир состоит из множества объектов

Пример: Ваш домашний питомецПример: Ваш домашний питомец

Ваш столВаш стол

Ваш телефонВаш телефон

Page 5: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

55

Объекты реального мираОбъекты реального мира

Описываются двумя основными Описываются двумя основными характеристиками:характеристиками:

свойствами описывающие их состояниесвойствами описывающие их состояние

поведениемповедением

Page 6: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

66

Пример: объект Пример: объект -- орелорел

Свойства: высота полета, вес, размах крыльевСвойства: высота полета, вес, размах крыльев

Поведение: летать, охотитьсяПоведение: летать, охотиться

Page 7: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

77

Пример: велосипедПример: велосипедСвойства: скорость, передняя и задняя передачиСвойства: скорость, передняя и задняя передачи

Поведение: ускорение, переключение передачПоведение: ускорение, переключение передач

Page 8: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

88

Объект Объект -- в программев программе

представляет модель объекта реального мира, представляет модель объекта реального мира, которая обладает свойством и поведениемкоторая обладает свойством и поведением

Свойства Свойства -- это переменныеэто переменные

Поведение Поведение -- это методыэто методы

Объект Объект -- это программное объединение это программное объединение переменных и методов, связанных с ними.переменных и методов, связанных с ними.

Page 9: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

99

Пример объекта Пример объекта CODESYS V3CODESYS V3

Свойства:Свойства:Методы:Методы:

Page 10: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1010

Понятие КлассаПонятие Класса

Класс представляет Класс представляет описание объектов, описание объектов, которые имеют общие которые имеют общие свойства и общее свойства и общее поведение.поведение.

Page 11: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

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();

Page 12: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1212

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

Page 13: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1313

НаследованиеНаследование

Page 14: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1414

ПолиморфизмПолиморфизм

Page 15: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1515

Упаковочный комплексУпаковочный комплекс

Page 16: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

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()

Page 17: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1717

ПреимуществаПреимущества

Упрощение функционального масштабированияУпрощение функционального масштабирования

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

Данные и операции вместе образуют определенную сущность. Они не Данные и операции вместе образуют определенную сущность. Они не «размазываются» по всей программе.«размазываются» по всей программе.

Локализация кода и данных улучшает наглядность и удобство Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.сопровождения программного обеспечения.

Инкапсуляция информации защищает наиболее критичные данные от Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.несанкционированного доступа.

Page 18: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1818

НедостаткиНедостатки

Необходимо понимать базовые концепции, такие как классы, Необходимо понимать базовые концепции, такие как классы, наследование.наследование.

Многоразовое использование требует от программиста необходимости Многоразовое использование требует от программиста необходимости познакомиться с большими библиотеками классов.познакомиться с большими библиотеками классов.

Проектирование классов Проектирование классов —— задача куда более сложная, чем их задача куда более сложная, чем их использование.использование.

Сложность переподготовки специалистов.Сложность переподготовки специалистов.

Page 19: Объектно ориентированное программированиеprolog-plc.ru/docs/conf_pdf/UC2013_OOP.pdfПроектирование классов —— задача

07.06.201307.06.2013

1919

ЗаключениеЗаключение

В дополнение к ООП компания 3S ведет В дополнение к ООП компания 3S ведет интеграцию UML диаграмм в CODESYS.интеграцию UML диаграмм в CODESYS.

ООП является продуктом более чем 25 летней ООП является продуктом более чем 25 летней практики реализаций и развития во многих языках практики реализаций и развития во многих языках программирования. Но будут ли перспективными программирования. Но будут ли перспективными методы использования объектнометоды использования объектно--ориентированного подхода в областях ориентированного подхода в областях автоматизации? Этот вопрос остается открытым.автоматизации? Этот вопрос остается открытым.