- PR -

コードを書くファイルを分けたい

1
投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-06-13 10:14
お世話になります。
相当基本的なことになると思いますが、
よろしければご回答お願いいたします。


以前から、Visual Studio 2005 のC#でプログラムを書くことがありましたが、
今まではいつも、1つのcsファイルにすべてのコードを書いていました。
というのも、ファイルを分ける方法を知らないからです。

なんとなく「namespace」を使うような気はするのですが、
どのサイトも1つのファイル内で2つのnamespaceやclassを書くような例ばかりで、
ファイルを分けるための書き方がまったくわかりません。

「ファイルの分け方」について、詳しく勉強できるような、
参考になるようなサイトを、ご存じないでしょうか。
ご回答よろしくお願いいたします。
_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-13 10:33
Visual Studio を使用しているなら、ソリューションエクスプローラーのプロジェクトを選択して右クリックから「新しい項目の追加」ダイアログを開いて、クラスを追加
ってそういうことではなく??

ファイルを分ける単位をどうしたらいいか?ってことですか?
僕はネームスペースごとにフォルダを作って1クラス1ファイルにしていますが。。。

VisualStudioの入門本とか、WebCastを一度見たほうがいいんじゃないでしょうか。
_________________
かるあ のメモスニペット
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-06-13 10:42
ご回答ありがとうございます。

ファイルの追加自体はできるんですが、
そこにどう書けば、クラスを分けられるかがわからないんです。

「スタートアップC#」という、入門の入門みたいな雑誌にすら、
「同一ファイル内でnamespaceを分ける方法」しか書いておらず、
やり方が全く検討がつきません。


いろいろやってみてはいるんですが、
「クラス、構造体またはインターフェイスのメソッドには戻り値の型が必要です」
とか、「オブジェクト参照が必要です。」とか、
汎用的なエラーログしか出てこないので、
うまくいかない原因も全くわかりません。



[ メッセージ編集済み 編集者: Wingard 編集日時 2007-06-13 10:51 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-06-13 10:54
1つのクラスを複数のファイルに分けるなら、PartialClassを使いますが。。。
どうもそういう話ではなさそうですね。

まず、自分なりのクラスを設計し、それを使うという観点が必要でしょうね。
クラスをどう設計するかはオブジェクト指向なんかの書籍を読むのがいいかなぁ。

あと、.NETの場合、namespaceは単にクラスを階層構造にまとめて整理する
ためだけのもの、と考えていいと思います。
namespaceを使ったからなにかができるわけではないです。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-06-13 11:06
1つのファイル内に書く場合も、複数のファイルに分けて書く場合も、
書き方は変わらないはずです。
普通に、それぞれのファイルでクラス宣言を書けばよいだけなのですが…

ファイルを分けて、そこにクラスを書くところまでは出来て、
それをどうやって使うかが、わからないのではないかと想像しました。

簡単なサンプルを作ってみましたけど、こんな感じでどうでしょう?

コード:
// 以下、MainClass.cs に記述
public class MainClass
{
    // Main メソッド
    public static void Main()
    {
        Person person = new Person();
        person.firstName = "山田";
        person.lastName = "太郎";

        Console.WriteLine(person.GetFullName());    // "山田 太郎" と表示される
    }
}

// 以下、Person.cs に記述
public class Person
{
    // FirstName プロパティ
    private string firstName;
    
    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    // LastName プロパティ
    private string lastName;
    
    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    // フルネームを取得するメソッド
    public string GetFullName()
    {
        return firstName + " " + lastName;
    }
}

Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-06-13 11:14
KIさん、まさにそれです。
そういったソースがほしかったです。

namespaceはあまり関係なかったのですね……。
オブジェクト指向についてはある程度は理解しているのですが、
じゃあそれでどうするか、というところがわかりませんでした。

大変参考になりました。
これを取っ掛かりに、勉強していきたいと思います。
ありがとうございました。



[ メッセージ編集済み 編集者: Wingard 編集日時 2007-06-13 11:15 ]
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-06-14 18:51
結局調べてみて、私が一番やりたかったことは、
どっとねっとふぁんさんのおっしゃってた、
Partial Classを使って同じクラスで別のファイルに分ける方法でした。

でもこのトピックのおかげで、知ることができました。
ありがとうございました。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-06-14 19:54
Partial Classを使うと確かにファイルを分割できますが、
・クラスの処理の見通しが悪くなる。
・メンテナンス性もよいとは言えない。
という状態になると思います。

クラスを分割して利用することを考えたほうが後々いいとおもいますけどね。
1

スキルアップ/キャリアアップ(JOB@IT)