[0331] 패턴프
Shared on April 1, 2026
객체지향 프로그래밍 기초 강의 요약
개요
- 주제: 객체지향 패러다임과 Java 기반 구현
- 목적: 객체, 클래스, 상호작용, 이벤트 처리, UI 그리기(다이얼로그)와 같은 핵심 개념을 체계적으로 이해하고, 실제 코드 설계와 구현에 적용할 수 있도록 함
핵심 개념
| 카테고리 | 주요 내용 |
|---|---|
| 객체 정의 | • 속성(Attributes) – 객체가 보유한 값(예: 색, 크기, 위치) <br>• 구성(Components) – 객체를 이루는 하위 객체(부품) <br>• 연관(Association) – 객체 간 연결(친구, 부모-자식 관계) |
| 클래스 설계 | • 클래스는 객체를 만들기 위한 메타 객체 <br>• 생성자(new) – 객체 인스턴스화와 주소 할당 <br>• 상속(Inheritance) – 특화/일반화 관계 <br>• 구성(Composition) – 부품 관계(aggregation/composite) |
| 상태와 메소드 | • 상태(State) – 현재 속성 값들의 집합 <br>• 메소드(Method) – 입력값을 받아 규칙에 따라 결과를 반환하거나 상태를 변형 <br>• 메소드는 메시지(Message) 를 통해 호출 |
| 메시지와 이벤트 | • 메시지 – 객체 간 통신, 메소드 호출 트리거 <br>• 이벤트(Event) – 외부(OS, UI)에서 발생, 핸들러가 처리 <br>• 핸들러(Handler) – 이벤트를 받아 로직을 실행 |
| UI 그리기 | • 좌표계 – (x, y) 포인트 <br>• 기본 도형 – 직사각형, 다각형, 자유선(Polyline) <br>• 입력 방식 – 클릭, 드래그, 더블클릭, 제스처 <br>• 구현 분리 – 이벤트 처리 + 실제 그리기 로직 |
| 그래픽스 최적화 | • 버퍼드 이미지(BufferedImage) – 한 장의 메모리 캔버스 <br>• 다중 버퍼링(Double Buffering) – 깜빡임 방지, 성능 향상 <br>• 그리기 흐름 – 배경색 → 도형 → 화면 출력 |
| 개발 실습 | • 클래스와 객체 설계 연습 <br>• 이벤트 리스너 구현 및 테스트 <br>• 다이얼로그 기반 그리기 예제 <br>• 코드와 설계 문서(보고서) 제출 |
상세 노트
1. 객체와 클래스
- 속성은 객체 내부에 저장되는 값이며, 객체가 보유한 정보(예: 색, 크기, 위치)
- 구성(Components) 은 객체를 이루는 다른 객체(부품)로, 독립적인 엔티티이며
new로 생성된 자식 - 연관(Association) 은 객체 간 연결점(주소)이며, 친구 관계(외부에서 연결)와 자식 관계(내부에서 생성)의 차이
2. 클래스 설계 원칙
- 클래스는 메타 객체로서, 객체를 만들 때 필요한 구조와 메소드를 정의
- 생성자는 객체 생성 시 주소를 할당하고 초기화
- 상속은 일반화와 특화 관계, 구성은 부품 관계(aggregation/composite)
3. 상태와 메소드
- 상태는 객체가 현재 갖는 속성 값들의 집합
- 메소드는 입력값을 받아 규칙에 따라 결과를 반환하거나 상태를 변경
- 메소드는 메시지를 통해 호출되고, 호출 시 객체의 상태가 변하면 다른 객체에 메시지를 보낼 수 있음
4. 메시지와 이벤트
- 메시지는 객체 간 통신 수단; 메시지가 도착하면 해당 객체가 메소드를 실행
- 이벤트는 외부(OS, UI)에서 발생하며, 이벤트 핸들러가 이를 받아 로직을 수행
- 핸들러는 로직과 컨트롤을 분리하며, 실제 그리기 로직은 객체 내부에 두어 재사용 가능
5. UI 그리기
- 좌표계(정수형 x, y)만으로 직사각형, 다각형, 자유선 그리기 가능
- 입력 방식: 클릭, 드래그, 더블클릭, 제스처 등
- 구현 분리: 이벤트 처리(좌표 수집)와 실제 그리기 로직(도형 그리기)
6. 그래픽스 최적화
- 버퍼드 이미지: 메모리 상에 한 장의 캔버스를 만들고, 그 위에 그리기
- 다중 버퍼링: 깜빡임 방지와 성능 향상을 위해 사용
- 그리기 흐름:
BufferedImage→Graphics2D→ 배경 색 → 도형 → 화면에 출력
7. 실습 및 과제
- 보고서: 객체지향 패러다임, 이벤트 핸들러(로직/컨트롤 분리), 다중 버퍼링에 대한 이론 및 구현
- 코드: 클릭-이동-더블클릭 이벤트 처리, 직사각형 그리기, 다중 버퍼링 적용
- 테스트: 이벤트 흐름을 시각화하고, 버퍼링 효과를 확인
핵심 포인트
- 객체는 속성·구성·연관으로 정의되고, 클래스는 객체 생성의 메타 구조
- 메소드는 메시지를 통해 호출되며, 상태 변화를 통해 다른 객체와 상호작용
- 이벤트 기반 UI 구현 시 로직과 컨트롤을 명확히 분리하고, 버퍼링으로 성능을 확보
이 요약은 강의 내용을 핵심 개념과 실전 적용 지침으로 정리한 것이며, 실제 코딩 시 참고용으로 활용하세요.