精华内容
下载资源
问答
  • 结合软件度量技术,设计并实现一个面向对象耦合性度量工具,用于全面度量面向对象系统的耦合性。给出了此度量工具的体系结构,详细讲述了该工具各个模块的设计与实现方法,其中着重讲述了中间信息库的设计,给出了...
  • 结合软件度量技术,设计并实现一个面向对象耦合性度量工 具,用于全面度量面向对象系统的耦合性。给出了此度量工具的体系结构,详细讲述了该工具各个模块的设计 与实现方法,其中着重讲述了中间信息库的设计,给出了...
  • 面向对象中的聚合与耦合

    千次阅读 2014-03-01 21:10:45
    写的程序多了,慢慢感觉模块之间...因为聚合与耦合这两个概念一直都是以"高聚合、低耦合"的形式出现的,刚刚开始接触面向对象设计时,我一直认为聚合和耦合是一对相反的概念,也就是说:只要做到了高聚合,那么自然而然

    写的程序多了,慢慢感觉模块之间的耦合和聚合是那么的重要,一个项目肯定会有不同的功能和模块,这样的话肯定要做到“高内聚,低耦合”,那么到底什么是“高内聚,低耦合”,下面就以自己的浅薄的认识来为大家讲解下,又不足的地方还望指点。

    因为聚合与耦合这两个概念一直都是以"高聚合、低耦合"的形式出现的,刚刚开始接触面向对象设计时,我一直认为聚合和耦合是一对相反的概念,也就是说:只要做到了高聚合,那么自然而然就做到了低耦合。虽然这样的理解并不是错误的,但我并没有思考过原因。

    先来看看聚合的定义:聚合(Cohesion)是一个模块内部各成分之间相关联程度的度量。

    这里有多个含义值得考虑。首先,聚合是对一个模块内部的度量,这也是许多情况下我们把聚合称之为内聚的原因。第二,这里出现的模块是广义的模块,它可能是子系统,可能是功能模块,也可能是功能模块中的某一个类。从不同的层次看,聚合的程度也会有所不同。至于为什么不同,后面会有解释。第三,模块的成分包括模块的行为和状态。要做到高聚合,那么模块内部的行为必须要与模块的内部状态紧密关联。通俗来讲,一个模块仅完成一个独立的功能,模块内部不存在与该功能无关的操作或状态。

    再来看看耦合的定义:耦合(Couping)是模块之间相关联程度的度量。相对于聚合的内向性,耦合关注的是某一模块和其他模块之间的关联性。也就是说模块之间的关联尽量越少越好。

    耦合主要指不同对象之间相互关联的程度。如果一个对象过多地依赖于其它对象来完成自己的工作,则不仅使该对象的可理解性下降,而且还会增加测试、修改的难度,同时降低了类的可重用性和可移植性。对象不可能是完全孤立的,当两个对象必须相互联系时,应该通过类的公共接口实现耦合,不应该依赖于类的具体实现细节。

    交互耦合——如果对象之间的耦合是通过消息连接来实现的,则这种耦合就是交互耦合。在设计时应该尽量减少对象之间发送的消息数和消息中的参数个数,降低消息连接的复杂程度。
    继承耦合——继承耦合是一般化类与特殊化类之间的一种关联形式,设计时应该适当使用这种耦合。在设计时要特别认真分析一般化类与特殊化类之间继承关系,如果抽象层次不合理,可能会造成对特殊化类的修改影响到一般化类,使得系统的稳定性降低。另外,在设计时特殊化类应该尽可能多地继承和使用一般化类的属性和服务,充分利用继承的优势。

    展开全文
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    面向对象(OOP)概述 从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,...

    面向对象(OOP)概述

    从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去面对。面试官: go out ! now!

    img

    滚回来的我赶紧看看什么是OOP,Object Oriented Programming,原来就是面向对象的编程啊,还有OOD(面向对象的设计),OOA(面向对象的分析)。那什么是面向对象呢?要想了解这个问题我们要先了解面向过程,这样对比我们就好理解了。

    很早很早以前的编程是面向过程的,比如实现一个算术运算1+1 = 2,通过这个简单的算法就可以解决问题。但是随着时代的进步,人们不满足现有的算法了,因为问题越来越复杂,不是1+1那么单纯了,比如一个班级的学生的数据分析,这样就有了对象这个概念,一切事物皆对象。将现实的事物抽象出来,注意抽象这个词是重点啊,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。这是一次飞跃性的进步。

    img

    举个最简单点的例子来区分面向过程和面向对象

    有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

    1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

    2、去饭店,张开嘴:老板!来一份鱼香肉丝!

    看出来区别了吗?1是面向过程,2是面向对象。

    面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性!

    面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

    面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

    面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。

    面向过程和面向对象的区别

    面向过程

    优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
    缺点:不易维护、不易复用、不易扩展

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
    缺点:性能比面向过程差

    面向对象三大特性五大原则

    img

    面向对象的三大特性

    1、封装
    隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

    2、继承
    提高代码复用性;继承是多态的前提。

    3、多态
    父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

    五大基本原则

    • 单一职责原则SRP(Single Responsibility Principle)
      类的功能要单一,不能包罗万象,跟杂货铺似的。

    • 开放封闭原则OCP(Open-Close Principle)
      一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。

    • 里式替换原则LSP(the Liskov Substitution Principle LSP)
      子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~

    • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。

    • 接口分离原则ISP(the Interface Segregation Principle ISP)
      设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

    总结

    • 抽象会使复杂的问题更加简单化。
    • 从以前面向过程的执行者,变成了张张嘴的指挥者。
    • 面向对象更符合人类的思维,面向过程则是机器的思想
    展开全文
  • 1.封装、继承、多态 封装,隐藏内部实现 继承,复用现有代码 多态,改写对象行为 继承是以封装为基础的,多态是以...3.面向对象的根本问题 我们为什么要使用面向对象? 我们应该怎样使用三大机制来实现好的面向对象

    1.封装、继承、多态

    • 封装,隐藏内部实现
    • 继承,复用现有代码
    • 多态,改写对象行为
      继承是以封装为基础的,多态是以继承为基础的。
      封装,侧重于对象的描述。
      继承和多态,侧重于对象之间的关系描述。

    2.从编程语言直观了解面向对象

    通过面向对象编程语言(OOPL)认识到的面向对象,并不是面向对象的全部。OOPL的三大机制“封装、继承、多态”可以表达面向对象的所有概念,但是这三大机制没有刻画出面向对象的核心精神。

    3.面向对象的根本性问题

    • 我们为什么要使用面向对象?
    • 我们应该怎样使用三大机制来实现好的面向对象?
    • 我们应该遵循什么样的面向对象原则?

    4.重新认识面向对象

    • 隔离变化
      宏观层面能将变化所带来的的影响减为最小
    • 各司其职
      微观层面面向对象的方式更强调各个类的“责任”,新增员工类型不会影响原来员工类型的实现代码
      耦合关系直接决定着软件面对变化时的行为
      模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。
      模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。

    5.怎样使用三大机制来实现“好的面向对象”

    • 针对接口编程,而不是针对实现编程
    • 优先使用对象组合,而不是类继承
      类继承在某种程度上破坏了封装性,子类父类耦合度高;对象组合只要求被组合的对象具有良好定义的接口,耦合度低;
    • 封装变化
      设计模式是“封装变化”方法的最佳阐释,封装变化,最重要的一点就是发现变化,或者说是寻找变化。
    展开全文
  • 面向对象编程中的聚合与耦合

    千次阅读 2018-06-10 11:30:01
    面向对象的设计中,我们经常会听到或用到聚合、耦合的概念。面向对象的目标就是设计出高聚合、低耦合的程序。然而,究竟什么是聚合、什么是耦合,恐怕每个人都有自己的答案,换句话说,大多数人对聚合和耦合的概念...

    在面向对象的设计中,我们经常会听到或用到聚合、耦合的概念。面向对象的目标就是设计出高聚合、低耦合的程序。然而,究竟什么是聚合、什么是耦合,恐怕每个人都有自己的答案,换句话说,大多数人对聚合和耦合的概念是模糊的。小弟我今天就在此抛砖引玉,希望能给新入行的朋友和在校的学生一点帮助。

    因为聚合与耦合这两个概念一直都是以"高聚合、低耦合"的形式出现的,刚刚开始接触面向对象设计时,我一直认为聚合和耦合是一对相反的概念,也就是说:只要做到了高聚合,那么自然而然就做到了低耦合。虽然这样的理解并不是错误的,但我并没有思考过原因。

    先来看看聚合的定义:聚合(Cohesion)是一个模块内部各成分之间相关联程度的度量。

    这里有多个含义值得考虑。首先,聚合是对一个模块内部的度量,这也是许多情况下我们把聚合称之为内聚的原因。第二,这里出现的模块是广义的模块,它可能是子系统,可能是功能模块,也可能是功能模块中的某一个类。从不同的层次看,聚合的程度也会有所不同。至于为什么不同,后面会有解释。第三,模块的成分包括模块的行为和状态。要做到高聚合,那么模块内部的行为必须要与模块的内部状态紧密关联。通俗来讲,一个模块仅完成一个独立的功能,模块内部不存在与该功能无关的操作或状态。

    举一个生活中的例子。

    有两座城市Sidtown和Fredborough,连接两座城市的公路一天到晚总是拥堵不堪。经过"有关部门"调查之后发现,这两座城市中有两家公司Better Mousetrap和 Zokko Soda,Better Mousetrap的工厂建造在Sidtown,而该工厂的员工都居住在Fredborough,所以每天早上大批员工从Fredborough出发前往Sidtown,并在傍晚返回;类似的,Zokko Soda公司的运输车在每天的工作时间都需要在制瓶工厂和灌装工厂穿梭来往。


    很明显,如果Better Mousetrap的工厂和员工居住地都在同一城市,而Zokko Soda的两座工厂都建造在另一座城市,那么城市之间的交通状况将会明显改善。


    对比两图,上面两座城市间之所以出现交通的问题,是因为每座城市的"聚合性"都比较低:不相关的两个公司出现在了同一座城市,使得城市内部交通的利用率比较低,而城市之间的交通出现了超负荷。

    再来看看耦合的定义:耦合(Couping)是模块之间相关联程度的度量。相对于聚合的内向性,耦合关注的是某一模块和其他模块之间的关联性。其实从前面的例子里,我们已经不可避免的提到了耦合的问题:由于两座城市之间的相互联系过于紧密,导致了城市之间的交通拥堵。另外一个潜在的问题就是,如果其中一座城市内部的交通出现了问题,另一座城市也会受到影响。我们所追求的低耦合,就是将两个模块之间的关联尽可能的降低,一个模块发生变化对于其他模块的影响尽可能的小。

    再讲一个生活中的例子,相信大部分的80后小的时候都玩过一种掌上游戏机,这种游戏机内含一个俄罗斯方块的游戏。这种游戏机虽然风靡一时,但是不多久就渐渐淡出了市场,因为这种游戏机只有俄罗斯方块可以玩儿,当我们玩儿腻了的时候,这个游戏机也就如同废物一个了。

    同期,任天堂推出一款后来风靡了将近20年的红白机,这种游戏机市场寿命如此之长并非游戏机本身质量有多好,而是因为基于红白机开发的游戏层出不穷,经典无数。魂斗罗、超级玛丽在当时哪怕是现在也是无人不知。红白机的游戏本身并不存储在游戏机当中,每当有新游戏推出的时候,只需要购买新的卡带即可。正是这种游戏机和卡带相对独立的设计,使得游戏的设计厂商无需关心游戏机的实现细节,只要遵循游戏机提供的接口(插槽)。很多游戏的设计厂商也从红白机庞大的市场中分得一杯羹。大多数的玩家可能不知道,魂斗罗并非任天堂推出的产品,而是目前以《实况足球》系列闻名世界的KONAMI公司于1988年从街机移植到红白机上的。

    回到耦合的话题上来,因为早先的掌上游戏机将游戏本身内置在机器当中,游戏和机器这两个模块之间的关系过于紧密,所以游戏玩儿腻了,游戏机就没用了,游戏机出问题了,游戏也再也不能玩儿了。而红白机的游戏和游戏机之间的关系是相对独立的,只要它们都遵循制定好的协议,就可以独立的发展和变化。游戏卡带摔坏了,其他的游戏一样可以在机器上运行;自己的游戏机坏了,把卡带拿到朋友家的游戏机上也能玩儿。红白机发展到后期,连游戏机的手柄也是可插拔的,如果手柄坏了,也只需要更换手柄即可。

    讲到这里,大家对聚合和耦合应该也有了初步的认识。那么,我们如何看待聚合和耦合在实际当中的应用呢?我们的程序怎样才算是做到了高聚合和低耦合呢?

    前面曾经提到,从不同的层次看,聚合和耦合的程度也会有所不同。Sidtown和Fredborough的例子当中,从城市的层次来看,第二种设计完全达到了高内聚和低耦合的目标,然而,如果从城市的不同区域来看,这样的设计内聚性还不够。如果我们一直追究下去,恐怕Better Mousetrap所有的员工都要住在生产线上了。一味的追求高内聚,必然会造成模块的功能过于单一,而模块的数量出现急剧膨胀。所以,我们在设计和实现程序时必须要斟酌模块间的聚合和耦合程度,有兴趣的朋友也可以去研究聚合性指标与耦合性指标。


    转自点击打开链接

    展开全文
  • java面向对象

    万次阅读 多人点赞 2018-08-21 16:51:59
    包括面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单例设计模式、继承、多态、内部类、异常、包等java基础知识。 1、面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是...
  • 面向对象IOS编程中的聚合与耦合

    千次阅读 2014-02-11 21:35:17
    面向对象的设计中,我们经常会听到或用到聚合、耦合的概念。面向对象的目标就是设计出高聚合、低耦合的程序。然而,究竟什么是聚合、什么是耦合,恐怕每个人都有自己的答案,换句话说,大多数人对聚合和耦合的概念...
  • 内聚是从功能角度来度量模块内...高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。耦合性:也称块间联系。指软件系统结构中各模块间相互联系
  • 面向对象的基本原则:多聚合,少继承;低耦合,高内聚。 【高内聚、低耦合】 内聚:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。耦合:模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越...
  • 面向对象】 低耦合高内聚

    千次阅读 2012-01-10 15:23:59
    耦合性 也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息 内聚性...
  • 面向对象原则:高内聚、低耦合。多聚合、少继承

    万次阅读 多人点赞 2017-12-18 19:28:38
    面向对象原则:高内聚、低耦合。多聚合、少继承要点概括【高内聚、低耦合】 内聚:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。 耦合:模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越...
  • 对象之间的耦合性

    千次阅读 2013-05-22 23:07:05
    数据耦合 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递. 一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、...
  • 面向对象基本概念

    万次阅读 多人点赞 2019-02-06 21:56:15
    面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象...
  • Java面向对象

    千次阅读 多人点赞 2019-05-08 23:33:50
    Java面向对象1.Java面向对象是什么2.面向过程和面向对象的优缺点1.面向过程的优缺点:2.面向对象的优缺点:3.面向对象三大特性五大原则1.三大特性:2.五大原则:总结: 1.Java面向对象是什么 OOP(面向对象编程)、...
  • C++面向对象程序设计 面向对象编程

    万次阅读 多人点赞 2018-09-12 22:39:50
    1.1 面向过程的编程风格与面向对象的编程风格 C语言是面向过程语言,也称为命令型语言,面向过程通常采用自顶向下设计,问题复杂时不断运用自顶向下设计(即函数分解法)直到容易处理。自顶向下设计优点是直观有...
  • 面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"。 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法。...
  • 什么是面向对象面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP), Java 是一个支持并发、基于类和面向对象的计算机编程语言。 面向对象软件开发具有以下优点: 代码开发模块...
  • 面向过程与面向对象概述

    千次阅读 多人点赞 2021-08-20 15:47:10
    1.面向过程与面向对象的区别 面向过程关心的是过程,面向过程就是分析出解决问题需要的步骤,然后用函数将这些步骤依次调用实现。 面向对象关心的是对象之间的交互,面向对象是把问题分解为各个对象,然后分析每个...
  • 面向对象

    2013-02-24 22:01:18
    上一篇的计算器的实现中并未采用面向对象的编程方法,而只是使用面向对象的语言  在做结构化的程序设计。使得程序不容易维护,不容易扩展,更不容易复用。  面向对象的思想是将现实世界的事物抽象为一个对象...
  • Python中面向对象(学习笔记)

    万次阅读 多人点赞 2020-06-15 09:29:18
    文章目录一、面向过程与面向对象简述面向过程编程面向对象编程二、类和对象类对象(实例)类和对象的关系三、类的定义四、类中的成员类属性实例函数(对象函数,成员函数)实例函数和普通函数的区别关于self创建对象...
  • 面向过程开发的程序,耦合性太强,当其中一环出现问题,那么整个系统都有可能受到影响。 同时当程序的业务逻辑十分复杂的时候,面向过程开发,也显得捉襟见肘。 面向对象 概念 将构成事物的问题分解成各个对象,建立...
  • 面向对象中的高内聚、低耦合

    千次阅读 2014-04-01 13:12:05
    模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。   高内聚、低耦合是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚...
  • 在使用静态耦合测量的分布式面向对象系统中,这预计会导致质量模型的预测准确较差。 为了克服这些问题,我们在面向对象的分布式软件中提出了一种混合模型,用于动态地测量耦合。 所提出的方法包括仪器处理,后...
  • 面向对象三大特性五大原则 + 低耦合高内聚 面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、&...
  • 面向对象设计原则

    万次阅读 2018-09-28 15:36:19
    面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护、可扩展才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计...
  • 面向对象设计(OOD)是面向对象编程(OOP)必不...单一职责原则可以看作是高内聚、低耦合面向对象原则上的引申。类的职责过多,容易导致类间职责依赖,提高耦合度,降低内聚。通常意义下的单一职责,指的是类只有一
  • 面向对象 面向对象概述 现在主流的编程范式或编程风格有三种,分别是面向过程、面向对象和函数式编程。面向对象又是这其中最主流的,现在大部分编程语言都是面向对象编程语言。大部分项目也是基于面向对象风格开发...
  • 什么是面向对象面向对象的三大特性) 简介 学java的都知道,java语言有三个特性,也可以说是三个优点,就是 1.简单: java语言相对于C语言,C++来说比较简单。 2.跨平台:java语言编写的代码可以在不同的操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,997
精华内容 55,598
关键字:

耦合性面向对象