학생 추가 기능 분리

2025. 11. 5. 10:48·C#
            // 객체 생성
            Student student1 = create.CreateStudent(name, age, major);
            
            // 생성한 객체를 [학생 리스트]에 추가
            students.Add(student1); 
            
            // 생성한 객체를 [UI-Listbox]에 추가
            listStudents.Items.Add(student1.Name);

 

create 라는 외부 클래스에서 객체를 생성한 뒤 넘겨 받았다.

넘겨받은 객체를 List에도 추가해야하고, UI에도 추가해야한다.

 

하지만 유저 인터페이스는 가급적 UI만 건드리는 일을 하는게 좋고,

나머지 연산 등의 기능은 외부 클래스로 분리하여 값을 넘겨받고 넘겨줘야한다.

 

그렇다면?

students.Add 도 분리해야한다.

 

listStudents.Items.Add는 UI 관련 코드이긴 하지만

직접적으로 객체를 참조하기보다

학생리스트를 추가한 뒤 뱉어낸 학생리스트인 student를 참조해서 동작하는게 좋다. 

 

그렇게되면

자연스럽게 필드에 있던 private List<Student> students = new List<Student>(); 이것도

어디로 분리해야할지 고민해야한다.


 

📦 StudentApp/
├── 📄 Modify.cs # 학생 수정 관련 기능 클래스
├── 📄 Program.cs # 프로그램 진입점 (Main 메서드)
├── 📄 Form1.cs # 메인 폼 (WinForm UI 로직)
├── 📄 ClearUI.cs # UI 초기화 관련 클래스
├── 📄 Create.cs # 학생 생성 로직 클래스
├── 📄 IniFile.cs # 파일 입출력(저장/불러오기) 로직
└── 📄 Student.cs # Student 클래스 (데이터 모델)

 

현재 프로젝트 클래스 구성도는 위와 같다.

학생 리스트에 추가하는 기능은 어디 클래스로 구분해야할까?

아니면 새로 만들어야할까?

 

학생 객체를 생성하는 Create.cs 클래스로 분리할까 했는데

여기는 학생을 '생성하는 책임'만 주는 것이 좋을 것 같다.

 

학생 리스트를 관리하는 책임을 가진 클래스를 새로 생성하기로 했다.

여기서 학생 리스트에 추가,삭제,수정 등을 할 수 있는 기능들을 넣으면 좋을 것 같다. (확장성 고려)

 

'C#' 카테고리의 다른 글

"이벤트 핸들러"를 사용한 "인자 전달"  (0) 2025.11.05
인스턴스  (0) 2025.11.05
학생 조회 프로그램 - class 버전  (0) 2025.11.04
필드(Field) vs 속성(Property)  (0) 2025.11.04
namespace와 using구문  (0) 2025.11.04
'C#' 카테고리의 다른 글
  • "이벤트 핸들러"를 사용한 "인자 전달"
  • 인스턴스
  • 학생 조회 프로그램 - class 버전
  • 필드(Field) vs 속성(Property)
joo_coding
joo_coding
2025.02.18~
  • joo_coding
    주코딩일지
    joo_coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (219)
      • 일지 (19)
      • 계획표 (7)
      • 프로젝트 (6)
      • C언어 (35)
        • 연습장 (12)
      • C++ (3)
      • C# (34)
      • Python (28)
        • 연습장 (11)
      • TCP IP (4)
      • DB (2)
      • ubuntu (1)
      • Git (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어 #vscode #gcc #윈도우 #c언어윈도우 #gcc윈도우 #vscode윈도우 #c #c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
joo_coding
학생 추가 기능 분리
상단으로

티스토리툴바