旨さ丸出し 麦茶 30TB×12セット 20099

連載

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


HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸 基礎化粧品

UkzG1FqAht

【1/9 20:00-1/16 1:59 エントリーで最大34倍】HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸 基礎化粧品

【1/9 20:00-1/16 1:59 エントリーで最大34倍】HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸 基礎化粧品:美容の雑貨屋さん 店
point

イベント情報
基礎化粧品 >HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸

HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸1

,イベント情報

ハッチ バナー

【弊社配送表示について】
宅急便→60サイズ

【HACCI ハッチ ハニーローション -HINKAKU- 150ml ローション 化粧水 美肌 つや はちみつ 角質層 アミノ酸】の商品紹介

品格と美意識を象徴する女性の肌。
はちみつとバイオテクノロジーが融合したとろみのある濃密なローション。

【特徴】
はちみつそのものをたっぷりと閉じ込めたテクスチャーが日々のダメージから守り、健やかでツヤのある肌に導きます。
肌を育むには、細胞の培養液の組成にも使われるアミノ酸が必要です。そのアミノ酸のバランスに着目し、応用しました。
日本の美を象徴する美容エキスをベストバランスで配合し、生まれたてのようなみずみずしさと輝きを生み出します。はちみつを実感するほどのコクのあるとろみは高い潤いパワーを角質層まで届けます。

パラベン・アルコール・シリコン・鉱物油・合成香料 フリー

【HACCIとは】
はちみつの恵みに美容面からアプローチするブランド。
高品質のはちみつをたっぷりと贅沢に使用し、はちみつがもたらす幸せな気分を世の女性たちに伝えています。

【使用方法】
洗顔後、ローションをコットンにたっぷりととり、顔の丸みにフィットさせてていねいになじませます。肌が敏感なときはコットンは使わず、ローションを手のひらで包み込むようになじませ、ゆっくりと押さえて密着させます。
約1ヵ月を目安に使用してください。

【成分】
水、BG、ハチミツ、グリセリン、DPG、ペンチレングリコール、PG、ジグリセリン、サトザクラ花エキス、1,2-ヘキサンジオール、カプリリルグリコール、ヒアルロン酸Na、加水分解ヒアルロン酸、水溶性コラーゲン、加水分解コラーゲン、アスコルビン酸、リンゴ酸、加水分解シルク、アロエベラ葉エキス、クチナシ果実エキス、キュウリ果実エキス、 ヨクイニンエキス、ユズ果実エキス、甘草エキス、キサンタンガム、PCA-Na、アスパラギン、アスパラギン酸、グリシン、グルタミン酸、アラニン、セリン、プロリン、PEG/PPG/ポリブチレングリコール-8/5/3グリセリン、クエン酸、クエン酸Na、EDTA-2Na、水酸化レシチン、PEG-60水添ヒマシ油、ローズ水、フェノキシエタノール

【使用上の注意】
開封後は早めにご使用ください。
直射日光や高温多湿な場所をさけて、乳幼児の手の届かないところに保管してください。
天然成分を配合しているため、製品の中に天然物のオリが生じる場合がありますが、品質上には問題ありません。低温ではよりオリが生じやすくなるため、極端に低温の場所には保管しないでください。
傷やしっしん、腫れ物など、異常がある場合は使用しないでください。
目に入ったときは、こすらずにきれいな水で洗い流して下さい。また、肌に異常が生じていないかよく注意して使用してください。
使用中または使用後、赤み、はれ、かゆみ、刺激、色抜けや黒ずみ等の異常が現れた場合は使用を中止し、皮膚科専門医等へのご相談をおすすめします。


【内容物】
内容量(NET):150mL

【生産国】
日本

【ブランド】
HACCI

【発売元、製造元、輸入元又は販売元】
HACCI

【用途・商品区分】
基礎化粧品

【メーカー詳細】
HACCI

【広告文責】
株式会社EVLISS(エヴリス)
072-861-5180


【注意事項】
・輸送の都合上、外装箱、容器の少々のキズ、汚れ等はご了承ください。
・配送状況により、多少の傷が生じる場合がありますので予めご了承ください。
・パッケージはリニューアル等の理由により、写真と異なる場合がございます。
・予告なくパッケージ仕様が変更になる場合がございます。

【ご購入前に必ずご確認ください。】

■当店では正規商品を正規ルートにて仕入れをおこなっております。
■転売目的などでシリアル除去に伴うキャンセルは下記内容に伴い了承の上で購入されたとみなしキャンセルできません。

【各EC出品規約などに基づき偽物・模造品はお取り扱いしておりません】
当店は正規品のみの販売を行っております。
当店では流通管理番号(シリアル番号)の除去を行うことで低価格を実現することができました。
本品の流通管理番号消去に伴い、パッケージの開封などを行っている商品については当店の専用ラベルにて除去している事をお知らせしております。
また、転売目的などで正規品証明などにつきましては発行いたしません。正規品証明をご希望のお客様は当店以外での購入をしてください。
※上記に伴い正規品ではないなどのキャンセルはお受けすることができません。必ずご確認、ご了承の上ご購入ください。

【当店保証について】
電化製品などの故障保証につきましてはメーカー保証期間に代わり、同期間は当店保証の対象となります。
故障の際は当店にご連絡ください。その後、購入の際に付属しておりました箱に付属品、説明書(保証書)など添付したうえで当店にお送りください。

【返品キャンセルについて】
上記理由以外でお客様理由での返品キャンセルをご希望のお客様はご注文後7日以内にお申し出ください。
返品にかかる送料など費用はお客様負担となります。
期限を過ぎますとキャンセルは承ることができません。ご了承のほどよろしくお願いいたします。
【ラブコスメ公式】プエラリア エクストラ ハーバルジェル&大容量ハーバルジェル1L|(プエラリア 高配合 ジェル バストジェル バストマッサージ ジェル バストケアクリーム ジェル バストアップ クリーム プエラリアミリフィカ 恋ジェル 胸 垂れ ない プレゼント 送料無料),メナード エンベリエ ウオッシング 130g MENARD (洗顔クリーム・ハリ)[R],太乙鬆筋棒 たいいそうきんぼう 太乙棒 太乙鬆筋美容棒 如意金剛棒 M22 [お取り寄せ価格],クリスチャンディオール Diorラ ローション エッセンス 150ml,★純正品/送料無料★アディクション ザ アイシャドウ パール 001P4971710288773,【全品共通10%クーポンあり】スクワラン120ml 2個セット<HABA/ハーバー(ハーバー研究所)>【正規品】【ギフト対応可】,【x5個セット】 【在庫限り】 資生堂 キャビアエッセンス アクアインテンシブ 100ml 容器入り,【正規品・送料込】スック コンフォート リップ フルイド グロウ 05 優燈 -YUUHI (6.6g),ミカエルザヤット デオドラント 50ml 日本国内正規品 【 ミカエルザヤット エッセンシャルオイル ブレンドオイル エッセンシャルオイル 】,リップスティック フィーバー EDPSP 100ml,メゾン フランシス クルジャン アクア ユニヴェルサリス フォルテ オードパルファム 70ml 香水 レディース メンズ ユニセックス 本体 フルボトル【送料無料】,【クリスチャン ディオール】 ディオール オム スポーツ ベリ― クール スプレ― (テスター) オーデトワレ・スプレータイプ 100ml 【香水・フレグランス:フルボトル:メンズ・男性用】【ディオール オム】【CHRISTIAN DIOR】,ボディシェイプローラー スリムシャイン4 プラス DR-280美容ローラー shine ボディローラー 肌 ゲルマニウムチップ 正規品 美容機器,【美容オイルプレゼント】 Lashaddict ラッシュアディクト アイラッシュ コンディショニングセラム 5ml まつげ美容液 [ Lashaddict / まつ毛美容液 / まつ毛 / アイラッシュ ]『2』【 定形外 送料無料 】,ドゥラメール ザコンセントレート 50ml,コレコ ディバイアル・モイスチャー プラセンタ・ヒアルロン原液 送料無料/化粧水 美容液 美容 健康,YA-MAN(ヤーマン) ダイエット RFボーテ キャビスパRFコアEX HRF18T ボディケア,laduree (レ・メルヴェイユーズ ラデュレ)フェイス パウダー N(リフィル)(ケース別売り),【全品共通10%クーポンあり】ラサーナ 海藻 ヘアエッセンス ~しっとり~ L 3個セット<La Sana> 【正規品】【ギフト対応可】,【ポイント16倍以上 9日20:00~16日01:59 エントリー必須】焼香 お焼香 十種香 伽羅香 125g 紙箱入 玉初堂 日本製 しょうこう きゃらこう 高級 沈香 伽羅 香木 線香 お香 ご焼香 寺院 お寺 仏壇 法要 寺 送料無料,資生堂●SHISEIDO●クレ・ド・ポーボーテ●クレームドマッサージュs cle de peau BEATE クレド 血行促進 マッサージクリーム,ドクター・ショール ベルベットスムーズ 電動角質リムーバー ダイヤモンド エキストラ(粗め) ピンク ×3個セット,【送料込・まとめ買い×240個セット】貝印 HL0403SS PCハンドル マユ毛抜き 1本入 1個,日本製 75% アルコール エタノール ハンドジェル 500ml 20本セット 国産 携帯可能 除菌 水なしでいつでもどこでも使える made in Japan 保湿 ウイルス対策 手荒れを最低限に 予防 除菌ジェル 手指 安心 安全,【先着順!クーポン対象】ARTISTIC&CO ミスアリーヴォ Dear Miss PCS ディアーミス・プロブレム コントロール ソリューション(皮脂トラブル肌用美容液) 30ml,1/10は最大8倍!カード&エントリー要♪ケラスターゼ DS フォンダン デンシフィック 1000ml ポンプなし(3474636356058),期間限定 送料無料ケラスターゼ RF バン クロマティック リッシュお得な6個セット 250ml x 6KERASTASEシャンプー,★送料無料★アルビオン アンフィネス アップサージ ソリューション F(40ml)[4969527178691],【セット商品】 【送料無料(全国)】 セラドーム LH80 Pro + 交換用専用バッテリー (Theradome®) 本体&予備バッテリーセット 最新型 [tps],【当店は3980円以上で送料無料】モンゴ流スカルプエッセンスDeeperスーパーレジスタンス80ml 2個セット,シーソー ヘア&スキャルプシャンプーS(スムース)<つめかえ用>(800ml),【送料無料】コタ アイケア トリートメント1 800g【COTA i CARE】,エスティローダー メークアップ コレクション,送料無料 12個セット オードトワレ アクア リトス 香水 芳香水,【正規品・送料込】スック インテンス カバー コンシーラー 12 (6g),CAC シーエーシー ベーシック UVブロッカー 2g×60包 [日焼け止め 1回使い切り UVケア],カンパニー ド プロバンス グルーミングフォーメンシリーズ【オードトワレ】,ポイント10倍★9-11日20時~4H限定!【セット】ヘレナルビンスタイン HELENA RUBINSTEIN オリジナル フェリン マスカラ コフレ,1/10は最大8倍!カード&エントリー要♪シャネル イドゥラ ビューティ マイクロ セラム 30ml(3145891431803),リジュビネーティング ミラクル クリーム 50mlフェイスクリーム スキンケア,【最大400円クーポン】【3,980円~送料無料】【x2個】ミルボン フィエーリ トリートメント 1kgパック 詰め替え《MILBON ミルボン ヘアマスク ヘアトリートメント くせ毛 トリートメント 美容室 サロン専売品 treatment》,【×12個】ロート製薬 肌ラボ 極潤プレミアム ヒアルロン液 170mL 詰替え用,ディプティック diptyque カルーセル&クラシックキャンドル 70g,★お年玉コフレ2021★送料無料★アルビオン エクラフチュールd(60ml) ハンドクリームコフレ,【代引き別途加算】【RMK アールエムケー】RMK カラーパフォーマンスアイズ 02 ブラウン,Bijinショート JO ジュリアオージェ ウィッグ オールウィッグ 送料無料 女性 レディース アートネイチャー かつら ナチュラル 自然 ショート茶色 ブラウン,(取寄)バブアー エイドン マニキュア キット Barbour Aydon Manicure Kit Olive Brown,【BOBBI BROWN ボビイ ブラウン】エクストラ バーム リンス,有機パルマローザ精油 50ml【生活の木】,広島熊野筆 クリスタルピンク メイクブラシ ギフトセット 1,【定形外 送料無料】 シャネル ゴマージュ ミクロペルレ エクラ 75ml -CHANEL-,資生堂 SHISEIDO アルティミューン パワライジング コンセントレート N / 30ml,【BSJ E EYELSAH SERUM】 BSJ E アイラッシュセラム 2本セット まつ毛美容液 睫毛美容液 8ml 大容量 アイラッシュ まつ毛 美容液 コーティング プロテオグリカン まつげ まつげ美容液 目元美容 睫毛 眉毛美容液 眉毛美容 メイク道具 メイク用品 メイク おうち美容,【正規品・送料込】ドゥラメール ザ・ルミナス クッションファンデーション 13ウォームアイボリー(レフィル12g×2&ケース×1),サラヤ ラシュヴェール フルーテ コンディショナー 20L BIB【取り寄せ商品・即納不可】,Christian Dior Capture Totale CELL Energy Super Potent Total AgeDefying Intense Serum クリスチャン ディオール キャプチ,Fillerina フィレリーナ アイ&リップ コントゥール クリーム グレード 3 ヒアルロン酸 ハリ シワ ほうれい線 たるみ リフトアップ ツヤ肌,【3,980円~送料無料】【30%OFFクーポン】【あす楽13時まで】【送料無料】『×4個』 コルダジュール デューロ トリートメント 500g 硬い髪用

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