恭喜,你发布的帖子
发布于 2022-06-20 13:50:37
23楼
我个人是这么理解
描述本身
对象本身通过属性和动作描述本身,比如阀门有状态属性(开关到位、超时报警、手自状态等等),也有动作(打开、关闭),当然在PLC中都是用参数指示,而不是调用方法;
a) 电机,最简单的起保停;当有多个电机时,一个个起保停,或是循环,或是按字与或,都可以;
b) 而需求变复杂时(还是以阀门举例,加入超时报警、尝试次数、开关自锁、切换延迟、手自操作、状态枚举等),面向过程后程序容易混乱繁琐,所以是把相关逻辑封装到类中,也就是 FB 中,使得逻辑清晰,外部只需要根据接口准备对应参数即可;
这个其实很多工程师已经是这么做了;
描述关系
a) 描述相似关系或是相近功能,比如是 DI 信号处理(直入直出,或是加个定时器防抖动),可以是内部功能对象的不同组合;(因为java .net 之类 有继承、重载等功能,这个在上位机上更能体现);
b) 描述对象之间关系,比如阀泵的开关启停,由于泵的特性,先起泵还是先开阀是不一样的;
如果是面向过程,很多程序实现时是在原有阀/泵的起保停上加入另一个的状态做限制;
如果是面向对象,那首先先定义阀、泵两个对象,然后定义控制器,控制器内部决定当前是开阀还是起泵,如果顺序相反,那只需要稍微调整控制器内部即可,本身对阀/泵各自的操作没关系;
以上是局部的对象定义,对象有多大或是多小都可以,大到架构模块,小到状态定义,这个看需求和设计;
总之面向对象,期望能使结构更加简洁,无关的逻辑不用对外,提高复用性,并能以更小的变动满足不断变化的需求;
请填写推广理由:
分享
只看
楼主