ハウツーシリーズ
これは、プログラミング入門
の5部構成のシリーズの第5部です。
- プログラミング入門:はじめに
- プログラミング入門:最初のプログラム
- プログラミング入門:変数、型、およびデータの操作
- プログラミング入門:フロー制御
- プログラミング入門:オブジェクト指向プログラミング
最後のレッスンに戻る
また会えて、とてもよかった! Atlantic.NETのこのプログラミング入門シリーズの最後の記事に戻ってきてくれてうれしいです。これまでに多くのことを学びましたが、この記事も例外ではありません。
この記事では、オブジェクト指向について説明します。これは、モデル化するものを表すオブジェクトを作成し、それらのオブジェクトにさまざまなタスクを実行させるプログラミング手法です。
最高のものを知りたいですか?あなたはすでにそれをやっています。今、あなたは自分が何をしているかを理解する必要があります、そしてあなたは行ってもいいでしょう。
。
ランダムオブジェクト
まず、前回の記事で、まだ説明していない2行のコードを提供して終了したことを思い出してください。ここでも2行あります:
Random random = new Random(); // Object orientation stuff int answer = random.Next(10) + 1; // Give me a random number less than 10 and add one
最初の行は、現時点で私たちにとって最もなじみのない行です。新しいキーワードから始めましょう。つまり、new
。 new
オブジェクトをインスタンス化します。インスタンス化とは、何かのインスタンスを作成することを意味します。この場合、Random()
というクラスのインスタンスを作成しています。 。
したがって、この最初の行は、Random()
から新しいオブジェクトを作成します クラスを作成し、それをタイプRandom
の変数に割り当てます。 名前は
まず、変数タイプがあります。これまで、
int
を使用してきました およびstring
タイプなので、ここではRandom
と呼ばれる新しいタイプ(実際にはクラスタイプ)を紹介します。 。
次に、変数名があります。以前の記事で変数を操作するときは、 inputなどの変数名を使用しました。 および値 。この場合、 ランダムの変数名を使用していることに注意してください。 (区別しやすいように小文字にしました)。ただし、 number など、ほぼすべての名前を使用できます。 または hey_there_human_can_you_get_me_a_cookie_please_kthxbye 。
3番目(これは文字通り新しい部分です)は、変数に値を割り当てる方法です。以前の記事では、これをConsole.ReadLine()
からの出力に設定しました メソッドまたは8や「Helloworld!」などの固定値。現在、new
を使用して新しいオブジェクトを作成しているため、少し異なるアプローチを使用しています。 キーワード。
。
次の行に進む前に、少し復習しましょう。
。
クラス、オブジェクト、プロパティ、およびメソッドのレビュー
オブジェクト指向では、2つの最も重要な概念はクラスとオブジェクトです。これについては、このシリーズの2番目の記事で、クラスをテンプレートとして、オブジェクトをそれらのテンプレートから作成したもの、たとえばレシピ(クラス)からのケーキ(オブジェクト)として考えることができると説明したときに簡単に学びました。
オブジェクトのテンプレートであるクラスは、プロパティとメソッドを介してオブジェクトがどのようになるかを定義します。 new
を使用してオブジェクトを作成する場合 キーワードを使用すると、クラスで定義されたプロパティとメソッドを持つ一意のオブジェクトを取得できます。
たとえば、特定のレシピから新しいケーキを作成したい場合があります。そうすることで、レシピをインスタンス化してケーキオブジェクトを取得したと言えます。このケーキは、そのレシピで作成された他のすべてのケーキとは異なるため、1つのケーキに変更を加えても、他のケーキには影響しません。 1つのケーキにフロスティングを入れても、すべてのケーキにフロスティングがかかるわけではありません。
プロパティは、オブジェクトが何であるかを定義する値です。プロパティをオブジェクトにアタッチされる一種の変数と考えると、より簡単な場合があります。たとえば、ケーキオブジェクトの場合、フロスティングまたはフィリングのタイプはプロパティである可能性があります。
メソッドは、オブジェクトが実行できることを定義します。たとえば、車は運転できます。エンジンがどのように機能するかを実際に知る必要はありません。あなたは単に車に始動するように言うことができます、そして車はそれがエンジンを回転させてあなたをあなたの陽気な道に連れて行くために何をする必要があるかを世話します。オブジェクト指向のすばらしい点の1つは、メソッドの基本的な動作を実際には気にしないことです。また、そうする必要もありません。これは、前にも説明した抽象化の概念です。
ケーキについてはすでに説明しているので、
AddFilling
などのケーキのメソッドを想像できます。 およびWrapInPaper
たとえば、充填プロパティを追加または調整したり、ケーキを紙で包んだものとして指定したりします。
。
ピリオドまたは「ドット」を使用することで、オブジェクトやクラスを扱っていることを認識できることがよくあります。たとえば、プログラムの出力では、Console.ReadLine()
を使用します。 (「コンソールドットReadLine」と呼ばれます)。ドットの前の最初の部分はクラスまたはオブジェクトを決定し、ドットの後の2番目の部分は呼び出したいプロパティまたはメソッドを決定します。
プロパティとメソッドの違いをどのように見分けますか?ほとんどの場合、メソッドには括弧がありますが、プロパティにはありません。たとえば、コマンドConsole.ReadLine()
Console
に質問します ReadLine()
を呼び出すクラスまたはオブジェクト 「ReadLine」の後に括弧が続くため、メソッド。
プロパティの場合、通常の変数を使用する場合とほとんど同じ方法でプロパティを操作することがわかります。 int
と同じように、数学演算の実行、値の割り当て、値の読み取りなどを行うことができます。 およびstring
変数。実際、ゲームコードを少し変更したい場合は、コンソールの前景色と背景色のプロパティを次のように設定できます。
Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.White;
これらのステートメントを追加すると、下の図1に示すように、次にプログラムで何かを出力するときに、テキストが青色の背景に白で書き込まれます。
図1:白地に青のコンソールテキスト
ウィンドウ全体が青いと思っていたかもしれませんね。すでに存在する黒い背景をクリアするようにコンソールに指示していないため、出力行のみが青色になります。この変更は、Clear()
を呼び出すことで実現できます。 コンソールのメソッド:
Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.White; Console.Clear();
この追加により、下の図2の線に沿って何かが得られます。
図2:青いコンソールウィンドウ
この例では、最初にオブジェクト指向を使用してコンソールのプロパティに値を割り当て、次にコンソールに何かを実行するように要求します。このパターンは、オブジェクト指向で一般的です。
学習する必要のあるメソッドに関してもう1つあります。それは、パラメータの使用です。 。幸い、WriteLine()
を使用してコンソールにテキストを書き込むときに、すでにパラメータを使用しています。 メソッド。
パラメータを使用すると、メソッドの実行方法を構成できます。たとえば、コンソールに何かを書き込みたい場合は、何を書き込むかをコンソールに指示する必要があります。これを行うには、メソッド名に続く括弧に1つ以上のパラメーターを入れます。
Console.WriteLine(“this is a parameter”);
これまで、何かを出力するために固定テキストのみを使用してきましたが、変数、プロパティ、またはオブジェクト全体をメソッドに渡すこともできます。たとえば、WriteLine()
メソッド、int
を受け取ることができます コンソールに渡す変数は、その変数の値を表示します。
int i = 99; Console.WriteLine(i);
さまざまなクラスやオブジェクトでできることは、正確には大きく異なります。さまざまなオブジェクトの機能の詳細については、APIドキュメントを参照してください。 Visual Studioなどの一部の開発ツールは、メソッドが必要とするものに基づいて値を提案したり、オブジェクトやクラス名の入力を開始するときに使用可能なプロパティやメソッドを提案したりすることで、非常に役立ちます。
たとえば、Visual Studioでは、Console
と入力すると、コンソールのすべてのプロパティを確認できます。 と「ドット」。ほんの一瞬待つと、下の図3に示すように、プロパティとメソッドのリスト、およびさまざまなプロパティとメソッドの機能に関するドキュメントが表示されます。
図3:VisualStudioIntellisenseプロンプト
Visual Studioでは、この機能はIntelliSenseと呼ばれ、Visual Studioで開発を行う場合、これは使用できる最も便利な機能の1つになります。他の開発ツールも同様の機能を提供します。
最後に、オブジェクト指向にはコンストラクタと呼ばれる特別なタイプのメソッドが1つあります。 。コンストラクターは、new
を使用してオブジェクトを作成するときに呼び出されるメソッドです。 キーワード。このメソッドを使用すると、オブジェクトの値の初期化などのタスクを実行でき、常にオブジェクトの存続期間中に呼び出される最初のメソッドです。
。
推測ゲームに戻る
Random random = new Random();
と書くと Random()
一部はコンストラクターです。他のメソッドと同様に、パラメータを受け入れる場合があります。このパラメータを使用して、オブジェクトのプロパティを初期化できます。
これで、ゲームのランダムな整数を作成するために追加した2行目に戻すことができます。
int answer = random.Next(10) + 1;
テキストの入力を開始すると(単にコピーした場合を除き、これも問題ありません。図4を参照してください)、Visual StudioのIntelliSenseがポップアップし、Next()
以下に示すように、メソッドは実行します。
図4.Random.Next()
このヒントは、Random.Next()
メソッドには、タイプint
のパラメーターが必要です 最大値は「maxValue」です。名前には、タイプではなく記述子が含まれていることに注意してください。整数値を「maxValue」と呼ぶ必要はありません。
次に、int
を使用してそのメソッドを呼び出すとわかります パラメータの場合、メソッドは非負のランダム整数を返します。私たちのゲームでは、それを answerの変数名で割り当てます。 後で参照できるようにします。
ただし、ドキュメントには、返される値が未満であると記載されています。 最大。したがって、10を渡すと、それよりも小さい値が得られるため、最大で9までしかできません。さらに、Next()
から返される数値 は負ではないため、0になる可能性があり、1から10までの数値が必要です。
つまり、random.Next(10)
を呼び出すと得られるもの は0から9までの任意の数値です。その数値に1を加算すると、 answer に割り当てる前に、1から10までの数値になります。 。
ここでこれらの2つの行を再検討すると、何が起こるかがより理解できるはずです。
Random random = new Random(); int answer = random.Next(10) + 1;
まず、Random
に基づいて新しいオブジェクトを作成します クラス。これをNext()
を呼び出します メソッドを実行し、値10をそのメソッドに渡します。次に、そのメソッドが実行されたら、結果に1を加算し、その値をint
に格納します。
それでおしまい!完了です。これで、このプログラムを実行するたびに、ユーザーはコンピューターに生成するように指示したランダムな値を推測する必要があります。
。
どこまで来たかを見る
シンプルなコンソールゲームのすべての側面を構築し、理解しました。このシリーズを通じて、プログラムの実行方法、アプリケーションの構築方法、コードの記述方法、記述するコード、変数、ループ、ブランチ、オブジェクト、クラスなど、プログラミングの多くの側面を学びました。
ただし、知っておくべきことは、今学んだことは、プログラマーとして知っておく必要のあることの基礎にすぎないということです。開発者としての道を歩み始めたい場合でも、友達を感動させるのに十分なことを学びたい場合でも、これらの記事のレッスンは良い出発点になるはずです。
あなたがこのシリーズを楽しんだことを願っています、そしてあなたがもっと探求することに興味があるなら。大西洋コミュニティの他の記事もチェックしてください。このシリーズがここからあなたを連れて行くところはどこでも、あなたのプログラミングを楽しんでください! Atlantic.Netの市場をリードするVPSホスティングソリューションを必ずチェックしてください。
ハウツーシリーズ
これは、プログラミング入門
の5部構成のシリーズの第5部です。- プログラミング入門:はじめに
- プログラミング入門:最初のプログラム
- プログラミング入門:変数、型、およびデータの操作
- プログラミング入門:フロー制御
- プログラミング入門:オブジェクト指向プログラミング