M10S59 社会貢献品 サツマイモ塩クッキー8個入り

連載

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


全品ポイント3倍! アジュバン Re: トリートメント 3000g

LJhNOPU0aR

全品ポイント3倍!(RT3000) アジュバン Re: トリートメント (リ トリートメント) 3000g ( ADJUBANT 正規品 ダメージヘア ヘアケア shampoo treatment しっとり サラサラ 硬毛 くせ毛 美容室 サロン専売品 リ シリーズ Re: series )

全品ポイント3倍!(RT3000)  アジュバン Re: トリートメント (リ トリートメント) 3000g ( ADJUBANT 正規品 ダメージヘア ヘアケア shampoo treatment しっとり サラサラ 硬毛 くせ毛 美容室 サロン専売品 リ シリーズ Re: series ):visketto 店







ダメージヘアを洗いながらケア



商品名

アジュバン Re: トリートメント (リ トリートメント) 3000g

メーカー

アジュバン

商品説明

アジュバン Re:>>>シリーズ
しっとり、サラサラ

ダメージが気になりはじめた方に対応したシリーズ。
毎日のお手入れやヘアカラーなどによるダメージを
外側から内側までケアし、理想的な髪へと導きます。


アジュバン Re: シャンプー (リ シャンプー)
傷んだ髪を洗いながらケア
傷んだ髪をケアしながら優しく洗い上げ、
ヘアスタイルの美しさをキープ。

アジュバン Re: トリートメント (リ トリートメント)
髪の外側から内側までコンディションを整える
ベースケア。クシ通りなめらかに。

●こんな方へ●
カラーヘア、パーマヘア、ダメージヘア、硬毛、くせ毛
頭皮:ノーマル〜ドライ

ベルガモットの香り


容量
3000g


ご使用方法
1、まずは、お湯でスタイリング剤や皮脂汚れを十分にすすぎます。

2、シャンプーはしっかり泡を立て、指の腹でやさしく丁寧に洗います。
*目的が違うためシャンプーは2回行うこと(2シャン)をお勧めします。
1回目は髪に残っているスタイリング剤やホコリなどの汚れを落とします。
2回目は頭皮の汚れを落とします。

3、髪の水気を切り、トリートメントを髪の中間から毛先までつけた後、
根元から毛先に指を通してなじませます。
*ヘアカラー後の1週間はトリートメントの代わりにプラチナムプラスの使用をお勧めします。
プラチナムプラスを使い終わった後は通常どおりトリートメントをご使用ください。

4、数分間放置してから、丁寧に洗い流します。

5、髪が傷まないよう、タオルでおさえながら水気を拭き取り、
ドライヤーで髪の根元からしっかりと乾かしてください。
*髪にドライヤーを近づけすぎたり、同じところに長時間当て続けないようにしてください。


関連商品
アジュバン特集
お得なセットはこちら


,広告文責
美助堂 092-775-3683



当店では ヘアケア / シャンプー / トリートメント / ノンシリコン / アミノ系シャンプー / 薬用シャンプー / 敏感肌用シャンプー / メンズケアシャンプー / トリートメント / 集中トリートメント / 薬用トリートメント / 洗い流さないトリートメント / コンディショナー / ブローローション / ブラシ / クシ / 流さないトリートメント / アウトバストリートメント / スキンケア / クレンジング / 洗顔料 / 化粧水 / ローション / 美容液 / クリーム / オイル / スクラブ / 美容 / 美容家電 / 美容機器 / ドライヤー / カールアイロン / ストレートアイロン / 脱毛 / シャワーヘッド / 美顔 / マッサージ / シェーバー / アイシャドウ / アイライナー / マスカラ / マスカラ下地 / リップ / 日焼け止め / チーク / ネイルケア / 美容雑貨 / 生活雑貨 / ボディケア / ボディソープ / ハンドクリーム / バスグッズ / ヘアメイク / ブラシ / スタイリング剤 / ワックス / ムース / フォーム / ミスト / スプレー / ストレート / パーマ / ショート / カール / ハイトーンカラー / メンズ / ストレートアイロン / マッサージ / フットマッサージャー / ダイエット / サプリメント / 健康食品 / 健康補助食品 / 業務用 / 業務用サイズ / 靴下 / パーティーアイテム / パーティーグッズ / アニマル / サロン専売品 / 高保湿 / 保湿 / セット / スカルプケア / 頭皮 / 潤い / 艶髪 / 美容師 / 美容室 / メンズ / リフトアップ 等の関連商品を取り扱っています。

ラッピング包装については下記バナーをご覧下さい

【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料無料】 ローズ ポンポン EDT・SP 50ml 【グタール】【香水 フレグランス】【レディース・女性用】【ローズ ポンポン 】【GOUTAL ROSE POMPON EAU DE TOILETTE SPRAY】,【×12個】デミ ハレマオ UVカットスプレー KS 80g,アリミノ シェルパ デザインサプリ コンディショニングミルク 400g 詰め替え ×4個 セット洗い流さないトリートメント 美容室 サロン専売品 美容院 ヘアケア,【ふるさと納税】No.211 COKON LAB ハンド&ボディウォッシュ セット 480ml × 2本,希乃屋 (きのや) 贅沢な オールインワンジェル スキンケア パーフェクトケア たっぷり100mg 約1ヶ月分,【正規品・送料込】ボビイブラウン ロングウェア ブロー ジェル グレイ,【ポイント6倍】最大33倍!美容液 美白 ビタミンC アンエアン 1 et 1 30ml 医薬部外品 3本セット,【×6個】コラージュ フルフルプレミアム シャンプー 340mL 詰替え用,デミ ヘアシーズンズ アロマシロップス ミステリアスウィンド トリートメント 2000g 詰替え用,【送料込・まとめ買い×20個セット】花王 リーゼ 手触りやわらか 3Dウェーブフォーム 150g,北海道産 天然風化貝カルシウム 100g×5個 送料無料 イキイキ生活 骨造り 伸び盛りの子供 妊婦さん 身長 健康 小食 偏食 成長期の子ども 子どもの成長応援,ランコム イプノ パレット 03,【×6個】ロレッタ すっきりしたい日のトリートメント 400g 詰替え用,『X3個セット』 【在庫限り】 資生堂プロフェッショナル アクアインテンシブ シャンプー 1000ml,【当日出荷】【ホテルアメニティ】【業務用】【ヘアケア&ボディソープ】AROMADOR(アロマドール) ミニボトル ボディミルク 30mLx100個セット - ダージリンの上質な香りとしっとりなめらかな洗い心地。【smtb-s】,【すぐ使える500円OFFクーポン対象】[3個セット]Dron(ドロン) 医薬部外品 日本製 洗顔 泡洗顔 もっちり 弾力泡 泥洗顔 毛穴 皮膚の清浄 殺菌 消毒[送料無料!],★純正品/送料無料★ナーズ ベルベットリップライナー 9042,【送料無料】クリスチャンディオール プワゾン オードトワレ EDT SP 100ml [香水・レディース]:【ヤマト便】,【限定おまとめ】グレースアイコ ブースターオイル 3本セット 15mL ジャパンコスメ 乾燥 保湿 しわ ほうれい線 ボタニカル 植物 導入オイル 美容 オイル 顔 スキンケア オイル フェイスオイル,【生活の木】石鹸用ココナッツオイル 16.5kg【ハンドメイド|手作り|石鹸|ハンドメイドソープ|純植物|素材】,Francfranc ヴァリーズ ハリウッドボックス L フランフラン ビューティー/コスメ ビューティー/コスメその他 ブラック【送料無料】,【送料込・まとめ買い×3個セット】【業務用】LION ライオン キレイキレイ 薬用 泡ハンドソープ 無香料 4L,クリスチャン ディオール 香水 未開封 プワゾン オードトワレ スプレータイプ 50ml Christian Dior POISON |女性用 レディース フレグランス パフューム EDT SP 箱付き【送料無料】,■KAO アトリックス メディケイティッド チューブ 50G 96個入 〔品番:024152〕【1578156×96:0】[送料別途見積り][法人・事業所限定][掲外取寄],クリアビーLB オイルマッサージジェル 270g×2点 業務用 CBS化粧品 エステティックサロン専売品 リンパマッサージ clear bee 正規品 送料無料,【 2袋セット 】 キラリズム ホワイトヴェールWHITE VEIL 約30日分 ( 253mg×60粒 ) 栄養機能食品 飲む日焼け止め 日焼け止めサプリ サプリメント UV対策 夏 紫外線 美白 メール便送料無料 / ホワイトヴェールS03-02 / WHTVEL-02P,1/10は最大8倍!カード&エントリー要♪ジョーマローン オレンジ ブロッサム コロン EDC 100ml,【数量限定】【資生堂】 ベネフィーク バウンスジーニアス 限定セット[配送区分:A],【サンタ・マリア・ノベッラ】 アロマ キャンドル ザクロ 7.5×15cm 【香水・フレグランス:フレグランス雑貨:パフュームキャンドル】【バースデー 記念日 ギフト 贈物 お勧め 通販】,ランコムクラリフィックデュアルエッセンスローション150ml【メール便は使えません】,MS-70L ヤーマン クレンズリフト(ブルー) YA-MAN myse(ミーゼ) [MS70L],アスタリフト ジェリー アクアリスタ 40g (本体付) / ジェリー状“先行”美容液 ASTALIFT 富士フィルム フジフィルム,【送料無料】ミルボン プラーミア エンリッチド シャンプー 2500ml&ヘアトリートメントM 2500g,キンモクセイ 10ml Osmanthus 084402790 生活の木,【3000円offクーポン(要獲得) 1/28 9:59まで】 【送料込み(沖縄・離島を除く)】 ダリア ディヴァン オー イニシアル EDT・SP 75ml 【ジバンシイ】【香水 フレグランス】【レディース・女性用】【ダリア ディヴァン 】【GIVENCHY】,【公式】 TWEEZERMAN リュクス エディション ディバインホワイト (TWEEZERMAN ツイーザーマン) 毛抜き ピンセット スワロフスキー クリスタル ビューティ 化粧 メイク 化粧道具,最大33倍トルーク 薬用ホワイトニングフェイスジェル 50g 医薬部外品 2個セット オールインワンゲル ジェル メンズ 送料無料,Urecity メイクボックス コスメボックス 大容量 プロ用 化粧箱 化粧品・化粧道具入れ 収納ケース 自宅・出張・旅行 メイクボックス,★純正品/送料無料★マック ライトフルC+SPF30ファンデーション[レフィル]<NC37>(14g),MR:ツインバード フェイススチーマー ホワイト SH-2786W SH-2786W,線香・お香・極上タニ沈香(笹) 5g [31],ホメオパシージャパン レメディー 36基本キット(1セット)【ホメオパシージャパンレメディー】,ヘアメイクアーティスト メイクアッププラス+,【ラッピング済み】【紙袋セット】ディオール アディクト リップ マキシマイザー DIOR リップクリーム リップケア ティント ティントディオール バックステージ発、瞬時にボリュームのある唇を叶える初のグロス,【正規品・送料込】エスト アクティブオーラクリームファンデーションリフティングカバー オークル05(30g),【正規品・送料込】ラ・ブルケット N°130 ボディオイル ベルガモット/パチョリ (120ml),送料無料 P6倍 400ml×3 自然美 黒土快髪 ヘアコンディショナー2 400ml×3 へあこんでぃしょなー2,ダーマローラー [Dermaroller] リポペプチド 30ml ×6 [Dermaroller]Lipopeptide [ヤマト便] 使用期限:2022年7月,【送料無料・まとめ買い×10個セット】花王 ビオレ TEGOTAE (てごたえ) お風呂場のうるおいラッピングミルク 詰替え用 130ml,★純正品/送料無料★クリスチャンディオール ディオールショウ 24H スティロ ウォータープルーフ 061マット グレイ,【3個セット】 ポーチュガル ヘアリキッド(150mL)×3個セット 【正規品】,ジョンマスターオーガニック ハニー&ハイビスカスヘアーリコストラクティングシャンプースリムビッグ 473ml,単品販売匠の技 グルーミングキットLA G-3108 1セット[代引選択不可],MIREY エクセレント オイル 2本セット 高濃度 酸素 マッサージ オイル 20ml2本セット 有機アルガン オイル 100% に 酸素 が 結合 ラボアージュ 基礎化粧品(ミレー エクセレントオイル)ミレイ 高濃度 酸素 フェイシャル オイル,アプソリュ プレシャスセル ローション 150ml,【月間優良ショップ受賞】LancomeTeint Visionnaire Skin Perfecting Make Up Duo SPF 20 - # 03 Beige Diaphaneランコムタン ヴィジョネア スキン パーフェクティング 【海外直送】,OLAPLEX オラプレックス No4 No5 ボンドメンテナンス シャンプー コンディショナー ヘアケア,ランコム LANCOMEタン イドル ウルトラ クッションコンパクト 14g【レフィル】(kd)6色から選べる 1個入り

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