| 필수 과목 목록 | 선택 과목 목록 |
|---|---|
| Java | 디자인 패턴 |
| 객체지향 | Spring Security |
| Spring | Redis |
| JPA | MongoDB |
| MySQL |
내가 맡은 역할은 과목 클래스를 만드는 것이다.
| 과목 |
|---|
| 고유 번호 |
| 과목명 |
| 과목타입 (필수, 선택) |
기본적인 POJO(Plain Old Java Object)를 클래스로 만들었다.
- POJO란?
➡ 객체 지향 프로그래밍에서 특정 요구사항을 충족하기 위해 특별한 제약이 없는 간단한 클래스------------------------------------------------------- 🔻 캡슐화(Encapsulation) - 정보 은닉: private 접근 제어자를 사용하여 필드를 숨기고, 이를 public 접근 제어자를 가진 메서드를 통해 접근 ------------------------------------------------------- 🔻 명확한 데이터 모델 - 구조화된 데이터: 과목 ID, 이름, 타입을 필드로 갖는 구조는 과목에 대한 정보를 명확히 정의 ------------------------------------------------------- 🔻 상수의 사용 - 상수 정의: REQUIRED와 ELECTIVE 상수를 정의하여 과목의 타입을 코드 상에서 하드코딩하지 않고, 명확하고 일관되게 사용 ------------------------------------------------------- 🔻 Getter와 Setter 메서드 - 데이터 접근 및 수정: getter와 setter 메서드를 통해 객체의 필드에 안전하게 접근하고 수정 -------------------------------------------------------
public class Subject {
// 과목 타입 상수 정의
public static final String REQUIRED = "필수";
public static final String ELECTIVE = "선택";
private int subjectId;
private String subjectName;
private String subjectType;
public Subject(int seq, String subjectName, String subjectType) {
this.subjectId = seq;
this.subjectName = subjectName;
this.subjectType = subjectType;
}
public int getSubId() {
return subjectId;
}
public String getSubName() {
return subjectName;
}
public String getSubType() {
return subjectType;
}
public void setSubId(int subjectID) {
this.subjectId = subjectID;
}
public void setSubName(String subjectName) {
this.subjectName = subjectName;
}
public void setSubType(String subjectType) {
this.subjectType = subjectType;
}
}
이러한 Subject를 구현할 SubjectManager 클래스를 만들었다.
import java.util.*;
public class SubjectManager {
private static List<Subject> subjectList = new ArrayList<>();
private static List<String> requireList = Arrays.asList("Java", "객체지향", "Spring", "JPA", "MySQL");
private static List<String> electiveList = Arrays.asList("디자인 패턴", "Spring Security", "Redis", "MongoDB");
// 새로운 과목 저장
public void addSubject(String subjectName) {
if (requireList.contains(subjectName)) {
int size = subjectList.size() + 1;
Subject subject = new Subject(size++, subjectName, Subject.REQUIRED);
subjectList.add(subject);
System.out.println("필수과목인 " + subjectName + "가 등록되었습니다.");
} else if (electiveList.contains(subjectName)) {
int size = subjectList.size() + 1;
Subject subject = new Subject(size++, subjectName, Subject.ELECTIVE);
subjectList.add(subject);
System.out.println("선택 과목인 " + subjectName + "가 등록되었습니다.");
} else {
System.out.println("잘못된 과목을 입력하셨습니다.");
}
}
// 리스트에 있는 과목들 출력
public static void viewSubject() {
if (subjectList.isEmpty()) {
System.out.println("등록된 과목이 없습니다.");
return;
}
for (Subject subject : subjectList) {
System.out.println("ID: " + subject.getSubId() + ", Name: " + subject.getSubName() + ", Status: " + subject.getSubType());
}
}
// 리스트에 있는 과목에서 삭제
public static void deleteSubject(int subjectId) {
// 과목 번호를 검색하여 삭제
Iterator<Subject> iterator = subjectList.iterator();
while(iterator.hasNext()) {
Subject subject = iterator.next();
if (subject.getSubId() == subjectId) {
System.out.println("과목 ID가 " + subject.getSubId() + "이며, " + "과목 이름은 " + subject.getSubName() +"인 등록된 과목이 삭제되었습니다.");
iterator.remove();
return;
}
}
}
// 특정 과목 조회
public static void findSubjectById(int subjectId) {
for (Subject subject : subjectList) {
if (subject.getSubId() == subjectId) {
System.out.println("과목ID : " + subject.getSubId() + ", 과목 이름 : " + subject.getSubName());
}
}
}
}