本文结合工控场景讲解 C# 面向对象的核心概念(类 / 封装 / 继承 / 多态),并重点演示工业场景下的类设计(设备类、通信类),我会从工控实际应用出发,把抽象的面向对象概念落地到具体的工业编程场景中。
一、面向对象核心概念(工控视角解读)
先把四大核心概念翻译成工控工程师能理解的语言,再结合代码实现:
| 核心概念 |
工控视角解读 |
类比(工控场景) |
|---|---|---|
| 类(Class) |
设备 / 功能的 “模板”,定义设备有哪些属性(参数)和行为(方法) |
PLC 的功能块(FB)、设备的技术手册(规定了参数和操作) |
| 封装(Encapsulation) |
隐藏设备内部细节,只暴露必要的操作接口,防止误操作 |
设备的操作面板(只给按钮 / 显示屏,内部电路不可见) |
| 继承(Inheritance) |
复用同类设备的通用属性 / 方法,只扩展特有功能 |
所有电机都有转速 / 启停(通用),伺服电机多了定位功能(特有) |
| 多态(Polymorphism) |
同一操作对不同设备有不同实现,适配多样化设备 |
同样是 “启动” 操作,电机启动是转起来,阀门启动是打开 |
二、核心概念实战(工控场景代码实现)
1. 类(Class)—— 定义工业设备模板
核心逻辑:把工业设备的属性(参数)和行为(操作)封装成类,比如 “工业设备基类” 包含所有设备通用的属性(编号、状态)和方法(启停)。
using System;
// 工业设备基类(所有工业设备的通用模板)
public class IndustrialDevice
{
// 通用属性(设备编号、运行状态、累计运行时长)
public string DeviceId { get; set; } // 设备编号
public byte Status { get; set; } // 状态:0=停止,1=运行,2=故障
public int RunHours { get; set; } // 累计运行时长(小时)
// 通用方法(启动、停止)
public virtual void Start() // virtual标记为可被重写(为多态做准备)
{
if (Status == 2)
{
Console.WriteLine($"【{DeviceId}】设备故障,无法启动!");
return;
}
Status = 1;
Console.WriteLine($"【{DeviceId}】设备启动成功!");
}
public virtual void Stop()
{
Status = 0;
Console.WriteLine($"【{DeviceId}】设备停止成功!");
}
// 显示设备状态(通用方法)
public void ShowStatus()
{
string statusDesc = Status switch
{
0 => "停止",
1 => "运行",
2 => "故障",
_ => "未知"
};
Console.WriteLine($"=== 设备【{DeviceId}】状态 ===");
Console.WriteLine($"运行状态:{statusDesc}");
Console.WriteLine($"累计运行时长:{RunHours} 小时");
}
}
2. 封装(Encapsulation)—— 保护设备核心参数
核心逻辑:对关键参数(如电机额定转速)做私有封装,只通过方法 / 属性控制读写,防止非法赋值(比如转速超过额定值)。
// 电机类(继承自工业设备基类,增加

最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



