查看: 5384|回复: 67
收起左侧

[教程经验] 面向对象编程七大基本原则,使用InoProshop来讲解实现,设...

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 liuning90s 于 2022-9-19 16:53 编辑

面向对象编程七大基本原则,使用InoProshop来讲解实现,设计模式入门

一、面向对象编程原则概述

1.1 软件的可维护性和复用性

可维护性较低的软件设计,通常由于如下四个原因造成:

过于僵硬(Rigidity) :灵活性不够
过于脆弱(Fragility) :健壮性(鲁棒性)
不够复用率低(Immobility) :不能重用
黏度过高(Viscosity) :高耦合,关联性太高
一个好的系统设计应该具备如下三个性质:

可扩展性(Extensibility)
灵活性(Flexibility)
可插入性(Pluggability)
程序设计原则:高内聚,低耦合

二、面向对象编程的七大原则
面向对象的设计原则(7大原则)
★ 1、开闭原则: 是总纲,告诉我们要对扩展开放,对修改关闭;
★ 2、里氏替换原则: 告诉我们不要破坏继承体系;
★ 3、依赖倒置原则:告诉我们不要破坏继承体系;
★ 4、单一职责原则: 告诉我们实现类/方法要职责单一;
★ 5、接口隔离原则: 告诉我们在设计接口的时候要精简单一;
★ 6、迪米特法则:告诉我们要降低耦合度;
★ 7、合成复用原则:告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。


2.1开闭原则
开闭原则定义:
一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为
1、对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
2、对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对其进行任何的修改。


如何实现开放封闭原则
实现开闭原则的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以就是开放的。


软件设计要容易维护又不容易出问题的最好方法就是多扩展、少修改
废话不多说,使用汇川InoProshop开干(本人使用的InoProshop V1.6.2,支持面向对象继承、接口、属性、方法等,学习者需要有这些基础,如有需要的话,本人可以再出一些教程)


1、为方便实验观察,先造轮子工具,print函数

2.1

2.1







2、 优化前代码

2.2

2.2


仿真

2.3

2.3


分析:

1、在上面的代码中,计算的种类可能增加,可能减少。如果要增加一个乘法类,那么就必须要修改oper方法。而且这中修改在目前的程序结构下是无法避免的。

2、现在要变更的最有可能的地方是:每一个计算类(增加,减少,修改)

3、对计算方法进行抽象,然后在oper类中使用多态来封闭这种变化

优化后的类图

2.4

2.4



优化后程序
1 定义一个计算接口
5168A00D-E77D-4aac-80C2-6C2A71372C95.png

2 定义加法实现类
DBFD52EE-6BCC-4cd8-928B-C834D265019C.png

14B383EE-8303-4070-80C3-65BC4BCEA028.png

3 定义减法实现类
375F57FA-CBB5-4e05-BF86-AAAC8E804C13.png

DB9C6F6B-E223-48db-BF88-4A6F5963BC71.png

4 定义工厂类

23A37826-8B13-4346-B1F9-DD6DE2423867.png


5 测试
868DE480-C14B-4bac-8927-28FCE03B85F4.png

953453EF-5534-4144-9074-F90E6371DD17.png


程序分析:
1、上面的程序中,如果要增加一个乘法计算。需要增加一乘法类,然后修改Factory类。
2、在factory类中使用了多态特性。客户端只需要向Factory类发起请求,Factory类会向客户端返回一个计算对象。(客户端不用去管这个计算对象是怎么来的>

















10FB1A54-3181-4b7a-AA45-5DB0ACCCFEF2.png

面向对象编程7大基本原则_开闭原则.rar

429.23 KB, 下载次数: 61

售价: 5  [记录]

优化前代码示例

面向对象编程7大基本原则_开闭原则_优化后.rar

434.87 KB, 下载次数: 99

售价: 5  [记录]

优化前代码示例

点评

感谢分享  发表于 2023-7-5 08:19
这个厉害,直接把C#的类提出来了  发表于 2023-7-2 10:50
虽然看不太懂,但是感觉很厉害的样子  发表于 2022-9-27 11:16




上一篇:标红色的这个地方是干什么用的?
下一篇:轴名称输不进去

已有 1 人打赏作者

lihang9920 赏了楼主1水滴
回复 邀请回答送花

使用道具 举报

小样 2022-9-26 16:53:24 | 显示全部楼层
咋没人评论呢。。给楼主点个赞
回复 送花

使用道具 举报

15580138051 2022-9-26 18:30:02 | 显示全部楼层

咋没人评论呢。。给楼主点个赞
回复 送花

使用道具 举报

COLOR 2022-9-26 23:46:59 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

zjw424260912 2022-9-27 10:44:30 | 显示全部楼层
感谢楼主分享!
回复 送花

使用道具 举报

GuoJia 2022-9-27 11:44:03 | 显示全部楼层
咋没人评论呢。。给楼主点个赞
回复 送花

使用道具 举报

bob19870 2022-9-27 13:17:23 | 显示全部楼层
很好的经验,可惜水滴不够,明天签到够了再买。
回复 送花

使用道具 举报

15914373780 2022-9-27 16:28:30 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

ilovplc 2022-9-27 22:38:56 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

COLOR 2022-9-27 23:23:33 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部