• 实验二 结对编程(阶段二)



    一、实验目标
      1)体验敏捷开发中的两人合作。

      2)进一步提高个人编程技巧与实践。

    二 、实验内容
      1)根据以下问题描述,练习结对编程(pair programming)实践;

      2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

      3)要求在结对编程工作期间,两人的角色至少切换 4 次;

      4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

    三.实验过程

    • 使用二维数组存储一个20*20的表格
    • 数组中用1代表活着状态,0代表死亡状态
    • 每个细胞在页面中用 span 表示,以颜色区别不同状态
    • 当需要绘制下一个图形时,深度拷贝当前数组,计算每一个细胞周围存活数量,再计算下一代当前细胞的状态。
    • 给 span 的父元素绑定 click 事件,用到拖动改变细胞的状态, 对span自定义属性 data-cellx 和 data-celly 存放当前坐标。

    四.程序实现

    package com.cisco.gendwang;


    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;


    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;


    public class LifeGame extends JFrame
    {
    private final World world;

    public LifeGame(int rows, int columns)
    {
    world = new World(rows, columns);
    new Thread(world).start();
    add(world);
    }

    public static void main(String[] args)
    {
    LifeGame frame = new LifeGame(40, 50);

    JMenuBar menu = new JMenuBar();
    frame.setJMenuBar(menu);

    JMenu options = new JMenu("Options");
    menu.add(options);

    JMenuItem arrow = options.add("Arrow");
    arrow.addActionListener(frame.new ArrowActionListener());

    JMenuItem square = options.add("Square");
    square.addActionListener(frame.new SquareActionListener());

    JMenu help = new JMenu("Help");
    menu.add(help);

    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(1007, 859);
    frame.setTitle("Game of Life");
    frame.setVisible(true);
    frame.setResizable(false);
    }

    class ArrowActionListener implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    world.setArrow();
    }
    }

    class SquareActionListener implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    world.setSquare();
    }
    }
    }

    五.运行结果

     六.github地址

    https://github.com/cheng-xiang-star/cheng.git

    实验小结

    从前写代码都是一个人的事,数据结构和算法包括给函数命名都比较随意,为了方便自己的理解,遵循自己的规则就好。但结对编程需要两个人的智慧,一边沟通一边编写。在约定用什么样的数据结构,什么样的算法,什么样的接口,甚至函数命名都需要两人共同交流完成,虽然过程繁琐,但程序的准确性提高了。一些容易犯的编写错误,经过两个人的检查,也更容易被发现和指出。虽然看似效率不如以前一个人编写时高,但是实际上代码结构更加清晰,出现bug的几率也更小了。总的来说,除了比较累,这样的编程方式还是很优秀的。

  • 相关阅读:
    因浮动使得容器失去高度的四种处理对策
    推荐一些国内的Jquery CDN免费服务
    layer.js 贤心制作的弹出层插件-不仅仅是弹层
    jquery 页面滚动到底部自动加载插件集合
    JQ应用第3款:返回顶部、底部、微信、反馈我们共存
    jquery.nicescroll.js可全屏可改滚动条颜色的滚动条插件-推荐
    jquery-fullpage-js制作页全屏滚动插件
    headroom.js –在不需要页头时将其隐藏
    Vue中删除重复上传的文件
    面向对象设计原则
  • 原文地址:https://www.cnblogs.com/cheng123-/p/12640453.html
Copyright © 2020-2023  润新知