面向对象C与代码复用实现

c++中的“类”,翻译极烂,完全丢失意义,其英文为class,class的百度翻译如下:


class翻译为:种类、归类等动作,衍生到opp中,翻译应为:是一个物体的共性描述,应翻译成“物体模板”或“对象模板”,其目的是用于实体对象的创建的。


“对象模板” 的设计思路称为 data abstraction & encapsulation 


一般data通常翻译成数据,也很烂,data百度翻译如下:


应翻译为资料更妥,衍生为生成资料,或者衍生为数据&结构。

data abstraction :生产资料的抽象化(百度生产资料定义:劳动者进行生产时需要使用的资源和工具),也可以认为是数据结构的抽象化,当然要注意数据& 结构

encapsulation :封装

生产资料抽象化的实现建立在接口和实现分离的基础上,接口的出现实现了抽象化的可能,即它首先把函数入口给抽象化了。而接口和实现分离这一效果被称为封装,封装的意义不是浅层的在于不让外部对象操作内部数据和直接使用内部功能,而是opp意义中,外部对象不能影响内部数据和内部功能,只能通过对象对外的接口影响该对象,这样带来的好处之一是减少耦合,但其主要目的还是用于不能影响内部数据和内部功能,对象之间的互操作只能通过接口实现,这才是彻底的opp,不能穿透对象的接口。

举个片面的例子:就和生物细胞间的相互影响一样,细胞A只能分泌激素透过细胞B的细胞膜去影响细胞B,而不能装备CT设备直接去影响细胞B内的物质和内部功能。


网上看到一个关于封装的粗暴观点,“封装就是指运行的“数据”和“函数”绑定在一起”,看着有点糙,但是感觉也在理,于是我同理认为:

data抽象:函数接口甚至数据接口是抽象的(忽然想到,就是因为数据接口是抽象的,所以才会有c++中多态的存在,因为需要对应不同的“私有数据”进行不同的函数)


一直在思考oop的目的是啥,思考c++中有类的目的是啥。oop的目的在于“对象模板”的“使用”,如c++中面向对象被各种吐槽,各种又违背oop的地方,但就目的来说,c++的oop也是为了oop的使用,同样,我认为c在实现面向对象的实现中更需要倾向于实现“对象模板”的良好使用这一特性上,而不是扣死在实现oop本生特性上。

oop的本质在于的类的衍化、叠级使用,为啥要用oop,因为很多现实广义事情处理方式本质上就是oop,每一层次都干了点部分事情,然后切换成其他级别的对象。。。。


关于c和c++,一个我觉得类似的模型:

以前生产队干活,啥都是大家共享。有个垃圾2B领导下来视察插秧,看到有块水田的水很少,原来是有个地方决了,于是问插秧的农民A,农民A表示他是来插秧的,决口的事情要问犁地农民B,,农民B表示他按正常顺序犁的,可能是犁地农用拖拉机不好,要问维护人员农民C,农名C表示犁地的拖拉机已经还给东边的生产队了,有问题你农民A为什么不早说呢???于是农民A,B,C明年饿死了。。。

后来承包到户了,有个路人路过农民s家的田,看到田里水不够,告诉了一下农民s,农民s马上赶往他家一亩三分地,表示他家的沟决了他自己来,他家的秧苗缺了他自己来,他家的肥料不够了他自己蹲田里,他要是生病了还有他儿子。。。没垃圾2B领导的事情了,产量还年年上升。早这样农民A,B,C就都过着快乐充实的日子了。


还有一个模型:

老板有个项目:招了一个硬件,一个软件,硬件哗哗哗的画好了板子,软件开始猛调,哎!硬件!你的二极管冒烟了,硬件哗哗哗的改了,软件开始猛调,哎!电容炸了,硬件哗哗哗的改了,软件开始猛调,哎!mcu冒烟了。。。OK产品出来了,好快啊,量产了。。。。。。哎。。。。。。怎么运行了一天就要重启才行呢,软件,是你程序问题吧???(硬件嘀咕,其实我少接了一个地,但都量产了,哪里敢说轻易改板子啊,跑路吧。。。)

老板又有个项目:找了个软硬皆通的,先研究样板,再开始硬件,先电源,再最小系统,再软件测试,开始加外围,软件测试。。。。。。。。。好慢啊。。。一步一个脚印。。。每个问题点都清楚。。产品终于出来了,量产。。。稳定。。。


oop:抽象了,也封装了,不谈继承等优点,封装的好处,我目前感觉是责任划清了,就是你的活,找你就行。不用2B领导去问a,问b,问c,不用浪费精力去处理三角关系。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 设计模式是一种在软件设计中可以重复使用的面向对象设计方法。它为解决软件设计中常见的问题提供了一种结构化的、经过验证的解决方案。每个设计模式都是一种经验总结,通过它可以在设计阶段更加效地解决问题,提软件的可维护性和可扩展性。 其中,C 20设计模式是一种设计模式的分类,包含了20种常见的设计模式,这些模式被广泛应用于软件设计领域。C 20设计模式具有不同的特点和使用场景,可以根据具体的问题选择合适的设计模式进行应用。 例如,单例模式是C 20设计模式中的一种,它用于保证一个类只存在一个实例,并提供一个全局访问点。在需要保证系统中只有一个实例对象时,可以使用单例模式来实现。工厂模式是另一种常见的设计模式,它用于隐藏对象的创建细节,并提供一个统一的对象创建接口。在需要根据不同的条件创建不同类型的对象时,可以使用工厂模式来实现。 C 20设计模式还包括适配器模式、观察者模式、策略模式等等。每个设计模式都有其独特的使用场景和解决方案,根据具体的需求选择合适的设计模式能够提软件的可维护性和可扩展性。 总之,C 20设计模式是一种可复用面向对象设计方法,通过它可以解决软件设计中的常见问题。选用合适的设计模式可以提软件的设计质量,降低代码的复杂度,并且使得软件更易于维护和扩展。 ### 回答2: 设计模式是一种可复用面向对象设计方法,它提供了在软件开发过程中常见问题的解决方案。设计模式可以提代码的重用性、可读性和可维护性,使得软件系统更加灵活和可扩展。 C 20设计模式是指在 C++20 标准中引入的新的设计模式。这些设计模式包括但不限于观察者模式、工厂模式、单例模式和装饰器模式等。 观察者模式是一种对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。 工厂模式是一种创建对象的方法,它将对象的创建过程封装在一个工厂类中,客户端只需要通过工厂类来创建对象,而不需要了解具体的实现细节。 单例模式保证一个类只有一个实例,并提供一个全局的访问点。这种模式常用于管理系统资源和全局配置。 装饰器模式是一种动态地给对象添加新功能的方法,它通过创建一个包装类来包装原始对象,然后在包装类中添加额外的功能。这样,可以在不改变原始对象的情况下,动态地给它添加新的行为。 C 20设计模式的引入,使得在 C++20 中使用设计模式更加方便和灵活。它们可以通过新的语法和特性来实现,从而减少开发者的工作量和代码的复杂性。 总之,设计模式是一种可复用面向对象设计方法,它能够提代码的可扩展性、可读性和可维护性。C 20设计模式是在 C++20 标准中引入的新的设计模式,使得在 C++20 中使用设计模式更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aazhoukeaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值