もり ひろゆきの日々是勉強

日々思ったことやIT関連のメモなどをのほほんと綴っていきたいと・・・。(^^;

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  1920  : 記事  12  : コメント  16429  : トラックバック  163

ニュース

Microsoft Innovation Center

MICでは各種無償セミナーを実施しています。
こちら
そして、スピーカーは僭越ながら私がお話させていただいております。
一生懸命努めさせていただきますので、よろしければご参加くださいm(__)m

平行運用はじめました。

  • 現在、こちらのほうで平行運用を行っております。

自己紹介

  • もり ひろゆき(森 博之)と申します。

    極東IT Engineersというコミュニティの代表です。

    本業は東京でソフトウェア開発のお仕事をしております。いわゆるDeveloperですね(^^;

    仕事ではVB,C#といろいろと渡り歩いてはおりますが、主に.NET系の業務アプリの開発が多いです。

    というか仕事となったら必死で何でも勉強しますが(^^;;;;

    最近ではMicrosoft Innovation Centerで講師もさせていただいておりますが、撃たれ弱いのでお手柔らかにお願いしますm(__)m

    まったく関係ありませんが、たこ焼き機も持っています。 関西人です。

    エントリの内容は私が個人的に収集した情報を元に書いていますが、あくまで個人的なメモ用途ですので内容の正確性を保証するものでありません。あらかじめご了承くださいm(__)m

Microsoft MVP

MCP


  • 70-316 Developing and Implementing Windows-based Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET

    70-536 Microsoft .NET Framework 2.0 - Application Development Foundation


  • MCTS: :.NET Framework 2.0 Web アプリケーション
    70-528 Microsoft .NET Framework 2.0 - Web-based Client Development


  • MCTS: Microsoft SQL Server 2005
    70-431 Microsoft SQL Server 2005 - Implementation and Maintenance

Wankuma MVP


  • Wankuma MVP for OOO(= Original Object-Oriented)

iKnow!

etc.

  • 人気ブログランキング - もり ひろゆきの日々是勉強

    スカウター : もり ひろゆきの日々是勉強

    あわせて読みたい

書庫

日記カテゴリ

リンク

まず、オブジェクト指向という概念は、それだけを聞いても実際のコードが想像しにくいのは、現在のこの状況(オブジェクト指向の理解者が圧倒的に少ない)から見てもわかりやすいと思います。

ただ、構造化プログラミングについて浸透率は結構高いと思います。

まま、しっかりとした理解はなくとも、だいたいこんな雰囲気であるってことはおおよそご存じなんじゃないかなぁと思ったりするワケです。

じゃ、オブジェクト指向プログラミングは構造化プログラミングに比べて何がそんなに捕らえにくいのでしょうか。

その理由のひとつとして、それは目に見えた形として表現できるかどうか点にあると思います。

たとえば、

   1:  public void MethodA(int loopLength){for(int index = 0; index < loopLength; index++) { Console.WriteLine(index.ToString()); }}

と書かれているより

   1:  public void MehtodA(int aintLoopLength) {
   2:      for(int intIndex = 0; intIndex < aintLoopLength; intIndex++) {
   3:          Console.WriteLine(intIndex.ToString());
   4:      }
   5:  }
   

と書かれていた方が見やすくないでしょうか。 

もちろん、これは構造化プログラミングのメソッドの1つでしかないのですが、目に見える形ですっきりしたのがわかりますね。

これに比べてオブジェクト指向では、その作用がすっきり見えにくいのです。

たとえば

   1:  public class ClassA {
   2:      protected string mstrSaveString = string.Empty;
   3:  
   4:      public string Add(string astrTargetString) {
   5:          mstrSaveString += astrTargetString;
   6:      }
   7:  }
   8:  
   9:  public class ClassB : ClassA {
  10:      public void Clear() {
  11:          mstrSaveString = string.Empty;
  12:      }
  13:  }

実際、この例では

1) ClassBはClassAを継承している
2) ゆえに、ClassBから利用できるメソッドは2つある
3) ClassBから利用できる変数はmstrSaveStringである

というのは、C#をご存じの方にはすぐわかるとは思いますが、この簡単な例ですら、コードの見た目からその構造が理解しずらいのです。

オブジェクト指向言語を理解している人からみたらこの簡単な例でも、やはりオブジェクト指向言語を勉強しようという方にとっては非常に難関となるのではないでしょうか?(^^;

また、仮に継承のメカニズムは理解できても、これをうまく使いこなせないでいるのではないでしょうか。

実はこれは図にすると非常にわかりやすいのです。

こういったオブジェクト指向技術を支援する技術の一つなんですが、オブジェクト指向プログラミングなどでよく用いられる表記方法としてUML(Unified Modeling Language)というものがあります。

UMLにはいろんな図の種類が定義してあって、その中でもクラス図というものがあります。これが、クラスの構造を理解するには非常にわかりやすい表記になっています。 

たとえば、上記の例をクラス図で表現するとこんな感じになります。

今はこの図の意味を詳細に理解する必要はありません(わかる人はそれはそれでもいいです)が、なんとなくイメージがつかみやすいのではないでしょうか?(^^;

オブジェクト指向を理解している多くの方がこのように、プログラムの構造は図で思い浮かんだりするのです。 逆に言うと言語そのものだけの表現で理解しようとすると非常にイメージがしずらいのです。 つまり、想像力が必要になるんですね。

オブジェクト指向が登場した頃に比べて、このような支援技術も発達しており、これらを活用することでオブジェクト指向も以前に比べて随分と開けてきたなぁという感じはするのですが、それでもやはり、構造化プログラミングのようにコード1発でその効果を理解できるようなものではないですね。

こうやっていろいろな技術を関連づけて説明しなければならない面倒さがオブジェクト指向プログラミングにはあると思います。 

これが、おそらくオブジェクト指向の敷居を高くしている原因の一つではないかなと思うワケですがどうでしょうか?(^^;

投稿日時 : 2006年12月29日 2:49

コメント

# re: CodeWritingの観点から見たオブジェクト指向。(わんくま勉強会用ネタその1(^^;) 2007/01/05 18:34 かるあ
そう、オブジェクト指向を初めて学び始めたころモデルで説明されて何となくわかったような気になるんだけれど、実際にコードに落とすときにイマイチ ピンとこなくて何度か挫折した記憶があります。

そういう意味では結城さんの 「Java言語で学ぶデザインパターン入門」は本当に素晴らしい本だと思う。

# re: CodeWritingの観点から見たオブジェクト指向。(わんくま勉強会用ネタその1(^^;) 2007/01/05 22:56 ひろえむ
#かるあさん
そう、そこなんですねー。
モデリングする場面とかを見ると「おっ」と思うのですが、実装が思いつかない(^^;
ただ、逆に実装をモデルに変換するのは非常に簡単だったりしません?(^^;

クラス図はあくまで静的構造図なので、ここらへんがピンと来ないと読んだり書いたりが難しいかもですね(^^;

どうしても、長年の癖なのかフローで考えてしまうので、そうするのであればアクティビティ図やらシーケンス図やらとかになるんですが、これも結構面倒くさかったり(^^;

まま、あくまでUMLもあくまでツール(補助する技術)なので、適材適所で使うのがいいですね(^^;

# Zi Xiu Tang Bee Pollen 2013/03/18 16:21 http://www.361slimcapsule.com/
I took them every working day to get a week straight, Yet again I did not see an increase in energy nor did I get the termo impact of increased sweating or warmness in my body. What I did get was a 7.4lb fat decline in just one week. that is wonderful. Zi Xiu Tang Bee Pollen http://www.361slimcapsule.com/

Post Feedback

タイトル
名前
Url:
コメント