skillup

技術ブログ

アーキテクト設計全般

オブジェクト指向について その2

投稿日:2016年6月1日 更新日:

前回のエントリーのように、データとロジックを一体で考えるのは、処理状の有効性のみならず、よりユーザー側に近い処理をかくということにもつながります。

日付の問題に関してもintやshortよりはLocalDateのほうが、LocalDateよりもDateofBirthのほうが人間が直接扱うには適しています。技術者の視点としてはDateofBirthのようにソフトウェアを利用する人たちの関心ごとを直接表現できるクラスを発見し、実装することなのです。

ドメインオブジェクト

誕生日のようにソフトウェアを利用する人たちの関心ごとに直接対応するオブジェクトを「ドメインオブジェクト」と呼びます。

オブジェクト指向のプログラミングではこのドメインオブジェクトの発見と実装が主な課題です。ドメインオブジェクトは利用者の関心ごとに直接対応するため、クラス名なども利用者のことばで語られるようになります。

このため、機能の修正や拡張の対象となる箇所がクラス名から簡単にかつ正確に特定できます。また利用者の関心後の単位にデータとロジックを整理したドメインオブジェクトは変更の副作用を減らします。

パッケージ宣言

またクラス以外にも変更の対処個所を特定したり、影響範囲を狭くコントロールする仕組みがパッケージ宣言です。

コレクション型の副作用

コレクション型のデータはソフトウェア変更を難しくする原因になりがちです。

コレクションの操作はループ処理が多く、バグが混入しやすい、というデメリットがあります。

そのため、コレクションを扱うときにはコレクション型のインスタンス変数と、そのコレクション型を操作するロジックを一か所に集めた独自のクラスを作るのがオブジェクト指向らしいやり方です。

ファーストコレクションがない思想のプログラム

ファーストコレクションを反映したプログラム

こうすることで変更の影響範囲をせまく限定することができます。

-アーキテクト設計全般

執筆者:


  1. […] その1 オブジェクト指向 その2 オブジェクト指向 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

DIとDIコンテナについて再考

今までも何度かやったDI(Dependency Injection = 依存性の注入)について。 以前のリンク PHPにおけるDI スコープアノテーションとCDIについて Contents1 DIとは …

no image

オブジェクト指向について その1

ちょっと最近、仕事でソースの書き方がいい加減になってきたのでオブジェクト指向について考え方を再確認しようと思います。 参考文献 SoftWareDesign 2015年9月号 何も考えずにプログラムを …

no image

デザインパターンの使い所

昔からデザインパターンは勉強しておりましたが、使い所などで悩むことが多かったです。 現在の現場でいろいろなパターンを見させていただき、なんとなくではありますが使い所がわかったので、まとめてみようと思い …

no image

キャッシュの使い所とメリデメに関して(主に一覧系の処理に関して)

現在のプロジェクトがかなりの規模のECサイトになるため、正確性とパフォーマンスのトレードオフなどが先日議題にあがりました。 完全なトレードオフではないのかもしれませんが、比較的あちらをたてればこちらが …

no image

Saml認証とSSO(シングルサインオン)について

現在の案件ではSaml認証でSSO(シングルサインオン)をつかっているのでこちらについての調査を。 Contents1 Saml認証とは2 Oauthとの違い3 仕組み4 Saml認証のメリット4.1 …

アーカイブ