お歳暮 ギフト プレゼント佐賀和牛コロコロ小間肉900g メガ盛り黒毛和牛 牛肉 和牛 肉 訳あり わけあり 煮物に便利 肉 冷凍食品 国産 焼肉 煮物用 お取り寄せ グルメ食品食品 真空ではなく使いたい分使える袋詰め応援

連載

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


Avidence スカルプ リキッド 50ml×3本セット :育毛成分リデンシル キャピキシル サロン専売 業務用育毛剤抜け毛 薄毛対策 フケ 頭皮 かゆみ 白髪対策 本格育毛サロン 業務用スカルプエッセンス 男性用 育毛剤

klKxUoV5e9

【】Avidence(アビデンス)スカルプ リキッド 50ml×3本セット :育毛成分リデンシル キャピキシル サロン専売 業務用育毛剤抜け毛 薄毛対策 フケ 頭皮 かゆみ 白髪対策 本格育毛サロン 業務用スカルプエッセンス 男性用 育毛剤

【】Avidence(アビデンス)スカルプ リキッド 50ml×3本セット :育毛成分リデンシル キャピキシル サロン専売 業務用育毛剤抜け毛 薄毛対策 フケ 頭皮 かゆみ 白髪対策 本格育毛サロン 業務用スカルプエッセンス 男性用 育毛剤:エイジングケアコスメcroix

Avidence(アビデンス)スカルプ リキッドは、育毛サロン向けに開発された“業務用”育毛リキッドです。


“業務用”スカルプケア製品は、育毛サロンや美容室、エステサロンなどで施術用に使用されたり、お客様のホームケア用に開発されたプロ仕様の高品質・高機能製品です。

“業務用”スカルプケア製品は、プロが施術で使用したり、プロのお薦めとしてお店で販売する製品ですので、即効性・安全性・使い心地(使用感)など、製品に求められる品質は必然的に厳しくなります。

利益追求型の市販品は巧みな表現や見せ方で売れますが、プロ仕様では通用しません。

当店の“業務用”スカルプケア製品には、育毛の研究者が厳選した信頼できるエビデンスを持つ原料を“しっかり”と最適な量が配合されています。


□ 今までいろいろな市販のスカルプケア製品を試して効果を実感できなかった方
□ ハッキリ言ってどの製品でも効果は同じだと諦めている方
□ 低刺激長期的に安心して使用できる製品を探している方
         


…などの方には、プロを納得させる品質&効果を持つ“業務用”スカルプケア製品をお薦めします!

■ 業務用サロン製品 … とにかく 『効果』重視!
  業務用だから、最先端の高機能成分配合!



“業務用”スカルプケア製品としてプロに認められる、その実力は、信頼できるエビデンスを持つ高機能成分を経験豊富な研究者が厳選し、最適な組み合わせでしっかりと適量配合しているから。

サロンの施術にも使用される本製品には…


■ 世界最大規模の化粧品原料展で銀賞受賞(2013年・2014年2年連続受賞)!
  今、最強と言われる育毛成分『リデンシル』配合!




■ 世界最大規模の化粧品原料展で銅賞受賞(2011年)! 
  あの有名発毛成分ミノキシジル3倍の実力を持つ話題の『キャピキシル』配合!



さらに…


■ 日本製の注目の新成分、ワサビから抽出した『ワサビフラボン』配合!
  『ワサビフラボン』に含有される「イソサポナリン」をヒト毛乳頭細胞に添加して培養した実験では、ミノキシジルアデノシンの約6倍の細胞賦活作用が認められたほどの実力!
  今、注目の育毛成分です!


■ 毛包の老化を抑制し、抜け毛を防ぐ植物性幹細胞成分『クリスマムマリチマムカルス培養液』配合!
  『クリスマムマリチマムカルス培養液』は、今話題の幹細胞成分の中でも最先端な技術で抽出された高機能成分!
  リポソーム加工で本来作用して欲しいところまで浸透!直接、幹細胞に作用します!


…など最先端の育毛コンセプト成分がエビデンス(※)を満たす配合率で含有しています。

(※エビデンスとは? … 臨床結果などの科学的根拠,検証結果のこと。)

医薬部外品の育毛剤の場合、指定されている範ちゅうでしか配合成分を選べません。

ほとんどの医薬部外品育毛剤の有効成分がニンジンエキス・センブリエキス・グリチルリチン酸ジカリウムなど、同じ成分でできているのは、決められた成分を決められた配合率で配合しなければいけないからです。

市販の医薬部外品育毛剤に「効果が実感できない」「どれを使っても同じ」という声が多いのは、医薬部外品育毛剤が、昭和の時代から、ほとんど変わらない処方でつくられているからかもしれません。

□ 市販の育毛剤に物足りなさを感じている方
□ 自分に合ったスカルプケア製品をお探しの方


…などの方には、最先端の高機能成分を配合する“業務用”スカルプケア製品をお薦めします!


■まとめ買いがお得です!
●Avidence(アビデンス)スカルプ リキッド1本… 7480円(税込み)
●Avidence(アビデンス)スカルプ リキッド2本…14410円(税込み)
●Avidence(アビデンス)スカルプ リキッド3本…20790円(税込み)
●Avidence(アビデンス)スカルプ リキッド4本…27280円(税込み)
●Avidence(アビデンス)スカルプ リキッド5本…33550円(税込み)
●Avidence(アビデンス)スカルプ リキッド6本…39600円(税込み)




,
熊野筆 ハート洗顔ブラシ&今治タオルセット KFi-P8FWT人気 送料無料 母の日 誕生日 父の日 子供の日 便利 日用品 通販,エレガンス パンプリフティング ベース UV 30ml 全2色展開 -ELEGANCE- PK110,エステダム esthederm エイジングケア 脂性肌 ニキビ 吹き出物 インテンシブ ピュア クリーム N 50mL プレゼント ギフト,Dior(ディオール)ソヴァージュ シェービング ジェル 125mL,【先着順!クーポン対象】ルベル ヴィージェ メディケートエッセンス 100ml×2個セット(育毛剤/医薬部外品)|ルベル セット おすすめ品,【×6個】シュワルツコフ BCオイルイノセンス オイルマスク 150g,【送料込・まとめ買い×24個セット】ユニリーバ LUX ラックス スーパーリッチシャイン モイスチャー リッチ 保湿ミスト 180ml,ホワイトピクシィ リ・アイズα 25g 3個セット(目元 たるみ 目元 クマ まぶた たるみ 目元 美容 目 袋 たるみ 涙袋 メイク クマ 対策 パラベンフリー 化粧品 目元 クリーム 美容クリーム パラベンフリー ハリ)【宅配便対応】,化粧筆 チークブラシ 丸型 CH-03,ドゥラメール ザ・ボディ クレーム 300ml,(758670)カネボウ DEWスペリアリフト コンセントレート エッセンス 30mL×2セット,【月間優良ショップ受賞】Diptyque Vetyverio Eau De Parfum Spray ディプティック ヴェティベリオ オー デ パルファム スプレー 75ml/2.5oz 【海外直送】,【送料込】貝印 スキバサミ×120点セット まとめ買い特価!ケース販売 ( 4901601929003 ),フーチェ ARエッセンス Uprise 500ml リフィル,【正規品・送料込】ボビイブラウン パーフェクトリー ディファインド ロングウェア ブロー ペンシル 03 グレイ(0.33g),HerbMagic システムトニック 7 200ml,常盤薬品トキワSF BBクリーム UV 30g 3個【あす楽対応】ノエビア,VENUS MAGIC Aタイプ 4W 4,【送料無料】ピュール セラム コントゥール デ ジュ 15ml【Pure ALTITUDE】,Nordic Collectionノルディックコレクションリードディフューザー クリアエアー (詰替用)×6本MRUS-480ML 【ノルディックディフューザー、ディフューザー、ノルディック、リードディフューザー、MRUS-480ML、クリアエアー、詰替え、詰替え用、メルシーユー】,【10%OFFクーポン配布中】 イオニート エッセンスV シャンプー ライト 1000ml【国内正規品】,【送料無料(全国)】 デミ ビオーブ ピュリム リペアスキャルプシャンプー 550ml & リペアスキャルプトリートメント 550g & リペアスキャルプパウダー 5g×24包 & 美巡かっさ 1個,【大感謝価格】ビナジー マッサージオイルS 500ml Bienargy,★2021円クーポン配布中 お買い物マラソン★期間限定 送料無料★ラプレリー スイス UV プロテクションヴェール 50ml | la prairie 日焼け止め(顔),《クーポン配布中》 ブランフィーネ ダブルブースター ホワイト Wヘッド美顔器 EMS美顔器 毎分約8000回のバイブレーション 2つの機能 美顔機 Branfine double booster 自宅 エステ サロン 女性 の,KAMIKA カミカシャンプー 6本セット ランキング1位 正規品 黒髪 シャンプー送料無料 男女兼用 オールインワン クリームシャンプー 泡立たないスカルプシャンプー クリシャン ノープー ヘッドスパ 自宅,【月間優良ショップ受賞】Bvlgari Aqva Pour Homme Marine Eau De Toilette Spray ブルガリ アクア プールオム マリン EDTスプレー 100ml/3.3oz 【海外直送】,【まとめ買い】≪生活雑貨・コスメ≫カラフルミラーブラシ オーシャンフレンズ 2色アソート No.410-800 【24点】arcone_okrjs,アシュワガンダ(プロ)(ASHWAGANDAHA THAILAYA) 750ml Sli Lanka Ayurvedic drugs,[エスティーローダー] [エスティーローダー]パーフェクショニストプロラピッドファーム+リフトトリートメント【海外直送】【プレゼント】【韓国】,ひとりさんホワイトクリーム 銀座まるかん 保湿浸透力絶妙な配合バランスが色白美人へ導きます,ダイアン パーフェクトビューティー エクストラダメージリペア SP&TRトライアル(240セット)【モイスト・ダイアン】,【定形外 送料無料】ハッチ ハニーローション HINKAKU 150ml -HACCI 1912-【定形外対象商品】,★純正品/送料無料★エレガンス ファイン ヴェルヴェティ ファンデーション IV302 <レフィル+ケース>[4965134249243],DEEDS 日本の鋏専門メーカー PP-03 シザー 2本セット 5.5インチ 鍛造仕上 ひっかかりのないスキ鋏とすぱっときれる鋏の2本セット 美容師,【※旧パッケージ商品】【サンプル付き】ベネフィーク バウンスジーニアス【レフィル】(医薬部外品)クリーム 40g,【代引・日時指定・北海道沖縄離島配送不可】アロマランプ クリアラティス 007,【ロエベ】 ロエベ 7 アノーニモ プールオム (テスター) オーデパルファム・スプレータイプ 100ml 【香水・フレグランス:フルボトル:メンズ・男性用】【ロエベ 7】【LOEWE LOEWE 7 ANONIMO POUR HOMME EAU DE PARFUM SPRAY TESTER】,欠品72g【TomFordBeauty】トムフォードビューティネロリ・ポルトフィーノ ハンド クリーム 72g<ハンドケア><ラベンダー・ベルガモット>,バストクリーム ボルフィリン オーガニック成分配合 (6つのフリーで肌への刺激の少ない バストケアクリーム) 日本製 業務用 1kg×3本 スパチュラ3本+詰替えボトル3個 / Cheri (シェリ),SK-II エスケーツー フェイシャル トリートメント エッセンスコレクションコフレセットB 【日本正規品】,ロイヤルアストレア マオファ 脂性肌薬用育毛剤 マオファD 150ml 医薬部外品,【まとめ買いがお得!】ライオン ソフトインワンシャンプー サラサラタイプ ポンプ 530ml×12セット Lion Softin One Shampoo 4903301169536,水素生成カプセル PERSONAL2007 赤,【3,980円~送料無料】【あす楽13時まで】『×4個』 ブライ ジ・アート フリークスリークEX 500g 《BRY 洗い流さないトリートメント アウトバストリートメント 流さないトリートメント ヘアトリートメント 美容室 サロン専売品》,【送料込・まとめ買い×96個セット】ドルコ シャイ3+3 ディスポ 3P ボディ用カミソリ,【ポイント6倍】最大33倍!シャンプー コンディショナー トリートメント アイリス オレンジシャンプー(お徳用詰め替え) 940ml 3本セット,CHANEL(シャネル)ル ジェル パイユテ 20g,花王 アトリックス ハンドクリーム178g×48セット Kao ATRIX 4901301006257,【最大400円クーポン】【3,980円~送料無料】【あす楽13時まで】【x5個】ナンバースリー ミュリアム シャンプー G 660ml《ナンバースリー シャンプー 美容室 シャンプー 美容室専売 サロン専売品 shampoo》,rejuvi(レジュビ) エクスフォリエーティングマスク 240g[d],パナソニック 美顔器 RF(ラジオ波) 海外対応 コードレス ピンク調 EH-SR71-P,ビピット ディアネイル ネイルリムーバー 30ml,ラモン モネガル アントレ ナランホ オードパルファン 50ml【Ramon Monegal Entre Naranjos EDP 50ml】,全身ローション ホメオパシックジェル イリスエスリーク 200ml 2本セット,【DEMI・デミ】Yunto ユント シャンプー ライト 2000ml & ヘアトリートメント 4 2000g 詰め替え レフィル・リフィルセット,ディープレイヤー トリートメントG800G,LUSHハッピーハッピージョイジョイHappy Happy Joy Joyリキッドコンディショナー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