LeanMate
혼자 하면 다이어트, 함께 하면 라이프스타일.
식단 기록과 운동 출석을 함께 관리하며, 친구들과 꾸준한 건강 루틴을 만들어보세요.
오늘의 식단
기본 음식 DB에서 먼저 검색하고, 없으면 직접 입력으로 기록할 수 있습니다.
검색 후보
칼로리
0 kcal
탄수화물
0 g
단백질
0 g
지방
0 g
즐겨찾기
자주 기록하는 음식은 별표로 저장해두고 빠르게 불러올 수 있습니다.
목표 계산
처음 시작할 때 목표를 먼저 저장하면 식단과 그룹 메뉴를 사용할 수 있습니다.
기초대사량
0 kcal
유지 칼로리
0 kcal
오늘 목표
0 kcal
조정 칼로리
0 kcal
기초대사량: 아무것도 하지 않아도 몸이 쓰는 에너지
유지 칼로리: 현재 체중을 유지하는 데 필요한 하루 칼로리
오늘 목표: 목표에 맞춰 조정된 하루 섭취 칼로리
조정 칼로리: 목표와 기간에 따라 유지 칼로리에 더하거나 뺀 값
그룹 출석
LeanMate OOP Architecture
아래 구조는 LeanMate의 기능 클래스를 상속 관계로 나타낸 것입니다. 최상위 부모 클래스인 FitnessModule은 공통 run() 메서드를 정의하고, 자식 클래스들은 이 메서드를 오버라이딩하여 목표 계산, 음식 검색, 식단 기록, 운동 출석 기록처럼 서로 다른 결과를 출력합니다. Git 관리는 main 브랜치를 안정 버전으로 유지하고, 기능별 브랜치에서 작업한 뒤 병합하는 방식으로 진행했습니다.
상속
FitnessModule을 부모 클래스로 두고 목표, 음식 검색, 식단, 운동 출석 기능이 확장됩니다.
오버라이딩
자식 클래스는 같은 run() 메서드를 자신의 역할에 맞게 다시 정의합니다.
다형성
같은 run() 호출이 객체 타입에 따라 칼로리, 식단, 랭킹 계산으로 바뀝니다.
모든 기능 클래스는 같은 run() 메서드를 가지고 있지만, 각 클래스가 이를 오버라이딩하여 서로 다른 계산 결과를 출력합니다.
GoalPlan에서 목적별 목표 플랜으로 상속
const selectedModule = modules[className];
const result = selectedModule.run(context);
1. 목표 계산
`createGoalPlan(goalMode)`가 감량, 유지, 린매스업 중 알맞은 자식 클래스를 만들고 `run(profile)`로 하루 목표를 계산합니다.
2. 음식 검색과 식단 합산
`FoodSearchModule.run(query)`는 음식 Map을 조회하고, `MealRecord.run(target)`은 오늘 식단 배열의 총 섭취량을 계산합니다.
3. 운동 출석 랭킹
`AttendanceRecord.run(selectedDate)`는 날짜별 운동 출석 기록을 바탕으로 주간 랭킹과 연속 출석일을 계산합니다.