【クラウドAI開発講座 #5】C#のクラスとオブジェクト
現在、高専キャリアさんと大企業のマイクロソフトさんとコラボ企画に参加しています。
「クラウドAI講座」というものは、Azureというものを使い倒して、MicrosoftのTeams向けのAI botを開発しようというものです。
このブログでは、その開発の進捗状況などを載せていきますので、興味がある方はぜひ読んでいいただけたら幸いです。
前回の記事↓↓
今週(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を完成させます!
次の記事↓↓