skillup

技術ブログ

プログラミング全般

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

投稿日:

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

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

ドメインオブジェクト

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

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

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

パッケージ宣言

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

コレクション型の副作用

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

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

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

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

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

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

-プログラミング全般

執筆者:


comment

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

関連記事

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

ポート解放

新サーバー構築をしていたときにwebサーバーとしてnginxを立てましたが、外部から接続ができません。 500エラーすら吐かれず、ログも残っていません。 こんな時はホスト自体にアクセスが届いていない可 …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …

no image

オブジェクト指向 プレゼンテーション層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。 Contents1 プレゼンテーション層の考え方1.1 要点1. …

no image

読みやすいコードについて

コードリーディングにおいて聖典となっているリーダブルコードについて読んでいこうかと。 ただ読んでいくだけではつまらないので、自分なりの考え方も書いていきます。 Contents1 優れたコードの定義1 …