MEMBER BLOG

BLOGメンバーブログ

2016.06.02
ITプロパートナーズ メンバーブログ
オブジェクト指向と抽象化思考

こんにちは。ITプロのシニアなスポーター田村です。

エンジニアなのに身体を動かす内容ばかりブログに書いていたので、今回は少しエンジニアっぽいことを書いていこうかと思います。


最近、オブジェクト指向について基礎的な部分を復習していました。
オブジェクト指向で現実世界を捉えると、様々な分野で応用し、活用できそうなので簡単に紹介していきます。


オブジェクト指向による具体化と抽象化


オブジェクト指向には様々な要素がありますが、全て説明しているとテキスト量が膨大になりそうなので、ここでは基礎中の基礎である「クラス」と「インスタンス」について簡単に説明します。


ものすごく乱暴に書くと
「クラス」=「抽象化」
「インスタンス(オブジェクト)」=「具体化」
になります。
(参考:http://www.itmedia.co.jp/im/articles/0703/06/news125_5.html)


犬で例えると
「クラス」=「一般的な犬の特徴を定義(例:4本足、吠えるなど)」
「インスタンス(オブジェクト)」=「現実世界に存在する一般的な犬(例:うちのタロー、となりのポチなど)」
のようなイメージです。


(ただ実際にプログラミングを行うと現実世界との対比が困難な部分は多くあります)


クラス継承と抽象度


クラスの特徴として既に定義されたクラスの特性を引き継いで新しいクラスを定義することができます。これを「継承」と呼びます。


犬で例えると「犬クラス」の特性を引き継いで「柴犬クラス」を定義することができます。
この性質により「柴犬クラス」のインスタンスから「犬クラス」の情報を利用する事もできます。


また「犬」「猫」といった分類から共通事項を抜き出して抽象化し「哺乳類」、さらに抽象化して「動物」などの抽象概念も考えられます。


「犬」→「柴犬」の関係では抽象度が低くなり、情報量が増えていく(「犬の情報」+「柴犬固有の情報」)特徴があります。
「犬」→「哺乳類」→「動物」の関係では抽象度が高くなり、情報量は少なくなる傾向があります。


抽象化するメリット


個人的には抽象化により情報量が減り、普遍的な規則を見いだせる部分にメリットを強く感じています。
具体的な内容を一から学ぶ場合と比べて、情報量が少ないので効率的に学べ、様々な分野にも応用できるので。


バドミントンなどの動きを学ぶ際も、動物の体の使い方を取り入れると一気に上達する場合がありますw


またシステム開発では抽象化によりフレームワークの実現など汎用性が高くなり、再利用が可能となるので開発工数が削減できるなどのメリットが考えられます。


プログラミングの知識を習得する際、すぐにプログラムを書きはじめるのではなく、まずオブジェクト指向による分析・設計手法(UML)を学ぶことで、ビジネスなどの現場でも幅広く活用できるのではないかと思いました。


Archive
2016.11.28
ITプロパートナーズ メンバーブログ
2016.11.21
ITプロパートナーズ メンバーブログ
2016.11.19
ITプロパートナーズ CEOブログ
2016.11.15
ITプロパートナーズ メンバーブログ
2016.11.11
ITプロパートナーズ メンバーブログ
2016.11.04
ITプロパートナーズ メンバーブログ
2016.11.03
ITプロパートナーズ メンバーブログ
2016.10.28
ITプロパートナーズ メンバーブログ
2016.10.27
ITプロパートナーズ メンバーブログ
2016.09.29
ITプロパートナーズ メンバーブログ
2016.09.27
ITプロパートナーズ メンバーブログ
2016.09.23
ITプロパートナーズ CEOブログ
2016.09.20
ITプロパートナーズ メンバーブログ
2016.09.13
ITプロパートナーズ メンバーブログ
2016.09.13
ITプロパートナーズ メンバーブログ
2016.09.11
ITプロパートナーズ CEOブログ
2016.09.08
ITプロパートナーズ メンバーブログ
2016.09.06
ITプロパートナーズ メンバーブログ
2016.09.01
ITプロパートナーズ メンバーブログ
2016.08.29
ITプロパートナーズ メンバーブログ
メンバーブログ|「週2回」からプログラミング、デザイン、ディレクションなどのお仕事を紹介しています。
CEOブログ|「週2回」からプログラミング、デザイン、ディレクションなどのお仕事を紹介しています。
ITプロパートナーズ|株式会社ITプロパートナーズ|「週2回」からプログラミング、デザイン、ディレクションなどのお仕事を紹介しています。