にょにょにょ

コーヒーが趣味の学生の雑記ブログ

【クラウドAI開発講座 #5】C#のクラスとオブジェクト

Microsoft × 高専キャリア

現在、高専キャリアさんと大企業のマイクロソフトさんとコラボ企画に参加しています。

クラウドAI講座」というものは、Azureというものを使い倒して、MicrosoftのTeams向けのAI botを開発しようというものです。

このブログでは、その開発の進捗状況などを載せていきますので、興味がある方はぜひ読んでいいただけたら幸いです。

前回の記事↓↓

lucky-one.hatenablog.com

 

今週(5週目)の進捗

C#オブジェクト指向について勉強

  前回まで、Azureをいじったり、Botをつくったりしてました。

ですが、プログラムの知識が全然なくて簡単なBotをつくることしかできなかったので、もっと複雑なものをつくるために、C#について勉強することにしました。

 今回は、オブジェクト指向についてです。前回よりも詳しく学びました。(こちらを参考にしました。)

 

 まず、以下のサンプルプログラムをご覧ください。

(Person.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Sample
{
    class Person
    {
        //  名前(フィールド)
        public string name = "";
        //  年齢(フィールド)
        public int age = 0;
        //  情報の表示(メソッド)
        public void ShowAgeAndName()
        {
            Console.WriteLine("名前:{0} 年齢:{1}", name, age);
        }
        //  情報の設定
        public void SetAgeAndName(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
    }
}

(Program.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Sample601
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1, p2;
            p1 = new Person();  //  一つ目のPersonクラスのメソッドのインスタンスを生成
            p2 = new Person();  //  二つ目のPersonクラスのメソッドのインスタンスを生成
            p1.name = "山田太郎";   //  フィールドnameに値を代入
            p1.age = 19;            //  フィールドageに値を代入
            p2.SetAgeAndName("佐藤花子", 23);   //  setAgeAndName()メソッドで、nameとageを設定
            //  showAgeAndName()メソッドで、それぞれのインスタンスのnameとageを表示
            p1.ShowAgeAndName();
            p2.ShowAgeAndName();
        }
    }
}

 このコードは、Personというクラスのインスタンスを生成して処理を行っています。

            Person p1, p2;
            p1 = new Person();  //  一つ目のPersonクラスのメソッドのインスタンスを生成
            p2 = new Person();  //  二つ目のPersonクラスのメソッドのインスタンスを生成

Program.csのこの部分で、インスタンスの生成を行っています。

そして、このインスタンスにはそれぞれ異なるフィールドやメッソドが存在します。

フィールド

 まず、フィールドについてですが、

Person.csのこの部分で、フィールドに初期値を代入しています。これらの値の代入はインスタンスの生成と同時に行われます。

        //  名前(フィールド)
        public string name = "";
        //  年齢(フィールド)
        public int age = 0

そして、Program.csから次のようにアクセスして、フィールドへの値を代入します。

            p1.name = "山田太郎";   //  フィールドnameに値を代入
            p1.age = 19;            //  フィールドageに値を代入
メソッド

 次に、メソッドについてですが、

メソッドは、C言語などの関数と同じようなものです。

Person.csでは、以下のように二つのメッソドを定義しています。

        //  情報の表示(メソッド)
        public void ShowAgeAndName()
        {
            Console.WriteLine("名前:{0} 年齢:{1}", name, age);
        }
        //  情報の設定
        public void SetAgeAndName(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

そして、Program.csで呼び出しています。

            p2.SetAgeAndName("佐藤花子", 23);   //  setAgeAndName()メソッドで、nameとageを設定
            //  showAgeAndName()メソッドで、それぞれのインスタンスのnameとageを表示
            p1.ShowAgeAndName();
            p2.ShowAgeAndName();

このようにすることで、フィールドやメソッドが同じでも、インスタンスが異なることで、違う結果を得ることができます。

 

 オブジェクト指向について、少しわかってきたような気がします。できたら、Botのプログラムも、オブジェクト指向的にいじってみたいなと思います。

 

これからの予定

次にやること!

  • Cognitive Serviceをいろいろ使ってみる
  • C#の理解を深める
  • EchoBot.csのプログラムの構造を理解する

全体スケジュール

  • 7/4 20:00~21:00 キックオフセクション
  • 7/25 15:00~18:00 中間プレゼン
  • 8/29 15:00~18:00 最終プレゼン

最終プレゼンまでにメンターさんに助けてもらいながら、自分で勉強してAI botを完成させます!

 

次の記事↓↓

lucky-one.hatenablog.com