객체지향 언어로서의 오브젝트 파스칼 1편
객체지향 언어로서의 오브젝트 파스칼
오브젝트 파스칼의 객체지향성을 몰라도
델파이 어플리케이션을 쉽게 만들 수 있다.
단순히 폼을 하나 만들고,
거기에 여러가지 컴포넌트 들을 추가하고,
이벤트 핸들러에 적당한
내용의 코드 들을 추가하면 그걸로 충분한 것이다.
그렇지만, 이것을 이해하면 델파이가
어떤 방법으로 작업을 처리하는지 이해할 수 있고,
자신만의 컴포넌트를 만들어 내거나,
비교적 커다란 프로젝트를 진행할 때에 커다란 도움을 받게 될 것이다.
OOP의 기본 개념
프로그램은 데이터와 이를 처리하는
알고리즘으로 구성되어 있다고 하는 유명한 말이 있다.
그렇기 때문에, 프로그래밍 언어의 구조를 가만히 살펴보면
대부분의 경우 데이터를 다루는데 필요한 각종 정의 들과,
이들을 제어하기 위한 여러가지 문법으로 구성되어 있다는 것을 알 수 있다.
기본적으로 데이터의 표현은 ‘데이터 형 (data type)’이라는 개념으로 표현되는데,
이 데이터 형의 개념이 발전하면서 언어들이 다른 모습을 띠게 된다.
초기의 프로그래밍 언어는 정해진 데이터 형을 이용하였으며,
그 이후의 프로그래밍 언어(파스칼 등)에서는
레코드나 배열 등의 개발자가
정의해서 사용할 수 있는 데이터 형을 도입하였다.
그러다가, 이러한 데이터 형에
그 데이터를 다룰 때 쓰이는 작업과 결부시키게 되었는데,
이와 같이 기본적인 데이터와 이를 다루기 위한
메쏘드로 이루어진 데이터 형인 클래스가
OOP의 기초가 되는 개념이다.
데이터 형과 함께 가장 중요한
프로그래밍 언어의 구성요소인 제어 구조를 보면,
초기의 프로그래밍 언어는 점프(goto)와 분기문(if-then, case 등),
순환문(for, while 등)으로 이루어진 제어문을 가지고 있었다.
여기에 서브루틴의 개념이 추가되어
일반적인 프로그래밍 언어의 전반적인 구조를 가지게 되었다.
OOP에서는 이러한 서브루틴을 데이터와 마찬가지로
추상화 하여, 이들을 클래스로 관리하게 된다.
OOP에 있어서 가장 중요한 3가지 개념은
캡슐화, 상속, 다형성으로
아래에 간단하게 설명하였다.
캡슐화 (Encapsulation)
OOP의 가장 핵심적인 요소라고 할 수 있는 것이 캡슐화 개념으로,
데이터와 서브루틴을 추상화 한 것이다.
이 개념은 클래스로 구현되는데, 클래스란 특정 객체 그룹을 추상적으로 정의해
놓은 것이라고 생각하면 된다.
클래스는 일종의 형(type)의 정의로서 필드(클래스의객체 상태를 나타내는 데이터)가 있고,
이에 대한 작업을 정의하는 메소드가 있다.
여기서 혼동하지 말아야 할 것은 클래스란 일종의 데이터 형이고,
객체는 클래스라는 데이터 형인 하나의 구체적인 예(인스턴스)라는 것이다.
예를 들어 설명하면 클래스란 객체를 만들기 위한 주형이며,
객체란 클래스라는 주형에서 만들어진 병과 같은 것이다.
상속 (Inheritance)
상속은 클래스를 처음부터 만들지 않고,
기존의 클래스를 기반으로 해서 새로운 클래스를 정의하는 것이다.
이때 기반이 되는 클래스를 부모 클래스, 만들어진 클래스를 서브 클래스라고 하며
서브 클래스는 부모 클래스로부터 필드와 메소드를 상속한다.
상속 개념이 실제로 쓰일 때에는 다음과 같은 특징을 가지고 있다.
1. 상속은 일반적인 클래스의 특수한 경우를 나타낼 때 쓰인다.
즉, 자동차라는 부모 클래스에서 기본적인 자동차의 필드와 메소드를 표현했다고 하면,
여기에서 상속받은 티코라는 서브 클래스는 기본적인 자동차 클래스의 필드와 메소드 외에
자신만의 필드와 메소드를 정의할 수 있다.
2. 반대로 여러가지로 특화된 클래스 들의 공통점을 가진 부모 클래스를 만들 수도 있다.
예를 들어, 기존에 학생이라는 클래스와 선생이라는 클래스를 가지고 있는 경우
이들의 공통적인 필드와 메소드를 정의하는 사람이라는 부모 클래스를 만들고,
공통의 요소를 공유하게 할 수 있다.
3. 실제로 상속 개념이 쓰일 때에는 중복되는 코드를 막을 수 있으며
(공통부분을 가지는 부모 클래스가 사용되므로), 복잡한 데이터의 개념을 쉽게 이해할 수 있게 된다.
다형성 (Polymorphism)
다형성이란 하나의 프로그램 변수를 가지고 서로 다른 클래스 객체를 참조하는 것을 말한다.
즉, 어떤 객체에 대해 작업을 할 때 객체의 type에 적절하게 반응할 수 있다는 의미이다.
2편계속.....
'Delphi > 문법' 카테고리의 다른 글
대웅제약 밀크씨슬 에너씨슬 캐시워크 돈버는퀴즈 정답은? 'ㅇㄴㅆㅅ' (0) | 2021.06.07 |
---|---|
객체지향 언어로서의 오브젝트 파스칼 2편 (0) | 2021.06.07 |
델파이 기본타입 헬퍼 (0) | 2021.06.03 |
델파이(Delphi) 디자인패턴(Design pattern) 4탄 (0) | 2021.06.01 |
델파이(Delphi) 디자인패턴(Design pattern) 3탄 (0) | 2021.06.01 |
댓글