zoukankan      html  css  js  c++  java
  • 实验二 结对编程(阶段二)


    一、实验目标
      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的几率也更小了。总的来说,除了比较累,这样的编程方式还是很优秀的。

  • 相关阅读:
    简述虚拟打印功能的实现方法。
    什么是spool系统,什么是预输入,什么是缓输出?
    什么是虚拟设备技术,什么是虚拟设备,如何进行虚拟设备分配?
    什么是共享设备,对共享设备如何分配?
    什么是独占设备,对独占设备如何分配?
    对I/O设备分配的一般策略是什么?
    maven+nexus setting.xml配置(收藏)
    MySQL自动化安装(双主多从读写分离)
    Shell常用操作
    shell中的比较语句
  • 原文地址:https://www.cnblogs.com/cheng123-/p/12640453.html
Copyright © 2011-2022 走看看