
本講義全体で学ぶことの概要をお話しします。本講義は11.5時間の動画でC++の基礎〜応用まで1本で学ぶことのできるコースです。特に力を入れて解説したのがオブジェクト指向についてです。
・基礎的な構文はわかるけど、クラスからわからない..
・学ぶべきことが多すぎて、どれを使ったら良いのかわからない..
・なぜこういうコードの書き方をするんだろう?
上記の疑問を解消する講義を目指しました。
セクション2ではC++の基本構文について解説します。HelloWorldを出力するプログラムを例に、『なぜそのような書き方になっているのか?』という点を学びます。関数・ストリーム・名前空間・ターミナルへの出力方法など、C++のベースとなる大切な概念がたくさん登場します。多くの参考書ではこれらを「おまじない」として飛ばしてしまいますが、しっかりと1つ1つ意味を確認します。1行ずつプログラムを読み進めながら、理解を深めていきましょう。
このレクチャーでは関数について学びます。関数とは、投入されたデータに何らかの処理をして結果を返すための仕組みのことです。C++プログラムの最小単位は関数です。ストリーム・クラス・フレームワークなど新しい仕組みは色々ありますが、どれも関数が基本単位となって作られています。新しい手法・仕組みを学ぶ前に、関数について理解を深めることはとても重要です。関数がなかった時代と比べながら、その偉大な仕組みを学んでいきましょう。
このレクチャーでは#include <iostream>について学びます。C++は文字の入出力を行うのにストリームという仕組みを使います。今までの関数による入出力ではなく、ストリーム(川)という抽象的なインターフェースを用意することで管理する便利な手法です。最大のメリットは外部の装置への入出力を1つの方法でできる点にあります。関数を使った入出力と比べながら理解を深めていきましょう。
このレクチャーでは#include <iostream>について学びます。C++は文字の入出力を行うのにストリームという仕組みを使います。今までの関数による入出力ではなく、ストリーム(川)という抽象的なインターフェースを用意することで管理する便利な手法です。最大のメリットは外部の装置への入出力を1つの方法でできる点にあります。関数を使った入出力と比べながら理解を深めていきましょう。
このレクチャーではmain関数について学びます。プログラムのスタートポイントとなる非常に重要な関数です。main関数はその前後でint main()と記述しますが、その意味はどうなっているのでしょうか。他にも共通する関数の作り方を学びながら、main関数の仕組みを学んでいきます。
このレクチャーでは名前空間について学びます。名前空間は変数・関数がプログラム内のどこにあるか?を表す情報です。::(スコープ解決演算子)と組み合わせることで場所を表します。特に大規模開発をするに当たって変数・関数がダブらないための仕組みとなっています。名前空間の仕組みとstd::coutの意味について学びましょう。
C++での改行方法について学びます。改行にはstd::endlと\nの2種類があります。溜まったタスクを一括処理するか?という違いもありますが、今の時点ではどちらを使ってもそれほど変わりはありません。本講義では\nを使った単純な改行方法で統一したいと思います。
GNUコンパイラを使ったターミナルへの出力方法について学びます。ターミナルへ出力するには、『ソースファイル→実行ファイル→実行』という3つのステップを踏む必要があります。3段階に分けて行う方法と一緒に、一気に出力ができる方法も学んでいきましょう。(説明はVisual Studio Codeの画面となりますが、Cloud9でも同じようにできますのでご安心下さい。)
このレクチャーでは文字・数字の出力について学びます。文字列を扱うにはいくつかの注意点があります。
・””(ダブルクォーテーション)で囲む
・計算に使うことはできない
・ストリームの機能を利用しcoutオブジェクトに文字を打ち込む
・プログラムの最後は ;(セミコロン)で終わりにする
これらの点に注意しながらコードを書いていきましょう。
このレクチャーでは数値の出力について学びます。今までの文字列と違って数値は計算に使うことができます。数値を扱う場合、””(ダブルクォーテーション)で囲む必要はありません。文字列と混同しないように注意しながらコードを書いていきましょう。
このレクチャーでは文字列と数値の組み合わせを学びます。文字列と数値を組み合わせるには<<シフト演算子でつなげる必要があります。coutオブジェクトにデータを送る際、文字と数値がごちゃ混ぜにならないよう<<で区切る必要があります。2つを組み合わせてた出力の方法を学んでいきましょう。
このレクチャーでは数値を使った計算をしていきます。具体的には四則演算についてです。coutオブジェクトへとデータを送る際、その中で数値を計算させることができます。プログラミングを使った便利な計算方法を学んでいきましょう。
このレクチャーでは小数を扱う方法を学びます。1つ前のC言語で小数を扱うには、変換指定子を分ける必要がありました。整数:%d、小数:%fなどで分かれます。
しかしストリームの仕組みを使えば、整数も小数もまとめて扱うことができます。ストリームという川の中で、2つを抽象化して扱うことが可能になるのです。関数とは違った、ストリームの便利さを体感して頂ければと思います。
セクション4では変数について学びます。変数とは確保したメモリスペースへ自由に値を代入できる仕組みです。それが変数を使えば、プログラミングの自由度が上がります。
1、繰り返し利用できる
2、プログラムが読みやすくなる
3、後から修正がカンタンになる
具体的には上記のメリットが挙げられます。『なぜ変数は必要なのか?』といった根本の疑問から一緒に考えていきましょう。
このレクチャーではメモリICの物理的な仕組みを学びます。変数とはメモリを確保する仕組みであり、メモリそれ自体について理解を深めることはとても大切です。
・そもそもメモリとは何か?
・どのようにスペースを確保するのか?
・0と1の電気でどのように保存するのか?
といったそもそもの疑問について考えていきます。変数が宣言された際、プログラム内部ではどのように動くのか?その仕組みについて考えていきましょう。
このレクチャーでは、メモリICの論理的な仕組みを学びます。メモリをビルディングとしてイメージできることが目標です。変数をビルディングとしてイメージすることは、コードを書く上で非常に重要です。変数・ポインタ・配列などは全てビルディングのイメージを元に説明がされます。変数を宣言した際、必ずビルディングのイメージが思い浮かぶよう学んでいきましょう。
このレクチャーでは、変数の宣言と値の代入方法を学びます。変数はこの先何度も使うことになる非常に大切な仕組みです。
・確保したメモリスペースへ値を代入する
・データ型とセットで変数名を宣言する
・宣言、代入を同時に行うことを初期化と呼ぶ
これらの3点に注意しながらコードを書いていきましょう。
このレクチャーでは、データ型について学びます。データ型はこれから扱うデータをコンピュータに知らせるために必要となります。具体的には確保したメモリスペースの大きさ・種類を表す情報となっています。int・doubleなどの代表的なデータ型への理解を深めます。
またデータ型はポインタ・構造体・クラスなど応用的なトピックを学ぶ際に、何度も使うことになります。まずはしっかりと基礎を理解するようにしていきましょう。
このレクチャーでは、型変換(キャスト)について学びます。キャストはデータ型を強制的に変換する仕組みを指します。小数のデータを整数へ、整数のデータを小数として表示が可能になります。初めのうちはあまり使う場面がないかもしれませんが、応用的なトピックを学ぶ際に時々出てくる内容となっています。まずは基本の使い方をしっかり理解しておきましょう。
このレクチャーでは複合代入演算子について学びます。複合代入演算子とは、変数の値を変数それ自体の値を使って更新する方法です。『変数それ自体の値を使う』というのがポイントで、値の更新をする場面でよく使われます。複合代入演算子を使えばすっきりとプログラムを書くことが可能となりますので、しっかりと使いこなせるようにしておきましょう。
このレクチャーではインクリメント、デクリメントについて学びます。これらは、値を1増加・1減少させるための仕組みです。カウント用の値を更新する場面でよく使われます。for・while文と組み合わせて使うことが多いので、仕組みを理解して使いこなせるようにしておきましょう。
このレクチャーでは、const定数について学びます。変数の頭にconstをつけると、後から変更できないようロックをかけることができます。複数人で開発する際によく使われる仕組みとなっています。基本的な仕組みを理解しておきましょう。
このレクチャーではキーボードからの入力を行います。cin(ストリームオブジェクト)を使えば、キーボードから入力しデータを受け取ることができます。外部から数値・文字などを入力することで、より自由度の高いプログラムを作ることができます。cinはこれから何度も使う仕組みとなりますので、しっかりと使いこなせるようになりましょう。
セクション5では分岐処理について学びます。具体的にはifを使った条件判断をするプログラムです。
これまでのセクションで学んだのが順次処理です。初めから終わりまで順番に進んでいく一方通行のプログラムであり、書いてある内容を実行していくシンプルなプログラムでした。
これから学ぶ分岐処理を使えば、条件によって処理の内容を変えることができます。そしてif文の判定条件は主に数値によって行います。プログラミングでは条件の判定を、数値を満たすか?満たさないか?によって行なっています。応用的なプログラムを作れるよう学んでいきましょう。
このレクチャーでは最も基本的なif文の使い方を学びます。
0:偽
0以外:真 & 処理を実行
とする判定方法です。
高度な比較は出てきませんが、基本的な方法から覚えていきましょう。
このレクチャーでは 等値演算子について学びます。等値演算子とは、2つの数値の=関係を表すための演算子です。
if文はほとんどの場合、等値(または関係)演算子とセットで使われるようになっています。というのも、0か?0でないか?という比較・判定方法は不自然だからです。等値・関係演算子を使うことで、高度な計算を用いた判定が可能となります。実際に使われるif文の使い方を学んでいきましょう。
このレクチャーでは関係演算子を使った判定方法を学びます。関係演算子を使えば、数値の大小によって判定が可能となります。大なり小なりの記号を条件式の中に当てはめることで、より高度な比較が可能になります。実際にコードを書きながら確認していきましょう。
このレクチャーでは論理演算子を使った判定を学びます。というのも、if文は一度に1つの条件しか判定ができないからです。『2つの条件を同時に判定したい』という時に、論理演算子は使われます。
&&:左右がどちらも真
||:左右のどちらかが真
!:条件を反転
上記の3つの方法を学んでいきましょう。
このレクチャーではブロック文について学びます。ブロック文で囲むことで、
・複数の処理を実行できる!
・if文の処理範囲が明確になる!
といったメリットがあります。より応用的な比較・判定ができますので、こちらの方法もしっかりとマスターしていきましょう。
このレクチャーではif else文を学びます。今までのif文を使った判定では、条件に合致した時しか処理を実行できませんでした。それがif else文を使えば、条件に一致しなかった場合の処理も実行させることができます。if elseを使って複数の比較・判定をできるようになりましょう。
このレクチャーではif文とelseを組み合わせて、3つの条件の場合分けを行います。ポイントとしてはelse文で実行する処理が更にif文となっている点です。条件に当てはまらなかった場合に更にif文が発動するようになっています。これによって3つの場合で場合分けができるようになります。複数の条件で比較・判定をする方法を学んでいきましょう。
このレクチャーではswitch case文について学びます。swtic caseは番号を使った場合分けとなります。数値に対応させるのでシンプルに判定を作れることが特徴となっています。if文より使う場面は少ないかもしれませんが、処理が決まっている場合にはswitch caseもよく使われます。整数を使った場合分けもしっかりマスターしていきましょう。
繰り返し処理の概要について学びます。
コンピュータは同じ動作を繰り返すのが非常に得意です。人間なら飽きてしまうことでも、コンピュータなら何億回でも繰り返して行うことができます。
そして繰り返し処理には2つの方法があります。for文とwhile文です。2つの違いとしては、
・回数が決まった繰り返しか?
・条件を指定する繰り返しか?
という違いがあります。
2つの違いと使い所を意識して学んでいきましょう。
このレクチャーではfor文について学びます。for文は回数を指定して繰り返し処理を行う仕組みとなっています。
・回数の記憶
・回数の指定
・カウンタの値の増減
など1つの構文で色々な条件を指定する必要があります。しっかりと仕組みを理解して、for文を使いこなせるようになりましょう。
for文を使った実際のコードを書いていきます。回数を指定することで、何回も同じ処理をさせることができます。便利なfor文の使い方を学んでいきましょう。
for文で二重ループを使ったコードを書きます。for文を2つ組み合わせることで、それぞれに異なった処理をさせることが可能となります。図形を描画したり、掛け算の九九の表を作ったりその応用範囲は様々です。基本的な二重ループの考え方を学んでいきましょう。
このレクチャーではwhile文について学びます。while文では、条件を指定して繰り返し処理を行わせることができます。for文のように回数を指定する必要がないので、ある条件を満たす限り処理を続けたい場合に使われます。基本的なwhile文の書き方を学んでいきましょう。
このレクチャーではdo whileについて学びます。do whileとは『必ず1回は先に処理が実行され、その後に条件式の判定が行われる』という手法です。通常のwhile文と違うのは、条件式が間違っていても1度は実行される点です。構文の意味をしっかりと理解して、コードを書いていくようにしましょう。
『関数とは何か?』という問題について考えます。今まではmain関数内にプログラムを書いていましたが、関数を自分で作る方法を学びます。関数を作ると、一連の処理をその中にギュッとまとめることができます。それには、
1、プログラムがわかりやすくなる
2、他の場所でカンタンに使える
といったメリットがあります。関数毎に機能・役割を分けて作成するのは、プログラムの基本でもあります。根本の仕組みから学んでいきましょう。
引数・戻り値の言葉の違いを学びます。引数・戻り値は初学者が関数を学ぶにあたって、混乱をしやすい部分です。
引数:外部から投入する値
戻り値:処理結果として返却する値
という2つの違いをしっかりイメージできるようになりましょう。また『なぜ引数・戻り値は必要なのか?』といった根本の疑問についても考えてみます。
このレクチャーでは関数の作成~呼び出し方法を学びます。ゼロから一緒に関数を作って、それをmain関数の中で利用します。作成~呼び出しまでをできれば、まずは基本的な関数の使い方をマスターできたことになります。今まで学んだ知識を復習しながら、ゼロから関数を作れるようになりましょう。
このレクチャーではプロトタイプ宣言について学びます。プロトタイプ宣言とは、別の場所で作った関数をmain関数に知らせるための仕組みです。main関数との関係において、関数をどこの場所で作るのかは非常に重要となっています。関数同士の位置関係にも注意しながら、コードを書いていくようにしましょう。
このレクチャーで引数のある関数の作り方を学びます。引数とは外部から投入する値であり、処理結果を変えるために利用されました。
引数を渡す方法と一緒に学びたいのが、受け取り側での仮引数です。仮引数は受け取り側の関数で使うための変数であり、main関数から値をコピーして格納します。『コピーを格納する』というのがポイントで、仮引数はmain関数にある本物の変数とは全くの別物です。仮引数はこれから何度も出てくる概念であり、初学者が特に混乱しやすい部分でもあります。『コピーを格納する』というポイントをしっかり押さえて学んでいくようにしましょう。
このレクチャーでは関数へ複数の引数を渡します。外部から複数の値を投入するので更に複雑な処理をさせることが可能になります。注意点として、受け取る側での関数でも仮引数を複数宣言することです。別の関数での計算用に値のコピーを格納する仮引数も同じだけ必要になります。仮引数での受け取りに注意して学んでいきましょう。
このレクチャーでは戻り値について学びます。
戻り値とは何か?
なぜ戻り値は必要か?
引数と何が違うのか?
coutと何が違うのか?
といった点について考えてみます。戻り値の使い方・特徴についてしっかりと理解していきましょう。
戻り値を使った実際のプログラムを書いていきます。戻り値を使えば、関数の計算結果を再利用できます。今回は返却される値をif文の条件判定につなげていきます。実際のコードを書きながら仕組みを学んでいきましょう。
このセクションでは配列について学びます。一度に大量の変数を扱える点に配列の特徴と大きなメリットがあります。配列を使えば今までのように変数を1個1個宣言する必要はありません。また配列を使う際にはfor文とセットで使われることがほとんどです。値の代入・出力を繰り返すことで、配列を効率的に扱うことができます。配列とforの応用的な手法も学んでいきましょう。
このレクチャーでは配列の基本的な仕組みを学びます。『配列』と聞くと今までにない、何か特別な仕組みのように思えます。しかし、配列といってもただ変数を大量に用意しているだけで、今まで学んできたことの応用に過ぎません。ビルディングのイメージを活用しながら配列の仕組みについて理解を深めましょう。
このレクチャーから3回に分けて配列の宣言と値の代入について学びます。配列には、3つの宣言・代入方法があります。
1、宣言と代入が別々
2、宣言と代入が同時
3、要素数を省略
プログラムで言えば、次のような宣言・代入しかできません。
int array[3];
int array[3] = { 11, 12, 13 };
int array[ ] = { 11, 12, 13 };
まずは1番目の『宣言と代入が別々』の方法から学んでいきましょう。
配列の3つの宣言・代入方法として、このレクチャーでは2番目の宣言と代入が同時の方法を学びます。
int array[3];
int array[3] = { 11, 12, 13 };
int array[ ] = { 11, 12, 13 };
要素数を指定してそのまま数値を代入することができます。1個1個手作業で要素を指定する必要がないので非常に便利です。状況に合った使い分けができるように学んでいきましょう。
配列の3つの宣言・代入方法として、このレクチャーでは3番目の要素数を省略する方法を学びます。
int array[3];
int array[3] = { 11, 12, 13 };
int array[ ] = { 11, 12, 13 };
要素数を省略して値を代入すると、自動的にその個数分だけ要素が確保されます。要素数をわざわざ自分で数える必要がなくなるのがメリットとなっています。こちらの方法もぜひマスターしておきましょう。
このレクチャーでは配列とfor文について学びます。大量の要素を扱う点で、配列とfor文は非常に相性が良いです。
配列:大量の要素数を用意
for:全要素を出力・入力
という使い方がされます。2つはほとんどセットで使われますので、ぜひ配列とforの組み合わせ方もマスターしていきましょう。
このレクチャーでは配列へ外部から数値を入力します。配列の全要素に出力をかけるにはfor文を使っていましたが、全要素への数値の代入にもfor文を使うことができます。Scannerクラスと組み合わせる少し応用的な手法を学んでいきましょう。
このレクチャーでは配列を引数として渡します。配列を引数として渡すには配列名だけでOKです。配列名は先頭要素へのポインタ(アドレス)として解釈されるので、名前だけで引数として渡すことができます。仕組みから理解できるよう学んでいきましょう。
このレクチャーではポインタの概要についてお話しします。ポインタはC++の中でも難解な仕組みとされており、苦手な方も多いのではないでしょうか。
・ポインタってそもそも何?
・何に使って、どんなメリットが?
・アドレスを指し示す仕組みとは?
といった根本の疑問を一緒に考えていきます。ポインタの使用場面・メリットを具体的にイメージできるようになりましょう。
このレクチャーではメモリICの物理的な仕組みを学びます。ポインタとはアドレスを指し示す仕組みであり、メモリそれ自体について理解を深めることはとても大切です。
・そもそもメモリとは何か?
・どのようにスペースを確保するのか?
・0と1の電気でどのように保存するのか?
といったそもそもの疑問について考えていきます。ポインタが宣言された際、プログラム内部ではどのように動くのか?その仕組みについて考えていきましょう。
このレクチャーでは、メモリICの論理的な仕組みを学びます。メモリをビルディングとしてイメージできることが目標です。ポインタ宣言した際、ビルディングとしてイメージできることは非常に重要です。
・データはどのように格納されていて、
・ポインタはデータをどのように指し示して、
・ポインタと通常のデータはどのように連携するのか?
といった、ビルディングのイメージが思い浮かぶよう学んでいきましょう。
このレクチャーでは、ポインタの宣言と数値の代入を行なっていきます。ポインタを理解する上で重要なポインタが2つあります。
1、ポインタはアドレスしか持てない!
2、ポインタに*をつけると、それが指す先のモノを表す!
という2つです。これらを理解できれば、ポインタは9割マスターできたも同然です。ポインタを仕組みから理解できるよう、一緒にコードを書きながら学んでいきましょう。
このレクチャーでは、ポインタを使って別の関数から値を操作します。プログラミングでは通常、関数の独立性が保たれているため、別の関数からmain関数にある値を直接書き換えるようなことはできません。その中で今回はポインタの機能を使って、別の場所からピンポイントで値を書き換えます。『別の関数から値を操作する』というのは、ポインタでもよく使われる使用場面となっています。前回のレクチャーで学んだ2つのルールに注意しながら、学んでいきましょう。
このレクチャーでは、ポインタを使って複数の戻り値を返します。C言語の関数はその仕様上、1つの戻り値しか返せません。そこでポインタを使って複数の戻り値を返すようにします。『ポインタで無理やり場所を作ってアドレスを格納する』といったイメージとなります。少し応用的な手法となりますが、2つのルールに注意しながら学んでいきましょう。
このレクチャーでは、ポインタを使って構造体へアクセスします。構造体は大きなデータなので、そのまま丸ごと扱うのは非効率です。そこでポインタを使えば構造体の要素にピンポイントでアクセスできます。必要なモノだけを扱うことができるので、効率的にデータを扱うことができます。ポインタを使った効率的なプログラムを組む手法を学んでいきましょう。
このレクチャーでは『構造体とは何か?』について学びます。構造体はよく技術書などで、変数をまとめて扱う仕組みと説明されることが多いです。しかし構造体を「変数をたくさん扱うため」と考えると、少し混乱してしまうと私は考えます。
そこで本講義では構造体を『新しいデータ型を作るための仕組み』と捉えます。データ型の根本の概念から学びながら、構造体への理解を深めていきましょう。
このレクチャーでは、構造体のカンタンな作り方を学んでいきます。宣言・代入を同時に行い、効率的に構造体変数を作っていきます。
また構造体を使うに3つのステップを踏む必要があります。
1、データ型を決める
2、変数を宣言して、実体を作る
3、数値・文字を代入する
上記のステップを意識しながらコードを書いていきましょう。
このレクチャーでは構造体で複数の値を操作する方法を学びます。また構造体を別の構造体へとコピーする方法も学びます。たくさんのデータを一気に扱うことができるので非常に効率的です。構造体には色々な使い方がありますが、コードを書きながら1つ1つ応用的な手法を学んでいきましょう。
このレクチャーでは構造体を引数として渡します。構造体を関数の引数として渡し、別の関数で処理を行わせることも可能です。受け取り側でも同じように仮引数で構造体(struct)を使う点に注意しながら、コードを書いていきましょう。
このレクチャーでは、構造体を配列として扱っていきます。配列を使えば、1つのデータ型を元にたくさんの変数を同時に扱えるようになります。同じように構造体でも配列を使えば同時に複数宣言することが可能です。たくさんのデータを扱う場合必要な手法となりますので、しっかりとマスターしていきましょう。
このレクチャーでは、構造体をtypedefで宣言します。typedefを使えばデータ型の名前を新しく定義し直すことができます。長たらしいデータ型の名前を短くコンパクトにまとめることができます。構造体もデータ型の一種ですから、typedefで短く宣言することが可能です。基本的なtypedefの仕組みを確認しながら、それを構造体へ応用させていきましょう。
■本講義はC++の基礎〜応用を完全マスターするコースです。
HelloWorld〜クラス・オブジェクト指向までを10時間以上の動画で学んでいきます。
環境構築、基本的な構文、ポインタ、クラス、継承・カプセル化、多態性、コンストラクタ、STL、エラー処理など、C++の基礎をこの動画1本で学ぶことができます。
■なぜこのコースを作ったか?
C++が全てのプログラミング言語の基礎とも呼べる言語だからです。
メモリ管理のような低レイヤの部分〜オブジェクト指向を使った大規模開発まで、C++を使えばほとんどのことはできます。Webアプリ、ゲーム開発、自動運転、組み込み開発、ネットワークシステム、機械学習、競技プログラミングなど、ありとあらゆる場面でC++は使われています。
とはいえ、C++は数あるプログラミング言語の中でも最も難解と呼ばれています。C++では開発を効率的に行うため、たくさんの機能が新たに登場しています。
・基礎的な構文の仕組みが難しい
・学ぶべきことが多すぎて、どれを使ったら良いのかわからない
・クラス、オブジェクト指向で挫折してしまった
という悩みもよく聞きます。
この動画ではそんな難解と呼ばれるC++を完全攻略していきます。C++を学ぶことで活躍の幅を広げ、レベルアップを目指していきましょう。
■本講義の特徴
1、クラス・オブジェクト指向に力を入れて解説
2、そもそもなぜ?という疑問を大切にしている
特に力を入れて解説したのが、クラス・オブジェクト指向についてです。大規模開発をする上で必須の概念となっていますが、このあたりで挫折してしまう方も多いのではないでしょうか。というのも、継承・多態性・コンストラクタ・エラー処理など難しい仕組みがたくさん出てきます。
・基礎的な構文はわかるけど、オブジェクト指向で挫折してしまった
・カプセル化、継承、多態性の使い所がわからない
・学ぶべきことが多すぎて、理解が追いつかない
私自身、クラス・オブジェクト指向でかなり苦労をしてきました。そんな初学者の方に向けて、オブジェクト指向の仕組みを徹底解説しています。全てのトピックを必ず目の前で一緒にコードを書きながら解説していきます。ゼロから一緒にコードを書くスタイルを取ることで、挫折させない講義を目指しました。
また本講義は『そもそもなぜ?』という疑問を大切にしています。
・スライドで話をするだけ
・名前と機能をひたらすら列挙
・いきなり技術の説明に入る
といった内容は避けました。それだとたくさんのことを学んだは良いモノの、何がポイントか分からなくなってしまいます。
そこで、なぜ必要なのか?なぜ生まれたのか?という疑問を大切にします。技術が生まれた背景・理由が分かっていなければ、応用力が身につかないからです。
例えばクラスを説明するのにも、データ型という根本から学んでいきます。少し遠回りかもしれませんが、1つ1つ知識を抑えてステップアップしていきます。
■最後に..
私自身、C++の学習にはとても苦労をしてきました。特にクラス・オブジェクト指向は難しくて、本当に何度も挫折しました。
・なんでこの技術は必要なんだろう?
・なぜこういうコードの書き方をするんだろう?
・このコードサラッと書かれてるけど、どんな仕組みなんだろ?
という疑問に何回も悩まされてきました。技術書・ネット記事・動画などを調べながら、苦労をして学んできた経験があります。
そんな初心者の頃の私が『こんな講義があったら良いな..』と思えるコースを目指しました。みなさんの勉強のお役に立てれば幸いです。最後までお読み下さり、ありがとうございました。
※)セクション9:ポインタ、セクション10:構造体については、C言語を使って解説をしております。基本的な仕組みはC++と同じですがご注意下さい。