琉球泡盛 山原くいな43度3年古酒 1800ml 1本

連載

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


三口産業 モチュレ アスタリノ 500g    ジェル状美容液

KsngY781Ri

【 x3本セット 】【!】三口産業 モチュレ アスタリノ 500g 【詰替用/リフィル】 【wntr】 ジェル状美容液【化粧水|乳液|クリーム|美容液|パック|化粧下地|6つの機能が一つに!】※NEW※

【 x3本セット 】【!】三口産業 モチュレ アスタリノ 500g 【詰替用/リフィル】 【wntr】 ジェル状美容液【化粧水|乳液|クリーム|美容液|パック|化粧下地|6つの機能が一つに!】※NEW※:総合卸ヨシムラ

三口産業|フォード化粧品販売

モチュレ アスタリノ 500g【つめかえ用|レフィル】

※専用容器が必要です※

専用容器は別売です

2018年7月|商品がリニューアルされました
旧品は、化粧水|乳液|化粧下地|クリーム|美容液 の5つの機能をオールイワン
今回は、|化粧水|乳液|クリーム|美容液|パック|化粧下地|6つの機能をオールイワン

■ストレスのない肌は美しい、そんな毎日を過ごしたい。
うるおいリラックス肌。

年齢を重ねると共に、水分量や皮脂量はぐっと少なくなり
肌トラブルを引き起こしたり、皮膚の薄い目元などは
乾燥小じわが目立つようになります。

さらに、エアコンや紫外線、大気汚染やストレスなどの環境要因は
肌老化を加速させる 肌ストレス の原因にもなります。

アスタリノは『ピュアアスタキサンチン』などの
うるおい美容成分が、水分バランスを理想的な状態に整え
肌ストレスに負けない、リラックス肌へと導きます。

1.水分を与えるだけじゃない、みずみずしさが長続き。
優れた美容パワーを持つ植物由来の『ピュアアスタキサンチン』と
保湿効果の高い『Wヒアルロン酸』が各層の
すみずみまで浸透し、肌のバリア機能をサポート。。
うるおいが長く続き、ふっくらとハリと弾力のある肌へと導きます。

2。『肌フローラ』に着目。
アスタリノは、肌表面に存在する細菌群、
肌フローラに着目したうるおいケアで
すみずみまでうるおいで満たしながら
肌コンディションを整えます。

3.ココロも満たされるスキンケアタイム。
気持ちをリフレッシュさせ、リラックス効果を高める
爽やかなオレンジ精油の香りです。

■石油系界面活性剤フリー|合成香料フリー|鉱物油フリー|合成着色料フリー

ご使用方法
■付属のスパチュラか、清潔な指先に適量を取り
肌にやさしくなじませます。
乾燥が気になる部分には、少量ずつ重ねづけしてください。
■お手持ちの化粧水と併用して頂いても差し支えありません。
■ひじ・ひざなど、気になる部分のボディケアにもオススメです。
【基本の使用ステップ】
朝|洗顔 → アスタリノ使用 → ファンデーションなど
夜|洗顔 → アスタリノ使用

内容量
500g

成分
水、グリセリン、ベタイン、DPG、PEG-20、ベンチレングリコール、メチルグルセスー20、スクワラン、オリーブ油脂肪酸セテアリル、オリーブ油脂肪酸ソルビタン、ヒドロキシアセトフェノン、水添レシチン、水酸化K、水酸化レシチン、グルコシルルチン、トコフェロール、トリ(カプリル酸/カプリン酸)グリセリル、ヘマトコッカスプルビアリスエキス、ダイズ種子エキス、グレープフルーツ果実エキス、サンザシエキス、ナツメ果実エキス、リンゴ果実エキス、グリチルリチン酸2K、グルコシルヘスペリジン、テトラヘキシルデカン酸アスコビル、加水分解ヒアルロン酸、BG、αーグルカン、エンテロコッカスフェカリス、グルコシルセラミド、(メタクリル酸グリセリルアミドエチル/メタクリル酸ステアリル)コポリマー、ポリクオタニウムー51、ヒアルロン酸ヒドロキシプロピルトリモニウム、ライム果汁、オレンジ果汁、レモン果汁、オレンジ果皮油、刈るボマー、ベンテト酸5Na、エチルヘキシルグリセリン、フェノキシエタノール

ご使用上の注意
◆お肌に合わないときは、ご使用をおやめください。
◆目に入ったときは、直ちに洗い流してください。
◆傷やはれもの、湿疹等、異常のある部位にはお使いにならないでください。
◆使用中、使用後に赤味、腫れ、かゆみ、刺激等の異常があらわれたときには、直ちに使用を中止して皮膚科専門医等にご相談されることをおすすめします。そのまま使用を続けますと症状を悪化させることがあります。
◆乳幼児の手の届かない所に保管してください。
◆使用後は必ずしっかりとふたをしめてください。
◆ふたを開ける際、中身がこぼれる場合がありますので注意してください。
◆一度手に取った物を容器に戻さないでください。
◆直射日光や高温・多湿の場所を避けて保管してください。
◆付属のスパチュラをお使いになった後はきれいにした後、保管してください。
◆容器より指で直接クリームを取り出すときは、手を清潔にして使用してください

区分 化粧品/日本製
販売元 三口産業株式会社
広告文責 株式会社コスメバンク 072-961-7200
,

メーカー希望小売価格はメーカー商品タグに基づいて掲載しています
純馬油6個セット,イヴサンローラン Touche Eclat All In One Glow Foundation SPF 23 - # B30 Almond 30ml/1oz並行輸入品,GRクーリングジェル・オリジナル(中粘度)5kg/袋 1箱セット(5KG×4袋) 脱毛用ジェル 光脱毛用ジェル エステ用ジェル フォトフェイシャル マッサージ 超音波 キャビテーション ハイフ E-lite ボディーケア 大容量ジェル 業務用ジェル 脱毛器用ジェル,クラランス ファーミング EX デイ クリーム オール スキン タイプ 50ml CLARINS EXTRAFIRMING DAY CREAM ALL SKIN TYPES FRAGRANCE REFILL BOUQUET,★2021円クーポン配布中 お買い物マラソン★期間限定 送料無料★クリニーク フォーメンMX ハイドレーター ウォーター ジェル コンセントレート お得な6個セット 48ml x 6【仕入れ】 | CLINIQUE 美容液,有機リツエアクベバ精油 50ml【生活の木】,貝印 ビューティ M  (10本入) ×200個【イージャパンモール】,【送料無料(全国)】 ケラスターゼ RE マスク ド フォルス 500g 詰め替え 業務用 レジスタンス 【ift-fb】,【サロン専売品】レッドスペシャル RedSpecial フットバス ピエ・ド・スパ【メーカー直送】【フットケア用具/フットケア】 【c&dネイリスト情報 コスメ&ドラッグNY】,【正規品・送料込】ジバンシイ ルージュ・アンテルディ No.14レッドライト,シャネル -CHANEL- チャンスオータンドゥルオードトワレ EDT トラベル コフレセット 100ml+20ml[セット]:【ヤマト便】新入荷12 福袋,【最大42%オフ】アマルディア 2020感謝福袋(肌に優しいクレンジング オールインワンゲル 他計6点) 敏感肌 乾燥肌 肌荒れ マスク荒れ 毛穴 たるみ ほうれい線 低刺激 無添加 日本製 化粧品,ハンドスキッシュEX 4.5L 507211 入数1,【送料込・まとめ買い×48個セット】花王 8x4 エイトフォー パウダースプレー 無香料 150g,コーセー コスメデコルテ AQ ローション ER 200ml,【ふるさと納税】森水「くろもじアロマウォーター」,【正規品・送料込】マック パウダー キス リキッド リップカラー エレガンス イズ ラーンド (5mL),【送料無料・まとめ買い12個セット】花王 クリアクリーン 携帯用 お泊まりセット 1組,dr.vranjes ドットール・ヴラニエス Dr Vranjes PETALI DI ROSE ペタリ ディ ローゼ 500 フレグランス ディフューザー 新築祝い 引越し祝い 開店祝い プレゼント ギフト 贈り物 人気【正規販売店】,★純正品/送料無料★マック ライトフル C+ SPF50 クッション コンパクト ミディアムプラス (12g) [レフィル+コンパクト],生活の木 マカデミアナッツオイル(500ml)【生活の木】,化粧筆 チークブラシ CH-07,牛乳石鹸 ミルキィフレッシュセット (MF-10) フレッシュなバラの香りの石けん 日本製 30個セット販売,【送料込・まとめ買い×60個セット】 三宝商事 プロテクタースリーホルダー替刃 2コ付 1個 (剃刀・シェービング・三枚刃),Dolce&Gabbana(ドルチェ&ガッバーナ)ドルチェ&ガッバーナ オードパルファム 100mL,★純正品/送料無料★ジルスチュアート アイコニックルック アイシャドウ C203 make you smile,男性医療用かつら メンズストーリー★ショート★最高級人毛100% 総手植え フルウィッグ リアルスキン人工肌 JIS規格 軽量伸縮性黒ネット 送料無料 メンズ ウィッグ ヘアダイレクト 全頭かつら 自然色 黒 白髪 S M L★,KOKOIST ココイスト ジェルネイル ソークオフ セミハードクリアジェル エクセルビルダー 120gネイル用品の専門店 プロ用にも,【送料無料】DE LA MER(ドゥラメール)保湿クリームThe Moisturinzing Cream(ザ・モイスチャライジング クリーム)/Creme de la Mer(クレーム・ドゥ・ラメール)100mL,Amy<エイミー>ショート JO ジュリア・オージェ オールウィッグ 送料無料 女性 レディース アートネイチャー かつら ナチュラル 自然 ショート【ショートスタイル】茶色 ブラウン,【送料無料】コスメボックス バニティケース 三面鏡 カスタマイズできるとっておきのメイクボックス 〔アラベスク〕 ワイド コスメケース バニティボックス メイクBOX 化粧箱 ドレッサー 化粧入れ 化粧品 おしゃれ かわいい【代引き決済不可】,キャリアオイル オーガニックスイートアーモンドオイル 500ml HVG055 HYPER PLANTS ハイパープランツ 【送料無料】【smtb-TD】【saitama】,【正規品・送料込】シャネル ジェル ネトワイヤン (150ml),シスレー スプレミヤ アイ 15ml,【正規品・送料込】ボビイブラウン インスタント フルカバー コンシーラー 03ウォームアイボリー(6ml),アポスル Bセラム,エリクシール シュペリエル エンリッチドクリーム CB 45g,★純正品/送料無料★アディクション ザ マット リップ リキッド 001ヴィンテージマホガニー (6.5ml)<4971710288117>,【あす楽】 【送料無料(全国)】 ボディ オー <ボディクリーム> 200g リズム RHYTHM BODY OH! ボディークリーム エステプロラボと共同開発,【時間指定不可】POLA Vリゾネイティッククリーム 0.6g×100パック=60g,飛燕瑞涛アソート桐塗箱 紐付 短寸10入,ラモン モネガル アントレ ナランホ オードパルファン 50ml【Ramon Monegal Entre Naranjos EDP 50ml】,★お年玉コフレ2021★送料無料★ロクシタン ローズ ベルベットボディミルク(250ml) ハンドクリームコフレ<3253581542118>,激レア香水! 正規品【ESTEE LAUDER】Eau De Private Collection Fragrance Spray 50ml WOMEN'S【エスティローダー】オーデ プライベート コレクション フレグランス・スプレー 50ml [レディース・女性用香水],LION ライオン キレイキレイ 薬用泡ハンドソープ フルーツミックス 550ml,アロマランプディフューザー ver.3 ナチュラルブラウン 4個セット 日本国内正規品 【 あす楽 】 【 アロマディフューザー アロマランプ アロマライト 超音波 芳香器 ルームフレグランス アロマミスト アロマ アロマテラピー 精油 エッセンシャルオイル アロマオイル 】,日本未発売!正規品【GUERLAIN】La Petite Robe Noire Black Perfecto EDT Florale 100ml WOMEN'S 【ゲラン】ラ プティット ローブ ノワール ブラックパーフェクト オードトワレ フローラル 100ml【香水・フレグランス:フルボトル:レディース・女性用】,正規品【BVLGARI】BVLGARI POUR HOMME EXTREME EDT 100ml MEN'S 【ブルガリ】ブルガリ プールオム エクストリーム EDT 100ml[香水・フレグランス:フルボトル:メンズ・男性用]【ブルガリ香水】,『1月18日15時まで期間限定価格』リナーリ ルームディフューザー 500ml / LINARI 【送料無料(一部地域除く)】,ミルボン リプレニッシング シャンプー<つめかえ用>(1000ml),有機ベルガモット(フロクマリンフリー)精油 50ml【生活の木】,COSME DECORTE コスメデコルテ リフトデイメンション エンハンスト クリーム 50g,2088 クリスタルボルケーノss16 (1440粒),アロマランプ グリーンリーブス 008,クリスチャンディオールプレステージセラムドローズユー(目元用美容液)15ml【メール便は使えません】,【正規品・送料込】ボビイブラウン ロングウェア アイ ペンシル 01ジェット(1.3g),【3点セット】ビセプター エッセンス E-04 255mL エステティックサロン業務用 vie cePter 正規品,【ふるさと納税】「OYAMAの雫」4点セット:栃木県小山市産ハトムギ クレンジング・洗顔石鹸・化粧水・乳液 【1098473】

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