학습개요
서브프로그램을 이용하면 전체 프로그램을 나누어 작성할 수 있습니다. 전체 프로그램이 사용자로부터 입력을 받고 사용자에게 출력을 내는 것처럼 서브프로그램도 독자적인 입력을 받고 반환값을 내는 것을 볼 수 있었습니다. 이처럼 서브프로그램을 이용하여 여러 서브프로그램을 작성하다 보면 서브프로그램 사이의 소통에 더 관심을 갖게 되는데, 서브프로그램 사이의 소통을 확대한 개념이 바로 객체지향 프로그래밍입니다. 객체지향 프로그래밍에서는 독자적인 객체들 사이의 상호작용을 이용하여 프로그램을 작성합니다. 이번 강의에서는 추상화 개념 및 추상 자료형을 먼저 복습하고 객체지향 언어에서 어떻게 추상 자료형을 지원할 수 있는지 알아봅니다. 또한 공통적인 특징을 지니는 여러 다른 타입의 객체를 다루는 기능, 즉 다형성에 대해서도 알아봅니다.
학습목표
- 프로그래밍 언어의 추상화 개념과 추상화 종류를 설명할 수 있다.
- 추상 자료형 개념을 이해하고 추상 자료형 표현 방법을 설명할 수 있다.
- 객체 개념과 객체지향 언어에서 추상 자료형을 정의하는 방법을 설명할 수 있다.
- 다형성의 개념을 이해하고 프로그래밍 언어에서 지원하는 여러 가지 다형성에 대하여 설명할 수 있다.
정리하기
- 추상화란 복잡한 대상을 간략하게 나타내는 것을 뜻하는데, 이는 프로그래밍에 필수적인 작업이다.
- 프로그래밍 언어에서 제공하는 추상화 종류는 크게 제어 추상화와 자료 추상화로 나눌 수 있다.
- 여러 요소를 하나의 단위로 묶을 수 있는 기능을 캡슐화라 하고, 구현 세부 사항을 외부에 숨기고 인터페이스만 외부에 공개하는 기능을 정보 은닉이라고 부른다.
- 자료 집합과 적용 가능한 연산을 함께 선언한 타입을 추상 자료형이라고 한다.
- 객체란 특정 상태를 유지하며 외부 요구에 반응하는 행태를 보이는 대상을 추상화시킨 것이다.
- 객체에 따라 호출 메소드가 결정되도록 하기 위해서는 호출 메소드의 늦은 바인딩이 필요한데, 가상함수 테이블(VTab)로 늦은 바인딩을 구현한다.
- 여러 타입의 데이터를 같은 이름으로 처리할 수 있는 특성을 다형성이라고 한다.
- 다중 상속을 지원하면 다이아몬드 상속 문제가 발생한다.
- 객체를 직접 생성할 수 없을 정도로 극도로 추상화된 클래스를 추상 클래스라고 한다.
- 추상 클래스의 개념을 확장한 것으로 인터페이스와 트레잇을 들 수 있다.