mccabe java_面向过程及面向对象的扇入及扇出
面向过程的扇入及扇出:
扇入:是指直接调用该模块的上级模块的个数。即: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_面向过程及面向对象的扇入及扇出相关推荐
- java面向过程和面向对象
面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...
- java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法
面向过程和面向对象 解决简单问题可以使用面向过程 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程. 面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向 ...
- 面向过程与面向对象编程的区别和优缺点
■面向过程与面向对象编程的区别 转载至:https://www.cnblogs.com/strivers/p/6681876.html 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步 ...
- 面向过程和面向对象编程的优缺点
[1]面向过程和面向对象的比较 网上发现了一篇文章,说了一下OP与OO的不同,并且打了一个比喻,通俗易懂. 有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的 ...
- (转)函数作用域,匿名函数,函数式编程,面向过程,面向对象
函数作用域 ? 1 2 3 4 5 6 7 8 9 10 def first(): name = 'Wangben' def second(): name = 'Men ...
- 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系
体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...
- 架构师之路(1)---面向过程和面向对象
1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...
- 面向过程 VS 面向对象
面向过程(Process Oriented)这个词是在面向对象(Object Oriented)出现之后为与之相对而提出的.其实它在以前基本被叫做"结构化编程". 早期的程序设计, ...
- 面向过程和面向对象的联系和区别
以C语言和C++为例. C语言是面向过程的,封装单元是函数.函数里面按照逻辑流程一步一步实现就行了,这符合我们现实生活中解决问题时的思考过程. C++是面向对象的,封装单元是类.首先,面向对象是为了提 ...
最新文章
- python做啥用-你都用 Python 来做什么?
- 删除顺序表指定下标的元素
- 嵌入式处理器分类现状
- phpstudy sqlsrv v8.1_phpStudy
- vue_ajax插件Axios
- awk、变量、运算符、if多分支
- 在线钢琴html5,HTML5 迷你电子钢琴 | 在线作曲
- python商业爬虫教程_python爬虫课程
- 铺铜需要把agnd和dgnd分开_AGNDDGND 分析
- 记录:web前端高德API获取天气服务
- EBS Form : 消息字典 fnd_message. (转)
- 「今天14:30」AI+经济学 Debate 现场,记得来啊 | AI TIME 27
- DOS命令:assoc
- 第0讲:树莓派是什么?能做什么?
- laravel seeding
- 最新云智推任务提交版拉新任务分销系统源码+功能强大
- 嵌入式开发中的英文词汇log
- 通过宏代码自动解除excel工作表格保护
- 重庆SEO优化高手更新网站文章的窍门
- 靶场练习Exploiting cross-site scripting to steal cookies
热门文章
- 基于springboot的景区旅游信息管理系统(源代码+数据库)
- python查看包的安装路径_查看python安装路径及pip安装的包列表及路径
- SessionId详解
- linux如何查找目录6,Linux常见四种查找命令
- MathType和Word粘贴键冲突的解决方法(转自官网)
- LeetCode: 121. 买卖股票的最佳时机(C++)
- percona mysql 主从_mysql之percona-toolkit安装与主从复制
- Linux服务器被入侵后的排查思路(应急响应思路)
- Tomcat 8080 端口被占用解决方案
- html字号的范围,font size大小