構造化プログラミングからオブジェクト指向へ繋ぐブリッジ練習問題セット

✅ 前提

  • 構造化プログラミング(変数・条件分岐・繰り返し・配列)まで習得済み
  • メソッドの基本を一通り理解した段階
  • 「データと処理を“ひとまとまり”にする」イメージをつかむ

■ 練習問題構成

ステップ目的
1. 構造化のみで書くデータと処理が分離している形を体験する
2. メソッドで整理処理を部品化して再利用できることを体験する
3. クラスにまとめるデータと処理を1つに束ねて「モノ化」する

✅ 【問題1】構造化での学生情報表示

お題

  • 名前、年齢を変数で保持する
  • 画面に「〇〇さんは△△歳です」と表示する
  • 3人分のデータを順に表示する

ヒント

  • 配列を使ってもOK
  • メソッドは使わない
using System;

class Program 
{
    static void Main() 
 {
        string name1 = "佐藤";
        int age1 = 20;

        string name2 = "鈴木";
        int age2 = 22;

        string name3 = "田中";
        int age3 = 19;

        Console.WriteLine($"{name1}さんは{age1}歳です");
        Console.WriteLine($"{name2}さんは{age2}歳です");
        Console.WriteLine($"{name3}さんは{age3}歳です");
    }
}

✅ 【問題2】メソッド化で整理

お題

  • 【問題1】の表示処理を ShowInfo メソッドとして作る
  • 引数で名前と年齢を受け取り表示する

追加条件

  • 3人分を繰り返し呼び出して表示する
using System;

class Program 
{
    static void ShowInfo(string name, int age) 
    {
        Console.WriteLine($"{name}さんは{age}歳です");
    }

    static void Main() 
    {
        ShowInfo("佐藤", 20);
        ShowInfo("鈴木", 22);
        ShowInfo("田中", 19);
    }
}

✅ 【問題3】クラス化でオブジェクト指向に変換

お題

  • Student クラスを作る
  • Name と Age をプロパティとして持つ
  • ShowInfo をクラスのメソッドにする
  • 3人分の Student オブジェクトを作成して、順に ShowInfo を呼び出す
using System;

class Student 
{
    public string Name;
    public int Age;

    public void ShowInfo() 
    {
        Console.WriteLine($"{Name}さんは{Age}歳です");
    }
}

class Program 
{
    static void Main() 
    {
        Student s1 = new Student();
        s1.Name = "佐藤";
        s1.Age = 20;

        Student s2 = new Student();
        s2.Name = "鈴木";
        s2.Age = 22;

        Student s3 = new Student();
        s3.Name = "田中";
        s3.Age = 19;

        s1.ShowInfo();
        s2.ShowInfo();
        s3.ShowInfo();
    }
}

✅ 【問題4】少し発展

お題

  • Student クラスに新しく Birthday() メソッドを追加
  • このメソッドは年齢を1つ増やして「〇〇さんの年齢は△△歳になりました」と表示する
  • 任意の1人の年齢を誕生日で更新してから、もう一度 ShowInfo を呼ぶ
using System;

class Student 
{
    public string Name;
    public int Age;

    public void ShowInfo() 
    {
        Console.WriteLine($"{Name}さんは{Age}歳です");
    }

    public void Birthday() 
    {
        Age++;
        Console.WriteLine($"{Name}さんの年齢は{Age}歳になりました");
    }
}

class Program 
{
    static void Main() 
    {
        Student s1 = new Student();
        s1.Name = "佐藤";
        s1.Age = 20;

        Student s2 = new Student();
        s2.Name = "鈴木";
        s2.Age = 22;

        Student s3 = new Student();
        s3.Name = "田中";
        s3.Age = 19;

        s1.ShowInfo();
        s2.ShowInfo();
        s3.ShowInfo();

        Console.WriteLine("--- 誕生日後 ---");
        s2.Birthday();

        Console.WriteLine("--- 再表示 ---");
        s2.ShowInfo();
    }
}

✅ 【振り返りワーク】

問い

  • 構造化で書いたときと、クラス化したときの 「見やすさ」「追加変更のしやすさ」 を比較して気づいたことを書いてみましょう。

✅ 【オプション】

内容できれば
UMLで描くStudent クラス図を手書きしてみる
Excelで考える1行を1人の Student と考えてみる
チーム開発想定誰がどの部分を担当すると効率的か考える

✏️ 【まとめの一言】

ブリッジ練習の目的は、「データと処理を分ける」→「まとめて箱にする」という流れを体験して、オブジェクト指向の必然性を感じることです。

訪問数 4 回, 今日の訪問数 4回

C#,メソッド

Posted by hidepon