Youtube登録者5000人突破!!

【無料】動画でわかる C++初級コース【全6回】

プログラミングが初めての人でもわかる、C++の講座をyoutubeにて公開しました。ここでは、C++の特徴である、オブジェクト指向について解説します。

※この記事は、「C++入門講座」の続きです。プログラミング未経験の方はそちらの記事からご覧ください。

基本となる知識をしっかり身につけておくと、これからのプログラミングの勉強が楽になります。動画のタイトルに「丁寧に学ぶ~」という言葉をつけている通り、ひとつずつじっくりと理解していくことを目的として、機能別で解説を行っています。はじめはちょっと退屈かもしれませんが、じっくりゆっくり学んでいきましょう。

1.オブジェクト指向

今回の一連の動画は、オブジェクト指向を紹介します。ここでは、まずオブジェクト指向の概念を紹介します。つまり、第一回がいちばん重要な動画ということです。

私としては、どの参考書よりも一番わかりやすく説明したつもりです。ぜひ、じっくり見て理解してください。細かい用語よりも、「何をやっているか」「何が便利なのか」を知ると、理解が早くなります。

オブジェクト指向を使うと、ちょっとだけ違う機能を持ったプログラムを大量生産したり、大人数で協力してプログラムするときに非常に便利です。具体的な恩恵は次の動画から触れていきましょう。

2.構造体・クラス

構造体を使えば、関係のある変数をひとまとめにできます。例えば、ゲームで言うと、HPやMPは構造体でひとまとめにすると便利です。ただ、構造体は普通プログラミングでは使いません。それは、もっと便利な「クラス」があるから・・・

クラスは、構造体と関数をひとまとめにしたものです。構造体の代わりにクラスを使えば良いので、基本的に構造体の出番はありません。クラスは色々便利な機能があり、逆に言えば守るべきルールもたくさんあります。ただ、一つ一つのルールにはちゃんと意味があるので、ゆっくりと丁寧に一つずつ理解していきましょう。

クラスの定義、オブジェクトの生成、セッター・ゲッターがなぜ必要か、なぜ便利なのかわかるようになれば、ここの部分は完璧です。

3.メソッド・継承

メソッドとは、クラス内の関数のことです。前の動画で説明したセッターやゲッターもメソッドなので、あまり難しくはないでしょう。

ここで重要なのが、継承です。継承とは、一度作ったクラスをコピーしてちょっと変える機能です。例えばゲームで言うと、ポケモンのクラスを作って、それをコピーして色違いポケモンのクラスを作ると、共通する部分が多いので、作る手間が省けます。

オブジェクト指向と継承は密接に関わっています。もし、ここで躓いたら、第一回の動画に前に進むヒントがあるかもしれません。

4.コンストラクタ・デストラクタ

コンストラクタはクラスが作られる時に自動的に関数を呼び出してくれる機能です。逆に、デストラクタはクラスが消される時に自動的に関数を呼び出してくれる機能です。要点だけ理解してしまうと、あまり難しくはないでしょう。

これが何に役立つかというと、例えばメモリの確保です。C++では、他の言語と違ってメモリを自分で管理することが想定されています。つまり、コンストラクタでメモリを確保して、デストラクタでメモリを開放することができます。

ただ、今の所すぐにコンストラクタ・デストラクタを使う機会はないので、概念だけ覚えておくと良いでしょう。継承についても説明していますが、もし躓いても、そのまま進めてしまって構いません。必要なときにまた戻ってきて、確認しましょう。

5.オーバーライド・仮想関数

オーバーライドとは、継承後のクラス(派生クラス)で同じ名前で関数を上書きする機能のことです。こんなことできるんだなー、程度に知っておきましょう。

仮想関数を使うと、関数呼び出し時の動作が若干変わります。ここでは、仮想関数だけを紹介しているので、何のために使うのかさっぱりだと思います。ただ、次の「抽象化」では仮想関数を使うことで非常に便利になるので、ここは耐えてついてきてください。

実用性がわかりにくくてちょっとつらいかもしれませんが、ここは少しの辛抱です。難しければ、「こんな機能があるんだ」「virtualは仮想関数なのか」くらいの理解で次の動画に進んでも大丈夫です。

6.抽象化

おまたせしました、これがオブジェクト指向の最終回、抽象化です。ここまでよく頑張りました。

抽象化を使うことで、コピー元となるクラスのオブジェクト生成が禁止出来ます。この機能は、ミスを防ぐのに非常に便利です。

例えば、ゲームキャラクターをたくさん作る必要があるとしましょう。オブジェクト指向を使えば、コピーを使用して大量にキャラクターを作れます。しかし、同じ名前・見た目のキャラクターは作りたくない。今までの方法だと、間違えて継承先の派生クラスで設定し忘れたら、名前・見た目の変数(や関数)のないクラスを作りかねません。もしくは、基底クラスと同じ名前・見た目のオブジェクトが出来てしまうかもしれません。

しかし、抽象クラスを使えば、派生クラスで名前・見た目の宣言をしていないときにエラーを出してくれるので、ミスを防ぐことが出来ます。

このように、基底クラスをコピー元として扱うことで、大量のオブジェクト生成で便利です。どうですか?オブジェクト指向の特徴がわかってもらえましたか?

このあたりはテクニックになってくるので、必須で使う必要はありません。ただ、プログラムをスマートにかけるようになると、オブジェクト指向の恩恵は大きくなります。ぜひ、概要だけでも覚えて、いざというときに使えるようにしておきましょう。

おわりに

今回の「丁寧に学ぶC++初級講座」は、オブジェクト指向に的を絞って解説しました。オブジェクト指向は難しいと言われがちですが、概念をしっかり理解したあとに進めると、便利さがわかると思います。

今回までで、C++の重要な要素については説明しました。ここまでくれば、プログラムを書くのに十分な知識は手に入れているはずです。

他にもC#の解説記事を出しています。C#はC++の改良版に当たるプラグラミング言語です。ゲーム開発等出で使われており、マイクロソフトが開発していることから、用途もガンガン広がっています。ぜひ、新しい言語に挑戦するならC#を選んでみると良いかもしれません。

youtubeではITの基礎知識についても紹介しています。「文系だからあまり機械についてよく知らない・・」という方でもわかるように基礎から紹介していますので、良かったらそちらもどうぞ。