zoukankan      html  css  js  c++  java
  • java第二次试验

    20145336第二周JAVA实验报告

    20145336 《Java程序设计》第二次实验实验报告

    北京电子科技学院(BESTI)实验报告

    课程:Java程序设计

    班级:1453

    姓名:张子扬

    指导教师:娄嘉鹏

    实验日期:2016.04.12

    实验名称:Java开发环境的熟悉(Linux + Eclipse)

    实验内容:

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

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

    3. 初步掌握UML建模

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

    5. 了解设计模式

    实验目的与要求:

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

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

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

    2. 请大家先在实验楼中的~/Code目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习。

    实验步骤

    单元测试

    1.三种代码:伪代码、产品代码、测试代码。我们应该先写伪代码->再用特定编程语言翻译成产品代码->最后写测试代码,验证自己的代码有没有问题。

    (1)伪代码

    百分制转五分制:
    如果成绩小于60,转成“不及格”
    如果成绩在60与70之间,转成“及格”
    如果成绩在70与80之间,转成“中等”
    如果成绩在80与90之间,转成“良好”
    如果成绩在90与100之间,转成“优秀”
    其他,转成“错误”
    

    (2)产品代码

    public class MyUtil{
    public static String percentage2fivegrade(int grade){
        //如果成绩小于60,转成“不及格”
        if (grade < 60)
            return "不及格";
            //如果成绩在60与70之间,转成“及格”
        else if (grade < 70)
            return "及格";
            //如果成绩在70与80之间,转成“中等”
        else if (grade < 80)
            return "中等";
            //如果成绩在80与90之间,转成“良好”
        else if (grade < 90)
            return "良好";
            //如果成绩在90与100之间,转成“优秀”
        else if (grade < 100)
            return "优秀";
            //其他,转成“错误”
        else
            return "错误";
    }
    }
    

    (3)测试代码

    用50分测试时:

    public class MyUtilTest {
    public static void main(String[] args) {
    // 百分制成绩是50时应该返回五级制的“不及格”
    if(MyUtil.percentage2fivegrade(50) != "不及格")
        System.out.println("test failed!");
    else
        System.out.println("test passed!");
    }
    }
    

    增加对负分的判断后:

    public class MyUtil3{
    public static String percentage2fivegrade(int grade){
        //如果成绩小于0,转成“错误”
        if ((grade < 0))
            return "错误";
            //如果成绩小于60,转成“不及格”
        else if (grade < 60)
            return "不及格";
            //如果成绩在60与70之间,转成“及格”
        else if (grade < 70)
            return "及格";
            //如果成绩在70与80之间,转成“中等”
        else if (grade < 80)
            return "中等";
            //如果成绩在80与90之间,转成“良好”
        else if (grade < 90)
            return "良好";
            //如果成绩在90与100之间,转成“优秀”
        else if (grade <= 100)
            return "优秀";
            //如果成绩大于100,转成“错误”
        else
            return "错误";
    }
    }
    

    测试边界情况:

    public class MyUtilTest4{
    public static void main(String[] args) {
        //测试边界情况
        if(MyUtil2.percentage2fivegrade(0) != "不及格")
            System.out.println("test failed 1!");
        else if(MyUtil2.percentage2fivegrade(60) != "及格")
            System.out.println("test failed 2!");
        else if(MyUtil2.percentage2fivegrade(70) != "中等")
            System.out.println("test failed 3!");
        else if(MyUtil2.percentage2fivegrade(80) != "良好")
            System.out.println("test failed 4!");
        else if(MyUtil2.percentage2fivegrade(90) != "优秀")
            System.out.println("test failed 5!");
        else if(MyUtil3.percentage2fivegrade(100) != "优秀")
            System.out.println("test failed 6!");
        else
            System.out.println("test passed!");
    }
    }
    

    TDD

    TDD:Test Driven Devlopment, 测试驱动开发。先写测试代码,然后再写产品代码的开发方法。 TDD的一般步骤如下: 明确当前要完成的功能,记录成一个测试列表 快速完成编写针对此功能的测试用例 测试代码编译不通过(没产品代码呢) 编写产品代码 测试通过 对代码进行重构,并保证测试通过(重构下次实验练习) 循环完成所有功能的开发

    面向对象三要素

    - 抽象

    即“求同存异、去粗取精”的过程。将若干事物中相同的部分进行剥离整理,并形成具有某特定功能的产品,这一过程即为抽象。过程抽象的结果是函数,数据抽象的结果是抽象数据类型其显而易见的好处是(在程序设计中)减少了代码大重复性,提高了效率。

    - 封装、继承与多态

    面向对象(Object-Oriented)的三要素包括:封装、继承、多态。面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。OOA根据抽象关键的问题域来分解系统,关注是什么(what)。OOD是一种提供符号设计系统的面向对象的实现过程,用非常接近问题域术语的方法把系统构造成“现实世界”的对象,关注怎么做(how),通过模型来实现功能规范。OOP则在设计的基础上用编程语言(如Java)编码。 封装:将与某一将数据与相关行为包装在一起以实现信息就隐藏,核心内容是模块化和信息隐藏,与此相伴的是接口的使用。

    代码

    package shiyan2;
    public class ComplexNumber
    {
    double r,i;
    
    
    public  ComplexNumber(){
    this.r=0;
    this.i=0;
    }
    public ComplexNumber(double r, double i){
    this.r=r;
    this.i=i;
    }
    public double GetRealPart(){
    return this.r;
    }
    public double GetImaginaryPart(){
    return this.i;
    }
    public void SetRealPart(double r){
    this.r=r;
    }
    public void SetImaginaryPart(double i){
    this.i=i;
    }
    public ComplexNumber ComplexAdd(ComplexNumber a,ComplexNumber b)    
    {
    ComplexNumber temp = new ComplexNumber();
    temp.r = a.r + b.r;
    temp.i  = a.i  + b.i;
    return temp;
    }
    public ComplexNumber ComplexMinus(ComplexNumber a,ComplexNumber b)    
    {
    ComplexNumber temp =new ComplexNumber();
    temp.r=a.r - b.r;
    temp.i =a.i - b.i;
    return temp;
    }    
    public ComplexNumber ComplexMulti(ComplexNumber a,ComplexNumber b)    
    {
    ComplexNumber temp = new ComplexNumber();
    temp.r = a.r*b.r-a.i*b.i;
    temp.i  = a.r*b.i+a.i*b.r;
    return temp;
    }
    public void ComplexAdd(ComplexNumber c){
    this.r=this.r+c.r;
    this.i=this.i+c.i;
    }
    
    
    public void ComplexMinus(ComplexNumber c){
    this.r=this.r-c.r;
    this.i=this.i-c.i;
    }
    public void ComplexMulti(ComplexNumber c)                
    {
    double temp=this.r;    
    this.r=this.r*c.r-this.i*c.i;
    this.i =temp*c.i+this.i*c.r;
    }
    public void printComplexNumber(){
    System.out.print(""+this.r+"+"+this.i+"i");
    }
    
    }
    

    测试代码如下: package shiyan2;

    public class txet extends ComplexNumber{
    public static void main(String[] args)        //测试代码
    {
        ComplexNumber cc=new ComplexNumber(4,5);
        cc.printComplexNumber();
        System.out.println();
        ComplexNumber dd=new ComplexNumber(2,4);
        dd.printComplexNumber();
        System.out.println();
        System.out.println("-----------------");
        System.out.println();
        ComplexNumber ff=new ComplexNumber();
    
        ff=ff.ComplexAdd(cc,dd);
        ff.printComplexNumber();
        System.out.println();
        ff=ff.ComplexMinus(cc,dd);
        ff.printComplexNumber();
        System.out.println();
        ff=ff.ComplexMulti(cc,dd);
        ff.printComplexNumber();
        System.out.println();
    
        System.out.println("-----------------");
    
    }
    }
    最终结果:

    心得体会

    这次是第二次实验,感觉还是很难的,做了好几遍都没有做出来。还是经过同学的帮助才完成这次实验。还是需要多加努力学习java的知识,争取下次实验可以有进步。

    PSP时间

    步骤耗时 :100分钟百分比
    需求分析 17分钟 17%
    设计 18分钟 18%
    代码实现 40分钟 40%
    测试 15分钟 15%
    分析总结 10分钟 10%
  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/20145336yang/p/5402874.html
Copyright © 2011-2022 走看看