Fresopiya
場所にもお金にも時間にも、何にも縛られない自由な状態になったら一体人間は何をしてどこに向かうのか。

まずはとにかく自由を目指すエンジニアのブログです。
「哲学」と「プログラミング」と「政治経済」、「ブログ」がメインになるかと。
プログラミングの概念

【Swift】オブジェクト指向プログラミングとは?徹底解説

どうも、とがみんです。

プログラミングを勉強するにあたって、「オブジェクト指向プログラミング」という言葉を聞いた事があると思います。

プログラマーになるにあたって、理解必須の概念なので、

この記事では、オブジェクト指向プログラミングについて説明していきます。

オブジェクト指向プログラミング

「オブジェクト指向」とは、ある物の状態や機能をあらかじめまとめておき、

使いたい時に、それをオブジェクト(物)として呼び出して、プログラムを書いていく考え方です。

もう少しわかりやすく言い換えると、

「設計図を元に、物(オブジェクト)を作り、その物に対して、やって欲しい動作を命令する」

といったプログラムの書き方をします。

このオブジェクト指向プログラミングを理解するにあたって、重要になってくる用語が以下の4つです。

  • クラス・・・「オブジェクト(物)」の設計図
  • プロパティ・・・「オブジェクト(物)」の性質、状態
  • メソッド・・・「オブジェクト(物)」の動作
  • インスタンス化・・・設計図をもとに、オブジェクト(物)を作る

そして、プログラムをかくにあたって、3ステップあります。

  1. 設計図(クラス)を作成する。
  2. 設計図を元にオブジェクトを作成する(インスタンス化)
  3. 作成したオブジェクトに命令を出す。

といった感じです。

次に、上記の流れに沿って、オブジェクト指向プログラミングの例をあげて説明していきます。

オブジェクト指向プログラミングをイメージで理解する

「車」の例をあげ、説明していきます。

まず、イメージとしてはこんな感じです。

  1. 「車」の設計図を作ります。設計図は、プロパティとメソッドを持ち、その性質や属性、動作内容を書きます。
  2. 次にインスタンス化します。設計図を元に、実体のある「車」を作り出します。
  3. 最後に、作成した「車」に命令を出します。「走れ」という命令を出せば走るといった感じです。

次に、これらを実際に「Swift」で書いた場合、どのようになるのかについて説明していきます。

オブジェクト指向をコードで理解する

コードで書くと以下のような感じになります。

まず、設計図を以下のように作成します。

設計図作成後、インスタンス化します。インスタンス化は、以下のように書きます。

そして、作成したオブジェクトに対して命令を出します。インスタンス化したcarに対して、それがもつメソッドを呼び出す形で命令を出します。

といった感じです。

オブジェクト指向プログラミングに対するイメージがなんとなくでもついたでしょうか。

次に、オブジェクト指向プログラミングのメリット、良い点について説明していきます。

オブジェクト指向プログラミングのメリット

オブジェクト指向プログラミングのメリットについて説明していきます。

オブジェクト指向プログラミングのメリットとしては、主に2つあります。

  • コードを再利用でき、簡単にプログラムを書ける。
  • 大人数で開発する際、プログラムを他者が壊す恐れが減る。

それぞれについて簡単に説明していきます。

コードを再利用でき、簡単にプログラムを書ける。

設計図(クラス)さえ作っておけば簡単に様々な機能を持ったオブジェクト(物)を作ることができます。

Swiftではこの設計図に当たるものがデフォルトでたくさん用意されており、またインターネット上にもたくさん用意されているので、

それらを使えば簡単にいろんなオブジェクト(物)を作成することができます。

わざわざ自分で一からコードを書く必要みなくなり、

設計図を用いて作り出したオブジェクトに命令をすれば、それだけでプログラムが動作するので、

必ずしも設計図の中身を理解する必要がありません。

なので、簡単にプログラムを書くことができます。

ちなみに、以下のインスタ風のイメージピッカーの設計図もあらかじめ用意されており、ほぼ自分でコードを書かずとも実装する事ができます。

大人数で開発する際、プログラムを他者が壊す恐れが減る。

設計図の中身を理解する必要がなく、変更する必要もないので、細かなコードのミスを減らすことができます。

まとめ

オブジェクト指向プログラミングについて説明しました。

オブジェクト指向のプログラミングの概念と書き方、メリットについて説明しました。プログラムを書くにあたって、非常に重要な概念だと思うので、しっかり理解しておきたいところです。