面向过程的扇入及扇出:

扇入:是指直接调用该模块的上级模块的个数。即:called by个数 (在McCabe 里度量名称为Fan in)

扇出:该模块直接调用的下级模块的个数。即:calls to 个数(在McCabe 里度量名称为Fan out)

面向对象的扇入及扇出:

扇入:派生类的数量:即一个子类继承的父类个数。通俗的讲即有多个个父类产生了此子类。(在McCabe 里度量名称为Fan in)

扇出:由一个类衍生出类的数量:即一个父类产生的子类个数。(在McCabe 里度量名称为NOC)

实例代码:

父类:People.java

1 public classPeople {2 privateString name;3 private intage;4

5 public People(String myName,intmyAge){6 this.name =myName;7 this.age =myAge;8 }9

10 public voideat(){11 System.out.println("I am eating");12 }13

14 public voidsleep(){15 System.out.println("I am sleep");16 }17

18 public voiddoWork(){19 this.eat();20 this.sleep();21 System.out.println("I am goto work");22 }23

24 }

View Code

子类1:Students.java

1 public class Students extendsPeople{2 privateString mySchool;3

4 public Students(String myName, intmyAge, String mySchool) {5 super(myName, myAge);6 //TODO Auto-generated constructor stub

7 this.mySchool =mySchool;8 }9

10 public voidgoSchool(){11 this.doWork();12 System.out.println("I am goto school");13 }14 }

View Code

子类2:Worker.java

1 public class Worker extendsPeople{2 privateString address;3

4 public Worker(String myName, intmyAge,String address) {5 super(myName, myAge);6 //TODO Auto-generated constructor stub

7 this.address =address;8 }9

10 public voiddoJob(){11 this.doWork();12 System.out.println("I am goto job");13 }14 }

View Code

主类:Famly.java

public classFamly {public static voidmain(String[] args) {//TODO Auto-generated method stub

Students stu = new Students("xx",15,"qinghua");

Worker wor= new Worker("yy",35,"tonghuashun");

stu.goSchool();

wor.doWork();

}

}

View Code

使用McCabe分析的类调用关系图:

People父类产生了子类Students 及Worker,故People类的扇出NOC为2,Students及Worker类的扇入Fan in为1。

McCabe度量信息截图如下:

使用McCabe分析模块调用关系图如下:

doWork方法调用了eat方法及sleep方法,故doWork方法的扇出为2,因doWork方法也调用了类方法system.out.println故:doWork的扇出为3;

同理eat方法及sleep方法的扇入为1,扇出为1。

使用McCabe分析如下:

针对eat模块扇入扇出分析如下:

针对doWork模块扇入扇出分析如下:

mccabe java_面向过程及面向对象的扇入及扇出相关推荐

  1. java面向过程和面向对象

    面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...

  2. java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法

    面向过程和面向对象 解决简单问题可以使用面向过程 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程. 面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向 ...

  3. 面向过程与面向对象编程的区别和优缺点

    ■面向过程与面向对象编程的区别 转载至:https://www.cnblogs.com/strivers/p/6681876.html 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步 ...

  4. 面向过程和面向对象编程的优缺点

    [1]面向过程和面向对象的比较 网上发现了一篇文章,说了一下OP与OO的不同,并且打了一个比喻,通俗易懂. 有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的 ...

  5. (转)函数作用域,匿名函数,函数式编程,面向过程,面向对象

    函数作用域 ? 1 2 3 4 5 6 7 8 9 10 def first():     name = 'Wangben'     def second():         name = 'Men ...

  6. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系

    体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  7. 架构师之路(1)---面向过程和面向对象

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  8. 面向过程 VS 面向对象

    面向过程(Process Oriented)这个词是在面向对象(Object Oriented)出现之后为与之相对而提出的.其实它在以前基本被叫做"结构化编程". 早期的程序设计, ...

  9. 面向过程和面向对象的联系和区别

    以C语言和C++为例. C语言是面向过程的,封装单元是函数.函数里面按照逻辑流程一步一步实现就行了,这符合我们现实生活中解决问题时的思考过程. C++是面向对象的,封装单元是类.首先,面向对象是为了提 ...

最新文章

  1. python做啥用-你都用 Python 来做什么?
  2. 删除顺序表指定下标的元素
  3. 嵌入式处理器分类现状
  4. phpstudy sqlsrv v8.1_phpStudy
  5. vue_ajax插件Axios
  6. awk、变量、运算符、if多分支
  7. 在线钢琴html5,HTML5 迷你电子钢琴 | 在线作曲
  8. python商业爬虫教程_python爬虫课程
  9. 铺铜需要把agnd和dgnd分开_AGNDDGND 分析
  10. 记录:web前端高德API获取天气服务
  11. EBS Form : 消息字典 fnd_message. (转)
  12. 「今天14:30」AI+经济学 Debate 现场,记得来啊 | AI TIME 27
  13. DOS命令:assoc
  14. 第0讲:树莓派是什么?能做什么?
  15. laravel seeding
  16. 最新云智推任务提交版拉新任务分销系统源码+功能强大
  17. 嵌入式开发中的英文词汇log
  18. 通过宏代码自动解除excel工作表格保护
  19. 重庆SEO优化高手更新网站文章的窍门
  20. 靶场练习Exploiting cross-site scripting to steal cookies

热门文章

  1. 基于springboot的景区旅游信息管理系统(源代码+数据库)
  2. python查看包的安装路径_查看python安装路径及pip安装的包列表及路径
  3. SessionId详解
  4. linux如何查找目录6,Linux常见四种查找命令
  5. MathType和Word粘贴键冲突的解决方法(转自官网)
  6. LeetCode: 121. 买卖股票的最佳时机(C++)
  7. percona mysql 主从_mysql之percona-toolkit安装与主从复制
  8. Linux服务器被入侵后的排查思路(应急响应思路)
  9. Tomcat 8080 端口被占用解决方案
  10. html字号的范围,font size大小