객체지향 언어와 C++
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

객체지향 언어와 C++에 대한 보고서 자료입니다.

목차

객체지향 언어와 C++

목차 없음.....

본문내용

rint_data() 함수는 각 객체의 모든 자료는 화면에 보여주는 함수라고 가정한다. 이 때 print_data() 함수가 클래스 person과 클래스 student에 둘다 정의되어 있었다고 하자. 컴파일 시간에 미리 수행될 연산이 결정된다면 두 경우 모두 p를 이용하므로 person의 print_data()가 호출될 수밖에 없다. 그러나 일반적으로 클래스 student나 employee에만 정의된 자료도 볼 수 있는 것이 더 좋을 경우가 많다. 따라서, 다른 객체지향 프로그래밍 언어에서는 수행 속도가 느리더라도 컴파일 시간이 아닌 수행 시간에 연산을 결정하는 동적인 바인딩(dynamic binding)을 지원하고 있다. C++에서는 성능의 저하를 피하면서 이러한 기능도 제공하기 위해, 이러한 기능을 원할 때만 함수의 선언앞에 'virtual'이라는 키워드를 제일 상위 클래스 정의에서 붙여주는 방식을 채택하였다. 이러한 함수를 가상 함수(virtual function)라고 한다. 따라서 위의 프로그램에서 print_data() 가 각각의 클래스에 속한 것이 사용되게 하려면 person클래스 정의시 그림 3.6과 같이 해주어야 한다.
class person {
char * name;
char * address;
int age;
. . .
public:
virtual void print_data();
. . .
};
그림 3.6 가상 함수 선언
그 밖에도 C++은 유용한 기능들을 많이 제공한다. 템플릿(template)은 사용되는 변수의 타입만 다르고 코드가 거의 동일한 여러 클래스나 함수를 한번에 정의하는 방식이다. 예를 들어 클래스 stack은 정수의 스택과 문자 포인터의 스택이나 학생 클래스의 스택 등이 있을 수 있다.
class IntStack{
int pop();
. . .
};
class CharPtStack{
char * pop();
. . .
};
class StudentStack{
char * pop();
. . .
};
그림 3.7 동일한 내용의 다른 자료형을 가지는 클래스
따라서 이러한 스택은 사용될 때마다 같은 코드가 반복해서 작성되어야 하겠지만, 템플릿으로 틀만 정의해놓고 원하는 자료형을 인자로 주어 정의할 수 있는 방법이 제공된다. 그림 3.8은 템플릿을 이용해서 다시 정의한 예이다. 함수 f()에서 실제 객체가 생성될 때 인자를 써서 구체적인 클래스를 명시하게 된다.
template class Stack{
T pop();
. . .
};
void f()
{
Stack istack;
Stack cpstack;
Stack sstack;
}
그림 3.8 템플릿의 예
따라서 템플릿과 같은 방식을 사용하면 프로그램의 재사용성이 높아진다. 만일 사람의 스택을 첨가하려고 할 때 그림 3.7와 같은 경우에는 새로운 클래스를 재정의 해야하지만, 템플릿을 이용하면 객체 생성시 명시만 해주면 된다. 또 pop()과 같은 함수의 내용을 개선하고자 할 때 템플릿을 사용하면 일일이 각 자료형의 클래스마다 수정해 주지 않고, 한 번만 해주면 되기 떠문에 유지, 보수에도 좋다.
C++에서는 함수 뿐만 아니라 +, -, =. [ ], ( )등의 연산자가 다른 의미로 재정의되어 사용될 수 있다. 따라서 사용자는 특정 클래스에 원하는 의미를 가지는 = 연산등을 정의하는 것이 가능하다. 이것을 연산자 중복(operator overloading)이라고 한다.
그 외에도 예외처리기(exception Handling), 스트림(stream)등 쓸모있는 기능들이 많이 제공되고 있다.
4. 결론
객체지향 프로그래밍 언어에는 많은 종류가 있고 각 언어마다 객체지향성을 제공하는 방법이나 특성이 조금씩 다르다. 본 글에서는 이들 모두를 세세히 살피기보다는, 중요하고 공통된 것을 주로 부각시키고자 하였다. 실제로 C++에서는 클래스 내부의 자료 부분을 '멤버'라고 하고 연산부분을 '멤버 함수'라는 독특한 용어를 쓰고 있으나, 본 글에서는 혼돈을 막기위해 다른 객체지향 프로그래밍 언어나 C에서 사용되는 '자료', '변수', '연산', '함수' 등의 용어를 사용하였다.
앞서 살펴본 바와 같이 객체지향 프로그래밍 언어는 재사용성을 높여 주고 유지 보수에 좋기 때문에 앞으로도 사용자가 더 늘어날 전망이다. 특히 C++은 그 중에서도 기존의 C 프로그램을 그대로 사용할 수 있고, 수행 속도가 빠르다는 장점 때문에 더욱 더 많이 이용되리라 믿는다.
참고 문헌
[1] Ian Sommerville, Software Enginerring fourth edition. Addison-Wesley Publishing Company, Inc., 1992.
[2] David Gelernter and Suresh Jagannathan SProgramming Linguistics, MIT Press 1990
[3] Goldberg A. and D. Robson. Smalltalk-80 : The Language and its Implementation, Addison-Wesley, MA, 1983
[4] B. Stroustrup, The C++ programming language second edition. Addison-Wesley Publishing Company, Inc., April 1991.
[5] Brian W. Kernighan and D. M. Ritchie, The C programming Language. Prentice-Hall, Englewood Cliffs, NewJersey, 1978
[6] Setrag Khoshafian and Razmik Abnous, Object Orientation Concepts, Languages, databases, User Interfaces. John-Wisley, 1990.
[7] M.A Ellis and Bjarne Stroustrup, The Annotated C++ Reference Manual, Addison-Wesley, 1990.
C++과 OOP
서울대학교 컴퓨터공학과 조교수
김 형주

키워드

  • 가격1,000
  • 페이지수12페이지
  • 등록일2002.05.11
  • 저작시기2002.05
  • 파일형식한글(hwp)
  • 자료번호#194286
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니