24.08.01

윤지현·2024년 8월 1일

TIL

목록 보기
29/75
  • 오늘부터 Java 팀프로젝트를 시작했다.
    내배캠 수강생들을 관리하는 프로그램을 만드는 것이다.
    캠프에는 필수 과목과 선택 과목이 존재한다.
필수 과목 목록선택 과목 목록
Java디자인 패턴
객체지향Spring Security
SpringRedis
JPAMongoDB
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());
            }
        }
    }
}
  • 후기
    지금 현재는 팀원들이 각자 클래스를 만들어서 git에서 merge를 했고 지금은 각자 했던 클래스를 연결하거나 메서드를 추가하는 등의 작업이 들어가고 있다. 나도 지금 팀원들이 했던 작업들과 연결하는데 개인이 하는 것보다 팀원들이 하는 것이 훨씬 힘든 것 같다.
    그래도 다들 열심히 해주셔서 끝까지 잘할 수 있을 것 같다. 화이팅!!!🤩🤩🤩
profile
첫 시작

0개의 댓글