Skip to content

devbox-kk/dot-net-devbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

.NET練習用アプリケーション

このリポジトリは、.NETプログラミングの基本概念を学習するためのシンプルなサンプルアプリケーションを含んでいます。

📁 プロジェクト構成

dot-net-devbox/
├── README.md                    # このファイル
└── SimpleCalculator/           # メインプロジェクト
    ├── Program.cs              # エントリーポイント(対話型計算機)
    ├── MathUtils.cs            # 数学計算ユーティリティクラス
    ├── Person.cs               # オブジェクト指向学習用クラス
    └── SimpleCalculator.csproj # プロジェクトファイル

🛠️ 必要な環境

  • .NET SDK 8.0以上
  • 対応OS: Windows, macOS, Linux

.NET SDKのインストール方法

Ubuntu/Debian (snap使用)

sudo snap install dotnet-sdk --classic

Windows

.NET公式サイトからインストーラーをダウンロード

macOS

brew install dotnet

🚀 アプリケーションの実行方法

1. プロジェクトのビルド

cd SimpleCalculator
dotnet build

2. アプリケーションの実行

dotnet run

3. 対話型計算機の使用

アプリケーションを実行すると、以下のメニューが表示されます:

=== シンプル計算機アプリ ===
基本的な四則演算ができます

操作を選択してください:
1. 足し算 (+)
2. 引き算 (-)
3. 掛け算 (*)
4. 割り算 (/)
5. 終了
選択 (1-5):

数字を入力して計算を実行できます。

📚 学習できる.NETの概念

1. 基本的なC#プログラミング (Program.cs)

  • コンソール入出力: Console.WriteLine(), Console.ReadLine()
  • 制御構造: whileループ、switch文、if
  • メソッドの定義と呼び出し
  • 例外処理: TryParse()を使用した安全な数値変換
  • 文字列操作: string interpolation ($"")
// 例: 安全な数値入力
static double GetNumber(string prompt)
{
    double number;
    while (true)
    {
        Console.Write(prompt);
        string input = Console.ReadLine() ?? "";
        
        if (double.TryParse(input, out number))
        {
            return number;
        }
        
        Console.WriteLine("有効な数値を入力してください。");
    }
}

2. 静的メソッドとユーティリティクラス (MathUtils.cs)

  • 静的クラス: static classの使用
  • XMLドキュメント: ///を使用したコード文書化
  • 例外処理: ArgumentExceptionの適切な使用
  • 数学的計算: Mathクラスの活用
  • 再帰: 階乗計算での再帰の実装
/// <summary>
/// 階乗を計算します(再帰を使用)
/// </summary>
public static long Factorial(int n)
{
    if (n < 0)
        throw new ArgumentException("負の数の階乗は計算できません");
    if (n == 0 || n == 1)
        return 1;
    return n * Factorial(n - 1);
}

3. オブジェクト指向プログラミング (Person.cs)

  • カプセル化: プライベートフィールドとプロパティ
  • コンストラクタ: オブジェクトの初期化
  • 継承: StudentクラスがPersonクラスを継承
  • ポリモーフィズム: virtualoverrideの使用
  • メソッドのオーバーライド: ToString(), Equals(), GetHashCode()
public class Person
{
    private string _name;
    
    public string Name
    {
        get { return _name; }
        set
        {
            if (string.IsNullOrWhiteSpace(value))
                throw new ArgumentException("名前を空にすることはできません");
            _name = value;
        }
    }
}

🔧 高度な機能の追加方法

単体テストの追加

# テストプロジェクトの作成
dotnet new xunit -n SimpleCalculator.Tests

# テストプロジェクトにメインプロジェクトの参照を追加
cd SimpleCalculator.Tests
dotnet add reference ../SimpleCalculator/SimpleCalculator.csproj

# テストの実行
dotnet test

パッケージの追加

# NuGetパッケージの追加例
dotnet add package Newtonsoft.Json

設定ファイルの追加

# appsettings.jsonの追加
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Json

📖 学習リソース

公式ドキュメント

推奨する学習順序

  1. 基本構文: 変数、演算子、制御構造
  2. メソッド: 関数の定義と呼び出し
  3. クラスとオブジェクト: オブジェクト指向の基本
  4. 例外処理: エラーハンドリング
  5. コレクション: List, Dictionary等
  6. LINQ: データクエリ
  7. 非同期プログラミング: async/await

🔍 コードの詳細解説

MathUtilsクラスの機能

メソッド 説明 使用例
SquareRoot() 平方根計算 MathUtils.SquareRoot(16)4
Power() 累乗計算 MathUtils.Power(2, 3)8
Factorial() 階乗計算 MathUtils.Factorial(5)120
GreatestCommonDivisor() 最大公約数 MathUtils.GreatestCommonDivisor(12, 8)4
CircleArea() 円の面積 MathUtils.CircleArea(5)78.54

Personクラスの機能

機能 説明
プロパティ Name, Age, Hobbies の管理
バリデーション 名前と年齢の入力値検証
趣味管理 AddHobby(), RemoveHobby()
情報表示 DisplayInfo()
年齢関連 HaveBirthday(), IsAdult(), GetAgeGroup()

🐛 トラブルシューティング

よくある問題と解決方法

1. ".NET SDKが見つからない"

# インストール確認
dotnet --version

# パスの確認
echo $PATH

2. "プロジェクトをビルドできない"

# 依存関係の復元
dotnet restore

# クリーンビルド
dotnet clean
dotnet build

3. "実行時エラー"

  • コンソール出力のエラーメッセージを確認
  • デバッガーを使用 (dotnet run --debug)

🎯 練習課題

初級

  1. 新しい演算の追加: 剰余計算(%)を追加
  2. 入力検証の改善: 不正な入力に対するエラーメッセージを改善
  3. 計算履歴: 過去の計算結果を保存・表示する機能

中級

  1. 科学計算機: MathUtilsクラスの機能を使った高度な計算モード
  2. 設定ファイル: 計算精度や言語設定をJSONファイルで管理
  3. 単体テスト: MathUtilsクラスの全メソッドに対するテストケース作成

上級

  1. GUI版: Windows FormsまたはWPFを使用したグラフィカル版
  2. Web API: ASP.NET Coreを使用したREST API版
  3. データベース: 計算履歴をSQLiteに保存

📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。学習目的での使用・改変は自由に行ってください。

🤝 貢献

バグ報告や機能追加の提案は、GitHubのIssuesまでお願いします。プルリクエストも歓迎します。


Happy Coding! 🚀

About

.NETno

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages