c 面向对象设计视频教学,请简述何为面向对象设计
发表于 ・ 资讯中心
网友们都想知道关于c 面向对象设计视频教学和请简述何为面向对象设计的话题,接下来让小编来为大家讲解一下关于c 面向对象设计视频教学的题吧!
c 面向对象设计视频教学
七大准则
开闭准则.里氏代换准则.迪米特准则(最低明白准则).单纯权责准则.接口分开准则.依靠颠倒准则.组合/聚合复用准则呢。
开闭准则(The Open-Closed Principle ,OCP)开闭准则程序实体(模块,类,办法等)应当对扩张开放,对修正封闭啦。
观念了解
开闭准则是指在进行面向对象设计中,设计类或其它程序单位时,应当遵照
(1)对扩张开放(open)
(2)对修正封闭(closed) 的设计准则呢。
开闭准则是判定面向对象设计是不是准确的最根本的基本原理之中的一个呢。
依据开闭准则,在设计1个软件系统模块(类,办法)的时候,应当可以在不修正固有的模块(修正封闭)的基础上,能扩张其功效(扩张开放)呢。
扩张开放某模块的功效是可扩张的,则该模块是扩张开放的了。软件系统的功效上的可扩展性请求模块是扩张开放的了。
修正封闭某模块被其它模块挪用,假如该模块的源代码不同意修正,则该模块是修正封闭的呢。软件系统的功效上的平稳性,持续性请求模块是修正封闭的了。
开闭准则的完成办法
为了满意开闭准则的对修正封闭准则以及扩张开放准则,应当对软件系统中的不改变的部分加以抽象,在面向对象的设计中,
(1)可以把这一些不改变的部分加以抽象成不改变的接口,这一些不改变的接口可以应付以后的扩张啊;
(2)接口的最小功能设计准则啦。依据这一个准则,固有的接口可以应付以后的扩张了;欠缺的部分可以经过定义新的接口来完成啊;
(3)模块之中的挪用经过抽象接口进行,那样即便完成层发生变化,也无需修正挪用方的编码啦。
接口可以被复用,但接口的完成却不肯定能被复用呢。
接口是安稳的,封闭的,但接口的完成是可变的,开放的啦。
可以经过对接口的不一样完成以及类的承继行动等为体系增添新的或改变体系本来的功效,完成软件系统的柔性扩张啦。
优点提升体系的可复用性和可维护性呢。
简易地说,软件系统是不是有优良的接口(抽象)设计是判定软件系统是不是满意开闭准则的1种主要的判定基准呢。现如今多把开闭准则等同于面对接口的软件设计了。
开闭准则的相对性
软件系统的创建是1个要不停重构的经过,在这一个经过中,模块的功效抽象,模块与模块间的干系,都不会从一开始就十分清楚明了,因此创建100%满意开闭准则的软件系统是非常麻烦的,这就开闭准则的相对性呢。
但在设计经过中,经过对模块功效的抽象(接口定义),模块之中的干系的抽象(经过接口挪用),抽象与完成的分散(面对接口的程序设计)等,可以尽力靠近满意开闭准则呢。
里氏替代准则(Liskov Substitution Principle ,LSP)唯有满意以下2个要求的OO设计才可被以为是满意了LSP准则
(1)不应当在编码中出现if/else之类对派生类类别进行判定的要求呢。
(2)派生类应该可以替代基类并出现在基类可以出现的一切地方,或者说假如咱们把编码中运用基类的地方用他的派生类所取代,编码还能平常工作啦。
里氏替代准则(LSP)是使编码吻合开闭准则的1个主要保证了。
LSP表现
类的承继准则假如1个派生类的对象也许会在基类出现的地方出现运转错误,则该派生类不应当从该基类承继,或者说,应当从新设计他们之中的干系啦。
动作正确性保证从另1个旁边上保证了吻合LSP设计准则的类的扩张不会给已有的体系引进新的错误呢。
里式替代准则的引伸意思
人类可以扩张父类的功效,但不可以改变父类固有的功效啦。
人类可以完成父类的抽象办法,但不可以覆盖父类的非抽象办法了。
子类中可以增添本人特有的办法了。
当子类的办法重载父类的办法时,办法的前置条件(即办法的输出/入参)要比父类办法的输出参数更松宽了。
当子类的办法完成父类的办法时(重载/重写或完成抽象办法)的后置要求(即办法的输入/返回值)要比父类更严厉或相对等了。
里式替代准则的长处
管束承继泛滥,是开闭准则的1种表现啦。
增强程序的健壮性,同时间变换时也可以做到十分好地提升程序的维护性.扩展性啦。减少需要变换时引进的危险呢。
迪米特准则(最低明白准则)(Law of Demeter ,LoD)观念了解
关于面对OOD来讲,又被解说为下面2种方法
1)1个程序实体应该尽可能少地与其它实体发生相互作用呢。
2)每1个程序单位对其它的单位都唯有最低的文化,并且局限于哪些与本单位密切相关的程序单位啦。
朋友圈的肯定
“同伴呀”要求
1.目前对象本身(this)
2.以参量形态传入到目前对象办法中的对象
3.目前对象的实例变量直-接援用的对象
4.目前对象的实例变量假如是1个会集,这么会集中的元素也都是同伴
5.目前对象所建立的对象
一切1个对象,假如满意上边的要求之中的一个,就目前对象的“同伴了”,不然就“陌路人了”呢。
迪米特准则的优缺点
迪米特准则的初心在于减少人类之中的耦合了。因为每一个类尽量减少对其它类的依靠,因而,很简单使得体系的功能模块功效自力,相互之间不存在(或很少有)依靠干系啦。
迪米特准则不期望人类直-接建设直-接的接近呢。假如真的有要建立联系,也期望能经过他的友元类来传达呢。因而,运用迪米特准则有也许形成的1个结果就体系中存在批量的中间人类,这一些类之所以存在全部是为了传达类之中的互相挪用干系,这在肯定程度上增添了体系的复杂度呢。
单纯权责准则以后一直都不需要让1个类存在几个改变的原由啦。
换句话说,假如1个类要改变,改变他的原由以后一直都唯有1个啦。假如存在几个改变他的原由,就要从新设计该类别了。
单纯权责准则准则的重心含义是只能让1个类/接口/办法有且仅有1个权责呢。
为何1个类不可以有多于1个之上的权责吗?
假如1个类拥有1个之上的权责,这么就会有几个不一样的原因引发该类改变,而这一种改变将影响到该类不一样权责的使用者(不一样客户)
一个方面,假如1个权责运用了外面类库,则运用此外1个权责的客户却也不能不包括这一个未被运用的外面类库呢。
另一方面,某-个客户因为某-个原因要修正此中1个权责,此外1个权责的客户也将遭到影响,她将不能不从新编译和配置啦。
这违背了设计的开闭准则,也不是咱们所希望的呢。
接口分开准则(Interface Segregation Principle ,ISP)不可以逼迫客户去依靠哪些她们不可以运用的接口了。
观念了解
换句话说,运用几个特意的接口比运用单纯的总接口要好了。
他包括了2层意义
接口的设计准则接口的设计应当遵照最小接口准则,不需要把客户不运用的办法塞进同一个接口里呢。假如1个接口的办法没有被运用到,则声明该接口过胖,应当将其切割成多个功效专注的接口啦。
接口的依靠(承继)准则假如1个接口a承继另1个接口b,则接口a相当于承继了接口b的办法,这么承继了接口b后的接口a也应当遵照上述准则不应当包括客户不运用的办法了。 相反,则声明接口a被b给污浊了,应当从新设计他们的干系呢。
假如客户强迫依靠她们运用的接口,当接口发生改变时,她们也不能不跟着改变呢。换而言之,1个客户依靠了未运用但被其它客户运用的接口,当其它客户修正该接口时,依靠该接口的全部客户都将遭到影响呢。这明显违背了开闭准则,也不是咱们所希望的了。
指导意义
1个类对1个类的依靠应当建设在最小的接口上
建设单纯接口,不需要建设巨大拥肿的接口
尽力细化接口,接口中的办法尽量少
依靠颠倒准则(Dependency Inversion Principle ,DIP)高层模块不应当依赖于低层模块,两者都应当依赖于抽象
抽象不应当依赖于细节,细节应当依赖于抽象 C.针对接口编程,不需要针对完成编程啦。
观念了解
依靠在程序设计中,假如1个模块a运用/挪用了另1个模块b,咱们称模块a依靠模块b了。
高层模块与低层模块常常在1个应用程序中,咱们有有些低层次的类,这一些类完成了有些根本的或低级的操控,咱们称为低层模块啊;此外有有些高层次的类,这一些类封装了某一些繁杂的思维,而且依赖于低层次的类,这一些类咱们称为高层模块呢。
依靠颠倒(Dependency Inversion)
面向对象程序设计相比于面对经过(结构化)程序设计而言,依靠干系被颠倒了呢。由于传统的结构化程序设计中,高层模块老是依赖于低层模块啦。
抽象接口是对低层模块的抽象,低层模块承继或完成该抽象接口呢。
那样,高层模块不直-接依靠低层模块,却是依靠抽象接口层呢。抽象接口也不依靠低层模块的完成细节,却是低层模块依靠(承继或完成)抽象接口了。
类与类之中都经过抽象接口层来建设干系了。
组合/聚合复用准则(Composite/Aggregate Reuse Principle ,CARP)尽力运用组合/聚合,不需要运用类承继了。
观念了解
即在1个新的对象里面运用有些已有的对象,使之变成新对象的一小部分,新对象经过向这一些对象的委派到达复用已有功效的目标了。就是说要尽力的运用形成和聚合,而不是承继干系到达复用的目标呢。
组合和聚合都是关连的特别品种呢。
聚合表示全体和部分的干系,表示“具有吧”啦。组合则是1种更强的“具有呀”,部分和全体的生命周期相同啦。
组合的新的对象全部控制其组成部分,包含他们的建立和泯灭等了。1个组合干系的成份对象是不可以与另1个组合干系同享的了。
组合是值的聚合(Aggregation by Value),而通常说的聚合是援用的聚合(Aggregation by Reference)了。
在面向对象设计中,有2种根本的方法可以完成复用第一种是经过组合/聚合,第二种就经过承继啦。
————————
关于深爱编程的同伴来讲,路再难走也要维持走下来!假如您想更加好的提高您的编程重心才能(内功)不如从现如今开始!
编程研习书本共享
编程研习小视频共享
整顿共享(几十年研习的源码.行业实战小视频.行业日记,基础入门教程)
欢迎换行业和研习编程的同伴,利用更多的材料研习生长比本人揣摩更加快哦!
关于C/C++有兴趣可以关心作者在靠山私聊我【编程交流】一起来研习哦!可以拿取有些C/C++的行业研习小视频材料哦!早已经设定好了关键词自行回覆,自行拿取就好了!
请简述何为面向对象设计
关于大型建筑,其建设是1个系统工程,因此设计必不可缺,关于不一样类别的大型建筑,设计总会有有些可以遵照的套路,称之为建筑设计形式呢。
关于繁杂程序,其开发是1个系统工程,当运用面对经过设计时,以函数为模块,函数之中是较简易的挪用干系了。当运用面向对象设计时,以类或对象为模块,类或对象之中的互相干系较为繁杂,为了应付需要改变(功效加减和改变),请求类模块吻合“高内聚.低耦合吧”的准则,大自然,设计也有有些套路可以遵照,称之为面向对象之设计模式呢。
-End-
今日关于c 面向对象设计视频教学相关的详细内容就聊到这儿吧,感谢各位花宝贵的时间阅读本文,更多关于请简述何为面向对象设计、c 面向对象设计视频教学的相关信息请持续关注本站。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。