DVIOUT-oolin



Similar documents
1.1 (1) (2) (3) (4) 2

DVIOUT-oolin

DVIOUT-exer

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

6 構 造 等 コンクリートブロック 造 平 屋 建 て4 戸 長 屋 16 棟 64 戸 建 築 年 1 戸 当 床 面 積 棟 数 住 戸 改 善 後 床 面 積 昭 和 42 年 36.00m m2 昭 和 43 年 36.50m m2 昭 和 44 年 36.

プログラミング基礎I(再)

する ( 評 定 の 時 期 ) 第 条 成 績 評 定 の 時 期 は 第 3 次 評 定 者 にあっては 完 成 検 査 及 び 部 分 引 渡 しに 伴 う 検 査 の 時 とし 第 次 評 定 者 及 び 第 次 評 定 者 にあっては 工 事 の 完 成 の 時 とする ( 成 績 評 定

1 変更の許可等(都市計画法第35条の2)

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

PowerPoint プレゼンテーション


スライド 1

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

Microsoft Word 役員選挙規程.doc

2 役 員 の 報 酬 等 の 支 給 状 況 役 名 法 人 の 長 理 事 理 事 ( 非 常 勤 ) 平 成 25 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 16,936 10,654 4,36

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

平 成 27 年 11 月 ~ 平 成 28 年 4 月 に 公 開 の 対 象 となった 専 門 協 議 等 における 各 専 門 委 員 等 の 寄 附 金 契 約 金 等 の 受 取 状 況 審 査 ( 別 紙 ) 専 門 協 議 等 の 件 数 専 門 委 員 数 500 万 円 超 の 受

国 税 クレジットカード 納 付 の 創 設 国 税 のクレジットカード 納 付 については マイナンバー 制 度 の 活 用 による 年 金 保 険 料 税 に 係 る 利 便 性 向 上 に 関 するアクションプログラム( 報 告 書 ) においてその 導 入 の 方 向 性 が 示 されている

労働時間と休日は、労働条件のもっとも基本的なものの一つです

Taro-2220(修正).jtd

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

Taro13-01_表紙目次.jtd

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定

< F2D8AC493C CC81698EF3928D8ED2816A2E6A7464>

1. 前 払 式 支 払 手 段 サーバ 型 の 前 払 式 支 払 手 段 に 関 する 利 用 者 保 護 等 発 行 者 があらかじめ 利 用 者 から 資 金 を 受 け 取 り 財 サービスを 受 ける 際 の 支 払 手 段 として 前 払 式 支 払 手 段 が 発 行 される 場 合

要 な 指 示 をさせることができる ( 検 査 ) 第 8 条 甲 は 乙 の 業 務 にかかる 契 約 履 行 状 況 について 作 業 完 了 後 10 日 以 内 に 検 査 を 行 うものとする ( 発 生 した 著 作 権 等 の 帰 属 ) 第 9 条 業 務 によって 甲 が 乙 に

説 明 内 容 料 金 の 算 定 期 間 と 請 求 の 単 位 について 分 散 検 針 制 日 程 等 別 料 金 料 金 の 算 定 期 間 と 支 払 義 務 発 生 日 日 程 等 別 料 金 の 請 求 スケジュール 料 金 のお 支 払 い 方 法 その 他 各 種 料 金 支 払

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

景品の換金行為と「三店方式」について

弁護士報酬規定(抜粋)

富士山チェックリスト

注 記 事 項 (1) 当 四 半 期 連 結 累 計 期 間 における 重 要 な 子 会 社 の 異 動 : 無 (2) 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 : 有 ( 注 ) 詳 細 は 添 付 資 料 4ページ 2.サマリー 情 報 (

リング 不 能 な 将 来 減 算 一 時 差 異 に 係 る 繰 延 税 金 資 産 について 回 収 可 能 性 がないも のとする 原 則 的 な 取 扱 いに 対 して スケジューリング 不 能 な 将 来 減 算 一 時 差 異 を 回 収 できることを 反 証 できる 場 合 に 原 則

ていることから それに 先 行 する 形 で 下 請 業 者 についても 対 策 を 講 じることとしまし た 本 県 としましては それまでの 間 に 未 加 入 の 建 設 業 者 に 加 入 していただきますよう 28 年 4 月 から 実 施 することとしました 問 6 公 共 工 事 の

法 人 等 に 対 する 課 税 際 課 税 原 則 の 帰 属 主 義 への 見 直 しのポイント 総 合 主 義 から 帰 属 主 義 への 移 行 法 人 及 び 非 居 住 者 ( 法 人 等 )に 対 する 課 税 原 則 について 従 来 のいわゆる 総 合 主 義 を 改 め OECD

<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

指 定 ( 又 は 選 択 ) 官 庁 PCT 出 願 人 の 手 引 - 国 内 段 階 - 国 内 編 - アイスランド 特 許 庁 国 内 段 階 に 入 るための 要 件 の 概 要 3 頁 概 要 国 内 段 階 に 入 るための 期 間 PCT 第 22 条 (3)に 基 づく 期 間

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

目 次 利 用 に 際 しての 注 意 事 項... ユーザー 登 録... ログイン... 課 題 申 請... 5 装 置 予 約... 6 ライセンス 取 得 方 法... 7 利 用 料 金 の 確 認 ( 準 備 中 ) 外 部 発 表 登 録 の 方 法... 5 < 附

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

疑わしい取引の参考事例

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

第1章 財務諸表

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

Taro-条文.jtd

独立行政法人国立病院機構呉医療センター医療機器安全管理規程

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

人 に 使 用 される 者 としての 勤 続 期 間 を 当 該 職 員 となつた 者 の 職 員 としての 勤 続 期 間 に 通 算 することと 定 められている 法 人 に 限 る )をいう 3 第 一 項 の 退 職 手 当 通 算 予 定 職 員 とは 任 命 権 者 又 はその 委 任

参 考 様 式 再 就 者 から 依 頼 等 を 受 けた 場 合 の 届 出 公 平 委 員 会 委 員 長 様 年 月 日 地 方 公 務 員 法 ( 昭 和 25 年 法 律 第 261 号 ) 第 38 条 の2 第 7 項 規 定 に 基 づき 下 記 のとおり 届 出 を します この

6-1 第 6 章 ストック オプション 会 計 設 例 1 基 本 的 処 理 Check! 1. 費 用 の 計 上 ( 1 年 度 ) 2. 費 用 の 計 上 ( 2 年 度 )- 権 利 不 確 定 による 失 効 見 積 数 の 変 動 - 3. 費 用 の 計 上 ( 3 年 度 )-

全設健発第     号

している 5. これに 対 して 親 会 社 の 持 分 変 動 による 差 額 を 資 本 剰 余 金 として 処 理 した 結 果 資 本 剰 余 金 残 高 が 負 の 値 となるような 場 合 の 取 扱 いの 明 確 化 を 求 めるコメントが 複 数 寄 せられた 6. コメントでは 親

23信託の会計処理に関する実務上の取扱い


class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

数学

Taro-役員退職手当規程(H27.10改正)HP版


1

一般競争入札について

Microsoft Word - 第3章.doc

任意整理について | 多重債務Q&A | 公益財団法人 日本クレジットカウンセリング協会

<6D313588EF8FE991E58A778D9191E5834B C8EAE DC58F4992F18F6F816A F990B32E786C73>

<4D F736F F D208E52979C8CA78E598BC68F5790CF91A390698F9590AC8BE08CF D6A2E646F6378>

1_2013BS(0414)

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

Speed突破!Premium問題集 基本書サンプル

企業結合ステップ2に関連するJICPA実務指針等の改正について③・資本連結実務指針(その2)

学校教育法等の一部を改正する法律の施行に伴う文部科学省関係省令の整備に関する省令等について(通知)

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

安 芸 太 田 町 学 校 適 正 配 置 基 本 方 針 の 一 部 修 正 について 1 議 会 学 校 適 正 配 置 調 査 特 別 委 員 会 調 査 報 告 書 について 安 芸 太 田 町 教 育 委 員 会 が 平 成 25 年 10 月 30 日 に 決 定 した 安 芸 太 田

Taro-契約条項(全部)

Microsoft Word - 佐野市生活排水処理構想(案).doc

平成19年9月改定

第2回 制度設計専門会合 事務局提出資料

Box-Jenkinsの方法

南伊豆町空き家バンクリフォーム等補助金交付要綱

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数

Taro-データ公安委員会相互協力事

ìäçeãKíˆÅEç◊ë•Åiç≈èIî≈àÛç¸ópÅj

計算式の取り扱い

m07 北見工業大学 様式①

税金読本(8-5)特定口座と確定申告

する 場 合 だけが 下 請 法 の 対 象 となる 5000 万 円 基 準 の 場 合 3 億 円 を5000 万 円 と 置 き 換 えればよい つ まり 自 社 の 資 本 金 の 額 が5000 万 円 超 であれば 5000 万 円 以 下 の 事 業 者 ( 法 人 だけでなく 個 人

Microsoft Word 消費税HP(案)

東近江行政組合職員の育児休業等に関する条例

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

<6D33335F976C8EAE CF6955C A2E786C73>

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

様式(補助金)

第1章 簿記の一巡

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

1

Transcription:

オブジェクト 指 向 操 作 対 象 の 理 解 と 言 語 の 効 率 性 プログラム 理 論 と 言 語 Part2-1-1 関 連 したデータの 塊 を1つの もの として 認 識 (1) クラス= もの と もの に 付 随 した 操 作 系 (2) クラスのことはクラス 内 部 で 処 理 ブラックボックス 化 し 外 部 仕 様 を 明 確 化 部 品 としての 再 利 用 安 全 性 (3) もの と 処 理 の 独 立 性 を 高 め 処 理 も 部 品 化 操 作 そのものでなく 操 作 の 型 情 報 のみで 処 理 を 記 述 コードの 抽 象 化 再 利 用 役 割 機 能 と もの を 分 離 し 独 立 性 を 高 める (4) 複 雑 さに 対 処 するために 階 層 として 体 系 化 修 正 追 加 利 用 ( 特 にライブラリ ユーティリティ) 人 の 対 象 理 解 言 語 的 表 現 と 合 致 する 特 に 個 別 事 例 に 依 存 しない 抽 象 表 現 言 語 の 効 率 性 JAVA はオブジェクト 指 向 言 語 か? その 気 になれば オブジェクト 指 向 でプログラムが 書 ける 一 般 に 長 くなるが 可 読 性 安 全 性 再 利 用 性 は 高 まる そうでないプログラムも 書 ける 体 系 的 でない ものも 多 い 簡 単 な 場 合 はそれでもすむが 複 雑 になると 修 正 拡 張 再 利 用 が 困 難 プログラムを 書 くという 観 点 からは オブジェクト 指 向 は 処 理 対 象 と 処 理 を 体 系 化 す るための 作 法 であり オブジェクト 指 向 言 語 は そのための 言 語 的 装 置 (*) (*) 本 講 義 において Java を 題 材 にする 理 由 : 1. オブジェクト 指 向 の 主 要 な 概 念 は 全 て Java で 説 明 できること 2. プログラム 言 語 において 重 要 な 型 概 念 を 十 分 に 講 述 できること 3. 様 々な 場 所 で 実 際 に 良 く 使 われている 言 語 であること 4. CS 実 験 等 をとおして C 言 語 の 理 解 が 進 みつつあることを 考 慮 し Cと 構 文 的 に 近 いオブジェクト 指 向 言 語 であること ポインタについて: Java: 実 際 は ポインタのお 化 け 状 態 ポインタを 駆 使 するプログラミングは 一 般 に 難 しい Java: 比 較 的 に 安 全 にかつ 容 易 に 実 現 本 講 義 : 上 記 の 事 情 をある 程 度 説 明 する 1 2 はじめにオブジェクトありき まず 処 理 において 如 何 なるオブジェクトが 必 要 かを 考 える 対 象 の 分 析 理 解 その 理 解 を 言 語 的 に 顕 在 化 させるプロセス もの の 定 義 書 としてのクラス もの に 付 随 したメソッド( 演 算 基 本 操 作 ) 群 メソッドを 持 つ もの として 体 系 的 に 扱 う その 後 に メソッドにより もの を 操 作 処 理 する 手 続 き オブジェクト 指 向 言 語 =オブジェクト 定 義 操 作 言 語 では もの とは 何 か? 哲 学 論 議 はここではしない 計 算 機 の 中 での 出 来 事 メモリ 上 の 構 造 物 として 表 現 翻 訳 される もの 配 列 :プログラミングにおいて 不 可 欠 な もの これも 立 派 なオブジェクト int[] a; a = new int[3]; データの 集 まり {a[0], a[1], a[2] を1つの 配 列 と して 纏 めて 扱 う new int[3] : 配 列 領 域 を 割 当 生 成 配 列 は 要 素 から 構 成 され 添 字 を 与 え 要 素 へアクセス 特 に a は 領 域 全 体 の 名 前 ( 参 照 ) 領 域 を 生 成 する 仕 掛 け 一 般 のオブジェクト: フィールド 名 を 持 つ 要 素 からなり 添 字 の 代 わりにフィールド 名 ( 変 数 )で 要 素 にアクセス 特 定 のデータ 領 域 を 占 有 し 領 域 全 体 はオブジェクト 参 照 変 数 で 参 照 領 域 生 成 は コンストラクタ で 行 う 3 4

3 角 形 は3つの 点 からなる: まず 点 を 定 義 定 義 は 対 応 するクラスの 記 述 で 与 えられる class Point { //フィールド 変 数 double x, y, weight; //コンストラクタ( 生 成 方 法 ) Point(double x, double y, double w) { this.x=x; this.y=y; weight=w; //インスタンスメソッド // 各 オブジェクトに 直 接 作 用 //オブジェクトと 一 体 化 した 表 記 void show() { System.out.println( "x="+x+", y="+y+ " with weight "+weight); フィールドアクセス: this からは フィールド 名 x 一 般 に a.x Point a が 参 照 している オブジェクトの x フィールド 識 別 子 が 特 定 する 位 置 の 実 体 に 対 し x のフィールド 値 をとりだす Note: オブジェクトはCの 構 造 体 参 照 変 数 は 構 造 体 型 のポインタ 変 数 に 対 応 する メソッド( 関 数 )と 一 体 化 して 使 う 点 がオブジェクト 指 向 を 表 し ているが 上 記 の 図 ではその 事 情 を 十 分 説 明 できていない(インスタンス の 図 ) 後 で 詳 しく 述 べる Cの 構 造 体 オブジェクトと 参 照 変 数 はCの 構 造 体 とそのポインタと 似 ている 似 て(メモリ 上 の 構 造 物 という 点 は 同 じ) 非 なるもの ( 使 い 方 その 作 法 安 全 性 に 対 する 配 慮 が 全 く 異 なる) struct student{ int stnum; char stname[16]; ; struct student *stpt; /* ポインタ */ stpt->stnum (*stpt).stnum class Student{ int stnum; String stname; Student st; // 参 照 変 数 st.stnum stpt, st が 参 照 する 実 体 の stnum フィールドをゲット stpt, *stpt を 区 別 参 照 変 数 は Student 実 体 と 考 えてよい 書 き 方 非 なる 点 としては そもそもオブジェクトがメモリの 特 定 の 領 域 を 占 有 しているか? の 問 題 もある Java: 占 有 状 態 (システムが 管 理 ) C: アドレス 計 算 が 可 能 型 チェックが 甘 い 等 により 上 書 きの 危 険 性 プログラマの 責 任 5 6 参 照 変 数 はポインタか? - Cとの 比 較 参 照 関 係 と 内 部 状 態 の 変 化 答 え: 広 義 の 意 味 のポインタか? Yes Cと 同 じポインタか? アドレス 計 算 を 禁 止 参 照 機 能 に 限 定 厳 密 表 現 :Point の 参 照 変 数 aが 参 照 する( 指 す)オブジェクト 略 した 表 現 :Point a ( 単 に 点 a) 仮 の 名 前 : 変 数 と 実 体 の 参 照 関 係 は 動 的 に 変 化 内 部 状 態 も! 計 算 過 程 : 新 規 オブジェクトを 生 成 しながら (1) 参 照 関 係 の 変 化 (2) オブジェクトの 内 部 状 態 の 更 新 上 記 はメソッド 実 行 時 識 別 子 の 詳 細 は 知 る 必 要 はない 知 ったとしてもその 事 実 をコードに 反 映 で きない 識 別 しアクセスできることが 論 理 レベルで 保 障 されていれば 十 分 以 下 実 体 を 特 定 できる 論 理 的 なものとして 識 別 子 を 考 える 7 8

メソッド 呼 出 とパラメータ つぎに 3 角 形 を 定 義 する 基 本 データ 型 の 引 数 : ( 評 価 ) 値 を 引 数 パラメータに 代 入 ( 値 呼 出 ) 参 照 型 変 数 : 仮 = 実 が 実 行 され, 仮 変 数 と 実 変 数 が 同 一 のオブジェクトを 参 照 する class Triangle { //スタティック 変 数 static final int nofpoints=3; //オブジェクトはフィールドで 規 定 Point[] points = new Point[nofPoints]; //インスタンスメソッド //オブジェクトに 作 用 する 関 数 void show() { for (short i=0;i<nofpoints;i++) points[i].show(); // 3 角 形 に 対 する show() を 点 に 対 する show() を 使 って 定 義 クラス 情 報 ( 型 ) で 識 別 static final int nofpoints=3; クラスに 固 有 (インスタンスに 依 存 しない) 変 数 で クラスのスタティックメンバーともいう final 指 定 変 数 は 上 書 き 不 可 ただし 下 記 の 注 意 が 必 要 となる: 1. 基 本 データ 型 : 文 字 通 り 定 数 2. オブジェクト: 参 照 先 オブジェクトは 変 わらない しかし その 内 部 状 態 は 変 更 される 可 能 性 定 数 にするにはカプセル 化 が 必 要 9 10 コンストラクタ(オブジェクトの 占 有 領 域 を 作 成 ) デフォルト 生 成 : Triangle t = new Triangle(); 引 数 なしの 特 別 な 手 続 き Point[] points = new Point[nofPoints]; に 従 い 実 体 を 生 成 し t にセット この 場 合 配 列 領 域 の 確 保 ( 割 当 ) 明 示 的 な 生 成 =デフォルト+α Triangle t = new Triangle(p0,p1,p2); 右 辺 実 体 (の oid) を t にセット Triangle( // 引 数 付 の 手 続 き Point p0, Point p1, Point p2) { points[0]=p0; points[1]=p1; points[2]=p2; クラスのインスタンス 化 : コンストラクタを 適 用 し 実 体 オブジェクトを 生 成 する 行 為 定 義 生 成 操 作 オブジェクトの 定 義 をクラス 記 述 で 与 え コンストラクタでオブジェクトを 生 成 し インスタンスメソッドでオブジェクトを 操 作 する class triangletest { public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2,3), // 各 点 実 体 (の 識 別 子 ) new Point(4,5,6), new Point(7,8,9) ); // 右 辺 のオブジェクト (の 識 別 子 ) を // 左 辺 の 変 数 (に 代 入 )に 参 照 させる t.show(); // 3 角 形 t に show() を 適 用 // オブジェクトの 操 作 は 手 続 きで 記 述 // 手 続 き 的 なオブジェクト 定 義 操 作 言 語 論 理 型 のオブジェクト 指 向 言 語 (OOLP) 関 数 型 のオブジェクト 指 向 言 語 (Common LISP) この 他 オブジェクト 指 向 のデータベース オブジェクト 指 向 の COBOL! などもある 扱 うデータの 基 本 単 位 としてオブジェクトを 許 すと こうなる デフォルトコンストラクタ: 引 数 なしで Triangle() { クラス 定 義 におけるデフォルトコンスタラクタの 扱 い 明 示 的 コンストラクタを 使 用 しない 宣 言 せずに 使 える 明 示 的 コンスタラクタを 使 用 デフォルト Triangle() を 使 うときはそれも 明 示 する 11 12

様 々なメソッドの 定 義 と 組 合 せ: 手 続 きを 記 述 class クラス 名 { //インスタンスメソッド: もの に 対 する 基 本 操 作 または 複 合 操 作 出 力 型 (クラス 名 または 基 本 データ 型 ) // ( 基 本 操 作 を 組 合 せた 操 作 ) メソッド 名 (パラメータ 型 変 数 名, ) { メソッド 本 体 (そのクラスのオブジェクト に 対 し 行 う 処 理 or オブジェクトがそのメソッドで 振 る 舞 う 動 作 の 記 述 ) class Point { double x, y, weight; double length(point p) {// 2 点 の 距 離 return Math.sqrt(Math.pow(x-p.x,2)+Math.pow(y-p.y,2)); // sqrt: 平 方 根 pow: べき 乗 Math クラスで 定 義 class Triangle { static final int nofpoints = 3; // 大 域 変 数 ( 定 数 ) Point[] points = new Point[nofPoints]; // double sumoflength() {// 3つの 辺 長 の 総 和 double sumoflength = 0.0; for (int i=0;i<nofpoints;i++) // i++ は i=i+1 の 略 記 sumoflength += points[i].length(points[(i+1)%nofpoints]); return sumoflength; // 整 数 n, m に 対 し n % m は m を 法 とした 剰 余 public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2,3), new Point(4,5,6), new Point(7,8,9) ); if (t.checktriangle()) System.out.println(" 辺 の 長 さの 総 和 = "+ t.sumoflength()); else { System.out.println("3 角 形 ではありません 要 データチェック"); t.show(); ; 用 語 の 整 理 1: インスタンスとオブジェクト オブジェクト: 操 作 の 対 象 で 占 有 領 域 (インスタンス) と それを 処 理 するメソッドを 持 つ Cでも 構 造 体 のインスタンス 化 は 行 う しかし そのインスタンスは 関 数 (メ ソッド)と 言 語 的 に 一 体 化 しているわけではない プログラマが 必 要 に 応 じて そのインスタンスへのポインタを 関 数 に 渡 して 適 用 操 作 するだけ の 話 一 方 Java では 最 初 からインスタンスはメソッドと 一 体 化 されて 扱 われるこ とが 大 前 提 であり そのことがクラス 定 義 で 明 示 される それは 体 系 的 に 操 作 対 象 を 扱 うための 流 儀 であると 理 解 すること 13 14 操 作 により もの をクラス 分 けする オブジェクトがどのようなメソッドを 使 用 できるかはクラス 定 義 で 決 まる 逆 に 言 えば 各 オブジェクト 毎 にメソッ ドを 定 義 し 保 持 するのは 不 経 済 オブジェクト 毎 に 異 なるメソッドが 必 要 な 場 合 : 別 クラスの もの メソッドがクラスを 特 徴 づける カプセル 化 クラスの 利 用 クラス 間 相 互 作 用 は 一 般 に 複 雑 化 外 部 仕 様 : クラスとは? のメソッドを 持 つ もの ~ メソッド 中 心 の 設 計 仕 様 と 実 装 の 分 離 独 立 化 仕 様 に 関 わるメソッドのみ 公 開 内 部 的 な 実 装 は private に 外 部 からは 公 開 メソッドのみで 操 作 隠 蔽 し 独 立 に 管 理 上 図 における 人 は 識 別 子 と 考 えてもよい 以 後 概 念 図 において 人 記 号 は 識 別 子 もしくはインスタンス とする オブジェクト 指 向 はさらなる 構 造 化 を 促 す: 独 立 したクラスの 列 挙 から 構 造 化 されたクラス 群 1. クラス 階 層 インタフェース 階 層 2. 内 部 クラス( 一 般 には クラスの nesting) 15 16

アクセス 制 御 の 原 則 フィールドは 原 則 private に ( 不 用 意 なアクセスによる 状 態 参 照 更 新 を 抑 制 する) ゲッター getattr() +セッター setattr() パッケージと public の 例 メソッドに 対 するアクセス 制 御 同 一 パッケージ( 同 一 ディレクトリ)を 想 定 した 場 合 : 無 修 飾 のメソッド: パッケージ 内 で 公 開 private メソッド: クラス 内 のみで 有 効 一 般 には パッケージの 作 り 方 に 依 存 ( 特 に public) 複 数 のパッケージ( 複 数 のディレクトリ)の 場 合 : public: 全 てに 公 開 protected, final: クラス 階 層 導 入 時 むやみに 意 味 もなく public をつけない! パッケージ 配 布 公 開 の 際 の 外 部 仕 様 ソースコード 解 読 時 の 構 文 上 の 情 報 インタフェースの 定 数 とメソッドは must be public protected: パッケージ 内 + 下 位 クラスに 公 開 final 定 数 メソッド: 上 書 きを 許 さない クラスに 対 しても public, private, final 無 修 飾 等 の 修 飾 が 可 能. 例 えば public にしないと 他 パッケージから 利 用 できない final にすると 継 承 拡 大 を 許 可 しない 17 18 Integer クラス in パッケージ java.lang http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/integer.html java.lang クラス Integer java.lang.object java.lang.number 階 層 java.lang.integer すべての 実 装 されたインタフェース(のメソッドを 実 装 ): Serializable, Comparable<Integer> ---------------------------------------------------------- フィールドの 概 要 static int MAX_VALUE int に 設 定 可 能 な 最 大 値 (231-1) を 保 持 する 定 数 です static int MIN_VALUE int に 設 定 可 能 な 最 小 値 (-231) を 保 持 する 定 数 です static int SIZE 2 の 補 数 バイナリ 形 式 で int 値 を 表 すのに 使 用 されるビット 数 です static Class<Integer> TYPE int のプリミティブ 型 を 表 す Class インスタンスです コンストラクタの 概 要 Integer(int value) 指 定 された int 値 を 表 す 新 しく 割 り 当 てられた Integer オブジェクトを 構 築 します Integer(String s) String パラメータで 示 される int 値 を 表 す 新 しく 割 り 当 てられた Integer オブジェクトを 構 築 しま メソッドの 概 要 static int bitcount(int i) 指 定 された int 値 の 2 の 補 数 バイナリ 表 現 での 1 のビットの 数 を 返 します byte bytevalue() この Integer の 値 を byte として 返 します int compareto(integer anotherinteger) 2 つの Integer オブジェクトを 数 値 的 に 比 較 します static Integer decode(string nm) String を Integer にデコードします double doublevalue() この Integer の 値 を double として 返 します boolean equals(object obj) このオブジェクトを 指 定 されたオブジェクトと 比 較 します. ラップクラス 注 意 ラップクラス: 基 本 データ 型 のデータ をオブジェクト 化 したもの オブジェクト: 参 照 変 数 で 指 される もの 基 本 データ 型 のデータ: データそのも の 32 bit 整 数 なら,31 ビットの2 進 表 現 と 1 ビット の 符 号 部 右 図 の 場 合,a.intValue() で,x フィールドの 値 ( 整 数 )がとれる. 言 語 によっては,ラップクラスと 基 本 データ 型 を 区 別 せずに 扱 えるもの もある 19 20

整 数 リスト: 再 帰 的 データ 構 造 の 例 リスト( 要 素 の 並 び)x1,x2, xn 要 素 は 次 の 要 素 へのポインタを 持 つ リスト: 先 頭 要 素 へのポインタ 空 リスト: null( 要 素 は 指 さない) class IntCell {// 要 素 の 再 帰 的 クラス private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value = value; IntCell(int value, IntCell cell) { this.value = value; next = cell; void showvalue() {System.out.print(value+" "); class IntList { private int size = 0; private IntCell firstcell = null; void tail() { firstcell = firstcell.next(); size--; void cons(int x) { if (size == 0) firstcell = new IntCell(x); else { IntCell nextfirstcell = new IntCell(x,firstCell); firstcell = nextfirstcell; ; size++; 用 語 の 整 理 2: obj.m(p1,.., pn) の 読 み 方 オブジェクト obj に 対 し メソッド m(p1,.., pn) を 適 用 obj に 対 し m(p1,.., pn) を 実 行 オブジェクト obj に 対 し メソッド m(p1,..,pn) を 呼 び 出 す メソッドはオブジェクトの 所 有 物 本 講 義 では 特 に 区 別 しない この 他 オブジェクトをエージェント( 処 理 主 体 )と 考 え オブジェクトにメッセージを 送 る オブジェクトはメッセージに 対 応 するメソッドを 持 つか らそれを 実 行 void show() { IntCell presentcell = firstcell; for (int i=0;i<size;i++) { presentcell.showvalue(); presentcell = presentcell.next(); ; System.out.println("#end_of_list"); 21 22 メッセージパッシング オブジェクト obj (レシーバ)に メッセージ m をパラメータ p1,.., pn で 送 る 送 られた 方 は m を 処 理 するメソッドを 持 つ メッセージ ~ メソッド class Teacher { void assignrept(student st, Task task) { Answer ans = st.report(task); // st に report せよ との // メッセージを 発 信 し // 結 果 を ans で 受 ける if (ok(ans)) { else {; class Student { //メッセージを 受 けたときの // 動 作 ~ メソッドそのもの Answer report(task task) { Answer myanswer = new Answer(); return myanswer; // 解 答 を myanswer で 返 す 実 際 の 例 題 は FAのシミュレーション (statisfa.java, fa.java) で 示 す 受 理 機 械 : メッセージパッシング 例 各 状 態 をオブジェクトに. 状 態 は 受 理 / 非 受 理 の 情 報 を 持 つ 入 力 記 号 列 str を 受 け 取 り 次 の 状 態 next に 処 理 依 頼 のメッセージを 投 げ( 送 り) next は 自 分 のメソッド process で 処 理 を 続 ける class State { private static final short nofsymbols = 2; // 入 力 記 号 は {0,1 private String name; private boolean accept; // 受 理 状 態 情 報 private State(String n, boolean f) {name = n; accept = f; private State[] nextstates = new State[nofSymbols]; void definenextstate(state next0, State next1) { nextstates[0] = next0; nextstates[1] = next1; private short head(string str) {return Short.parseShort(str.substring(0,1)); private String tail(string str) {return str.substring(1,str.length()); private void process(string input) { if (input.length()!=0) nextstates[head(input)].process(tail(input)); else if (accept) System.out.println("OK"); else System.out.println("NG"); public static void main(string args[]) { State q0 = new State("q0", false), q1 = new State("q1", false), q2 = new State("q2", true), q3 = new State("q3", false) ; q0.definenextstate(q1, q3); q1.definenextstate(q3, q2); q2.definenextstate(q1, q3); q3.definenextstate(q3, q3); q0.process(args[0]); この 例 題 では 単 一 クラスなので,main(String[]) を 除 き, 全 てのフィール ドとメソッドを private にしても 正 しく 動 作 する. 全 く 同 じ 理 由 で,この 場 合 は private を 付 けなくても 構 わない 23 24

Definition of A: A consists of B 1, B 2, オブジェクト 指 向 : 言 語 的 な 定 義 のスタイルに 対 応 Aの 定 義 書 : クラスAのオブジェクトは クラス(or 基 本 型 )B j のフィールドからなり のメソッドを 使 って 操 作 します ( 構 成 要 素 (part of, has_a 関 係 ) クラスのメンバー A isa B, ora is defined as a B such that A extends B AはBを 継 承 し 拡 大 Aに 固 有 なフィールドやメソッドを 追 加 A has a role/function of B B: インタフェース A implements B 機 能 を 持 つ ~ 役 割 機 能 を 実 現 する 手 段 メソッドを 具 体 的 に 持 つ( 実 装 ) 多 態 性 (ポリモルフィズム) 様 々な 役 割 や 機 能 を 実 装 クラスで 記 述 (クラスと 機 能 の 分 離 独 立 化 を 促 進 ) 25 クラス 定 義 のまとめ class Point { private double x,y; Point(double x, double y) { this.x = x; this.y =y; void show() { System.out.println(" x="+x +", y="+y); class Triangle { private static final int nofpoints=3; private Point[] points = new Point[nofPoints]; private Triangle(Point p0, Point p1, Point p2) { points[0]=p0; points[1]=p1; points[2]=p2; private void show() { for (short i=0;i<nofpoints;i++) points[i].show(); public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2), new Point(4,5), new Point(7,8) ); t.show(); //void main(string[]) は //ここでは Triangle に 組 み 込 んだ 実 行 時 : クラスは 生 成 されたオブジェクトの 集 まり + 大 域 変 数 (static variable)の 値 を 管 理 コンパイル 時 : オブジェクトの 定 義 書 として 記 述 の 集 まり 記 述 は クラスのメンバー( 構 成 要 素 )と 呼 ばれる 変 数 やメソッドの 各 々に 対 し 行 われる フィールド 変 数 : オブジェクトの 属 性 基 本 データ 型 もしくはオブジェクト 参 照 変 数 フィールド 記 述 がコンスラクタの デフォルト 動 作 を 決 める インスタンスメソッド: オブジェクトに 直 接 作 用 する 手 続 き オブジェクト: this で 表 記 ( 必 要 ならば) スタティック (static) メンバー スタティック 変 数 :クラスが 保 持 し 各 オブジェクトに 依 存 しない 変 数 スタティックメソッド: オブジェクトに 依 存 しない 手 続 き public static void main(string args[]) java クラス 名 引 数 そのクラスの main が 実 行 される クラス 毎 につけてよい 型 は void main(string[]) 引 数 型 を 別 に すると オーバーロード 左 記 では main は Triangle のメンバー 別 クラスで main を 動 作 させる 場 合 Triangle() と void show() の private 指 定 は 外 す(メソッドにアクセスできないから) 26 スタティックメンバーについて オブジェクト 指 向 では 先 んずオブジェクトとクラス 設 計 その 次 に 手 続 き 等 の 設 計 個 々のオブジェクトに 依 存 しない 定 数 変 数 メソッドがあ れば スタティックメンバーにする 具 体 にスタティックメンバーが 必 要 となる 場 面 例 : コンストラクタに 準 じた 作 用 を 持 つメソッド クラス 固 有 の 定 数 やオブジェクト(static final) 個 々の もの に 依 存 しないクラス 固 有 の 処 理 手 続 き 基 本 データ 型 に 関 する 型 変 換 や 数 値 関 数 など ラップクラス や Math で 提 供 される int Integer.parseInt(String), double Math.sqrt(double) 再 帰 呼 び 出 しに 関 する 補 足 C 同 様 Java でも 再 帰 は(static, instance methods ともに) 使 える 関 数 型 でやったようなスタイルでのメソッド 定 義 もOK 処 理 系 からみると 再 帰 と 非 再 帰 の 区 別 は 全 くない! 一 般 形 f の 定 義 本 体 中 で 別 のメソッド g を 呼 び 出 す 再 帰 特 に g = f なだけで 何 ら 処 理 は 変 わらない ただし 計 算 量 に 注 意 すること // フィボナッチの 数 列 f(n)=f(n-1)+f(n-2), f(1)=f(0)=1 class Fibonacci{ static int rec_fib(int n) {//この 場 合 指 数 爆 発 if (n==0 n==1) return 1; return rec_fib(n-1)+rec_fib(n-2); static int it_fib(int n) {// 繰 り 返 し // 定 数 領 域 線 形 時 間 if (n==0 n==1) return 1; int nminus1 = 1, nminus2 = 1, tmp; for (int i=1;i<n;i++) { tmp = nminus1; nminus1 = nminus1 + nminus2; nminus2 = tmp; ; return nminus1; 27 28

スパゲッティプログラム:よくあるパターンその1 static void main(string args[]) で 全 てを 書 こうとし 補 足 的 に static メソッドを 用 いる スパゲッティプログラムへの 道 処 理 対 象 と 手 続 きの 両 方 が 構 造 化 されていないため バグとり 修 正 再 利 用 機 能 の 追 加 が 困 難 書 き 直 した 方 が 早 い 修 正 箇 所 機 能 追 加 デバッグ 箇 所 を 特 定 しずらく ズルズルと 全 体 がついてくる スパゲッティ ( 結 局 多 くの 箇 所 を 食 べないとダメ もしくは 切 るのが 大 変 ) スパゲッティプログラム:よくあるパターンその2 Cで 書 いていたとき 構 造 体 とポインタに 苦 手 意 識 があり その 惰 性 でつい 配 列 だけで 書 いてしまう 関 連 する 配 列 や 変 数 がばらばらで 関 連 性 を 見 出 すためには スパゲッティ 状 態 コメントをつけて 対 処 する 人 も 多 い コメントはダラダラとつければ 良 いというものでない OOPL 構 造 体 と 参 照 は 簡 単 にかつより 安 全 にカプセル 化 できる: クラスを 定 義 し メソッドで 実 体 を 処 理 する 29 30 スパゲッティプログラム3: 例 static int nofitems = 0; // 商 品 数 static int[] stock = new int[10000], price = new int[10000]; static String[] itemname = new String[10000]; static void additem(int initialstock, int price, String itemname) { if (nofitems == 10000) { System.out.println("sorry, full list"); return; ; stock[nofitems] = initialstock; price[nofitems] = price; itemname[nofitem++] = itemname; まず 重 要 な 定 数 10000 のスパゲティ 後 で 商 品 コードも 必 要 になった 追 加 : static int[] code = int[10000]; 関 連 するメソッドの 引 数 や 本 体 部 の 修 正 static void additem( int initialstock, int price, String itemname, int codenumber) { code[nofitems] = codenumber; さらに 商 品 コードで 商 品 リストをソート code の 値 による 並 び 替 えで 同 時 に stock, price, itemname 配 列 も 操 作 修 正 箇 所 が 増 え しかもその 場 所 が 集 中 して いるとは 限 らない OOPLでは class Item { private int stock, price; Item(int initialstock, int price) { stock=initialstock; this.price=price; その 他 のメソッド class ItemList { private static int MaxNof = 10000; private int nof = 0; private Item[] list = new Item[MaxNof]; void add(item item) { if (nof!= MaxNof) list[nof++] = item; else System.out.println("full list"); code や name の 追 加 は 対 応 する フィールドとコンストラク タの 修 正 のみ add(item) は 修 正 の 必 要 なし 一 般 に 参 照 変 数 で 実 体 を 丸 ごと 渡 すので 関 数 メソッドの 引 数 は 少 なくなる また 例 えば ソートのときも item.code の 大 小 関 係 で 実 体 そのものを 並 び 替 えれば それでOK 例 えば 実 体 の 交 換 : Item tmp = itemlist[i]; itemlist[i] = itemlist[j]; itemlist[j] = tmp; 喩 え 話 : 中 に 色 々なものが 入 っている 箱 を 他 に 移 動 するとき ある 順 序 で 並 び 替 えるときに 箱 の 中 身 をバラバラにして 移 動 あるいは 並 べ 替 えますか? この 場 合 の 箱 ~ オブジェクト 箱 の 中 身 ~ フィールド クラスによるカプセル 化 使 い 方 は 商 品 名 フィールドが 追 加 されたとして 例 えば ItemList itemlist = new ItemList(); itemlist.add(new Item(100,1200," 製 図 用 シャープペン")); 集 合 やリストは java.util に 色 々 定 義 されている 自 分 で 適 宜 定 義 し ても 良 い インタフェースで 話 す キャスト を 使 う class MyList { private static int MaxNof = 10000; private int nof = 0; private Object[] list = new Object[MaxNof]; void add(object obj) { if (nof!= MaxNof) list[nof++] = obj; else System.out.println("sorry, full list"); 31 32

オブジェクト 指 向 のストーリー 最 初 から 必 要 なオブジェクトとクラスを 切 り 出 す 作 業 他 のクラスとの 切 り 分 け 分 節 化 部 品 化 先 んず 対 象 のモデリング 設 計 その 次 にアルゴリズムの 設 計 と 解 析 その 次 の 次 にプログラミング 技 法 優 れたモデル 優 れたパッケージ(クラスの 集 合 ) 保 守 拡 張 利 用 が 楽 本 日 の 演 習 問 題 1 整 数 を 要 素 とする 線 形 リスト( 要 素 の 並 びを 表 し 参 照 構 造 が 一 方 向 のもの)について 述 べた 一 方 CS 実 験 で 双 方 向 リストをCのポインタで 実 現 する 課 題 を 行 ったと 思 う 課 題 の 手 引 書 と 本 講 義 の 線 形 リスト Java プログ ラムを 参 考 にし 実 験 課 題 に 対 する Java のクラスを 定 めよ 33 34 0.1 演 習 問 題 2-2 本 日 の 演 習 問 題 3: 有 限 オートマトン 下 記 の2つのメソッドを 当 該 クラスに 追 加 し なさい ただし ( 平 面 上 の) 点 とベクトルを 区 別 するために ベクトルのクラス MyVector を 定 義 し それを 利 用 した 上 で 下 記 のメ ソッドを 当 該 クラスに 追 加 すること 右 図 は 受 理 機 械 としての 有 限 オートマトンF Aの 例 である ただし q0 を 初 期 状 態 q2 を 受 理 状 態 とする 受 理 する 言 語 は {(01) n n 1 1. Point クラスのメソッド: boolean checkpointonline(point p1, Point p2); パラメータで 与 えた2 点 と 自 オブジェクトが 一 直 線 上 にあれば true, otherwise false. 2. Triangle クラスのメソッド: double computearea(); ベクトルの 内 積 を 用 いて 面 積 を 計 算 し 出 力 演 習 問 題 解 答 : その 詳 細 レベル 仕 様 をかくつもりで 1. クラス 名 クラスの 各 メンバーの 仕 様 2. 各 メンバーの 仕 様 : (a) 変 数 であれば その 型 (クラスもしくは 基 本 データ 型 ) およびその 役 割 機 能 の 説 明 をつける (b) メソッドであれば 出 力 およびパラメータ 型 を 明 記 した 上 で その 動 作 について 正 確 な 日 本 語 で 記 述 すること た だし (1) メソッド 中 で ( 別 のオブジェクトに 対 し)メソッド 呼 び 出 しを 行 う 場 合 はそのことも 明 記 (2) スタティックの 場 合 は static を 明 示 Java 言 語 の 構 文 で 書 けるなら なお 良 い 1. FAには {0, 1 の 入 力 記 号 系 列 が 与 えられる 2. 各 状 態 で 入 力 系 列 σ0σ1σn 1 (n は 入 力 系 列 長 )を 受 け 取 る 挙 動 は: (1) 先 頭 記 号 σ0 により 次 の 状 態 qnext を 決 め (2) qnext に 残 りの 入 力 系 列 σ1σn 1 を 渡 し 以 後 の 処 理 を 委 ねる 3. 入 力 系 列 が 空 列 ( 記 号 が 残 っていない n =0)のときは 最 終 状 態 なら 受 理 それ 以 外 の 場 合 は 非 受 理 のメッセージを 出 力 し 全 体 の 処 理 が 終 了 課 題 : FAの 動 作 を 模 倣 するプログラム(クラス State)を 書 くとして 必 要 なフィールドとメソッドを 与 え その 型 ならびにその 挙 動 を 説 明 せよ メソッド 中 で 別 のオブジェクトに 対 するメソッド 呼 び 出 しを 行 う 場 合 はそのことも 明 記 すること ヒント: 各 状 態 をエージェントと 考 える ただし 依 頼 先 ( 次 の 状 態 ) か ら 結 果 をもらう 必 要 はこの 場 合 ない 完 全 に 処 理 を 委 ねる 有 限 オートマトンは 演 習 でやったと 思 うが 自 動 販 売 機 の 状 態 遷 移 モデル 文 字 列 検 索 における 正 規 表 現 など 広 く 使 われている 35 36