オブジェクト プログラミング 第1回
この授業の主題 オブジェクト指向プログラミング データ構造とアルゴリズム 設計言語としてのUML
この授業の目標 プログラムで、自分のアイディアを表現できるようになる そのために、 アイディアを明確化する 手順に分解する 実行可能な形式に具体化する
教科書 Javaで学ぶアルゴリズムとデータ構造 Robert Lafore(著) 岩谷 宏(訳) SOFTBANK(1999) 岩谷 宏(訳) SOFTBANK(1999) 定価4,800円
なぜデータ構造とアルゴリズムが重要なのか? 現実世界のデータを記録したり表したりする。 (例えば、工場の部品在庫状況を適切なデータ構造で表現し、適切なアルゴリズムで操作したい。) プログラマのツールとして (例えば、プログラムをより速くするために) 現実世界の現象をうまくモデル化したい (例えば、会社の人事組織を最もぴったり表せるデータ構造を使いたい) 教科書より抜粋
オブジェクト指向プログラミング 手続き型言語の問題点 編成単位が原始的である。 課題を複数の機能に分けてそれらを編成する、というプログラムの構成は、それらの機能が操作するデータのことをまったく考えていません。 実世界のモデルを作る機能が貧弱である。 関数は仕事を実行し、データは情報を収納します。しかし、現実世界の物事は仕事と情報の両方を持っている場合がほとんどである。 教科書より抜粋
IT革命に必要な能力 1. タッチタイピング 反射運動能力 2. プログラミング 計画作定能力
プログラミングがなぜ必要か 1. コンピュータの本質が分る 2. ITを用いたビジネスモデル作成 ができる 1. コンピュータの本質が分る 2. ITを用いたビジネスモデル作成 ができる 3. ビジネスに必要な情報システム(IS) を発注できる 4. 使用するISの思想が理解できる (メンタルモデルを持つ)
プログラミングは易しい 1. 6歳の子どもが教えれば覚える 2. 18歳の大学生が教えても覚えられない 1. 6歳の子どもが教えれば覚える 2. 18歳の大学生が教えても覚えられない 3. IT教育は初等・中等教育で行なうのが世界標準
ハンガリーの幼児の作品 (5,6歳)
ハンガリーの幼児の作品(2)
日本の幼児の作品
ソフトウエア開発(1) プロジェクト依頼者の考えていたこと プロジェクト要求書に書かれていたこと システム分析者が設計したもの プログラマが作ったプログラム 利用者側に導入されたプログラム 利用者が要求していたもの University of London Computer Centre Newsletter No.53,March 1973
ソフトウエア開発(2) 分析 設計 実装 UML (Unified Modeling Language) Java
UMLとは? Unified Modeling Language Booch法、OMT法などのオブジェクト指向設計の方法論の記法が統一(Unifiy)され、1997年にOMGにて標準化された。 オブジェクト指向の分析/設計のための言語 現在UML1.2
UMLのダイアグラム ユースケース図 クラス図 相互作用図 シーケンス図 コラボレーション図 状態遷移図 アクティビティー図 実装図 コンポーネント図 配置図 状態A 状態B 詳しくは、 (株)オージス総研「かんたんUML」翔永社 1980円 を勉強してみよう
今学期のテーマ:自動販売機 自動販売機の プログラミングを通じて オブジェクト指向 プログラミングの基礎を 学んでいきましょう。
今日のお題 ー状態遷移図ー 今日は相互作用図の一つである状態遷移図を 描いてみよう! 自動販売機をテーマとします。 電源を切った 今日のお題 ー状態遷移図ー 今日は相互作用図の一つである状態遷移図を 描いてみよう! 自動販売機をテーマとします。 ボタンが押されるのを待つ 商品を出す ボタンが押された 商品が取り出し口に出た 電源を切った
状態遷移図とは? あるオブジェクトの状態の変化を表した図 例えば、右の図は、 開始状態 状態A 状態A 状態B 状態B 終了状態 と、状態が変化していくことを表している
記号の意味1(状態) 状態 一つの状態を表す 角丸四角の中に状態の名前を書く 「ボタンが押されるのを待つ」状態を表す
記号の意味2(遷移) 状態遷移 ある状態から別の状態に変化する(遷移する) ことを表す 矢印で表す ボタンが押されるのを待つ 商品を出す
記号の意味3(イベント) イベント 状態遷移のきっかけ 状態遷移の矢印のそばに書く ボタンが押されるのを待つ ボタンが押された 商品を出す 商品が取り出し口に出た ボタンが押されるのを待つ ボタンが押された 商品を出す
記号の意味4(ガード条件) イベントを条件分岐させることを表す [ ]内に書く お金が入れられるのを待つ ランプ点灯 お金が入れられた [投入金額 ≧120円] お金が入れられた [投入金額 <120円] ランプ点灯
記号の意味5(開始状態) 開始状態 一番最初の状態 黒丸で表す 商品が取り出し口に出た ボタンが押されるのを待つ ボタンが押された 商品を出す
記号の意味6(終了状態) 終了状態 一番最後の状態 中黒の二重丸であらわす 電源を切った 商品が取り出し口に出た ボタンが押されるのを待つ ボタンが押された 商品を出す
自動販売機の状態遷移図 この図から、自動販売機の動作が以下のようなものであることが分かる。 ・ 自動販売機はボタンが押されるのを待っている ボタンが押されるのを待つ 商品を出す ボタンが押された 商品が取り出し口に出た 電源を切った この図から、自動販売機の動作が以下のようなものであることが分かる。 ・ 自動販売機はボタンが押されるのを待っている ・ ボタンが押されたら商品を出して、その後再びボタンが 押されるのを待つ。 ・ 電源を切ったら自動販売機は停止する。
演習 以下のような自動販売機の状態遷移図を書いてみよう。 ・自動販売機はお金が入れられるのを待っている ・120円以上のお金が入れられたらランプを点灯する ・投入金額が120円未満のときは何も起こらず、待っている ・ランプが点灯している時にボタンが押されると商品を出す ・もし残金が120円以上残っていたら再びランプを点灯する ・残金が120円未満の場合は、お釣りを出す ・また、ランプが点灯している時にお釣りを出す操作が なされたら、お釣りを出す
この授業のホームページ http://www.crew.sfc.keio.ac.jp/lecture/index.html 来週までの宿題 ラップトップにJbuilderをダウンロードしておいてください。(やり方はwebを参照) 来週はラップトップを持ってきてください。
解答例 前ページの自動販売機の状態遷移図 お金が入れられるのを待つ お金が入れられた[投入金額 ≧120円] お金が入れられた[投入金額 <120円 ] ランプ点灯 おつりを出す操作がなされた 商品が出た [残金 ≧120円 ] ボタンが押された おつりを出す 選択された商品を出す 商品が出た [残金 <120円 ]