C语言知识分享:面向对象和面向过程到底是怎么回事?

C语言基础知识分享:指针常量和常量指针区别 在学习C/C++的时候总是记不住指针常量(int * const p;)和常量指针(const int *p)的区别,最近再刷题的时候发现了一个评论,分分钟就可以记住这两者的形式和区别,下面分享一下如何记住和区分指针常量和常量指针。 指针常量 我们通常称之为指针常量的东西就是如下的这种形式: int * const p; 首先说一下指针常量中const的作用是限制指针不可变,也就是说指针一旦初始化不可再更改,但是其指向对象的值是可变的,看下面的例子: int a=10,b=20; in. 阅读详情

今天下午在一个组的项目回顾会议上,这个同事讲了自己用DDD思想对三个模块的重构。把之前在Service层的一些业务逻辑下沉到了领域层里,由之而引起的讨论。

部门经理:“其实你的业务逻辑总体并没有少,只是把边界重新划分了一下。”

一起参与开发的同事:“在第二个模块中(任务系统,包括了任务拆分,状态跟踪等)这种思想比较有优势,在一三项目中不是很明显。”

于是引出了我的一个问题:“到底什么是面向对象,什么是面向过程,在什么情况下适合面向对象,什么场景下适用于面向过程?”

以C语言和Java语言为例: C语言没有类,但是有结构体,结构体中不能有函数,只能有属性。这说明了什么?说明了在面向过程的思考方式中,数据和操作是严格分离的。

C语言中为什么函数需要定义到调用此函数的前面,也就是说先声明后调用?如果按照流程化的思路来看这种设计方式,想要调用一个子流程,势必要在调用之前就定义好。

而在java的类中,就没有函数定义先后的问题,这与面向过程和面向对象的最小定义粒度有关,面向过程的最小定义粒度为流程(方法、操作、函数),而在面向对象中,最小定义粒度为对象,这个对象的行为没有先后,包含在对象这个大的容器中。

封装、抽象、继承、多态其实就是类比的对象进行的建模,比如以人为例,人有些属性不想示人,有些属性只能给指定的人了解,这就是封装。人掌握的知识其实是现象的一种抽象。人继承来来自父母的一些生活习惯,而又有所不同,这就是多态。

归总,子类相对父类来说有不同的模型(对真实世界的建模),这是4种面向对象的终极原因。

为什么面向对象的思考方式更有利于扩展维护?拿一个工作岗位为例,一个人在一个工作岗位上,如果有一天这个岗位有了更多的工作要求,如果改动量较小,那么对该岗位的人进行技能培训就可以了。如果要求多到一种程度,拆分成两个人,或者拆分成多个岗位。而如果用面向过程的思路,那么每次改动,都相当于多了一个流程?(这里存疑,多流程的问题在哪?难维护的理由是什么?这里我没有想明白)

面向过程要求人有更

ESP-CSI:使用ESP32进行CSI(信道状态信息)采集 使用esp32进行csi(信道状态信息)采集和处理 阅读详情

相关推荐

使用Bigemap下载地图流程

Bigemap地图下载简单流程,临时安排任务简单学习没有深入了解。

TKY666的博客 4846

Node框架之NestJS入门学习

文章主要分为三部分:1 NestJS 与Egg对比2 NestJS 基础知识介绍3 使用NestJS快速搭建应用,实现CURD操作e-link文档Egg官网NestJS 官网NestJS中文文档(非官方)

十九万里的博客 4740

【AUTOSAR】MCU Port的配置(MCAL)【EB】

熟悉Classic AUTOSAR架构的朋友应该知道,经常需要用到MCU中的Port这个模块。那么如何通过工具快速配置一个Port呢?

xinsuiwodong2014的博客 9511

本地部署gradle

在部署CAS构建执行包时,如果按照CAS的官方命令gradlew clean build,如果系统没安装过gradle,这个步骤将会从网上下载gradle,但是进度非常慢,耗时很长。为了更快地完成项目构建,我们可以直接在本地部署好gradle,节省一点时间。

益添的博客 779

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2840

告别底噪和发热:TPA3255的PCB布局与散热设计保姆级教程(附嘉立创EDA文件)

本文详细解析TPA3255 Class D音频功放的PCB布局与散热设计,提供从电源系统分层架构到热管理系统的全流程优化方案。通过实战案例展示如何消除底噪、降低发热,并附嘉立创EDA文件,助力工程师快速设计高性能音频功放。

weixin_29208077的博客 376

【AI智能体】Codex 浏览器操作自动化任务实战操作详解

【AI智能体】Codex 浏览器操作自动化任务实战操作详解

congge 4065

5-EP4CE10F17C8-引脚配置

EP4CE10F17C8-引脚配置

weixin_44479192的博客 719

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 属于程序员的黄金五年,把握这 5 年,或将迎来美好的职场生活!
下一篇: 在互联网大环境下,IT编程以及网络营销,到底学哪个比较好就业?
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值