C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: クラスの作り方のテクニカルな方法をご教示ください。


(過去ログ 62 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■35986 / inTopicNo.1)  クラスの作り方のテクニカルな方法をご教示ください。
  
□投稿者/ クラス初心者 (1回)-(2009/05/17(Sun) 15:07:00)

分類:[C#] 

一連のコードをクラス化したいと考えています。

・一連のコードを選択する
・[リファクタ]-[メソッドの抽出]を実行。
・[プロジェクト]-[新しい項目の追加]でクラスを追加。
・抽出したメソッド(NewMethod)をカット&ペーストして作成したクラスに移動。
という手順で作業しました。

現在は、もとのコードの
NewMethod();
の部分が存在しないので、「名前NewMethodは現在のコンテキスト内に存在しません」
とエラーになっています。

・移動した先のクラスのメソッドを呼び出すためには、
NewMethod();
の部分をどう書けばよいですか?
作成したクラス名を追加すると、

NewClass.NewMethod();

エラーメッセージは、「NewClass.NewMethod()はアクセスできない保護レベルになっています」となります。
クラスのメソッドは、
private void NewMethod()
となっていて、外部からアクセスできないので、ここをpublicに書き換えてみました。
すると、「静的でないフィールド、メソッド、またはプロパティNamespace.NewClass.NewMethod()で、
オブジェクト参照が必要です」とエラーになります。

引用返信 編集キー/
■35987 / inTopicNo.2)  Re[1]: クラスの作り方のテクニカルな方法をご教示ください。
□投稿者/ Azulean (383回)-(2009/05/17(Sun) 15:23:54)
No35986 (クラス初心者 さん) に返信
> NewClass.NewMethod();
(中略)
> すると、「静的でないフィールド、メソッド、またはプロパティNamespace.NewClass.NewMethod()で、
> オブジェクト参照が必要です」とエラーになります。
静的なメソッドにすべきか、インスタンスメソッドにすべきか、よく考えてみて下さい。
それぞれの特徴が分からない場合は、調べてみましょう。


1.静的なメソッドで良い場合
staticキーワードを指定すると、静的なメソッドになります。
その代わり、そのメソッドは静的なフィールド、メソッド、プロパティしか参照できなくなります。


2.インスタンスを作る場合
NewClass instance = new NewClass();
instance.NewMethod();

このようなコードで呼び出すことはできます。
ただ、インスタンスフィールド、メソッド、プロパティがなく、一回限りでそのインスタンスを使い捨てるのであれば、そのメソッドは静的なメソッドで良いのかもしれませんね。

引用返信 編集キー/
■35989 / inTopicNo.3)  Re[1]: クラスの作り方のテクニカルな方法をご教示ください。
□投稿者/ Jitta (580回)-(2009/05/17(Sun) 17:36:28)
No35986 (クラス初心者 さん) に返信
> 一連のコードをクラス化したいと考えています。
>
> ・一連のコードを選択する
> ・[リファクタ]-[メソッドの抽出]を実行。
> ・[プロジェクト]-[新しい項目の追加]でクラスを追加。
> ・抽出したメソッド(NewMethod)をカット&ペーストして作成したクラスに移動。
> という手順で作業しました。

この手順というか、アプローチが、なんだかおかしいように思います。
クラスは、コードを切り出して作るのではなく、役割を与えることで作成します。

引用返信 編集キー/
■35991 / inTopicNo.4)  Re[1]: クラスの作り方のテクニカルな方法をご教示ください。
□投稿者/ επιστημη (1936回)-(2009/05/17(Sun) 18:52:48)
επιστημη さんの Web サイト
2009/05/17(Sun) 19:08:33 編集(投稿者)

抽出した各メソッドに「〜さんが」をくっつけます。

「ウェイターさんが 注文を取る」
「お客さんが 注文する」
「コックさんが ハンバーグを作る」
「コックさんが 料理を皿に盛り付ける」
「ウェイトレスさんが 付け合わせを用意する」
「ウェイトレスさんが ごはんとスープを用意する」
....
いちばん「しっくりくる」ように 〜さんが をつければ、〜がクラスになるでしょう。

> クラスは、コードを切り出して作るのではなく、役割を与えることで作成します。

ってことです。

※ これ、テクニカルな方法じゃありません。 直感的な方法ですが、大抵コレで十分です。

引用返信 編集キー/
■35992 / inTopicNo.5)  Re[2]: クラスの作り方のテクニカルな方法をご教示ください。
□投稿者/ クラス初心者 (2回)-(2009/05/17(Sun) 19:25:23)
Azulean さん
ありがとうございました。
インスタンスを作る方法でできました。
おなじことを何度も書いていたので、すこし見通しがよくなってきました。
数えたら、8回書いていました。
まあコピー&ペーストしただけですが、
それぞれ微妙に書き換えたりしているのをこれを機会に整理しました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -