午前中:神経の勉強。神経線維を信号を伝わるしかけを読んでいたら「モル」が出てきて、「モルか~」って感じです。最近の高校の生物の教科書には「モル」が出てこないようですが、昔は計算問題を作るためにやたら「モル」が出てきて私を悩ませたものです。
午後:詩吟教室。9月に発表会があります。新人は2人で吟ずることになっていましたが、1人でやることに変更になり、練習をしました。2人に比べてプレッシャーは4倍位になりました。
夕方、「そごう」のポロで(半額セールだったので)ポロシャツを購入(8千円)。
このところ暑いので運動をお休みにしています。心臓に異変を感じたのがきっかけですが、家族に言うとうるさくなりそうなので黙っていました。ところが火曜日に珍しく娘から電話があり、私が心臓をやられた夢を見たので、4,5日運動を控えるように、とのことでした。少し涼しくなったので明日どうしようか考えています。どうも運動をしないと気力が出てこなくて。
今日は二十四節気の立秋みたいです。いくらか陽が短くなってきましたが、秋って感じはしませんね。
===
JavaをUML表記するためのサンプルプログラムを作りました。
プログラムが難しくなりすぎない範囲で、UMLの色々な機能(継承、コレクション、パッケージ)を使用するアプリにしました。
アプリの使用イメージ:
学校で、教務係と健康管理室が共通に使うデータベースです。データベースには、出席日数、成績、健康状態、保存されていますが、次の制約があります。
(1)出席日数は、教務係と健康管理室が共に見られるが、書き込みを行えるのは教務係だけ。
(2)成績は、教務係が書き込み、教務係だけが見られる。
(3)健康状態は、健康管理室が書き込み、健康管理室だけが見られる。
(教務プログラムと健康管理室プログラムは、出席日数を継承するイメージ)
アプリを実行すると次の教務係用と健康管理室用の2つのユーザインタフェースが現れる(教務係と健康管理室は、自分以外のユーザインタフェースは操作しないものとする)。
ユーザインタフェースの使い方:
教務係の場合:
(1)学番を入力して「表示」ボタンを押すと「成績」と「出席日数」が表示される。
(2)学番と出席日数を入力して「出席」ボタンを押すと出席日数が登録される。
(3)学番と成績を入力して「成績」ボタンを押すと成績が登録される。
健康管理室の場合:
(1)学番を入力して「表示」ボタンを押すと「成績」と「健康状態」が表示される。
(2)学番と健康状態を入力して「健康状態」ボタンを押すと健康状態が登録される。
プログラムの構成
「ユーザインタフェースgui」と「それ以外main」を別のパッケージに入れる。
出席日数、成績、健康状態、はJavaのコレクションクラス「HashMap」に入れる。
(これにより、学番を入れれば、対応するデータが出てくる)
プログラムの構成:
==
パッケージmain
Main5.java:メインプログラム
Education.java:教務用プログラム
Helth.java:健康管理室プログラム
==
パッケージgui
FrameE.java:教務用ユーザインタフェース
FrameH.jave:健康管理室用ユーザインタフェース
==
====実際のプログラム=====
package main;
/***Main5.java***/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import gui.*;
public class Main5 {
public static void main(String[] args) {
Education education= new Education();
Helth helth= new Helth();
FrameE frameE= new FrameE(education);
frameE.setVisible(true);
FrameH frameH= new FrameH(helth);
frameH.setVisible(true);
}
}
class Db{
static Map<String, String> hashmap= new HashMap<String, String>();
public String get(String str){
return hashmap.get( str);
}
public void put(String key, String data){
hashmap.put(key,data);
}
}
/*======*/
/***Education.java***/
package main;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
public class Education extends Db {
Map<String, String> hashmapE= new HashMap<String, String>();
public Education(){
hashmapE.put(“1″,”優”);
hashmapE.put(“2″,”良”);
hashmapE.put(“3″,”可”);
}
public void putE(String key, String data){
hashmapE.put(key,data);
}
public String getE(String str){
return hashmapE.get(str);
}
}
/*======*/
/****Helth.java***/
package main;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
public class Helth extends Db{
Map<String, String> hashmapH= new HashMap<String, String>();
public Helth(){
hashmapH.put(“1″,”上”);
hashmapH.put(“2″,”中”);
hashmapH.put(“3″,”下”);
System.out.println(hashmap.get(“1”));
}
public String getH(String str){
return hashmapH.get(str);
}
public void putH(String key, String data){
hashmapH.put(key,data);
}
}
/*=======*/
/*===FrameE.java===*/
package gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import main.*;
public class FrameE extends JFrame implements ActionListener{
JButton bt1, bt2, bt3;
JTextField textField1;
JTextField textField2;
JLabel label1;
JLabel label2;
Education ed;
public FrameE(Education education) {
ed= education;
getContentPane().setLayout(new FlowLayout());
bt1 = new JButton(“データ表示”);
bt1.addActionListener(this);
getContentPane().add(bt1);
bt2 = new JButton(“出欠入力”);
bt2.addActionListener(this);
getContentPane().add(bt2);
bt3 = new JButton(“点数入力”);
bt3.addActionListener(this);
getContentPane().add(bt3);
textField1 = new JTextField(“学番”,20);
textField2 = new JTextField(“出席又は点数”,20);
getContentPane().add(textField1);
getContentPane().add(textField2);
label1= new JLabel();
getContentPane().add(label1);
label2= new JLabel();
getContentPane().add(label2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(“教務係用”);
setSize(600, 200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()== bt1){
String str1= textField1.getText();
String str2= ed.get(str1);
String str3= ed.getE(str1);
label1.setText(str2);
label2.setText(str3);
System.out.println(“データ表示”);
}
if(e.getSource()== bt2) {
String str5= textField1.getText();
String str6= textField2.getText();
ed.put(str5,str6);
System.out.println(“出欠入力”);
}
if (e.getSource()== bt3){
String str7= textField1.getText();
String str8= textField2.getText();
ed.putE(str7,str8);
System.out.println(“点数入力”);
}
}
}
/*=========*/
/*===FrameH.java===*/
package gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import main.*;
public class FrameH extends JFrame implements ActionListener{
Helth he;
JButton bt1, bt2, bt3;
JTextField textField1;
JTextField textField2;
JLabel label1;
JLabel label2;
public FrameH(Helth helth) {
he=helth;
getContentPane().setLayout(new FlowLayout());
bt1 = new JButton(“データ表示”);
bt1.addActionListener(this);
getContentPane().add(bt1);
bt2 = new JButton(“健康状態入力”);
bt2.addActionListener(this);
getContentPane().add(bt2);
textField1 = new JTextField(“学番”,20);
textField2 = new JTextField(“健康状態”,20);
getContentPane().add(textField1);
getContentPane().add(textField2);
label1= new JLabel();
getContentPane().add(label1);
label2= new JLabel();
getContentPane().add(label2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(“健康管理室用”);
setSize(300, 200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()== bt1){
String str1= textField1.getText();
String str2= he.get(str1);
String str3= he.getH(str1);
label1.setText(str2);
label2.setText(str3);
System.out.println(“データ表示”);
}
if(e.getSource()== bt2) {
String str5= textField1.getText();
String str6= textField2.getText();
he.putH(str5,str6);
System.out.println(“出欠入力”);
}
}
}
/*=======*/