Software Engineering Lecture 4/24

先週の復習



集合

対象とするものの集まりを集合という。集合には二通りの表し方がある。

有限集合を考える限りはまったく簡単だ。が、無限集合は難しい。 集合に対して簡単な演算を考えることができる。

写像、関数

何かの入力に対して決まった値を返すものが関数である。

可能な入力の集合を定義域、定義域に対する出力の集合を値域という。



二つの関数を持って来て、片方の値域と他方の定義域が適合していれば、 関数の合成を作ることができる。







関数を集合と集合の対応と考える時には特に写像という言葉を用いることが 多い。(その方がCの関数と混同しなくてすむし...)

入力と出力の組み合わせの集合として関数を定義することもできる。



論理

論理は以下の要素から構成される

空集合をF、空でない集合をT、と見ることによって、集合演算と論理演算は 同じものとみなすことができる。

集合を定義するのには、論理式を使うことが多い。



具体的なプログラムに関して集合を使って意味を考える

もし入力が有限で、出力が一つだけなら、とても簡単になる。

入力が無限だったりすると難しい。特にReal-timeプログラミング、並列 プログラミングの意味は難しい。

しかし、この三つの道具は、実際には同等な力を持った道具であり、 望むならば、論理だけ、関数だけ、集合だけ、ですべてを表現することも できる。しかし、適材適所を考えて使おう。



Javaを実行して見る

JDK 1.0.2 と、FreeなJava 処理系であるKaffe を使う。

bw/cw のjnetscape から Java を見るには、
  setenv CLASSPATH .:/usr/open/lib/kaffe/java_30 
  limit stacksize 1024k 
を ~/.cshrc につけ加えること。

例えば、 HelloWorldApp.java というファイルを以下のように作る。
class HelloWorldApp {
        public static void main (String args[]) {
                System.out.println("Hello World!");
        }
}
これを、
% javac HelloWorldApp.java 
% Kaffe HelloWorldApp
Hello World!
というように動かすことができる。 これをHTMLから使うには、 例えば、 HelloWorld.html というファイルを以下のように作る。
<applet code="HelloWorld.class" width=200 height=200>
</applet>
end....
さらに、HelloWorld.java を作って、コンパイルする。
import java.applet.Applet;
import java.awt.Graphics;

public class HelloWorld extends Applet {
        public void paint (Graphics g) {
                g.drawString("Hello World!",25,25);
        }
}
コンパイルが終わった後、 HelloWorld.html というファイルをjnetscape からopen file を使ってあけると、java を使った表示を見ることができる。