オブジェクト指向・UML勉強会 ~第2章 オブジェクト指向的な考え方~ 九州大学 システム情報科学府 荒木研究室 修士1年 平地 智 1 目次 オブジェクト指向的な考え方 実装とインターフェイスの相違 抽象的に考えるインターフェイスの設計 インターフェイスの提示を最小限にする 2 オブジェクト指向的な考え方 手続き型からオブジェクト指向への移行 新しい思考プロセス(オブジェクト指向パラダイ ム)の習得 手続き型開発 オブジェクト指向 パラダイムの導入 オブジェクト指向開発 手続き型言語 非オブジェクト指向開発 オブジェクト指向言語 3 目次 オブジェクト指向的な考え方 実装とインターフェイスの相違 抽象的に考えるインターフェイスの設計 インターフェイスの提示を最小限にする 4 実装とインターフェイスの相違 クラスの設計におけるカプセル化 ユーザーが知る必要があるものとそうでない ものとを区別 不必要なデータはユーザーから隠蔽 5 カプセル化(1) カプセル化の例1:発電所 オブジェクト インターフェイス 実装 トースターは、電気の発電方法(実装)に関係なく コンセント(インターフェイス)を用いることで電気を得る 6 カプセル化(2) カプセル化の例2:自動車 ドライバーはハンドルというインターフェイスを知っており、 自動車の内部の実装方法を知る必要はない 7 インターフェイス ユーザーに提供されるサービス ユーザーに知らせる必要があるものだけを 含める 例:トースターのプラグを電気コンセントに差し 込む操作(メソッド) 8 実装 ユーザーには公開されない インターフェイスを変えなければ実装は変更で きる インターフェイスの仕様に準拠する 9 インターフェイスと実装の例(1) 考える対象 Oracleデータベースの読み取り (DataBaseReader)クラス Oracleデータベースのレコードを取得するJava クラスの記述 ユーザーとしてデータベースを使用するプログ ラマを想定 10 インターフェイスと実装の例(2) プロジェクトの要件をリストにする データベースに接続できる データベースへの接続を切断できる データベースの最初のレコードにカーソルを合 わせられる データベースの最後のレコードにカーソルを合 わせられる … 11 インターフェイスと実装の例(3) ユーザーとクラスとの関係 プログラマ(このクラスのユーザー)は、 クラスを用いるために他に知るべき情報はない データベースを開くコードを記述できる必要はない 正しい値が返され、操作が正しく実行されさえすれ ばよい プログラマのアプリケーションは、 クラスを用いてデータベースを開く 12 インターフェイスと実装の例(4) 要件を元にインターフェイスを作成 •このクラスのメソッドは 全てパブリック •実装は示されていない DataBaseReader +open:void +close:void +goToFirst:void +goToLast:void … 13 インターフェイスと実装の例(5) インターフェイスメソッドのコード Public void open(String name){ /* アプリケーション固有の処理 */ /* データベースを開くOracle APIを呼び出す */ /* アプリケーション固有の処理 */ }; データベースを開く APIが変わっても問題ない Public void open(String name){ /* アプリケーション固有の処理 */ /* データベースを開くSQLAnywhere APIを呼び出す */ /* アプリケーション固有の処理 */ }; 14 インターフェイスと実装の例(6) ユーザーコードとデータベース ユーザーコード1 ユーザーコード2 インターフェイス Oracle DB2 SQL Anywhere 15 目次 オブジェクト指向的な考え方 実装とインターフェイスの相違 抽象的に考えるインターフェイスの設計 インターフェイスの提示を最小限にする 16 抽象的に考えるインターフェイスの設計 再利用可能なクラス 抽象的なインターフェイスを持つ傾向 右折して 空港まで お願いします まっすぐ 行って 左折して <抽象的> <非抽象的> 右折して 17 目次 オブジェクト指向的な考え方 実装とインターフェイスの相違 抽象的に考えるインターフェイスの設計 インターフェイスの提示を最小限にする 18 インターフェイスの提示を最小限にする 本当に必要なものだけを提供する クラス設計の際に考えるべきこと ユーザーの指定 オブジェクトの動作 環境による制限 パブリックインターフェイスの指定 実装の特定 19 ユーザーの指定 システムを使用するのがユーザー 例:タクシー タクシーオブジェクトにメッセージを送るのがユーザー 運転手、客 利益が上がるなら サービスを提供する 高すぎなければ サービスを受ける 20 オブジェクトの動作と環境による制限 オブジェクトの動作 ユーザーの観点に立って以下を考える 各オブジェクトの目的 オブジェクトが正しく動作するための要件 環境による制限 オブジェクトの動作に制限 例:コンピュータのハードウェア、タクシー 21 パブリックインターフェイスの指定 ユーザーオブジェクトのパブリックインターフェイ スを決定 タクシーオブジェクトの使い方を考える タクシーに乗り込む タクシーの運転手に行き先を告げる … インターフェイスがクラスの操作性に寄与するか判断 1つのインターフェイスで1つの振る舞いをモデル化 インターフェイスの例 Cabbie +enterTaxi:void +specifyDestination:void … 22 実装の特定 パブリックインターフェイスではないものは 全て実装 パブリックでないメソッドの全体(シグニチャ+ コード) パブリックメソッドのコード 例 Public void a(int x){ }; /* コード */ Private void b(int y){ /* コード */ }; インターフェイス 実装 23 まとめ インターフェイスと実装の違い 抽象的に考える ユーザーには最小限のインターフェイスを 提示する 24
© Copyright 2024 ExpyDoc