第1回 オブジェクトの正体:連載 オブジェクト指向プログラミング超入門(1/3 ページ)
C#にしろVB.NETにしろ、これからはOOPが不可欠。けれどやっぱり敷居が高い。そんなあなたに贈るOOP入門連載開始!
オブジェクト指向分析、オブジェクト指向設計、そしてオブジェクト指向言語などなど、現在の開発現場は、「オブジェクト指向」が真っ盛りです。簡単言語Visual Basicでさえも.NETとともにVisual Basic .NETへと進化し、完全なオブジェクト指向言語となりました。Visual Studioで使えるプログラミング言語は、いまやすべてオブジェクト指向言語です。もはや「オブジェクト指向」は開発者にとっては当たり前のスキルとなりました。
本連載では、オブジェクト指向プログラミング(Object-Oriented Programming:OOP)を学んでいきます。OOPはオブジェクト指向の概念に基づいて行うプログラミングです。OOPを実践することによって、つまり、実際にプログラミングを行うことによって、オブジェクト指向言語について学ぶとともに、オブジェクト指向とは具体的にどういうものかということも理解できると考えています。
一般的に、OOPはオブジェクト指向言語を用いてプログラミングします。その気になれば、C言語などの非オブジェクト指向言語を使ってOOPを実践することも不可能ではありませんが、C#やVisual Basic .NET(以下VB.NET)などのオブジェクト指向言語は、OOPを素直に実践できるように作られています。
本連載では、使用言語として基本的にC#を用いますが、プログラム・コードについてはVB.NET版も掲載します。実際、文法以外にC#とVB.NETには大した違いはありません。これはコードを見比べればお分かりいただけると思います。
C#やVB.NETを用いてプログラミングをする場合、オブジェクト指向の概念とともに、オブジェクト指向言語特有のプログラミング知識、あるいは.NETプラットフォームに特有な知識も必要となります。こういったことにも随時触れていくつもりです。
■関連記事
IT Architectフォーラム
(→) ここから始めるオブジェクト指向
また、本連載ではOOPをできる限り簡潔に解説することを目指します。言語仕様の詳細については、ほとんど触れません。それはVisual Studio .NETや.NET Framework SDKに付属するリファレンス・マニュアルを参照すれば詳しく書かれています。本連載は、リファレンス・マニュアルには書かれていない、あるいは部分的には書かれているがまとまっていない「オブジェクト指向プログラミング」についての解説です。ということで、さっそく始めましょう。
オブジェクトの正体
SOA(サービス指向アーキテクチャ)がサービスを単位としてアーキテクチャを定め、DOA(データ指向アプローチ)が業務データをベースにしてシステムを設計していくように、OOPでは「オブジェクト」を中心としてプログラミングを行います。
それでは、オブジェクトとは何でしょうか。実は、C#やVB.NETの世界では、あらゆるものがオブジェクトです。「object」という英単語は「物事、もの」といった意味を持っていますが、そうすると、あらゆるモノをobjectとしてとらえることができます。そういう意味で、両者は似ています。
あらゆるものがオブジェクトであるため、設計段階などでは、逆に何をオブジェクトとするかを適切に見極めるのが難しくなってきたりもします。ですが、ここでは何がオブジェクトになるのかではなく、何かをオブジェクトととらえたときに、それがどのように振る舞うか、という観点からオブジェクトについて考えていくことにします。
■オブジェクトとはメモリ上にある1つの領域
OOPでは、オブジェクトの実体は、その対象にかかわらずPCのメモリ上に割り当てられた1つの領域と考えることができます。
そしてオブジェクトの中身は、内部データと、いくつかのメソッドで構成されています(図1)。
- 内部データは、オブジェクトの状態を保持するためのデータ領域です。「内部」と付いているように、外部には公開しておらず、外部からはアクセスできないようになっています。
- メソッドは、そのオブジェクトに対して何らかの動作をさせるためのもので、外部から呼び出すことができます。基本的な使い方は関数やサブルーチンと同じで、その実体は実行可能なプログラム・コードです。メソッドは内部データを変更しながら処理を進めることもあります。
どんなオブジェクトでも、このような構造を持っていると考えることができます。
■ウィンドウを表示するオブジェクト
例として、実行時にウィンドウを開くWindowsアプリケーションを考えてみましょう。この場合、ウィンドウは1つのオブジェクトとしてとらえることができます。
ただし、実際に画面に表示されるウィンドウそのものがオブジェクトではなく、オブジェクトが画面上にウィンドウを描画していると考えてください。通常は1つのウィンドウが1つのオブジェクトと関連付いています。
1つのウィンドウに関連付いているオブジェクトの中身は、例えば次のようになります(もちろん、実際には内部データもメソッドもこれだけではまったく不十分なのですが)。
ここでは内部データとして、width、height、bartextの3つの項目があります。それぞれ、ウィンドウの幅、高さ、タイトルバーに表示されている文字列を示す(保持する)ものとします。
また、3つのメソッドは、上から順に、ウィンドウの表示、タイトルバーの設定、ウィンドウのクローズを行います。
次に、これらのメソッドを使用して、このウィンドウ・オブジェクトをプログラムから操作してみましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.