객체지향

0

정보처리기사

목록 보기
65/100

객체 지향 프로그래밍(Object-Oriented Programming, OOP)


1. 객체 지향이란?

  • 객체 지향은 현실 세계의 개체(사람, 자동차, 컴퓨터 등)를 객체(Object)로 간주하여, 마치 기계 부품을 조립하듯이 소프트웨어를 개발하는 방법.
  • 각 객체는 자신만의 속성(Attributes)행위(Methods)를 가지고 있음.
  • 객체들을 조합하고 상호작용하게 만들어 프로그램을 구성함.

2. 객체(Object)의 개념

  • 객체는 데이터행위(기능)를 결합한 소프트웨어 모듈임.
  • 예시: 자동차 객체
    • 속성(Attributes): 바퀴, 핸들, 엔진, 유리창 등 자동차를 구성하는 요소들
    • 행위(Methods): 전진, 후진, 정지, 속도 조절 등 자동차가 할 수 있는 동작
  • 속성과 행위를 합친 하나의 개념을 객체(Object)라고 부름.

3. 객체 지향의 기본 요소

객체(Object)

  • 프로그램에서의 실제 동작 단위로, 데이터(속성)와 기능(메서드)을 포함함.
  • 예시: 사람 객체, 자동차 객체 등

클래스(Class)

  • 객체를 생성하기 위한 청사진(틀).
  • 동일한 속성과 기능을 가진 객체들을 묶어 정의함.
  • 예시:
    • 붕어빵 틀(클래스)로 여러 개의 붕어빵(객체)을 찍어냄.
    • 사람이라는 클래스를 기반으로 여러 사람 객체(인스턴스)를 생성할 수 있음.

인스턴스(Instance)

  • 클래스에서 만들어진 실제 객체.
  • 예시: 사람 클래스에서 만들어진 홍길동, 김철수 등의 개별 객체가 인스턴스.

메시지(Message)

  • 객체 간 상호작용을 위한 수단.
  • 한 객체가 다른 객체의 기능을 호출하거나 명령을 전달할 때 사용함.
  • 예시: 택시 객체에 "홍대까지 가 주세요"라는 요청 메시지를 전달하면 택시가 이동함.

4. 객체 지향의 특징

  1. 캡슐화(Encapsulation)
    • 객체 내부의 세부 구현을 외부에 감추고, 필요한 부분만 인터페이스로 제공함.
    • 외부에서 객체 내부의 데이터를 직접 수정하거나 접근할 수 없도록 보호함.
    • 예시:
      • TV 리모컨에서 채널 변경, 볼륨 조절 등을 수행할 수 있지만, 내부 전자 부품이 어떻게 동작하는지는 알 필요가 없음.
      • 캡슐형 알약에 어떤 성분이 들어 있는지는 알 수 없지만, 약효는 기대할 수 있음.

  1. 상속(Inheritance)
    • 상위 클래스(부모)가 가진 속성과 기능을 하위 클래스(자식)에서 물려받아 사용할 수 있음.
    • 하위 클래스는 물려받은 기능 외에 새로운 기능을 추가하거나 기존 기능을 수정할 수 있음.
    • 예시:
      • 동물 클래스의 속성(이름, 나이)과 기능(먹다, 자다)을 고양이 클래스가 상속받고, 고양이만의 기능(야옹 소리 내기)을 추가함.

  1. 다형성(Polymorphism)
    • 동일한 이름의 메서드가 다양한 방식으로 동작할 수 있는 능력.
    • 예시:
      • 덧셈 연산자(+)는 숫자끼리 사용하면 더하기 기능을 수행하지만, 문자열끼리 사용하면 문자열을 연결함.
      • 각각의 객체가 자신의 방식대로 메시지에 응답할 수 있음.

  1. 연관성(Association)
    • 객체들 간의 상호 관계를 나타냄.
    • 예시:
      • 학생 객체와 학교 객체는 "학생이 학교에 다닌다"라는 관계로 연관되어 있음.
    • 연관성의 종류:
      • 일반화(Generalization): 상위 객체가 하위 객체들을 포괄하는 관계 (예: 동물 → 고양이, 강아지)
      • 집합(Aggregation): 여러 객체가 하나의 상위 객체를 구성하는 관계 (예: 자동차 → 엔진, 바퀴)

5. 객체 지향의 장점

  1. 재사용성

    • 한 번 정의한 클래스나 객체를 다시 사용할 수 있음.
    • 예시: 사람 객체를 한 번 만들고 여러 매장에서 복사하여 사용 가능.
  2. 확장성

    • 새로운 기능을 쉽게 추가할 수 있음.
    • 예시: 매장이 확장되면 기존 사람 객체를 복사하여 추가로 사용할 수 있음.
  3. 유지보수 용이

    • 코드가 모듈화되어 있어 각 부분을 독립적으로 수정하거나 관리하기 쉬움.
  4. 고품질 소프트웨어 개발

    • 구조적 기법보다 더 나은 설계를 제공하며, 복잡한 문제도 효과적으로 해결 가능.

6. 객체 지향의 시험 대비 주요 내용

구분설명예시
객체(Object)데이터와 메서드가 결합된 단위사람 객체, 자동차 객체
클래스(Class)객체의 청사진, 같은 속성과 메서드를 가진 객체 집합사람 클래스, 붕어빵 틀
인스턴스클래스에서 생성된 실제 객체홍길동, 김철수 객체
메시지(Message)객체 간 상호작용을 위한 요청택시에 "홍대까지 가 주세요" 요청
캡슐화내부 구현을 감추고 필요한 부분만 노출TV 리모컨, 캡슐 알약
상속부모 클래스의 속성과 기능을 자식이 물려받음동물 → 고양이 클래스
다형성같은 메서드가 다양한 방식으로 동작+ 연산자가 숫자와 문자열에서 다른 동작

시험에 자주 나오는 내용이므로 각 개념과 특징을 확실히 이해하고 정리하세요!

0개의 댓글