浦霞 本仕込 本醸造 720ml x 12本送料無料

連載

C#入門

第3回 クラスとオブジェクト

(株)ピーデー
川俣 晶
2001/04/21


クラスとインスタンス

 オブジェクト指向の概念のあるプログラム言語を使ってきた方々なら、この説明は不用だろう。読み飛ばしてしまっても構わないが、多少、C#でのオブジェクト指向の構文にも触れるので、斜め読みしていただくとベストである。

 さて、オブジェクト指向のなかでも、クラシックなオブジェクト指向と呼ばれるものは、文字どおりクラス(class)とオブジェクト(object)が存在するものである。C#もこの範疇に入る。クラスとは設計図として機能する定義であり、オブジェクトとは設計図に従って製造される製品と考えると分かりやすい。製造された製品はインスタンス(instance)と呼ばれる。例えば、時計の機能を持ったクラスがあり、それにwatchという名前が付いているとしよう。すると、実際に製造された時計は、クラスwatchのインスタンスと呼ばれる。奇異な用語に聞こえると思うが、意味は難しくないので、丸暗記してしまおう。

クラスとインスタンス
クラスは設計図であり、その設計図を基にして実際に生成された製品がインスタンスである。

 クラスとインスタンスの関係を見るために簡単なサンプル・ソースを見てみよう。以下は、名前(name)と年齢(age)の情報を含むPersonという極めてシンプルなクラスを作ってみた例である。

   1: class Person
   2: {
   3:   public string name;
   4:   public int age;
   5: }
シンプルなPersonクラスの例

 クラスを定義するには、classというキーワードに続き、クラスの名前を記述する。そして、その後の中括弧{}の内部がクラスの内容となる。stringは文字列型を示すデータ型、intは整数型を示すデータ型のキーワードである。それに続けて変数名を記述すると変数を宣言することができる。手前に付いているpublicは後で説明するが、ここではお約束だと思ってほしい。さて、クラスのなかでこのように変数宣言を行っても、実際の変数は作成されない。なぜならクラスとは設計図なので、これは「変数を作りなさい」という指示を書き込んだと見なされるからである。この変数が本当に作成されるのは、クラスのインスタンスが作られたときである。逆に言えば、ここではnameやageという変数は1個しか宣言していないが。インスタンスは何個でも作ることができるので、変数nameやageは、実際には何個も作られる場合もある。

 ここで疑問を持った人もいるだろう。インスタンスを作るというが、具体的にどう作ればよいのだろうか。メソッドのなかで、以下のように記述することはできる。

   1: void test()
   2: {
   3:   Person taro;
   4:   Console.WriteLine(taro.name);
   5: }
Personクラスのインスタンスを作成する(エラーになる例)

 これはtest( )というメソッドのなかで、上で宣言したPersonというクラスを利用した例である。だが、このプログラムはまったく機能しない。コンパイルする段階で、「未割り当ての変数taroにアクセスされました」というエラー・メッセージを食らうことになる。Visual BASICやJavaの経験があればピンと来るかもしれないが、“Person taro;”と書いて実際に行われるのは、Personクラスのインスタンスを参照する入れ物としての変数が用意されるだけで、Personクラスのインスタンスが実際に作られるわけではない。インスタンスを作るには、newキーワードを書き込む必要がある。

   1: void test()
   2: {
   3:   Person taro;
   4:   taro = new Person();
   5:   Console.WriteLine(taro.name);
   6: }
newキーワードを使用してPersonクラスのインスタンスを作成する

 3行目の段階では、変数は準備されるが、中身は空っぽである。4行目の段階で、クラスPersonのインスタンスがnewキーワードにより生成される。生成されたインスタンスは、そのままでは、ただ存在するだけでアクセスすることができない。そこで、空っぽであった変数taroに、インスタンスへの参照を代入(=)する。すると、変数taroを経由して、生成したインスタンスにアクセスすることが可能になる。5行目のConsole.WriteLineというメソッドの引数として指定している“taro.name”は、変数taroを通して、nameというクラス内の変数(メンバ変数)を参照するという意味の記述である。

クラスとインスタンス、インスタンスを格納する変数の関係
宣言されたPersonクラスからインスタンスを生成し、その結果を変数taroに代入する。

 もし、4行目がなければ、変数taroは空っぽであり、インスタンスも生成されていないので、エラーとなり実行は不可能である。

 ちなみに、このサンプルソースはそのままでは実行できない。なぜなら、変数nameに文字列を入れるコードが存在しないので、変数nameが空っぽのまま出力しようとしてエラーが起こる。これは以下のように変数に何か代入しておけば回避できる。

   1: static public void test()
   2: {
   3:   Person taro;
   4:   taro = new Person();
   5:   taro.name = "太郎";
   6:   taro.age = 20;
   7:   Console.WriteLine(taro.name);
   8: }
Personクラスのインスタンスであるtaroの変数nameに値を代入する

 繰り返し説明することになるが、5行目と6行目の代入は、3行目と4行目の間に移動させると機能しない。この時点で、入れ物としての変数taroは存在するが、インスタンスはまだ作られていないためだ。

 さて、変数nameや変数ageは1個しか定義していないのに、複数作られる可能性があると書いた。具体的に、どんな状況で複数作られるのだろうか。具体的な一例を以下に示す。

   1: static void test()
   2: {
   3:   Person taro;
   4:   Person hanako;
   5:   taro = new Person();
   6:   taro.name = "太郎";
   7:   taro.age = 20;
   8:   hanako = new Person();
   9:   hanako.name = "花子";
  10:   hanako.age = 17;
  11:   Console.WriteLine(taro.name);
  12:   Console.WriteLine(hanako.name);
  13: }
newを2回使用して、Personクラスの2つのインスタンスを作成する

 この例では、newが2回出現することから分かるとおり、2個のインスタンスを作っている。それぞれ、taroという変数とhanakoという変数に参照情報を格納しているが、taroとhanakoではまったく別個のインスタンスを参照しているので、同じ変数nameに値を代入しても、それぞれ別個のものとして扱われる。そのため、hanako.nameに代入したからといって、taro.nameの値が書き替わるわけではない。これを実行すると以下のような結果になる。

2つのインスタンスを生成するサンプル・プログラムの実行結果
taroとhanakoにそれぞれ独立したインスタンスを生成しているため、taro.nameとhanako.nameはまったく別のものとして扱われる。この結果、「太郎」、「花子」という別の文字列が表示された。

 なお、ここまでの解説はソースコードの一部分だけを抜粋して解説していたので、実際に実行できるソースコード(最初から最後まで)を以下に示す。メソッドtest( )にstaticが付いている理由は次の章で説明する。

   1: namespace ConsoleApplication4
   2: {
   3:   using System;
   4:
   5:   class Person
   6:   {
   7:     public string name;
   8:     public int age;
   9:   }
  10:
  11:   class Test
  12:   {
  13:     static void test()
  14:     {
  15:       Person taro;
  16:       Person hanako;
  17:       taro = new Person();
  18:       taro.name = "太郎";
  19:       taro.age = 20;
  20:       hanako = new Person();
  21:       hanako.name = "花子";
  22:       hanako.age = 17;
  23:       Console.WriteLine(taro.name);
  24:       Console.WriteLine(hanako.name);
  25:     }
  26:
  27:     public static int Main(string[] args)
  28:     {
  29:       Test.test();
  30:       return 0;
  31:     }
  32:
  33:   }
  34: }
Personクラスの2つのインスタンスを作成するプログラム(実行可能なコード)
 

 INDEX
 C#入門 第3回 クラスとオブジェクト
   1.オブジェクト指向とコンポーネント指向
  2.クラスとインスタンス
   3. staticの効力
 
「C#入門」


増大クリーム BRAVION Liquid 公式通販 5本 5ヶ月分 シトルリン アルギニン タウリン 増大リキッド

fhEFreYOwz

増大クリーム BRAVION Liquid(ブラビオンリキッド) 公式通販 5本 5ヶ月分 【2020年モンドセレクション金賞受賞増大クリーム】シトルリン アルギニン タウリン 増大リキッド

増大クリーム BRAVION Liquid(ブラビオンリキッド) 公式通販 5本 5ヶ月分 【2020年モンドセレクション金賞受賞増大クリーム】シトルリン アルギニン タウリン 増大リキッド:BRAVION公式オンラインショップ

■ご注意下さい!■【転売品・偽造品につきまして】BRAVIONブランド「正規品」は「BRAVION公式オンラインショップ」でのみ製造・販売を行っております。見た目は大変似通っておりますが、「品質が著しく粗悪である」とのご報告を頂いております。万が一、「健康被害」などが発生してしまった場合でも「保証は一切出来かねます」ので、取扱いのショップには十分にご注意下さいませ。

【メンズクリーム(増大クリーム)で史上初の快挙!7冠達成!!】まさに別次元の増大クリームです。大きさに悩みのある男性から増大したとのご報告を絶えず頂戴する至高の増大クリーム!他の増大クリームで満足出来なかった方にこそ試して頂きたい。

【2020年モンドセレクション金賞受賞】国際的な専門家による品評機関で世界基準の高品質が認めらました。2020年で唯一金賞を受賞した唯一無二の増大クリームです。圧倒的に他の増大クリームとは品質が違います。

【業界初のホット&クールを実現】増大リキッドの常識を覆す独自の「ディープエフェクト理論」を提唱!「塗ってホット」だけじゃない!他に類を見ない「流してクール」は癖になる新感覚でさらに驚きの実感力があります。

【製薬会社との共同開発】製薬会社と共同で特許製法も使って開発しました。L-シトルリン・L-アルギニンは当たり前で肌をいたわるボタニカル成分に加え、男性に嬉しい成分を100種類以上を贅沢配合!

,
商品説明
名称BRAVION Liquid
原材料シトルリン、アルギニン、タウリン、リンゴ果実培養細胞エキス、サポナリアプミラカルス培養エキス、ブドウ果実細胞エキス、アルガニアスピノサカルス培養エキス、ロドデンドロンフェルギネウム葉培養細胞エキス、ダイヤモンド末、金、イチョウ葉エキス、オタネニンジン根エキス、センブリエキス、フランスカイガンショウ樹皮エキス、ブドウ葉エキス、キュウリ果実エキス、リンゴ果実エキス、ダイズ種子エキス、スミノミザクラ花エキス、ローマカミツレ花エキス、ヤグルマギク花エキス、トウキンセンカ花エキス、フユボダイジュ花エキス、カミツレ花エキス、セイヨウオトギリソウ花/葉/茎エキス、セイヨウニワトコ花エキス、ゼニアオイ花エキス、セイヨウキズタ葉/茎エキス、パリエタリアエキス、アルニカ花エキス、ローズマリー葉エキス、レモン果実エキス、セイヨウアカマツ球果エキス、ホップエキス、スギナエキス、セイヨウトチノキ種子エキス、ハマメリス葉エキス、アセチルヘキサペプチド-8、ペンタペプチド-18、パルミトイルトリペプチド-5、ヒトオリゴペプチド-1、ヒトオリゴペプチド-13、ヒトオリゴペプチド-14、ヒトオリゴペプチド-21、ヒアルロン酸クロスポリマーNa、リシンHCl、グルタミン酸、グリシン、ロイシン、ヒスチジンHCl、セリン、バリン、アスパラギン酸Na、トレオニン、アラニン、イソロイシン、アラントイン、フェニルアラニン、プロリン、チロシン、イノシン酸2Na、グアニル酸2Na、グルコシルヘスペリジン、リン酸アスコルビルMg、ナイアシンアミド、ビオチン、シアノコバラミン、パンテノール、ピリドキシンHCl、リボフラビン、パルミチン酸レチノール、テトラヘキシルデカン酸アスコルビル、トコフェロール、酢酸トコフェロール、PCA-Na、ベタイン、コレステロール、シクロヘキサン-1,4-ジカルボン酸ビスエトキシジグリコール、ココイルサルコシンNa、コーン油、BG、ペンチレングリコール、メントール、エタノール、イソマルト、レシチン、乳酸、水添レシチン、塩化Na、カプリリルグリコール、水、キサンタンガム、オレイン酸ソルビタン、PEG-40水添ヒマシ油、PPG-26ブテス-26、フェノキシエタノール、リン酸Na、安息香酸Na、ソルビン酸K、グリセリン、DPG、ジグリセリン
内容量150mL
保存方法直射日光や高温多湿を避け常温で保存
販売者株式会社コミネット
050-6870-9646
東京都渋谷区神南1-5-14 三船ビル601
広告文責株式会社コミネット
050-6870-9646
メーカー株式会社デイワン
生産国日本
商品区分健康食品
【送料無料!】【1ケース72個セット!】【近江兄弟社】 メンターム サンベアーズストロングスーパープラスN 30g×72個セット SPF50+ PA++++【赤】,カバーマーク エクストラフォーミュラ 08,資生堂 リバイタル グラナス フォーカスリファイニング マスク レフィル 60枚入り(61ml) 【シート状マスク(部分用)】,ドクタールノー オイル リプルパンロゼ 30ml DR Renaud ロゼ ソワン アンテージュ,NEW ウォーターシルク ベッドフリルカバー ブラウンCML217C用,【ポイント6倍】最大33倍!シックスパックジェル Six Pack Gel 200g 5個セット,【ポイント6倍】最大33倍!トルーク 薬用ホワイトニングフェイスジェル 50g 医薬部外品 3個セット オールインワンゲル ジェル メンズ 送料無料,Bランク シザー ハサミ 鋏 はさみ 美容師 理容師 F1029,クラランス スープラ デイクリーム 50mL 【並行輸入品】 【並行輸入品】,ナチュラレーベル フォーハーブス SDボディクリーム 500g セルライトケア スリミングジェル エステティックサロン 業務用 施術用 ボディ専用クリーム 正規品 送料無料,【正規品】【送料無料】DecleorAroma Blend Active Oil - Energie4.06ozアロマブレンドオイルアクティブ - エネルギー・【海外直送】,FV-E40 オイルウォーマーDX スクエアタイプ アルミニウム プラスチック ボトル付き 250ml オイルウォーマー オイルヒーター マッサージオイル,入浴剤業務用 ノボピン レッド 18kg 【送料無料】国産 紀陽除虫,【送料込】HK0651宝石爪ヤスリ×240点セット まとめ買い特価!ケース販売 ( 4901601975932 ),【割引クーポン】イオンダッシュ ネオ◆6本+1本おまけ 計7本セット デオドラントスプレー 消臭スプレー 消臭剤 体臭 わきが 足の臭い 加齢臭 対策 タバコ 消臭 靴 におい【39ショップ】☆,Chanel Hydra Beauty LotionVery Moist シャネル イドゥラ ビューティ ベリー モイスト ローション 150ml5oz,【ポイント6倍】最大33倍!トルーク 薬用ホワイトニングフェイスジェル 50g 医薬部外品 2個セット オールインワンゲル ジェル メンズ 送料無料,【4000円offクーポン(要獲得) 1/28 9:59まで】 【送料無料】 バニラ バイブス EDP・SP 100ml 【ジュリエット・ハズ・ア・ガン】【香水 フレグランス】【ユニセックス・男女共用】【JULIETTE HAS A GUN VANILLA VIBES EAU DE PARFUM SPRAY】,マーヴェラティ デジタル スキンベール 12g,【送料無料】韓国コスメ チャームゾーン Ge スキンケアシート フレッシュシトラスプレミアムモイスト 370枚セット FCPM37 【化粧品 レビュー投稿で次回使える2000円クーポン全員にプレゼントメイクアップ小物・鏡・コスメBOX】,(エドウィン) カジュアルパンツ カジュアル メンズ チャコールグレー L,【送料込】ユニ・チャーム シルコット うるうるスポンジ仕立て 40枚入×36個セット(4903111478064) ※パッケージ変更の場合あり,【最大400円クーポン】【3,980円~送料無料】【あす楽13時まで】【送料無料】【x5個】ナンバースリー ミュリアム トリートメント G 3000g 詰替え用《ナンバースリー トリートメント 美容室専売 サロン専売品 ヘアトリートメント 詰め替え salon 業務用 treatment》,【最大1,000円オフクーポン!】クロエ ノマド オードトワレ EDT スプレー 75ml CHLOE【送料無料】 レディース【あす楽対応】香水 フレグランス ギフト プレゼント 誕生日,★送料無料★アルビオン エクシアAL セルクラリティ エッセンスフォーム(150ml)[4969527161136],ハリケーンティーライト no25スモークグレー×ゴールド,エスケー石鹸 しっとりシリーズ 化粧せっけん 100g×48,デミ フローディア シャンプー バランシング 2000ml 詰替用 (DEMI FLOWDIA SCALP)スキャルプ 詰め替え用 レフィル,【正規品・送料込】エスティローダー ストレス リリーフ アイ マスク(10回分),★純正品/送料無料★ジルスチュアート アイコニックルック アイシャドウ G304 special holiday,パイモア スペクトラムカラーズ 400g グレージュブラウン ×10セット,エレガンスクルーズ フローリック ネイルラッカー OR01,ヤクルト化粧品 パラビオ ACパック 80g Yakult パック・マスク [2874]送料無料,【正規品・送料込】シャネル クレイヨン スルスィル 20ブロンサンドレ,グッチ GUCCI グッチ バイ グッチ メイド トゥ メジャー 90ml EDT SP fs,2088 クリスタルオークルディライトss16 1440粒入り,その他 (まとめ)サラヤ スマイルヘルパーさんポータブルトイレの消臭液 本体 500ml 1本【×10セット】 ds-2299441,ランコム アイドル EDP SP 25ml [並行輸入品],YSL イヴ・サンローラン ポリッシングブラシ 2,★純正品/送料無料★アディクション ザ アイシャドウ パール 003P4971710288797,フレーバーライフ キャリアオイル マカダミアナッツオイル(1000ml),CHANEL COCO MADEMOISELLE EDP100mlシャネル ココマドモアゼルオードゥ パルファム スプレイ(ヴァポリザター)CHANEL ラッピング&リボン・ショップバッグメッセージカード付,NIGHT LOTION ~ナイトローション~,【正規販売店】BE-MAX Remoduline Draina-gel(600g×3本セット)【送料無料】【20】リモデュリン ドレナージェル,23インインナチュラルシルキーリアルヒューマンヘアーブラックロングストレートウィッグフルヘアピース,【送料無料】セボーテ フェイシャルスパトリートメントマスク&クリーナー【smtb-TD】【saitama】,【5個セット】ハツモール 薬用スカルプシャンプー 詰替用,【送料無料】【サロン専売品】アクアストーリ― アフターシャンプー1000mL トリートメント1kg セットアミノ酸系 ダメージヘア用 サラサラ の洗いあがり 弱酸性 あす楽,【正規品・送料込】ジバンシイ ノワール・クチュール・ウォータープルーフ 02パープルベルベット(8g),【正規品・送料込】ジョルジオアルマーニ アイズ トゥ キル デザイナー アイライナー 3,【正規品・送料込】クリスチャンディオール ディオールスキンフォーエヴァーコンパクトエクストレムコントロール(ケース付)012 ポーセリン (9g),【M・A・C マック】スタジオ フィックス コンプリート カバレッジ クッション コンパクト SPF 50 N28(コンパクト無し),単品販売匠の技 グルーミングキットLA G-3108 1セット[代引選択不可],カバーマーク COVERMARK エクストラフォーミュラ 04 20g お一人様2点限り,【美容オイルプレゼント】【あす楽】ディオール フォーエバー アンド エバー オードトワレ 100ml [ DIOR / ChristianDior / クリスチャン ディオール / 香水 / フレグランス / EDT / パフューム / オードパルファン ]『5』【 送料無料 】※北海道・沖縄除く,初回全額返金保証書付 送料無料 公式 チャップアップ CHAP UP 育毛ローション3本セット 育毛剤 育毛ローション 男性用 男 女性用 発毛促進 養毛 育毛 薄毛対策 薄毛 抜け毛対策,ディオール Dior カプチュール ユース クリーム 美容クリーム 50ml,目もとエステ ピンク調 ビューティタイプ EH-SW54 の限定モデル EH-CSW54-P(ピンク)

Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH