見出し画像

オブジェクト指向を学ぶ(OPPって何者だっけ?)

こんにちは。SESエンジニアのつくねん。です。
開発でクラスやフレームワークを使ってはいるけれども
いまいち、「オブジェクト指向」とはなんなのか理解できてなかったので
現場に慣れてきたこのタイミングで再度学習してみました。
参考にしたのは「オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識 平澤 章(著)」です。


この本を選んだ理由

本の構成が「導入」「プログラミング技術」「応用技術」「ゴール」「特別解説」となっており、オブジェクト指向プログラミングが使われるようになった背景から特徴、仕組みなど上流工程から下流工程まで使える知識が幅広く説明されていました。
実際にどう書くべきか(how)というよりはタイトルの通りなぜ(what)を中心に学べそうだったためこの本に決めました。


オブジェクト指向ってどんなもの?

今回はOOP(オブジェクト指向プログラミング)がどんなものなのかを簡単にまとめます。

■ OOPにいたるまでの歴史
機械語→アセンブリ言語→高級言語→構造化言語→OOPのように進化。
高級言語までは機械語をどう使いやすく実現するか、
構造化言語からは保守性を向上させるために進化していった。

■ OOPが実現したこと
構造化言語のグローバル変数問題の解決と再利用性の向上。

■ OOPで提供される仕組み
クラス、ポリモーフィズム、継承、etc..
→プログラムの無駄を省いて整理整頓するための仕組み。

-- クラス
変数、関数をまとめる。
クラスの内部だけで使う変数、メソッドを隠せる。
クラス定義からインスタンスを複数つくれる。
上記のことができる仕組み。

-- ポリモーフィズム
呼び出す側のロジックを1本化する仕組み。
→呼び出す側が増えても呼び出される側を修正する必要がない。

-- 継承
クラスの共通部分を別クラス(スーパークラス)にまとめて
別クラスからその定義を利用することができる(サブクラス)仕組み。

OOPが実現した再利用部品群
クラスライブラリ:汎用的な機能を持つクラスをたくさん集めたもの。
フレームワーク:アプリケーション基盤or特定目的のための再利用部品群。
コンポーネント:OOPのクラスより粒度が大きい。機能の独立性が高く、内部の詳細を知らなくても利用できるもの。

デザインパターン:クラス構造に名前をつけてパターン化したもの。優れた設計アイデアをまとめたもの。

さらに進化したOPP機能について
パッケージ:クラスをまとめる仕組み。
例外:戻り値と違う形でメソッドから特別なエラーを返す仕組み。
ガベージコレクション:不要なインスタンスを削除し、メモリ領域をあける仕組み。

おわりに。

ごく一部ですが、本から学んだことを書いてみました。
OPPは保守性を高めようと進化したカタチで、今までにないクラスやポリモーフィズム、継承という仕組みがあるからこそ、スッキリかけて、再利用もできるというわけですね。
オブジェクト指向はキーワードがかなり多いので、各キーワードごとの関連性がはっきりした気がします。メモリやUML、オブジェクト指向設計のコツなども書かれていたのでどこかのタイミングでまとめたいものです。。。

この記事が参加している募集

最近の学び

この記事が気に入ったらサポートをしてみませんか?