- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
参考资料(类的设计原则) 类的设计原则 类的设计原则简记:SOLID S:单一职责原则;O:开闭原则;L:里氏替换原则; I:接口隔离原则;D:依赖倒置原则 S:单一职责原则 要求一个类的功能尽量单一,类的方法也要尽量单一。核心思想是:高内聚,低耦合。也即类、方法尽量具有原子性。这个原则只使用于基础类,不适用于基于基础类构建复杂的聚合类。在构成聚合类时优先使用类组合,而不使用类继承。 O:开闭原则 核心思想是对扩展开放,对修改关闭。换句话说,提供者(生产者)能扩展功能,使用者(消费者)不需要修改代码。在实现中,类和类之间是通过“接口”交互的,如果提供者的接口不变(方法名、参数、返回值)则可以应用开闭原则,如果接口改变(方法名、参数、返回值、新增方法)则不适应开闭原则。 L:里氏替换原则 子类必须能替换成他们的父类,即当程序基于父类实现时,如果用子类去替换父类而程序不需要修改。里氏替换原则是针对类的继承来讨论的,在应用这个原则实现子类时必须:①子类必须实现或者继承父类所有的共有方法;②子类每个方法的输入参数必须和父类一样;③子类每个方法的输出必须不比父类少。 如果你不希望深入了解软件开发的知识,可忽略 I:接口隔离原则 客户端不应该被强迫去依赖那些它不需要的接口。这个原则是针对接口的设计提出的,主要是指在设计接口时不要将一些功能不相关的方法做在一个接口中,将功能不相关的方法放在另外的接口实现隔离。在使用接口时要注意控制接口的粒度,接口定义的粒度不能太细,也不能太粗。 接口粒度太细,系统中就会出现接口泛滥,接口和实现类急剧膨胀,反而不易维护;接口粒度太粗,就会违背ISP,系统的灵活性就会降低,不易维护和扩展。 D:依赖倒置原则 传统的依赖关系是:高层模块依赖低层模块,依赖倒置原则是:高层的模块不依赖低层模块,高层模块和低层模块都依赖抽象。变化是在原来的高层模块与低层模块之间增加了一个抽象接口。抽象不依赖具体,具体依赖抽象。其目的是解耦。依赖倒置原则的核心是要面向接口编程,理解了面向接口编程,也就理解了依赖倒置。 参考资料(类的设计原则) 如果你不希望深入了解软件开发的知识,可忽略 具体实践过程(面向对象) 2.面向对象编程实现(执行逻辑,5分钟) if __name__ ==__main__: train = CrDataSet(train.data) #构建训练集 test = CrDataSet(test.data) #构建测试集 perceptron = Perceptron(0.1,[0,0,0],train,test) #实例化感知器 perceptron.train() #训练模型 perceptron.test() #测试模型 perceptron.forecast([5.3,2.5]) #使用模型预测 3.面向对象编程实现(完善CrDataSet类,30分钟) 具体实践过程(面向对象) class CrDataSet(): def __init__(self,datafile): #类似于c++中的构造函数 self.data = [] #属性:data self.crDataSet(datafile) def crDataSet(self,datafile): #方法:crDataSet with open(datafile,r) as file: data = file.read().splitlines() for line in data: temp = []
您可能关注的文档
- 1.3.1《算法案例-辗转相除法与更相减损术》.ppt
- 8 第八章 仿生嗅觉系统的应用.ppt
- Failure Data Collection and Analysis错误数据收集和分析.ppt
- MATLAB 程式設計進階篇程式計時.ppt
- Matlab基础及应用——数据结构(1):数组与矩阵.ppt
- SPSS统计数据分析.ppt
- 斑马线识别---数字图像处理结题报告.pptx
- 并行算法实践.ppt
- 第2章 线性规划.pptx
- 第3章MATLAB图形初步.ppt
- 物流金融服务创新与风险防控在跨境物流中的应用研究.docx
- 职业教育虚拟仿真实训系统在工程教育中的应用与发展报告.docx
- 人教版音乐一年级下册《第10课 绿色的祖国》教案.docx
- 医疗大数据在临床决策支持系统中的疾病预测与干预策略研究.docx
- 人教版音乐一年级下册《第11课 升号与降号》教案.docx
- 我国页岩气开采技术发展现状与未来趋势研究报告.docx
- 家居行业直播带货效果与消费者购买行为研究报告.docx
- 人工智能与小学英语情境教学:生成式AI的应用研究教学研究课题报告.docx
- 聚焦2025年,咖啡连锁品牌线上线下融合的会员积分体系报告.docx
- 《基于历史大概念教学的初中历史课程资源开发与应用研究》教学研究课题报告.docx
文档评论(0)