오늘은 자바에서 자주 등장하는 반복 구조와 객체지향 기본 개념을 집중적으로 정리한 하루였다. 특히 이중 for문 구조, 그리디 알고리즘 개념, OOP 핵심 4요소(상속, 캡슐화, 추상화, 다형성)을 실제 예제와 함께 확인하며 큰 흐름을 잡았다.
또한 오늘 구현한 프로젝트 코드에서 발생한 오류를 직접 수정하면서 메서드 파라미터, equals 비교, getName 사용 방식 등 객체 간 데이터 접근 구조까지 자연스럽게 이해했다.
이중 for문은 바깥 반복(i)이 한 번 돌 때마다 내부 반복(j)이 전체를 모두 실행하는 구조라는 점을 학습했다. 이를 통해 2차원 배열, 좌석 예매 시스템, 별찍기 문제의 기본 원리를 이해하게 되었다.
// 기본 구조 for (int i = 0; i < A; i++) { for (int j = 0; j < B; j++) { // 내부 반복 } } 그리디는 “매 순간 최선의 선택”만 하는 알고리즘이라는 점을 배웠다. 거스름돈 문제, ATM 대기시간 최소화, 회의실 배정 문제처럼 정렬 + 반복 구조로 해결하는 문제들에서 자주 등장한다.
객체지향의 네 가지 핵심 요소를 실제 예제와 비유를 통해 정리했다.
• 상속: 부모 기능을 자식이 물려받는 구조
• 캡슐화: 데이터 보호(private + getter/setter)
• 추상화: 중요한 기능만 먼저 선언하고 구현은 자식이 맡음
• 다형성: 같은 메서드 호출이 객체에 따라 다르게 동작
오늘은 두 가지 프로젝트의 전체 구조를 작성하고, Manager 클래스 / 데이터 클래스 설계 방법을 익혔다.
특히 findByName 오류 해결 과정에서
등 객체 데이터 접근 방식까지 자연스럽게 정리되었다.
• 이중 for문에서 “왜 안쪽을 또 돌리는지” 이해가 처음에 어려웠다.
• 메서드 파라미터 누락, 잘못된 메서드 이름(searchName) 등 기본 실수가 자주 발생했다.
• OOP 개념(상속·다형성)이 처음엔 추상적이었다.
• 이중 for문은 “바깥 1회 → 안쪽 전체 반복” 구조라는 원리를 반복 예제로 이해함.
• findByName 오류는 파라미터와 getter 개념을 정확히 이해하면서 해결됨.
• OOP 네 가지 개념은 예제 코드 + 비유가 함께 들어오니 훨씬 쉽게 정리됨.
• 전체 코드 흐름을 오늘 만든 두 프로젝트에서 직접 체험하며 자신감 상승.
• 학생 성적 관리 프로젝트 기능 추가(삭제, 정렬, 파일 저장 택1)
• 영화 좌석 예매 프로그램 좌석 취소 기능 구현
• 그리디 알고리즘 쉬운 문제 2개 풀기 (5585, 11047)
• OOP 실습 문제 1개 만들어보기
오늘은 자바 문법 + 객체지향 개념 + 실전 프로젝트가 한 번에 연결된 날이었다. 문법 단위로만 볼 때는 어렵게 느껴졌던 개념들도 프로젝트에 적용하니까 훨씬 자연스럽게 이해되었다.
실수도 몇 번 있었지만 그 과정에서 더 깊이 이해했고, 뜻 깊은 하루였다.