手作りかしゃ餅 9袋セット

連載

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#入門」


エルツティン シルククリーム 50g×3本 再生クリーム Arztin abijou クリニック アビジュー ドクターズコスメ 機能性化粧品 弾力 水分クリーム 保湿クリーム うるおい肌

LRTU7Dp1sZ

【3本組】エルツティン シルククリーム 50g×3本【正規輸入販売元】再生クリーム Arztin abijou クリニック アビジュー ドクターズコスメ 機能性化粧品 弾力 水分クリーム 保湿クリーム うるおい肌

【3本組】エルツティン シルククリーム 50g×3本【正規輸入販売元】再生クリーム Arztin abijou クリニック アビジュー ドクターズコスメ 機能性化粧品 弾力 水分クリーム 保湿クリーム うるおい肌:atelier-eirene
エルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリームエルツティン シルククリーム 50g 再生クリーム

サンコー おくだけ吸着  拭けるマット 防水 床マット


■同梱におすすめ商品


■商品詳細
商品名 エルツティン シルククリーム 50g【3本組】
内容成分 全成分水、グリセリン、シクロペンタシロキサン、プロパンジオール、ジメチコン、BG、テトラエチルヘキサン酸ペンタエリスリチル、ジステアリン酸ポリグリセリル-3メチルグルコース、スベリヒユエキス、ペタイン、1.2-ヘキサンジオール、ビフィズス菌培養溶解質、水添レシチン、アルコール、パルミチン酸、ミネラル水、グレープフルーツ果実エキス、レシチン、加水分解エンドウタンパク、フィトステロールズ、パンテノール、ジメチコンクロスポリマー、ポリソンベート80、ジメチコノール、(アクリル酸Na/アクリロイルジメチルタウリンNa)コポリマー、スクワラン、(アクリロイルジメチルタウリンアンモニウム/VP)コポリマー、ポリシリコーン-11、ナイロン-12、シリカ、PEG-10ジメチコン、ポリソルベート40、イソヘキサデカン、ポリアクリロイルジメチルタウリンアンモニウム、シア脂、トレハロース、アルガニアスピノサ核油、ユズ果汁エキス、ユーカリ葉エキス、チョウジエキス、クララ根エキス、リン酸アスコルビル3Na、セラミド3、オリーブ果実油、セテアリルアルコール、ミツロウ、ステアリン酸グリセリル、ヒマワリ種子油、トリ(カプリル/カプリン酸)グリセリル、コレステロール、カプリリルグリコール、クロフサスグリ種子油、ヒマワリ種子油不けん化物、フウセンカズラ花/葉/つるエキス、アデノシン、EDTA-2Na、アラントイン、グリチルリチン酸アンモニウム、ポリリン酸Na、フェノキシエタノール、カフェイン、グルコン酸亜鉛、セイヨウトチノキ種子エキス、トコフェロール、ローズマリー葉エキス、大豆油、ペンチレングリコール、アシアチコシド、アシアチン酸、マデカシン酸、ヒト遺伝子組換オリゴペプチオド-1、ソルビン酸K、酢酸、乳酸
内容量 50g×3本
保存方法 高温多湿および直射日光を避け、冷暗所に保存して下さい。
【使用上の注意】 お肌に異常が生じていないかよく注意して使用してください。お肌に合わないときは、ご使用をおやめください。
製造 韓国
販売元 株式会社シンビジャパン
広告文責 株式会社シンビジャパン03-6424-5304 (連絡先電話番号
【返品条件等販売に関する重要事項】 ■ご注文キャンセルに関して
ご注文後、7日以上入金が確認できない場合キャンセル扱いになります。
商品発送後の返品・キャンセルは一切お受けしておりません。

■お客様都合の場合のご返品・交換 注文ミス(色・サイズ・機種などの仕様間違い)又は、色が気に入らない、等のお客様都合の返品・交換は受け付けておりません。何卒ご了承ください。

■初期不良品の場合のご返品・交換 商品管理には十分留意しておりますが、万が一商品の不良・破損・誤納品がございます場合、
誠にお手数をおかけいたしますが、商品到着日より7日以内にご連絡ください。7日以上経過した場合は、ご返品を承れません。何卒ご了承くださいませ。
【連絡先】[email protected] までご連絡ください。 ご連絡確認後、不良商品の返品・交換手順につきましてご案内いたします。 返品・交換に係る送料は弊社にて負担致します。 ご返金の場合返品商品の到着確認次第、7営業日以内にご指定口座にお振込み致します。
※故意、過失を問わずお客様のお取り扱い方法に原因がある損傷や不良(改造・分解・落下・踏み付け・その他含む) 変質、変色、黄ばみなどは対象外です。

海外生産品に関しましては、軽度の傷や汚れは初期不良との扱いはしておりません。ご了承の上、ご購入ください。

【クーリングオフについて】 クーリングオフは、訪問販売において適用される制度です。 当サイトを含めた通信販売にクーリングオフは適用されません。 あらかじめご了承ください。
※製品の仕様は改良などのため事前予告なしに変更することがあります。
※モニターの仕様によって実際の色と異なって見える場合があります。
,【ご購入前に】
決済・配送方法に係るご利用ガイドをご確認の上、ご注文ください。
https://www.rakuten.co.jp/atelier-eirene/info2.html#shiharai

●日時指定についてゆうパック配送ご利用のお客様にかぎり日時指定が以下の時間帯で可能です。【メール便ゆうパケットや小型宅配便レターパック配送は日時指定不可】午前中・12時-14時・14時-16時・16時-18時・18時-20時・20時-21時●決済
決済方法を決済選択の場合、メール便はご利用出来ません。
決済は、宅配業者を通じてのお支払いの為、宅配便配送のみとなり、
【商品代金+地域別送料+決済手数料】がお支払い金額です。
当店からの注文確認メールにて、商品決済総額をご確認ください。

●セブンイレブン決済・ローソン決済(前払)
商品代金合計+決済手数料:210円~が、お支払い合計金額になります。
システム上、自動で配信される受付確認メールでは、手数料等(210円~)は含まれておりません。
後程、件名:【お支払い番号のお知らせ】より【払込票番号(収納番号)・お支払い総額(ご注文金額+手数料)】をメールにてご連絡致します。
ご確認の上、お支払い手続きください。
リンダステージシャドウ 30枚入り【飲む日焼け止め 日焼け止め 日本製 UVカット UVケア 舐める 食べる 飲む クロセチン ブルーベリー味 】 新習慣!水なし簡単舐めるだけ UVケア Linda Stage Shadow クロセチン15mg 高濃度配合,ダンディハウス Oh Dandy! スキンケアセット「オールインワン ジェル + クレンジングフォーム」,【優しい花の香り スキンケア 女性のお悩み リラックス 天然精油100%】アロマドゥース バスエッセンス2(温)500ml 【アロマ入浴剤】,【送料込・まとめ買い×24個セット】ユニリーバ LUX ラックス スーパーリッチシャイン モイスチャー リッチ 保湿ミスト 180ml 1個,【期間限定特別価格1000円OFF】ジェルネイル スターターキット 日本製 カラージェル6色+LEDライト48W ネイルアート 初心者におすすめ,伸長式 スライド式 メイクボックス 鏡付き ドレッサー スリム キャスター コスメワゴン メイクボックス,サンタマリアノヴェッラ 【Santa Maria Novella】 ディフューザー オセアニア 250ml 【佐川急便指定】 【メール便(ゆうパケット)対象外】,ディズニープリンセス【18本セット★はがせるマニキュア 箱入り】,ピュア・シルククリーム35g アーダン化粧品 ※特注品のためお届けまで1-2週間くらいかかります、入荷次第の発送となります ※キャンセル不可,その他 ライオンケミカル アクアリフレ消臭ビーズ 無香料 詰替用 超大容量 1500g 1パック ds2300623,喜筆 KIHITSU 熊野筆 ハートセット,エステダム インテンシブ SP セロムN 30mL ESTHEDERM 正規品 送料無料,ピーチポウ ピコショット トータルエッセンスピコビタミン 30ml 2本セット美容 コスメ 化粧品 コスメチック コスメティック,ラルフ ローレン ポロ レッド EDT オードトワレ SP 125ml ラルフ・ローレン RALPH LAUREN POLO RED EAU DE TOILETTE SPRAY,★割引クーポン配布中★FOREO フォレオ ルナ ミニ 2 ロリポップ ピンク【限定パッケージ】【宅配便送料無料】,アロマセラピー アソシエイツ リフレッシング マッサージアンドボディオイル 100ml,【正規品】【送料無料】La MerThe After Sun Enhancer6.7oz後日エンハンサー【海外直送】,資生堂 ザ・ヘアケア アデノバイタル スカルプエッセンスV(医薬部外品) 180ml,KANEBO(カネボウ) カネボウ ボディ リピッド ウェア ボディクリーム グリーンフローラルの香り 150ml,スック SUQQU3D コントロール アイブロウ 6.7g (me) 【2色から選べる】【メール便のみ】,スコラシャンプー イプシロン 500ml,HC3612 ツメミガキ 4WAY×120個セット,【交換用リフィル】リナーリ LINARI 交換用リフィル フェニーチェ(FENICE) 500ml 詰め替え リードディフューザー アロマディフューザー★あす楽★最安値挑戦 リナーリ,【×6個】シンエイ そのまま! プロテオグリカン ローション 200mL,ビーバンジョア ジョアソーム801  200nl,九嶺堂 熊野筆 KBシリーズ KBブラシ5本セット KB-SET,コスメデコルテ AQ エクストラ プロテクション 60g,【送料無料】 ギフトラッピング 包装 【無料】 フランス 手作りヘアブラシ アルテッセブラシ ハンドメイド クッション 高級ヘアブラシ 猪毛100% ストレートブラシ猪毛 ヘアブラシ 獣毛 髪の傷みが気になる方向け 梅雨 髪がまとまらない を 水分バランスを整え きれいに,【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料無料】 ローズ ポンポン EDT・SP 50ml 【グタール】【香水 フレグランス】【レディース・女性用】【ローズ ポンポン 】【GOUTAL ROSE POMPON EAU DE TOILETTE SPRAY】,2078 Hotfixクリスタルメタリックサンシャインss20 (1440粒入り),【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料込み(沖縄・離島を除く)】 ファーレンハイト シャワージェル (箱なし) 200ml 【クリスチャン ディオール】【香水 フレグランス】【入浴料・シャワージェル】【ファーレンハイト 】【CHRISTIAN DIOR】,【300円クーポン | Fashion THE SALE】送料無料 アヴェダ ローズマリーミント ハンド&ボディ ウォッシュ もっとお得な3個セット 1l x 3 | 日本未発売 AVEDA ボディソープ,【M・A・C マック】スタジオ フィックス フルイッド SPF 15 NC36,【送料無料】ブランシュ・ネージュ イオン粒子パック EX 180g,『あす楽対象』『化粧石けん・固形石鹸』LUX石鹸 ラックス ベルベットタッチ (LUX Velvet Touch) 80g x 144個セット,ラ・ミューテ ビオリズム 洗顔フォーム アドバンス保護美容液 シミ ビタミンC誘導体 敏感肌 吹き出物 ニキビ にきび ハリ たるみ バラ シンプル 毛穴 黒ずみ 開き 洗顔料,薬用 純白専科 すっぴん濃密ジェル 詰め替え オールインワン 80g (医薬部外品) 【10個セット】 (4901872463121-10),【正規品・送料込】ファンケル パウダーファンデーション ブライトアップUV [ケース+レフィル] ベージュライト,☆2個セット☆生活の木・アロマオイル【ブルーサイプレス精油/Blue cypress10mlエッセンシャルオイル 】/生活の木精油は植物抽出/アロマテラピーは香り豊かな植物からの恵み,【3,980円~送料無料】【あす楽13時まで】『×4個』 ナンバースリー ミュリアム トリートメント B 500g 詰替え用 《ナンバースリー トリートメント ヘアトリートメント ヘアートリートメント 詰め替え用》,最大33倍まつ毛美容液 まつげ EGF ヴァレリー Valery 30本 5箱セット,★2021円クーポン配布中 お買い物マラソン★期間限定 送料無料★ジュリーク ローズ セラム もっとお得な3個セット 30ml x 3 | Jurlique 美容液,【7LASH】純国産7LASHジェルリムーバー 10ml×1本 2本セット美容 コスメ 化粧品 コスメチック コスメティック,ユーゲル スィート ポンプ付きボトル 25kg容器 6本セット,フォレオ FOREO ルナミニ3 #パールピンク [139427],★2021円クーポン配布中 お買い物マラソン★期間限定 送料無料★メルヴィータ ビオオイル アルガンオイル お得な12個セット 125ml x 12 【仕入れ】 | 乾燥 保湿 静電気 | Melvita フェイスオイル,ダマイ セルリファーム ボディクリーム,ポイント10倍★9-11日20時~4H限定!【セット】エスハートエス スカルプブラシ ワールドモデル ロング + ルベル イオ ディープマスク 170g,【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料込み(沖縄・離島を除く)】 ランタンポレル アイ 15ml 【ジバンシイ: 化粧品・コスメ スキンケア アイケア】【GIVENCHY L’INTEMPOREL EYE】,AISHODO 愛粧堂 Q10馬油ナチュラルハーブクリーム 120g,【ドクターイシイコスメティック】MDレセプト2 ビオ・エンリッチ・エキストラクト 20ml,GIVENCHY数量限定 ランテルディ オーデパルファム クチュール エディション 50mL,バスクリン ゆずの香り ライトグリーンのお湯(透明タイプ) 業務用 10kg缶,SANARU ケロデックスクリーム 5kg 〔品番:KERO-5〕[4013034],★\9日19:59まで4619ポイントバック/2021新型【サーマクール 高周波美容器】 RF 温熱 リフトアップ 美顔器 美容家電 赤色 LEDケア 赤外線ライトケア 目元ケア エイジングケア しわ取り たるみ ほうれい線 自宅で簡単ケア,ミルボン オージュア スムース シャンプー 250ml ヘアトリートメント 250g セット(セット販売のみの購入になります),乳液 保湿 無添加 エイジングケア ピュフェ モイストチャージミルク6本,ミシャ 美思 MISSHA タイムレボリューション ベストセラー 3種セットエッセンス150ml + アンプル50 ml + クリーム50ml限定スキンケアセット

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