ソフトウェア工学 理工学部 情報システム工学科 新田直也 演習問題1の解答例 入庫処理のDFD 積荷票 倉庫係 在庫ファイル 更新処理 出庫指示書 出庫指示書 作成処理 出庫依頼 更新情報 在庫ファイル 在庫不足リスト 新規出庫 判定 酒屋の在庫問題のDFD(入庫処理) 倉庫係 演習問題2の解答例 クリーニング屋さんのDFD(料金計算処理) 名前 お客さん 電話番号 料金 料金計算 処理本体 チケット 発行処理 チケット お客さん 整理番号 品名 加工オプション タグ 発行処理 料金表 最新整理番号 クリーニング屋さんのDFD(料金計算処理) 演習問題2の解答例 クリーニング屋さんのDFD(タグ発行処理) 品名 タグ お客さん タグ発行処理 加工オプション タグ 発行処理 整理番号 クリーニング屋さんのDFD(タグ発行処理) クリーニング 屋さん店員 オブジェクト指向言語の歴史 プログラミング言語Simula67が実質上の起源. 1970年代Smalltalkで発展. Smalltalk は XEROX パロ・アルト研究所でアラン・ケイ らによって開発された.「オブジェクト指向」という言葉はア ラン・ケイによると言われる. 1979年 C++ 1991年 Java 2000年 C# オブジェクト指向パラダイムとは オブジェクト指向言語の発展に伴って形成されてき たソフトウェア開発上の概念.オブジェクト指向分析, オブジェクト指向設計など,プログラミング以外の工 程でも用いられる. ソフトウェアを処理や関数ではなくオブジェクトに分 解する. オブジェクト指向の構成概念は3つ カプセル化(抽象データ型) 継承 多相性(ポリモルフィズム) 構造化パラダイムから オブジェクト指向へ 構造化パラダイムではソフトウェアは入出力を持つ 処理(関数)に分解された. 入力 処理 出力 データ 基本的に,計算結果を出力したら何も残らない. → 科学技術計算や事務処理などの「計算」が中心と なるアプリケーションに向いている. 処理内容よりも残存するデータの方が重要なのでは? 入力 処理 データ 出力 酒屋の在庫問題を例に 酒屋の在庫問題では,在庫ファイルと在庫不足リス トが処理後も残存するデータである. 残存するデータに処理がくっついていると考えよう. 倉庫係 積荷票 入庫処理 出庫指示書 倉庫係 在庫ファイル 在庫不足リスト 依頼者 出庫依頼 出庫処理 在庫なし連絡 依頼者 カプセル化 データに(それを操作する)処理をくっつけたものをオブジェク ト(クラス)という.またそのときの処理をメソッドという. データと処理を一体化することをカプセル化という. 情報隠蔽: カプセル化を行い,さらにデータと処理内容を外 部から隠すこと. 倉庫係 積荷票 入庫処理 出庫指示書 倉庫係 酒屋オブジェクト 在庫ファイル 在庫不足リスト 依頼者 出庫依頼 出庫処理 在庫なし連絡 依頼者 オブジェクトとメッセージ オブジェクトは互いに他のオブジェクトのメソッドを呼 び出すことができる.メソッドの呼び出しをメッセージ 送信ということもある. メソッド1 呼び出し オブジェクトA オブジェクトA メソッド2 オブジェクトB メソッド2 オブジェクトB 酒屋オブジェクトシステム オブジェクト指向では処理の構造が不明確になる代 わりに,データ間の関係が明確になる. 読む 倉庫係 オブジェクト 入庫処理(積荷票) 出庫指示 出庫処理(出庫依頼) 依頼者 オブジェクト 在庫ファイル オブジェクト 書く(データ) 酒屋 オブジェクト 読む 書く(データ) 在庫不足 リスト オブジェクト なぜカプセル化をするのか データを中心に処理をまとめると理解し易い. 一緒にまとめられている処理を眺めるだけでほぼ動作を理 解することができる. delete(順番) add(要素) List オブジェクト get(順番) size() データを中心に処理をまとめると再利用し易い. あるデータ構造を別の場所でも使いたい場合,カプセル化 されていれば,そのデータ構造に対する処理も一緒につい てくる. データ構造の変更に対して強い. 隠蔽しているデータの構造が変わっても,メソッド群(インタ フェース)さえ変わらなければ,使う側には影響が及ばない. オブジェクトの例 Windowシステムが好例 Windowオブジェクト スライドオブジェクト 矩形オブジェクト 線分オブジェクト 円オブジェクト ツールバーオブジェクト クラスとインスタンス 同じデータ構造を持つものがたくさんある場合. データ構造やメソッドの定義→クラス 定義に基づく1つ1つの個体→インスタンス(オブジェクト) データ 拡大縮小 円クラス 円インスタンス 拡大縮小 円 インスタンス 移動 半径 中心座標 色 移動 拡大縮小 円インスタンス 移動 拡大縮小 円インスタンス 移動 Javaにおけるオブジェクト指向 クラスの定義 クラス名 class Circle { double radius; double x; double y; int color; // 半径 // x座標 // y座標 // 色 フィールド定義, メンバ定義 void move(double px, double py) { x = px; y = py; } } void resize(double scale) { radius = radius * scale; } メソッド定義 本日のまとめ オブジェクト指向の基本概念: カプセル化 継承 多相性 カプセル化について. オブジェクトとメソッド(メッセージ) クラスとインスタンス
© Copyright 2024 ExpyDoc