// 객체 생성
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 |