重要核心思想

 

包含:OOA分析  OOD设计  OOP 编程

 

 

1.面向对象的架构分析,要分析对象是谁,职责是什么?

 

2.分成不同的类与方法。

 

3.要确定分配的类中包含变化因素,只有变化才分类

 

4.必要时可能一个方法一个类。

 

 

概述

 

面向过程的程序 = 算法 + 数据结构;关心解决问题的步骤。

面向对象的程序 = 对象 + 交互;     关心谁在解决问题。

类:一个抽象的概念,即为生活中的”类别”。

对象:类的具体实例,即归属于某个类别的”个体”。

同类型的多个对象,行为相同,数据不同。

主要思想

分而治之 --- 将一个大的需求分解为许多类,每个类处理一个独立的模块。

           拆分好处:独立模块便于分工,每个模块便于复用,可扩展性强。

 

封装变化 --- 变化的地方独立封装,避免影响其他模块。

 

高 内 聚--- 类中各个方法都在完成一项任务(单一职责的类)。

           复杂的实现封装在内部,对外提供简单的调用。

 

低 耦 合--- 类与类的关联性依赖度要低(每个类独立)。

           让一个模块的改变,尽少影响其他模块。

 

[例如:硬件高度集成化,又要可插拔]

最高的内聚莫过于类中仅包含1个方法,将会导致高内聚高耦合。

最低的耦合莫过于类中包含所有方法,将会导致低耦合低内聚。

优势

复用,灵活,简单。

面向对象的三大特性

封装:

数据角度讲,将一些基本数据类型复合成一个自定义类型。

方法角度讲,向类外提供功能,隐藏实现的细节。

设计角度讲,分而治之,高内聚低耦合,封装变化。

继承:

         统一概念。

重用现有类的功能,在此基础上进行扩展。

多态:

         父类的同一种动作或者行为,在不同的子类上有不同的实现。

0

        (父类调用同一方法,在不同的子类上有不同的执行效果)

         实现手段:虚方法、抽象方法、接口方法。

类的四大关系

泛化:子类与父类的关系,概念的复用,耦合度最高;

B类泛化A类,意味B类是A类的一种;

做法:B类继承A类

 

实现:抽象行为的具体实现,两者体现功能的关系,变化只影响行为;

     A类实现B类,意味A类必须具体实现B类中所有抽象成员。

做法:实现抽象类、接口中的抽象成员。

 

关联(聚合/组合):部分与整体的关系,功能的复用,变化影响一个类;

     A与B关联,意味着B是A的一部分;

做法:在A类中包含B类型成员。

 

依赖:合作关系,一种相对松散的协作,变化影响一个方法;

     A类依赖B类,意味A类的某些功能靠B类实现;

     做法:B类型作为A类中方法的参数,并不是A的成员。

设计的八大原则

开-闭原则(目标、总的指导思想)

Open Closed Principle

对扩展开放,对修改关闭。

增加新功能,不改变原有代码。

类的单一职责(一个类的定义)

Single Responsibility Principle  

一个类有且只有一个改变它的原因。

适用于基础类,不适用基于基础类构建复杂的聚合类。

依赖倒置(依赖抽象)

Dependency Inversion Principle

客户端代码(调用的类)尽量依赖(使用)抽象的组件。

抽象的是稳定的。实现是多变的。

组合复用原则(复用的最佳实践)

CompositeReuse Principle

如果仅仅为了代码复用优先选择组合复用,而非继承复用。

组合的耦合性相对继承低。

里氏替换(继承后的重写,指导继承的设计)

尽量选择扩展重写

Liskov Substitution Principle

父类出现的地方可以被子类替换,在替换后依然保持原功能。

子类要拥有父类的所有功能。

子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。

接口隔离(功能拆分)    

Interface Segregation Principle

尽量定义小而精的接口interface,少定义大而全的接口。本质与单一职责相同。

小接口之间功能隔离,实现类需要多个功能时可以选择多实现.或接口之间做继承。

面向接口编程而非面向实现(切换、并行开发)

客户端通过一系列抽象操作实例,而无需关注具体类型。

便于灵活切换一系列功能。

实现软件的并行开发。

迪米特法则(类与类交互的原则)

Law of Demeter

不要和陌生人说话。

类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

 

 

 

 

 

 

技巧

 

 

移动的三个实现

 

 

Character Controller

 

//主要用于主角运动相关

 

 

 

Rigibody

 

 

 

Transform

 

//世界坐标右方移动

transform.Translate(Vector3.right * Time.deltaTime, Space.World);

 

//摄像机右方移动

transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);

 

 

 

把string或“”的类似的东西放在一个类中

 

为了方便管理角色动画名称

Serializable为了让当前类在其他类使用时在unity面板中显示

 

 

脚本生命周期实用

目的

为了在角色死亡时禁用当前脚本来实现用户无法操作,

并在角色重生之后重新开启脚本来继续正常用户操作。

 

操作

获取组件卸载Awake中

要把脚本的事件注册在Onenable中

要把脚本的事件注销在Ondisable中

 

实例

 

 

加载命名空间namespace

 

写入命名空间的目的:为了不与他人写的变量重名,则把某个模块写入自定义命名空间中。

 

namespace ARPGDemo.Character

{

 

}

 

 

 

 

 

 

 

 

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LetsonH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值