15강. 객체지향과 다형성

학습개요

서브프로그램을 이용하면 전체 프로그램을 나누어 작성할 수 있습니다. 전체 프로그램이 사용자로부터 입력을 받고 사용자에게 출력을 내는 것처럼 서브프로그램도 독자적인 입력을 받고 반환값을 내는 것을 볼 수 있었습니다. 이처럼 서브프로그램을 이용하여 여러 서브프로그램을 작성하다 보면 서브프로그램 사이의 소통에 더 관심을 갖게 되는데, 서브프로그램 사이의 소통을 확대한 개념이 바로 객체지향 프로그래밍입니다. 객체지향 프로그래밍에서는 독자적인 객체들 사이의 상호작용을 이용하여 프로그램을 작성합니다. 이번 강의에서는 추상화 개념 및 추상 자료형을 먼저 복습하고 객체지향 언어에서 어떻게 추상 자료형을 지원할 수 있는지 알아봅니다. 또한 공통적인 특징을 지니는 여러 다른 타입의 객체를 다루는 기능, 즉 다형성에 대해서도 알아봅니다.

학습목표

  1. 프로그래밍 언어의 추상화 개념과 추상화 종류를 설명할 수 있다.
  2. 추상 자료형 개념을 이해하고 추상 자료형 표현 방법을 설명할 수 있다.
  3. 객체 개념과 객체지향 언어에서 추상 자료형을 정의하는 방법을 설명할 수 있다.
  4. 다형성의 개념을 이해하고 프로그래밍 언어에서 지원하는 여러 가지 다형성에 대하여 설명할 수 있다.

정리하기

  1. 추상화란 복잡한 대상을 간략하게 나타내는 것을 뜻하는데, 이는 프로그래밍에 필수적인 작업이다.
  2. 프로그래밍 언어에서 제공하는 추상화 종류는 크게 제어 추상화와 자료 추상화로 나눌 수 있다.
  3. 여러 요소를 하나의 단위로 묶을 수 있는 기능을 캡슐화라 하고, 구현 세부 사항을 외부에 숨기고 인터페이스만 외부에 공개하는 기능을 정보 은닉이라고 부른다.
  4. 자료 집합과 적용 가능한 연산을 함께 선언한 타입을 추상 자료형이라고 한다.
  5. 객체란 특정 상태를 유지하며 외부 요구에 반응하는 행태를 보이는 대상을 추상화시킨 것이다.
  6. 객체에 따라 호출 메소드가 결정되도록 하기 위해서는 호출 메소드의 늦은 바인딩이 필요한데, 가상함수 테이블(VTab)로 늦은 바인딩을 구현한다.
  7. 여러 타입의 데이터를 같은 이름으로 처리할 수 있는 특성을 다형성이라고 한다.
  8. 다중 상속을 지원하면 다이아몬드 상속 문제가 발생한다.
  9. 객체를 직접 생성할 수 없을 정도로 극도로 추상화된 클래스를 추상 클래스라고 한다.
  10. 추상 클래스의 개념을 확장한 것으로 인터페이스와 트레잇을 들 수 있다.

Leave a Comment