• 第六项—详细设计


    类详细设计    

        各个类的简要描述(在整个软件中的地位及实现功能的简要描述,其继承层次关系及所实现的接口等);详细设计每个类的成员变量、构造方法与方法;并根据详细设计给出每个类的实现代码。

    1.主函数CalendarWindow类

    (1)简要描述:

    该类是整个程序的主框架,是javax.swing包中Jframe的一个子类。并实现了ActionListener、MouseListener和FocusListener接口。

    (2)类详细设计:

    该类的成员变量、构造方法及方法设计如下:

    1) 成员变量

    • year,month和day是int型变量。它们的值分别确定年份、月份和日期。
    • calendarMessage是CalnedarMessage对象,该对象用来处理与日期有关的数据。
    • calendarPad是CalendarPad对象,该对象可以显示与日期有关的数据。
    • notPad是NotPad的对象。具有编辑、读取、保存和删除日志的功能。
    • showYear和showMonth是JtextField类创建的文本框,用来显示年月。
    • showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。
    • calendarImage是CalendarImage创建的对象,用来显示图像。
    • clock是Clock创建的对象,用来显示时钟。
    • nextYear,PreviousYear,nextMonth和PreviousMonth是JButton创建的按钮对象,名字依次为“下年、上年、下月、上月”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。
    • savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。

    2)      构造方法

    • CalendarWindow()是构造方法,负责完成窗口初始化。

    3)      方法

    • actionPerformed(ActionEvent)方法是CalendarWindow类实现的ActionListener接口中的方法。CalendarWindow创建的窗口是nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,deleteDailyRecord和readDailyRecord按钮的ActionEvent事件监视器,当用户单击其中按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。
    • mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中的方法。CalendarWindow创建的窗口时showDay数组中的JtextField文本框的MouseEvent事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将执行mousePress(MouseEvent)方法进行相应操作。
    • focusGained(FocusEvent)和focusLost(FocusEvent)方法是CalendarWindow类实现的FocusListener接口中的方法。CalendarWindow创建窗口是showDay数组中的JtextField文本框的FocusEvent事件监视器,当用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行focusGained(FocusEvent)或focusLost(FocusEvent)方法进行相应的操作。
    • doMark()方法负责对有日志的日期作出标志。
    • main方法是程序运行的入口方法。

    2. CalendarMessage类

         CalendarMessage类创建的对象calendarMessage是CalendarWindow窗口的重要成员对象之一,负责处理和日期有关的数据。该类的有关数据说明如下:

    1)      成员变量

     year,month,day是int型数据,它们的值分别确定年份、月份和日期。

    2)      方法

    •  setYear(int)和getYear()方法分别用来设置year和获取year的值。
    •  setMonth(int)和getMonth()方法分别用来设置month和获取month的值。
    •   setDay(int)和getDay()方法分别用来设置和获取day的值。
    •  getMonthCalendar()方法是用来处理日期数据,使其按着习惯来显示。即日历牌中每行的第一列为“星期天”。getMonthCalendar()方法根据year,month和day的值返回一个存放着“日历”数据的String类型的数组,例如,如果某月有30天,而且该月的第一天是星期三,那么返回的String类型的数组是:“”,“”,“”,“1”,“2”,·····,“30”。

    3. CalendarPad类

        CalendarPad类是javax.swing包中Jpanel容器的子类,所创建的对象:calendarPad是CalendarWindow类中最重要的成员之一,负责显示经CalendarMessage类处理后的日期数据,被添加到CalendarWindow窗口的左上侧。以下是该类的有关说明:

    1)      成员变量

    •  year,month和day是int型数据,它们的值分别确定年份、月份和日期
    •   calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。
    •   showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。
    •   “星期”是String数组,单元的值依次为“SUN日”、“MON一”、“TUE二”、“WED三”、“THU四”、“FRI五”、“SAT六”。

    2)      构造方法

    •  CalendarPad()是构造方法,用来创建calendarPad对象。

    3)      方法

    •  setShowDayTextField(JtextField[])方法负责设置showDay数组。
    •  setCalendarMessage(CalendarMessage)方法负责设置calendarMessage对象。
    •  showMonthCalendar()方法负责显示“日历”。

    4. NotePad类

          NotePad类javax.swing包中的Jpanel容器的子类,实现了ActionListener接口,所创建的对象:notePad是MineGame CalendarWindow类中的重要成员之一,作为一个容器添加到CalendarWindow窗口的右上侧以,下是该类的有关说明:

    1)成员变量

    •  text 是JtextArea创建的文本区,可在text中编译多行文本。
    •  showMessage 是 JtextField 创建的文本条,用来显示和日期相关的数据。
    •  menu是 JpopupMenu 创建的弹出式菜单。
    •  itemCopy、itemCut、itemPaste、itemClear 是JmenuItem 创建的菜单项,名字依次是“复制”, “剪切”, “黏贴”, “清空”。

    2)      构造方法

    •   NotePad()构造方法,用来创建notePad对象。

    3) 方法

    •   setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。
    •   save(File,int,int,int)方法根据参数指定日期保存日志
    •   delete(File,int,int,int) 用于删除日志
    •  read(File,int,int, int)用于读取日志。

    5. CalendarImage类

        CalendarImage创建的对象负责绘制图像

        CalendarImage类是javax.swing包中Jpanel容器的一个子类,创建的对象calendarMessage是CalendarWindow类的成员之一,负责绘制图像,作为一个容器添加到CalendarWindow窗口的左下侧,以下是该类的有关说明:

    1)      成员变量

    •  imageFile是File对象,用来存放图像文件的引用
    •  image 是Image对象
    •  tool 是Tookit对象,负责创建image对象

    2)      构造方法

    •  CalendarImage()是构造方法,负责创建calendarImage 对象

    3)      方法

    •  setImageFile(File)方法负责设置imageFile 对象,并根据imageFile创建image
    •  paintComponent(Griphics)方法负责绘制image

    6. Clock

             Clock类是javax.swing包中Jpanel容器的子类,并实现了ActionListener接口,所创建的对象:clockCalendarWindow类中的成员之一,负责显示时间,被添加到CalendarWindow窗口的右下侧,以下是该类的有关说明:

    1)     成员变量

    •   date是Date对象,负责封装本地时间
    •   secondTime是javax.swing包中Timer类创建的计时
    •   hour,minute和second 是int型数据,分别飞“小时”,“分钟”和“秒”
    •   secondLine,minuteLine和hourLine是Lint2D对象,分别负责绘制“时针”,“分针”,“秒针”
    •   pointSX,pointSY是double型数组,其单元值用来表示秒针端点的坐标
    •   pointMX,pointMY是double型数组,其单元值用来表示分针端点坐标
    •   pointHX,pointHY是double型数组,其单元值用来便是时针端点坐标

    2)      构造方法

    •   Clock()是构造方法,用来创建clock对象

    3)      方法

    •  initPoint()负责创建表盘所需要的坐标点
    •  paintComponent(Graphics)负责完成绘制工作
    •  actionPerformed(ActionEvent)是接口ActionListener中的方法。使用Timer类的构造方法:timer(int a ,Object  b )创建一个计时器,其中的参数a 的单位是毫秒,确定计时器每隔a毫秒“振铃”一次,参数b是计时器的监视器。计时器发生的振铃时件是ActionEvent类型时件,当振铃时间发生时,监视器就会监视到这个事件,监视器就会回调用ActionListener接口中的actionPerformed(ActionEvent)方法,该方法所做的操作是:每隔1秒钟,让秒针前进一个刻度,既secondLine改变端点坐标;每隔1分钟,让分针前进一个刻度(表盘一周为360°,每个时刻为6°),既muniteLine改变端点坐标;每隔12分钟,让时针前进一个刻度,既hourLine改变端点坐标。
  • 相关阅读:
    51NOD 1069 Nim游戏
    51NOD 1066 Bash游戏
    51NOD 1058 N的阶乘的长度
    51NOD 1057 N的阶乘
    51NOD 1027 大数乘法
    RMQ 区间最大值 最小值查询
    Codeforces Round #426 (Div. 2) C. The Meaningless Game
    51NOD 1046 A^B Mod C
    OJ上 编译器 G++和C++的区别
    二分暑假专题 训练记录 2017-7-29
  • 原文地址:https://www.cnblogs.com/qinyunpanchenxi/p/4574153.html
Copyright © 2020-2023  润新知