コンテンツへスキップ

レッスン7:① オブジェクト指向と手続き型言語との比較


概要

オブジェクト指向は、手続き型言語のデメリットを解決するために誕生しました。そこでまずは、手続き型言語について説明したいと思います。

lesson7-1-1
手続き型言語のイメージ

上図のように手続き型言語は、システムの「利用者」が主人公でした。利用者が操作した内容によって、システムは処理を実行していきます。処理の順序に沿ってプログラムを書いていけばよいので、システムを構築する際には分かりやすかったかもしれません。しかし、手続き型言語では、データがどこで読み込まれていて、どこから書き込まれているか、といった「データ」の流れが把握しずらいというデメリットがあります。また、同じ「処理」がシステムの様々なところで書かれる(書かれやすい)、といったことも問題でした。

lesson7-1-2
オブジェクト指向のイメージ

手続き型言語の問題点を解決するために、オブジェクト指向は誕生しました。まず、システムの主人公は「利用者」から「オブジェクト(モノ)」に変わります。上図の場合、プレイヤーが操作するキャラクターや宝石などが「オブジェクト」に該当します。そしてオブジェクトは、自分に関する「データ」と「処理」を持ちます(カプセル化)。

基本的には、自分のもっているデータは自分の処理の中からしか変更できないように設計します。こうすることで、どこからデータが書き込まれたのか分からない、という問題を解決します。また、カプセル化をすることでオブジェクトごとに処理が整理されるので、同じ処理がシステムの色んな所で記述されるという問題も解決できます。

オブジェクト指向は、手続き型言語のデメリットを解決してくれますが、どのようにオブジェクトを作るかといった設計が必要になります。手続き型言語では処理内容さえわかればすぐにプログラミングできるので、手続き型言語に比べるとオブジェクト指向は難しく感じるかもしれません。それでも、システムの保守性や可読性はオブジェクト指向のほうが優れているので、オブジェクト指向に慣れてくればメリットを実感できると思います。そして、Unity で使用する C# はオブジェクト指向言語です。ぜひ、使いこなせるようになりましょう。

次に進む

次は、クラスとカプセル化について学びます。