java第二次实验报告

课程:Java实验   班级:201352     姓名:黄坤  学号:2015226

成绩:           指导教师:娄佳鹏     实验日期:15.05.05

实验密级:         预习程度:       实验时间:

仪器组次:         必修/选修:选修    实验序号:2

实验名称:java面向对象程序设计

实验目的与要求:                   

1. 初步掌握单元测试和TDD

2. 理解并掌握面向对象三要素:封装、继承、多态

3. 初步掌握UML建模

4. 熟悉S.O.L.I.D原则

5. 了解设计模式

实验要求

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

                             

                                                                       

                                                           

                                                          

                                                          

 

实验仪器:

名称

型号

数量

PC

 

1

 

 

 

 

 

实验内容、步骤与体会(附纸):

(一)单元测试

(1) 三种代码

编程是智力活动,不是打字,编程前要把干什么、如何干想清楚才能把程序写对、写好。与目前不少同学一说编程就打开编辑器写代码不同,我希望同学们养成一个习惯,当你们想用程序解决问题时,要会写三种码:

  • 伪代码
  • 产品代码
  • 测试代码

(2) TDD(Test Driven Devlopment, 测试驱动开发)

(二)面向对象三要素

    • +表示public
    • #表示 protected
    • -表示 private

(三)设计模式初步

(1)S.O.L.I.D原则

面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:

  • SRP(Single Responsibility Principle,单一职责原则)
  • OCP(Open-Closed Principle,开放-封闭原则)
  • LSP(Liskov Substitusion Principle,Liskov替换原则)
  • ISP(Interface Segregation Principle,接口分离原则)
  • DIP(Dependency Inversion Principle,依赖倒置原则)

(2)模式与设计模式

模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。 计算机科学中有很多模式:

  • GRASP模式
  • 分析模式
  • 软件体系结构模式
  • 设计模式:创建型,结构型,行为型
  • 管理模式: The Manager Pool 实现模式
  • 界面设计交互模式

这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。

(3)设计模式实示例

  • 设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。 
  • (四)练习
  • 使用TDD的方式设计关实现复数类Complex。
  • 伪代码:
      • 无输入 --- 则复数的实部为0,虚部为0
      • 仅输入实部 --- 复数的实部为所输入的实部,虚部为0
      • 仅输入虚部 --- 复数的实部为0,虚部为所输入的虚部
      • 实部虚部都输入 --- 复数的实部与虚部对应相应输入的实部虚部。
      • 加法 --- 复数的实部与实部相加,虚部与虚部相加 ,即输出p1.rePart+p2.rePart,p1.imPart+p2.imPart
      • 减法 --- 复数的实部与实部相减,虚部与虚部相减 , 即输出 p1.rePart-p2.rePart,p1.imPart-p2.imPart

         产品代码:

            

package Exercise;

public class Complex

double rePart,imPart; 
Complex() 

this.rePart=0; 
this.imPart=0; 

Complex(double rePart) 

this.rePart=rePart; 
this.imPart=0; 

Complex(double rePart,double imPart) 

this.rePart=rePart; 
this.imPart=imPart; 

Complex Jia(Complex p1,Complex p2) 

Complex p =new Complex(p1.rePart+p2.rePart,p1.imPart+p2.imPart);
return p; 

Complex Jian(Complex p1,Complex p2) 

Complex p =new Complex(p1.rePart-p2.rePart,p1.imPart-p2.imPart);
return p;

void Print() 

System.out.println("复数的值为:");
if(this.imPart!=0)
System.out.println(this.rePart+"+"+this.imPart+"i"); 
else System.out.println(this.rePart); 

}

 

测试代码:

package Exercise;

public class Test 

public static void main(String[] args) 

Complex c=new Complex(); 
Complex c1=new Complex(2,7);
Complex c2=new Complex(5,2); 
c1.Print(); 
c2.Print(); 
System.out.println("这两复数和为:"); 
System.out.println((c.Jia(c1, c2).rePart+"+"+c.Jia(c1, c2).imPart+"i").toString()); 
System.out.println("这两复数差为:"); 
System.out.println(c.Jian(c1, c2).rePart+"+"+c.Jian(c1, c2).imPart+"i");

}

 

 

 

步骤

耗时

百分比

需求分析

      5

 6.25%

设计

     10 

12.5% 

代码实现

     50 

62.5% 

测试

     10 

12.5% 

分析总结

      5

6.25% 

 

总结单元测试的好处:

  1.单元测试能保证项目进度还能优化你的设计。

   2.单元测试代码可以通过简单的事务回滚功能在生产环境上做基于真实数据的测试而不用担心会产生不必要的数据。

   3. 单元测试能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。

 

遇到的问题:无

   

解决方法:

实验总结:

本次实验代码较多,难度较大,花费了大量的时间,期间出现了各种大大小小的错误,但这也是对我的一次锻炼,将对我未来的学习产生很大的帮助。   

转载于:https://www.cnblogs.com/kryst4l/p/4486418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验名称:Java 流程控制语句实验报告 实验目的:通过实验,掌握 Java 中的流程控制语句的使用方法并能够熟练地应用到实际编程中。 实验内容: 1. if-else 语句:根据条件判断执行不同的代码块。 2. switch-case 语句:根据不同的情况执行不同的代码块。 3. for 循环语句:重复执行一段代码块,直到满足条件为止。 4. while 循环语句:重复执行一段代码块,直到满足条件为止。 5. do-while 循环语句:先执行一次代码块,然后重复执行一段代码块,直到满足条件为止。 实验步骤: 1. if-else 语句实验:编写一个程序,根据用户输入的数字,判断其正负性。 ```java import java.util.Scanner; public class IfElseDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个数字:"); int num = scanner.nextInt(); if (num > 0) { System.out.println(num + "是正数。"); } else if (num < 0) { System.out.println(num + "是负数。"); } else { System.out.println(num + "不是正数也不是负数。"); } } } ``` 2. switch-case 语句实验:编写一个程序,根据用户输入的数字,输出对应的星期几。 ```java import java.util.Scanner; public class SwitchCaseDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个数字(1-7)代表星期几:"); int day = scanner.nextInt(); switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("你输入的数字不正确!"); break; } } } ``` 3. for 循环语句实验:编写一个程序,求 1~100 的和。 ```java public class ForDemo { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println("1~100 的和是:" + sum); } } ``` 4. while 循环语句实验:编写一个程序,求 1~100 中的偶数和。 ```java public class WhileDemo { public static void main(String[] args) { int i = 1; int sum = 0; while (i <= 100) { if (i % 2 == 0) { sum += i; } i++; } System.out.println("1~100 中的偶数和是:" + sum); } } ``` 5. do-while 循环语句实验:编写一个程序,求 1~n 的阶乘。 ```java import java.util.Scanner; public class DoWhileDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = scanner.nextInt(); int i = 1; int result = 1; do { result *= i; i++; } while (i <= n); System.out.println(n + " 的阶乘是:" + result); } } ``` 实验结果: 运行以上程序,得到以下输出结果: 1. if-else 语句实验: ``` 请输入一个数字:-5 -5是负数。 ``` 2. switch-case 语句实验: ``` 请输入一个数字(1-7)代表星期几:3 星期三 ``` 3. for 循环语句实验: ``` 1~100 的和是:5050 ``` 4. while 循环语句实验: ``` 1~100 中的偶数和是:2550 ``` 5. do-while 循环语句实验: ``` 请输入一个正整数:5 5 的阶乘是:120 ``` 实验结论: 通过本次实验,我对 Java 中的流程控制语句有了更深入的了解。if-else 语句可以根据条件判断执行不同的代码块;switch-case 语句可以根据不同的情况执行不同的代码块;for 循环语句可以重复执行一段代码块,直到满足条件为止;while 循环语句可以重复执行一段代码块,直到满足条件为止;do-while 循环语句可以先执行一次代码块,然后重复执行一段代码块,直到满足条件为止。掌握这些流程控制语句的使用方法对于编写 Java 程序具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值