JPIN#2.5
最初に
これはJPIN#3に向けた予習と今までの講義で疑問に思った点や分からなかったことを自分なりにまとめたものである
知識としてはあさく間違いもあるので参考にしないでください
オブジェクト指向
オブジェクト指向って?
オブジェクト指向とはデータとそれに対するメソッド(処理)をひとまとめにしたものである
ここで出てくるメソッドは前回の講義であったようなある命令文の1ブロックである
さてここでデータだが、ここで出てくるデータの意味はメソッドでどのような値が手に入るかということである
ドラクエで例えると、敵を攻撃しますよね?
その動作には多くのメソッドが必要です
・コマンドを選ぶメソッド
・攻撃対象を選ぶメソッド
・勇者と敵のステータスを比較するメソッド
・ダメージ計算するメソッド
・的のHPから攻撃ダメージを引くメソッド
などなど多く存在します
ここで最初にでてきた敵を攻撃するのがデータとなる
なのでオブジェクト指向とはどんな手段でどういった結果を手に入れるといったことではないだろうか
カプセル化
オブジェクト指向ではメソッドとデータが一括りにされている
このことでオブジェクトを使用するときにその中身を知る必要がないのです
ただしオブジェクトの中に入っていない処理は出来ないのがデメリットです
ドラクエで例えると、
敵を攻撃するというオブジェクトがあるとします
それは色々なところで活用できて敵をスライムやデスタークなど多くのものに変えることもできます
そのときにオブジェクトの中身は知らずに敵の情報だけ上げちゃえばいいのです
しかし、この敵を攻撃するという中に攻撃するエフェクトを追加しようとしても元々入っていなかったらできません
その場合はオブジェクトを書き換えるか他のオブジェクトと連携させる必要があるのです
これがカプセル化です
なのでカプセルの大きさは人それぞれでどこまでの動作を一括りにするかによってオブジェクトは同じ内容でも
数を増やすこともできますし、一つにすることができます
データ隠蔽
先ほど出たカプセル化の状態であっても外部のオブジェクトによって中身を書き換えられてしまうことがある
それを防ぐのがこのデータ隠蔽である
オブジェクトの中にあるメソッドをなかったことにして外からのデータ改変を防ぐ
これによりカプセル化を維持することが可能となる
情報隠蔽
オブジェクト指向の基本4原則
なんのことかわからない・・・
データ隠蔽
情報隠蔽抽象化
UMLとモデリング
UML
「Unified Modeling Language(ユニファイド・モデリング・ランゲージ)」の略である
これは何かオブジェクトを制作するときに作る作り方のルールである
作るときは様々な人クラスをカプセルを作りそれを一つに結合して大きなものを作る
そこでそれぞれがそれぞれの書き方をしているとチェックするのも大変だし、修正するのも手間である
そこで大まかな作り方を決めるのがUMLである
このクラスを作るにはこのAメソッドとBメソッドを使おうなど事前に決めておけば読み解く方も楽である
モデリング
モデリングとは先ほどのUMLをダイアグラムなどを用いて可視化するということでしょうか・・・
オブジェクト図
オブジェクト図とはUMLモデリングの一つでオブジェクトを作る際にどういった内容で書くのかを具体化した図である
オブジェクト間の動きや連携を図に書いて可視化してわかりやすくまとめるもの
クラス図
これもUMLモデリングの一つでクラス間の相互関係を可視化させるためのものである