반응형
객체 지향을 가장 쉽게 설명한다면 프로그램 함수와 변수를 하나의 모듈로 만드는 것이다. 이것을 객체 지향에서는 캡슐화라고 한다. 이것이 객체 지향에서 가장 핵심적인 개념이다.
예를 들면 객체 지향이 아닌 구조화 프로그램 언어인 C에서는 보통 다음과 같이 프로그램을 작성한다.
// 함수 사용하는 코드 int sw, in1, in2, out; if (sw==0) out = func(in1, in2, 0); else if(sw==1) out = func(in1, in2, 1); // 함수 int func(int i1, int i2, int s) { if (s==0) return i1+i2; else if (s==1) return i1-i2; return 0; } |
위의 코드는 2개의 변수를 더하거나 빼기 위해 함수를 호출하는데 그 때마다 변수값 in1과 in2를 함수 인자로 전달해 줘야 한다.
C 코드를 C++로 작성한다면 다음과 같다.
// 클래스 사용하는 코드 int sw, in1, in2, out; // 클래스 선언 Block b; // 클래스 사용
b.i1 = in1;
b.i2 = in2;
if (sw==0) out = b.Add();
else if(sw==1) out = b.Sub();
// 클래스class Block { int i1, i2; int Add(){ return i1+i2; } int Sub(){ return i1-i2; } } |
Block이라는 객체(C++에서는 클래스라고 부른다.)에 변수 i1, i2와 함수 Add, Sub가 포함되어 있고 클래스를 사용하기 위해서는 "Block."으로 시작하는 명령을 써야 한다.
위의 코드에서 클래스를 만들고 선언하는 부분은 C에 비해 길지만 실제 클래스를 사용하는 부분은 더 간단하고 직관적이다. 특히, 변수를 한번만 할당하기만 하면 되는 것이 가장 큰 장점이다. 이런 간단한 예제에서는 객체지향의 장점을 잘 모르지만 프로그램이 커지면 객체지향의 장점이 나타난다.
반응형
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
[C++] 오버로딩과 오버라이딩 차이 (0) | 2020.04.23 |
---|---|
컴포넌트 기반 소프트웨어 공학 (286) | 2020.04.14 |
List와 Set의 차이 (273) | 2020.04.14 |
객체 지향 프로그래밍 (OOP) 특징 (282) | 2020.04.11 |
Three-way Comparison 뜻 (269) | 2020.04.11 |
댓글