本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、オブジェクト指向、クラス、プロパティ、メソッド、イニシャライザーの概要と、使い方などについて解説する。
これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していく本連載。これまでの連載で実践してきたプログラムは、いずれも短いコードで完結するシンプルなものでした。しかし、実際のiOSアプリを開発するときは、もっともっと複雑なプログラムが必要です。
いろいろな状況やユーザー(アプリの利用者)の操作に合わせ、適切な処理が行われるようにプログラムを構成していかなければいけません。
そこで、複雑化するプログラムを、読みやすく、管理しやすくするために用いられるのが「オブジェクト指向」と呼ばれる考え方です。
今回はオブジェクト指向の基礎知識から始まり、「クラス」とは何か、そしてクラスをどのよう使えばよいか、Swiftによるオブジェクト指向プログラミングの基礎について解説します。
オブジェクト指向とは、アプリケーションやシステムの動きを「オブジェクト同士の“やりとり”」として捉える考え方です。プログラムの各部分を部品として切り出し、部品同士がメッセージをやりとりすることによってさまざまな処理を実現します。
Swiftの機能の大部分は、オブジェクト指向の考え方を基にして作られています。その中でも、オブジェクト指向の代表といえるものが「クラス」という機能です。
プログラム上で動作するオブジェクトのやりとりについて、もう少し具体的に解説しましょう。iOSアプリがある動作を行うためには、オブジェクト同士が互いにメッセージをやりとりすることで実現します。
例えば「ボタンを押したらアラートが出る」という動作を題材に考えてみましょう。この動作の中には「ボタン」というオブジェクト、「アラート」というオブジェクト、そしてこれらを管理するオブジェクトが必要となりそうです。管理するオブジェクトは、ここでは「コントローラー」という名前にしましょう。
ボタンが押されたら、ボタンのオブジェクトは「押されたよ!」とコントローラーに伝えます。コントローラーはそのメッセージを受けて、「アラートを出してね!」とアラートに伝えます。こうすることで「ボタンを押したらアラートが出る」という一連の動作が可能になります。
Swiftでは、このメッセージングを主に「プロパティ」「メソッド」という機能で行います(メソッド以外にも、メッセージングが実現できる機能があります)。プロパティやメソッドについては後述していますので、ここではメッセージングを実現できる機能があることだけを覚えておいてください。
オブジェクトを作るには、そのオブジェクトの“ひな型”を用意し、そのひな型を元にして作ります。このひな型のことを「クラス」と言います。クラスを1つ用意しておけば、そのクラスを元にしたオブジェクトを何個でも作ることができます。
クラスを元にして作られたオブジェクトの“実体”は「インスタンス」と呼びます。また、クラスを元にオブジェクトを作ることをインスタンスの生成やインスタンス化などと言います。インスタンスとオブジェクトはよく混同されがちな言葉ですが、オブジェクトの方がより抽象的な意味合いがあります。
クラスを定義するには、次のように書きます。
class クラスの名前 { // クラスの機能 }
まずは「class」から書き始め、半角スペースを空けてからクラスの名前を書きます。次に半角スペースを空けてから「{」と「}」の中にクラスに付けたい機能を書いていきます。
早速、クラスを作成してみましょう。今回は例として、ボタンのクラスを作成してみます(※)。次のプログラムを書いてみましょう。
class ボタン { }
※実際のiOSアプリ開発では、ボタンなどのようなクラスはあらかじめ用意されているので、自分で用意する必要はありません。ここではクラスを理解するための具体的な例として取り上げています。
これだけで、最小限のクラスの「定義」ができました。次に、このクラスを元にしたインスタンスを生成してみましょう。先ほどのクラスの定義の後に、次のプログラムを書いてみてください。
let 決定ボタン = ボタン()
このプログラムでは、先ほど定義した「ボタン」クラスのインスタンスを生成し、「決定ボタン」という定数に代入しています。このプログラムのように、インスタンスを生成するにはクラス名の後に「()」を書きます(この「()」の意味はイニシャライザーの項で解説します)。
こうして「ボタン」のインスタンスが生成できたわけですが、これではクラスに何も機能を持たせていないため、何もすることができません。次項から、クラスに持たせることのできる機能を理解し、追加していきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.