객체 지향 프로그래밍(Object-Oriented Programming, OOP)
1. 객체 지향이란?
- 객체 지향은 현실 세계의 개체(사람, 자동차, 컴퓨터 등)를 객체(Object)로 간주하여, 마치 기계 부품을 조립하듯이 소프트웨어를 개발하는 방법.
- 각 객체는 자신만의 속성(Attributes)과 행위(Methods)를 가지고 있음.
- 객체들을 조합하고 상호작용하게 만들어 프로그램을 구성함.
2. 객체(Object)의 개념
- 객체는 데이터와 행위(기능)를 결합한 소프트웨어 모듈임.
- 예시: 자동차 객체
- 속성(Attributes): 바퀴, 핸들, 엔진, 유리창 등 자동차를 구성하는 요소들
- 행위(Methods): 전진, 후진, 정지, 속도 조절 등 자동차가 할 수 있는 동작
- 속성과 행위를 합친 하나의 개념을 객체(Object)라고 부름.
3. 객체 지향의 기본 요소
① 객체(Object)
- 프로그램에서의 실제 동작 단위로, 데이터(속성)와 기능(메서드)을 포함함.
- 예시: 사람 객체, 자동차 객체 등
② 클래스(Class)
- 객체를 생성하기 위한 청사진(틀).
- 동일한 속성과 기능을 가진 객체들을 묶어 정의함.
- 예시:
- 붕어빵 틀(클래스)로 여러 개의 붕어빵(객체)을 찍어냄.
- 사람이라는 클래스를 기반으로 여러 사람 객체(인스턴스)를 생성할 수 있음.
③ 인스턴스(Instance)
- 클래스에서 만들어진 실제 객체.
- 예시:
사람
클래스에서 만들어진 홍길동
, 김철수
등의 개별 객체가 인스턴스.
④ 메시지(Message)
- 객체 간 상호작용을 위한 수단.
- 한 객체가 다른 객체의 기능을 호출하거나 명령을 전달할 때 사용함.
- 예시: 택시 객체에 "홍대까지 가 주세요"라는 요청 메시지를 전달하면 택시가 이동함.
4. 객체 지향의 특징
- 캡슐화(Encapsulation)
- 객체 내부의 세부 구현을 외부에 감추고, 필요한 부분만 인터페이스로 제공함.
- 외부에서 객체 내부의 데이터를 직접 수정하거나 접근할 수 없도록 보호함.
- 예시:
- TV 리모컨에서 채널 변경, 볼륨 조절 등을 수행할 수 있지만, 내부 전자 부품이 어떻게 동작하는지는 알 필요가 없음.
- 캡슐형 알약에 어떤 성분이 들어 있는지는 알 수 없지만, 약효는 기대할 수 있음.
- 상속(Inheritance)
- 상위 클래스(부모)가 가진 속성과 기능을 하위 클래스(자식)에서 물려받아 사용할 수 있음.
- 하위 클래스는 물려받은 기능 외에 새로운 기능을 추가하거나 기존 기능을 수정할 수 있음.
- 예시:
- 동물 클래스의 속성(이름, 나이)과 기능(먹다, 자다)을 고양이 클래스가 상속받고, 고양이만의 기능(야옹 소리 내기)을 추가함.
- 다형성(Polymorphism)
- 동일한 이름의 메서드가 다양한 방식으로 동작할 수 있는 능력.
- 예시:
- 덧셈 연산자(+)는 숫자끼리 사용하면 더하기 기능을 수행하지만, 문자열끼리 사용하면 문자열을 연결함.
- 각각의 객체가 자신의 방식대로 메시지에 응답할 수 있음.
- 연관성(Association)
- 객체들 간의 상호 관계를 나타냄.
- 예시:
- 학생 객체와 학교 객체는 "학생이 학교에 다닌다"라는 관계로 연관되어 있음.
- 연관성의 종류:
- 일반화(Generalization): 상위 객체가 하위 객체들을 포괄하는 관계 (예: 동물 → 고양이, 강아지)
- 집합(Aggregation): 여러 객체가 하나의 상위 객체를 구성하는 관계 (예: 자동차 → 엔진, 바퀴)
5. 객체 지향의 장점
-
재사용성
- 한 번 정의한 클래스나 객체를 다시 사용할 수 있음.
- 예시: 사람 객체를 한 번 만들고 여러 매장에서 복사하여 사용 가능.
-
확장성
- 새로운 기능을 쉽게 추가할 수 있음.
- 예시: 매장이 확장되면 기존 사람 객체를 복사하여 추가로 사용할 수 있음.
-
유지보수 용이
- 코드가 모듈화되어 있어 각 부분을 독립적으로 수정하거나 관리하기 쉬움.
-
고품질 소프트웨어 개발
- 구조적 기법보다 더 나은 설계를 제공하며, 복잡한 문제도 효과적으로 해결 가능.
6. 객체 지향의 시험 대비 주요 내용
구분 | 설명 | 예시 |
---|
객체(Object) | 데이터와 메서드가 결합된 단위 | 사람 객체, 자동차 객체 |
클래스(Class) | 객체의 청사진, 같은 속성과 메서드를 가진 객체 집합 | 사람 클래스, 붕어빵 틀 |
인스턴스 | 클래스에서 생성된 실제 객체 | 홍길동 , 김철수 객체 |
메시지(Message) | 객체 간 상호작용을 위한 요청 | 택시에 "홍대까지 가 주세요" 요청 |
캡슐화 | 내부 구현을 감추고 필요한 부분만 노출 | TV 리모컨, 캡슐 알약 |
상속 | 부모 클래스의 속성과 기능을 자식이 물려받음 | 동물 → 고양이 클래스 |
다형성 | 같은 메서드가 다양한 방식으로 동작 | + 연산자가 숫자와 문자열에서 다른 동작 |
시험에 자주 나오는 내용이므로 각 개념과 특징을 확실히 이해하고 정리하세요!