Slide 1

Slide 1 text

CleanArchitecture5章&6章

Slide 2

Slide 2 text

第5章オブジェクト指向プログラミング オブジェクト指向とは? カプセル化とは? 継承?ポリモーフィズム?

Slide 3

Slide 3 text

そもそもオブジェクト指向とは オブジェクト指向(object oriented)・・・モノ中心、モノ思考 Q.できた目的 A.ソフトウェアの保守・再利用をしやすくするため Q.どうやって実現するのか A.部品の独立性を高める(モノ思考っぽい)ことで修正が起きたときの影響範囲を最小 限にし、他のシステムでの再利用を可能にする

Slide 4

Slide 4 text

カプセル化 ● 実装ファイルの要素にアクセスすることができない ● 外側にはデータは見えないように ● プライベートなデータメンバー 「しかしオブジェクト指向がカプセル化に依存していることを受け入れるのは難しい」と本 書では説明している。 モノ思考なのでデータの改竄や盗み見が起きないようにするためにカプセル化があるの かなと思った。

Slide 5

Slide 5 text

継承 ● スコープ内の変数と関数のグループを再度宣言したもの ● クラスの共通部分を別クラスにまとめる仕組み →コード重複を排除できる 共通クラス:スーパークラス それを利用するクラス:サブクラス

Slide 6

Slide 6 text

ポリモーフィズム ● ポリモーフィズム=いろいろな形に変わる ● デバイス非依存を実現 ● メッセージの送り方を共通化する インターフェイス経由で関数を呼び出している →サブルーチンの呼び出し側を共通化する (依存関係逆転p.68のところでも言及していましたが。。。)

Slide 7

Slide 7 text

5章まとめ OOとは? ポリモーフィズムを使用することで、システムにある全てのソースコードの依存関係を絶 対的に制御する能力 私個人的なOOの印象 ● 共通化できる処理は外に出して無駄を省く ● 再利用可能を実現することを目的とした考え方

Slide 8

Slide 8 text

第6章 関数型プログラミング ● 関数型プログラミングは代入に規律を課すものである ● 関数型言語の変数は変化しない 不変コンポーネント ● 可変変数を使わずに純粋に関数的にタスクを行う ● 変数の状態の変更を許可している1つ以上のコンポーネントと通信 関数=メソッドみたいな感じ?

Slide 9

Slide 9 text

感想 小さなコンポーネントで処理やクラスを切り出した方がいい 関数とメソッドの違いがよくわからないんですが誰か説明してください AlanTuringって聞いたことあると思っていたらエニグマの人だった

Slide 10

Slide 10 text

AlanTuring?エニグマ? ● 第二次世界大戦の時にナチスドイツが暗号を送っていた→エニグマ ● その暗号を解読した人がAlanTuringさん ナチスがどこに攻撃をするのか指示をするメッセージが毎日(朝とか?)暗号として送ら れていた。その暗号を解読した話ですが暗号化のロジックだったりエンジニアが聞いた ら今まさに使ってる!とびっくりするような内容です。PublicKeyの概念など昔からあるん だなと思った。