浅析编程及类的本质、类的抽象

本文探讨了编程语言中的面向过程与面向对象思想,以C、C++、C#为例,强调了类作为数据和指令集合的抽象概念。通过对现实世界问题的拆解,阐述了如何进行类的抽象,例如在设计智能车间信息采集系统时,将机床抽象为类,定义其属性和操作。同时,以客户端软件设计为例,展示了如何将各个功能模块抽象为独立的类。总结了类的抽象过程中,应注重数据类型的选取和指令的组织,以实现高效、易维护的代码结构。
摘要由CSDN通过智能技术生成

现阶段编程语言极大丰富,以编程思想大致分为面向过程和面向对象两类,前者以C语言作为代表,编程以过程为中心,符合编程人员的直观逻辑,便于理解;后者有C++、C#、Java等,编程以对象为基本程序结构单元,与直观逻辑不同,该方法重难点在于对现实世界的抽象,万物皆可对象,代码整体易维护、易扩展、质量高、效率高。此处重点分析一下对编程和类的认识以及类的抽象思路。

1. 对编程和类的认识

C、C++、C#等编程语言都是图灵完备的,也就是都可以模拟出单带图灵机(数据由读写头在控制器指令作用下产生并记录于纸带,整体围绕数据和指令展开),其基本内容同样是数据和指令。不同的编程语言叫法上略有不同,如C#中称为字段(属性)和方法,但含义相同,此处均称为“数据+指令”编程的基本思想即对数据的定义和指令作用下数据的使用,整体实现某一特定功能

“数据”包括了常量、变量、列表、数组等,“指令”则表示对数据进行何种处理。函数、结构体、类都可以看作是对这两部分内容的封装,从这一角度理解类更接近类的本质——类是某一现实事物的抽象,是一组数据和若干指令的集合,前者表示该事物的属性(不同的数据类型代表不同类的属性,可进行不同的运算),后者表示可执行的操作和方法。

2.类的抽象

了解了类的本质,类的抽象便有章可循。将要解决的问题进行拆解(相当于建模),拆成数据加指令,看哪些部分适合投射为数据,投射为哪种数据(由此引入数据类型,数据类型决定了它后续可进行的操作和运算),哪些投射为指令(本质是都是选择判断和循环等基本逻辑组合实现的特定的功能)。

如要设计某智能车间的信息采集系统,面对这个大问题首先考虑到可将机床作为一个类进行设计,后续实例化出多个对象即构成整个车间系统。针对此机床类进行数据和指令的抽象:

  1. 数据方面:机床有诸多属性,如PLC数据、刀具数据、轴类数据等,不同的数据应选择各自适合的数据类型,如机床开机状态采用bool类型,机床x轴的实际位置应采用double型,时间采用uint或double,主轴转速采用32bit float。
  2. 指令方面:机床可能需要对其自身的数据进行定时保存、加工运算等,一个个功能要求写成函数的形式等待被调用,以此来操作数据。

在对机床进行抽象时,其组成部分也可以进一步抽象为类,如五轴机床应该将轴也抽象为类,每个轴都包括转速等具体数据信息,由该类通过继承得到直线轴和旋转轴,各轴后续通过实例化便可快速构造。

再如用于通讯的某客户端软件,其主要内容概括为以下几个方面:软件登录界面设计、建立Client、连接Server产生Session、通讯内容可视化、内容保存等。各个功能之间相互独立,应各自抽象为类而不是全部堆砌在一起。登录类包含数据:用户类别int、用户名string、用户密码string、登录状态bool;指令包括:密码验证、界面显示、登录反馈、界面切换等。其他类类似。

总结:大问题可以按一定方式分解为若干小问题,每个小问题在编程上都可由数据+指令解决,在具体抽象为类的过程中应重点思考现实事物向数据的投射,不同的属性投射为不同类型的数据,继而在指令中被访问、改写、传递、显示或保存等,形成该类的方法。 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值