大阪京菓 ZRxブルボン 45Gプチバニラクラッカー×320個 税

連載

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


エニシー グローパック 1箱 10回分 正規品 リズム 炭酸ガスパック フェイシャル ピールオフ 高濃度炭酸 enisie GLOW PACK サロン専売品 美肌 美容 エイジングケア ハリ 弾力 引き締め 透明感

gmEBlB0iGk

エニシー グローパック 1箱 10回分 正規品 リズム 炭酸ガスパック フェイシャル ピールオフ 高濃度炭酸 enisie GLOW PACK サロン専売品 美肌 美容 エイジングケア ハリ 弾力 引き締め 透明感

エニシー グローパック 1箱 10回分 正規品 リズム 炭酸ガスパック フェイシャル ピールオフ 高濃度炭酸 enisie GLOW PACK サロン専売品 美肌 美容 エイジングケア ハリ 弾力 引き締め 透明感:CHARMING(チャーミング)

美しさを未来へ結ぶ、炭酸エイジング。

「炭酸ガスパック」と「炭酸パック」は全く違います。名前は似ているようですが実は中身も効果も全くの別物です。
リズムの炭酸ガスパック(グローパック)は医療現場で肌再生の治療法として使われてきた歴史がある「炭酸ガス」をもとに誕生した商品なのです。

エニシー(enisie)グローパックの特徴

ジェル中に炭酸ガスをムラなく均一に発生させることができるラクトン処方を採用。年齢肌に働きかける高濃度の炭酸ガスを安定的に発生させ、理想的な経皮吸収を実現。使用直後から、大きな変化を実感できます。

また、保湿力に優れたピールオフパック。高濃度の炭酸ガスパックがお肌にしっかりとフタをしてくれるから、パック後は肌がしっとりと潤います。
約20分程度でプルプルとしたジェル状になり、パック後は簡単に落とすことができます。


シュリンクフォルム付きの新品未開封、メーカーから仕入れたばかりの新しい商品を発送します。

[広告文責]
メーカー : リズム株式会社
商品区分 : 日本製【化粧品】
広告文責 : 株式会社F-HOUSE(エフハウス)
問い合わせ : 03-6304-8491

,
商品名エニシー グロー パック
種類別名称高濃度炭酸ガスパック
特徴肌の「自活力」を高める炭酸ガスパック
「炭酸ガスパック」と「炭酸パック」は全く違います
名前は似ているようですが実は中身も効果も全くの別物です。リズムの炭酸ガスパック(グローパック)は医療現場で肌再生の治療法として使われてきた歴史がある「炭酸ガス」をもとに誕生した商品なのです。

エニシー(enisie)グローパックの特徴
ジェル中に炭酸ガスをムラなく均一に発生させることができるラクトン処方を採用。年齢肌に働きかける高濃度の炭酸ガスを安定的に発生させ、理想的な経皮吸収を実現。使用直後から、大きな変化を実感できます。また、保湿力に優れたピールオフパック。高濃度の炭酸ガスパックがお肌にしっかりとフタをしてくれるから、パック後は肌がしっとりと潤います。約20分程度でプルプルとしたジェル状になり、パック後は簡単に落とすことができます。

●贅沢なハリをもたらしお顔を引き締める
年齢とともに減少する幹細胞。希少品種として保護認定されているリンゴ種「ウトビラー・スパトラウバー」の果実から植物幹細胞を培養・抽出。贅沢なハリをもたらし、お顔を引き締めます。

●潤いに満ちたふっくら肌へ
肌のハリ・ツヤの土台となる、コラーゲン5種すべてに働きかける美肌成分シン-TC。人本来の美肌機能を呼び覚ますことで乱れてしまったターンオーバーを整え、潤いに満ちたふっくら肌へと導きます。

●お肌に弾むようなハリ感
アルプス山脈とビレーネ山脈の山々に自生するエーデルワイス。厳しい高山を生き抜くエーデルワイスから抽出される成分には、お肌に弾むようなハリ感を与える機能性があると言われており、注目を集めています。

●透明感のある明るいお肌へと導く
メロン胎座エキス(メロンプラセンタ)は、メロンの種子の周りにある線状の部分(胎座)から抽出される貴重な成分。美肌の鍵となるアミノ酸、ビタミン、ミネラルを豊富に含み、透明感のある明るいお肌へと導く作用が期待できます。
使用方法大小の2つの袋を30秒ほど混ぜ合わせ、お肌にムラなく付属のスパチュラを使って塗っていきます。満遍なく塗り終わったら20分~30分ほど放置してください。
表面がうっすら固まりプルプルとしたジェル状になるのでそのまま剥がして終了です。その後、お化粧水や美容液なども通常のスキンケアをしてください。
内容量ジェル 40g×10包
粉末 4g×10包
スパチュラ×1本 
内容成分 1料:グルコノラクトン 2料:水、BG、グリセリン、ペンチレングリコール、アルギン酸Na、ホホバ種子油、セルロースガム、炭酸水素Na、炭酸Ca、リンゴ果実培養細胞エキス、エーデルワイス成長点細胞培養物、トリフルオロ酢酸テトラデシルアミノブチロイルバリルアミノ酪酸ウレア、パルミトイルトリペプチド-5、パルミトイルジペプチド-5 ジアミノブチロイルヒドロキシトレオニン、メロン胎座エキス、キサンタンガム、レシチン、フェノキシエタノール、EDTA-3Na、塩化Mg
※表示されている全成分は、改良等の理由によりお手元の商品と異なる場合がございますのでご了承ください。
注意事項○非常にデリケートな商品のため開封後はお早めにお使いください。
●お肌に異常が生じていないかよく注意して使用してください。化粧品がお肌に合わないとき即ち次のような場合には、使用を中止してください。そのまま化粧品類の使用を続けますと、症状を悪化させることがありますので、皮膚科専門医等にご相談されることをおすすめします。
(1) 使用中、赤み、はれ、かゆみ、刺激、色抜け(白斑等)や黒ずみ等の異常があらわれた場合
(2)使用したお肌に、直射日光があたって上記のような異常があらわれた場合
●傷やはれもの、しっしん等、異常のある部位にはお使いにならないでください。
●使用後は必ずしっかりと蓋をしめ、乳幼児の手の届かない場所に保管してください。
●極端に高温又は低温の場所、直射日光のあたる場所には保管しないでください。
Milano Collection(ミラノコレクション) ミラノコレクション フェースアップパウダー2021 24g,【M・A・C マック】スタジオ フィックス スカルプト & シェイプ コントアー パレット: ライト/ミィディアム,【96個セット】花王 ビオレUV アクアリッチ ウォータリーエッセンス 50g まとめ買い(×96)|4901301363183(tc),【4000円offクーポン(要獲得) 1/28 9:59まで】 【送料込み(沖縄・離島を除く)】 ラ ニュイ トレゾア (箱なし) EDT・SP 50ml 【ランコム】【香水 フレグランス】【レディース・女性用】【トレゾア 】【LANCOME LA NUIT TRESOR EAU DE TOILETTE SPRAY】,《送料無料》《セット》オイルトリートメント ライト 200ml(ポンプ付)&R ヘアマスク 500g 【moroccanoil・モロッカンオイル】【正規品・サロン専売品】◆お中元・お祝い・ギフト・お誕生日プレゼントにも◆,●オットーチューナー32ヘルツ【Biosonics】バイオソニックス社【正規品】高品質【最安値に挑戦!】音叉【アメリカ製】ヒーリング【波動】占い【セラピー】【沖縄県への発送は送料+1,080円】,菊星 サボニーズ マニキュアガード 300mL,生活の木 アロマオイル ユーカリラディアータ 精油 100ml,【×6個】クラシエ バサラ 603 薬用スカルプシャンプー 1000mL 詰替え用,GD11 プレミアムラボ アドバンス クリーム EX 50g,【4000円offクーポン(要獲得) 1/28 9:59まで】 【送料無料】 チェリーブロッサム EDP・SP 100ml 【フローリス】【香水 フレグランス】【レディース・女性用】【FLORIS LONDON CHERRY BLOSSOM EAU DE PARFUM SPRAY】,【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料無料】 バルブ アトマイザー ハンドワーク ビクトリア 工芸壜 イングランド 「アイル オブ ワイト」製ボトル 18010 ブルー 【ヒロミチ アトマイザー】【香水 フレグランス】【】【HIROMICHI ATOMIZER】,メイクボックス コスメボックス トリプルG2 33cm パールピンク タテ 大容量 新発売 日本製!ギフト プチギフト プレゼント ラッピング 母の日 父の日 クリスマス バレンタインデー ホワイトデー バースデー 誕生日,目もとエステ リラックスタイプ ピンク調 EH-SW56-P(ピンク),【送料無料・メーカー直送】 喜筆 KIHITSU 熊野筆 パールホワイト軸フェイス丸 S-PW02,【正規品・送料込】ランコム タン クラリフィック リキッド O-01 (30ml),【先着順!クーポン対象】ロレアル プロフェッショナル ミシック オイル A 100ml×3個|洗い流さない アウトバス トリートメント アウトバストリートメント ふんわり まとまる 軽やか エアリー べたつかない 浸透 保湿 潤い 保護 ダメージ,フットケアワゴン H-75 ホワイト58751,【宅配便送料無料】CLINIQUE クリニーク イーブン ベター ラディカル ブライト セラム 50ml,喜筆 KIHITSU 熊野筆 ハートセット,【×3個】ホンゴ ヘアケアロールブラシ K-408,九嶺堂 熊野筆 極上の逸品シリーズ KKフェイスブラシ KK001,ヒアロジー【2本セット】プロテクティブクリーム フォーリップス 9g Hyalogy 正規品,LANCOME ランコム アプソリュβxデイクリーム SPF15 50ml,【2本セット】Bbラボラトリーズ ヒアルロン原液水 150mL×2本 Bb LABORATORIES 化粧水 正規品 送料無料,欠品30mlコスメアカデミアコスメアカデミアエッセンス 30ml,【ポイント6倍】最大33倍!ハーバルラビットナチュラルゲルクリーム 35g 医薬部外品 5本セット,【2000円クーポン】最大30倍!シックスパックジェル Six Pack Gel 200g 3個セット,【正規品・送料込】ランコム ラプソリュ マドモワゼルシャイン 397 コールミーシャイニー(3.2g),【あす楽】 SK-2 ホワイトニングソース ダームデフィニション UVローション 30g SPF50 PA+++【お1人様2個まで】 マックスファクター 日中用日焼け止め乳液 UV乳液 ( 4979006065138 )[ SK-II / SK / SK2 / エスケーツー SKII ]『0』,【送料無料】純白専科 すっぴん潤い泡 本体 150mlX24本 泡状美容液 資生堂,7172 ターンブルアッサー EDPSP 100ml,【送料込・まとめ買い×040】ピップ スリムウォーク 美脚 ショートストッキング S-M ×040点セット(4902522672658),毎日がSALE! 正規品 お得なまとめ買い ルベル ナチュラル ヘアソープ & 1600mL トリートメントセット1600mL 選べる4本セット Rebel Natural Hair Soap & Treatment 4-piece set,【正規品・送料込】スック コンフォート リップ フルイド フォグ 02 舞紅 -MAIBENI (6.6g),【正規品・送料込】クリスチャンディオール ディオール アディクト オードゥ パルファン(30ml),【送料無料!!】医療用ウィッグ フィットミーピース MW-P1(ショート)ウィッグ専用ブラシ付き!!【レオンカ正規代理店】,★純正品/送料無料★マック ライトフル C+ SPF50 クッション コンパクト ライトプラス (12g) [レフィルのみ],30枚、カイロを後ろに入れなくでもいい熱が出るヨモギ蒸し温熱パッド、パッドとカイロ一体化した改良型、30枚、宮美人、座薫宝鑑、,TS-225 セット台 イエロー 取り寄せ商品B,【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料込み(沖縄・離島を除く)】 モロッカンオイル モイスチュア リペア コンディショナー 1000ml 【モロッカンオイル: ヘアケア リンス・コンディショナー 本体】【MOROCCANOIL】,イリヤ ビビットファインシルキーパウダープロ 300g,★送料無料★アルビオン エクサージュ モイスト アドバンス ミルク I(110g)[4969527162812],ニューウェイ ジャパン ナノアミノ トリートメント RS 250g,グッチ メモワール デュヌ オドゥール EP/SP(60ml)【グッチ】,SK2 ジェノプティクス オーラ エッセンス 75ml,【送料無料】カメリアオイル・精製・オーガニック(椿油)/1000ml100% 無添加 ヘアオイル 乾燥肌 肌の弾力低下を解決 ハリアップ はり つや 毛穴 エイジングケア マッサージ コールドプレス 低温圧搾 冷圧搾 髪 しっとり スキンケア,【正規輸入代理店】【 john varvatosジョン ヴァルヴェイトス 】アルティザン ピュア オーデトワレ 75mL 【香水 フレグランス 男性用】,【メーカー直送・】 SHIPPOCA(シッポウカ) 天然精油100%使用 リードディフューザー ルームフレグランス 280ml,【美容オイルプレゼント】 【B品短期限2022年1月9日まで】 SK2 R.N.A.パワーアイクリームラディカルニューエイジ15g [ SK-II / SK / SK2 / エスケーツー SKII / 美容液 / RNA アールエヌエー ]『3』【 定形外 送料無料 】,【送料込・まとめ買い×040】ジレット プロシールド クール替刃 8コ入_[シェービング カミソリ ) ×040点セット(4902430651189),【正規品・送料込】マック リップ スティック メア(3.0g),1/10は最大8倍!カード&エントリー要♪【並行輸入品】シスレー シスレイヤ インテグラル 50ml(3473311500502),【お買い得3個セット】ソフィーナ ボーテ 高保湿UV乳液 SPF30 PA++++ しっとり 30g FED ONLINE,PG ジレット フュージョン プログライド シェービングジェル 195g×48点セット まとめ買い特価ケース販売,ジャンポールゴルチエ ソー スキャンダル オードパルファム 80ml JEAN PAUL GAULTIER SO SCANDAL! EDP,【美容オイルプレゼント】 【あす楽】ディオール フォーエバー アンド エバー オードトワレ 100ml [ DIOR / ChristianDior / クリスチャン ディオール / 香水 / フレグランス / EDT / パフューム / オードパルファン ]『5』【 送料無料 】※北海道・沖縄除く,ドゥラメール ザモイスチャライジングソフトクリーム 30ml

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