2단계 – 객체 지향 프로그래밍 (2~3개월)
Classes, Objects, Attributes, Methods
- 클래스 구조
- 객체 인스턴스화
- this 사용
- 모범 사례: 명명, 코드 정리
Encapsulation, Inheritance, Polymorphism, Abstraction
- Encapsulation: private, getters/setters, 검증
- Inheritance: extends, overriding (@Override)
- Polymorphism: 서브타입, method overloading
- Abstraction: 개요, 인터페이스 및 추상 클래스 준비
Interfaces와 Abstract Classes
- Interfaces: implements, default methods
- Abstract classes: 추상 메서드와 구체적 메서드
- 인터페이스와 추상 클래스의 차이점
Constructors, Initializers, Static Blocks
- 기본 및 파라미터화된 생성자, this() 호출
- 초기화 블록 ({}) 및 static 블록 (static {})
Enumerations
- enum 생성 및 사용
- enum 내의 메서드와 속성
기본 Collections
- ArrayList: 추가, 제거, 반복 (for, forEach, Iterator)
- HashMap: key-value, 일반적인 작업
- HashSet: 중복 제거
- Queue 및 Stack 소개 (예: LinkedList를 queue/stack으로 사용)
- Java Collections Framework 소개
기본 알고리즘
- 선형 검색 및 이진 검색
- Sorting: Bubble Sort, Collections.sort()
- Recursion: 개념 및 간단한 예제 (예: 팩토리얼, 피보나치)
- 복잡도 소개 (O(n), O(log n))
Generics
- 구문 (), 제네릭 컬렉션, 제네릭 메서드
- Bounds (extends, super)
Stream API (소개)
- 기본 작업: filter, map, collect
- ArrayList를 사용한 예제
Unit Testing (소개)
- JUnit의 기본 사용
- 클래스 및 메서드에 대한 테스트 케이스 작성
- TDD (Test-Driven Development) 소개
최종 프로젝트
- 도서관 시스템
- 클래스: Book, User, Library
- 상속: DigitalBook 및 PhysicalBook
- 컬렉션: 책을 위한 ArrayList, 대출을 위한 HashMap
- Encapsulation: 데이터 검증
- Git: 기능별 commit (예:
feature/book-management
)
- 설명이 포함된 README와 함께 GitHub에 공개
업데이트된 리소스