는 객체 지향적 언어가 컴퓨터 프로그래밍 언어는 주위에 회귀한다는 개념입니다. 객체지향적 언어가 developedto 쉽게 개발,디버깅,재사용,유지 관리 소프트웨어에 가능한 것 보다 앞서 언어입니다. 객체와 객체 지향 언어를 이해하려면 컴퓨터 프로그래밍 언어와 데이터 구조의 진화에 대한 지식이 필요합니다.
진화의 컴퓨터 프로그래밍 언어
컴퓨터 프로그래밍 언어의 진화 지속적으로 수년에 걸쳐. 이 진화는 다음 예에서 자세히 설명합니다.
어셈블리 언어.
첫 번째 컴퓨터 프로그램은 어셈블리 언어로 작성되었습니다. 이것은 기본 유형의 언어로 각각의 문에 해당하는 단일 기계 지침,그것은 가장 기본적인 컴퓨터 작동 가능합니다. 유용한 것을 성취하는 데는 많은 기계 지침이 필요합니다. 어셈블리 언어는 특정 종류의 컴퓨터를 이동 프로그램을 다른 컴퓨터의 유형이 필요합 쓰기 완전히 새로운 프로그램입니다. 어셈블리 언어 프로그램은 작성,디버그 및 유지 관리가 어렵습니다. 지만 다른 언어를 사용에 대한 대부분의 컴퓨터 응용,어셈블리 언어입니다 여전히 오늘날 사용되는 처음으로 언어의 새로운 칩이 개발되었습니다.
고차 언어.
어셈블리 언어 후 고차 언어가 개발되었으며 초기 언어 중에는 포트란과 기본 언어가 개발되었습니다. 고차 언어의 한 문장은 영어로 된 문장에 해당합니다. 컴파일러라는 프로그램은 소스 파일에서 명령문을 읽고 객체 파일이라고하는 기계 명령어가 포함 된 파일을 생성합니다. 그런 다음 개체 파일을 컴퓨터에 의해 로드 및 실행할 수 있습니다. 높은 언어입니다 더 많은 휴대용 보다 어셈블리어 프로그램은 동일한 소스 파일을 컴파일할 수 있는 모든 컴퓨터로 적합한 컴파일러가 존재합니다.
초 높은 언어로만 가능 대한 간단한 데이터와 같은 종류의 정수,부동 소수점 숫자,또는 문자열(일련의 문자). 사용할 수있는 유일한 데이터 구조는 배열이었습니다. 배열은 모두 동일한 데이터 유형인 요소의 목록입니다. 배열 그룹을 사용하여 데이터베이스를 만들었습니다. 예를 들어,제품 데이터베이스에 포함 될 수 있는 세 가지 배열이라고 제품 번호,제품 설명,상품 가격입니다. 그것은 프로그래머까지 계속 배열 정렬;예를 들어 있는지 확인하기 위해,의 세 번째 요소 각각 배열에 맞 동일한 제품입니다.
구조화 된 언어.
컴퓨터 프로그래밍 언어의 진화의 다음 단계는 c 와 PASCAL 과 같은 구조화 된 언어의 개발과 데이터 구조의 도입이었습니다. 데이터 구조는 더 간단한 데이터 유형을 단일 레코드로 어셈블리하는 것입니다. 예를 들어,제품 데이터베이스를 생성될 가능성이 배열로 제품의 기록을,각각의 레코드가 포함된 제품 번호,제품 설명,상품 가격 필드가 있습니다. 이제 하나의 레코드에는 단일 항목에 대한 모든 필요한 정보가 포함될 수 있습니다. 구조는 또한 언어의 절차 적 부분에서 더 정의되었다. 기능 또는 절차의 작은 부분이 더 큰할 수 있는 프로그램 작성을 제공하는 몇 가지 기본동작에 대한 데이터 구조와 같은 기록이다.
객체 지향 언어.
컴퓨터 프로그래밍 언어의 진화의 다음 단계 인 객체 방향이 스몰 토크 언어로 소개되었습니다. 객체 방향은 구조화 된 프로그램의 개념을 취합니다.한 단계 더 나아가. 지금 대신,데이터 구조와 별도의 프로그램 구조,데이터와 프로그램 요소를 하나로 결합 구조라는 개체입니다. 객체 데이터 요소는 속성이라고하며 객체 프로그램 요소는 메소드라고합니다. 집합 적으로 특성과 메소드를 객체의 멤버라고합니다. 일반적으로 객체의 메소드는 객체의 속성에서 작동 할 수있는 유일한 프로그램입니다.
객체 방향과 함께 프로그램을 보는 방식에 근본적인 변화가 생겼습니다. 이전 뷰가는 데이터를 조작에서 몇 가지 방법을 달성한 최종 결과,프로그램을 보았으로 순차적 의미를 수행하는 조작. 에서 객체지향의 관점 프로그램을 그룹으로 볼 개체 반응하는 메시지에서,사용자 다른 프로그램,또는 다른 객체입니다. 이 견해는 이벤트 중심 프로그래밍에 대한 아이디어를 이끌어 냈습니다. 이벤트 A 가 발생하면이 객체는 작업 B 를 수행합니다.메소드 중 하나를 호출하여 객체에 메시지가 전송됩니다.
적 특성의 개체-지향 프로그래밍
중요한 특성의 객체-지향 프로그래밍을 포함 캡슐화과 데이터를 숨기고,상속과 다형성이다.
캡슐화 및 데이터 숨기기.
oop(object-oriented programming)의 중심 아이디어는 객체 특성과 속성에서 작동하는 메소드가 객체에서 함께 결합되거나 캡슐화된다는 것입니다. 객체의 메소드는 객체와 프로그램의 다른 부분 사이의 유일한 인터페이스를 제공합니다. 이것은 프로그램의 어떤 부분이 언제든지 어떤 데이터 조각에서 작동 할 수있는 이전 언어와는 다릅니다. 이것이 제한적인 것처럼 보이지만 제한으로 인해 개발하기가 더 쉽고 오류가 포함될 가능성이 적은 모듈 식 프로그램이 생깁니다. 또한 객체를 다른 환경으로 옮기는 것이 더 쉽고 여전히 올바르게 작동한다는 것을 의미합니다.소프트웨어 객체는 물리적 객체와 다소 유사합니다. 예를 들어,엔진을 사용하여 자동차에 동력을 공급할 수 있습니다. 그것은 내부 구성 요소에 대응하는,특성,하지만 하나 없는 우려와 함께 그들 또는 그들이 어떻게 작동합니다. 엔진은 스로틀,연료 시스템,변속기,흡기 및 배기 매니 폴드와 인터페이스해야하며,모두 방법에 해당합니다. 연료 시스템이 아닌 다른 방법으로 연료가 엔진에 들어갈 것이라는 것은 상상도 할 수 없습니다. 올바른 인터페이스가 유지되는 한 엔진이 작동합니다. 그래서 그것은 객체와 함께합니다. 객체 속성은 외부에서 숨겨져 있습니다. 객체는 메소드를 통해 환경과 상호 작용합니다.
상속.
객체 지향 프로그래밍의 또 다른 중요한 개념은 상속입니다. 객체 클래스는 계층 구조에 정의되어 있으며 조상(계층 구조에서 그 위에있는 객체)의 동작을 상속받는다고합니다. 예를 들어 그리기 프로그램에는 모양,사각형 및 원의 세 가지 개체 클래스가 포함될 수 있습니다. 직사각형과 원이 모두 모양의 후손이되도록 정의 할 수 있습니다.
도형에는 도면 표면에서 도형의 위치와 같은 모든 도형에 공통된 특성이 포함됩니다. 모양은 또한 해당 속성을 조작하는 방법을 제공합니다. 예를 들어 이동 방법을 사용하면 모양의 위치가 변경됩니다. 또한 것,제공에 대한 정의하는 방법에는 모든 모양에 응답할 수 있어야 합니다,예를 들어,그리 방법을 표시하려면 모양에 그리기 화면. 이 경우 draw 메소드는 추상이라고하며,자손 클래스가이를 구현해야한다는 요구 사항을 만드는 것 외에는 아무 것도하지 않습니다.
직사각형은 모양의 자손이므로 모양에서 속성(위치)과 메서드(이동)를 상속합니다. 필요한 추가 속성(너비 및 높이)과 해당 속성(setWidth,setHeight)을 조작하는 새로운 메소드를 제공합니다. 사각형이어야 또한 제공을 그리는 방법인에서 사각형 그리기 표면이 있기 때문에 모든 자손의 모양을 구현하고자 합니다 그리는 방법입니다. 마찬가지로 Circle 은 새로운 속성(radius),그것을 조작하는 방법(setRadius)및 자체 그리기 방법을 제공합니다.
이런 종류의 배열을 사용하면 드로잉 관리자 프로그램은 드로잉 표면에 도형 목록을 갖게됩니다. 객체를 이동하려면 객체의 이동 메소드를 호출합니다. 객체를 그리기 위해 관리자는 객체의 그리기 메소드를 호출합니다. 관리자는 작업이 완료되는 한 객체가 어떻게 움직이거나 자신을 그리는 지 알지 못하거나 신경 쓰지 않습니다. 사실,특정 물체가 실제로 어떤 종류의 모양인지조차 알지 못할 수도 있습니다. 사각형,원 또는 모양에서 자손 인 다른 객체 일 수 있습니다. 그것은 단지 그것이 모양에서 후손이라는 것을 알 필요가 있으므로 모양이받을 수있는 모든 메시지를 보낼 수 있습니다.
객체 지향 언어의 상속 기능은 프로그래밍에 완전히 새로운 차원을 추가했습니다. 배우 이전의 높은 언어는 주로 관여 학습과 언어문(는 방법 언어 문장 구성)는 그렇게 어렵지 않다. 에서 객체지향 언어를 배우고,구문은 여전히 필요하다,그러나 익숙해 표준 클래스 계층—를 포함할 수 있는 수천 개의 클래스,각 클래스로 자신의 방법—은 훨씬 더 큰 작업입니다. 그러나 객체가 부모의 속성과 동작을 상속 받기 때문에 가치가 있습니다. 프로그래머는 이미 필요한 대부분의 작업을 수행하는 기존 객체를 찾아 불필요한 작업을 피할 수 있습니다. 그런 다음 새로운 기능을 점진적으로 추가 할 수 있습니다. 결과는 더 낮은 비용,고품질 소프트웨어입니다.
이 특성은 또한 여러 객체 지향 언어에 자동 문서 기능을 포함하게했습니다. 이전 언어에서 문서는-전혀 생성 된 경우-거의 군더더기로,별도로 수행되었다. 이 문서는 정보에 포함될 수 있 개체 소스 코드를 생성하는 데 사용되는 하이퍼텍스트 마크업 언어(HTML)문서를 자동적으로 완료,하이퍼링크와 아래로 클래스 계층 구조는 볼 수 있습 인터넷 브라우저입니다. 이를 통해 정확하고 최신 문서를 훨씬 쉽게 유지할 수 있습니다.
다형성.
다음에 중요한 특성의 개체 중심의 언어는 다형성,즉 그 자손되지 않는 한해야에 응답 메시지를 정확히 같은 조상 않습니다. 새 개체는 부모의 메서드를 재정의 할 수 있으므로 새 개체가 메시지에 다르게 반응하게됩니다. 예를 들어,창 시스템의 공통 클래스는 보이는 객체를 나타내는 구성 요소입니다. 구성 요소 조상 클래스에 대한 모든 보이는 객체에서 화면 아이콘 버튼,메뉴,슬라이드 바,체크박스,라디오 버튼,도 windows. 이러한 모든 하위 클래스는 동작을 변경하기 위해 구성 요소의 메서드 중 일부를 재정의합니다. 예를 들어 아이콘 객체는 작은 그림으로 자체를 표시해야합니다. 아이콘은 구성 요소의 그리기 방법을 재정의하여 그림을 표시합니다.
일반적인 객체 지향 언어
일반적인 객체 지향 언어에는 Smalltalk,C,Java 및 BASIC 및 PASCAL 과 같은 다른 언어가 포함됩니다.
스몰 토크.
스몰 토크는 제록스에 의해 1970 년대 초에 개발 된 원래의 객체 지향 언어였다. 그 이후로 몇 가지 변형이 도입되었습니다. 그것은 여전히 사용되고 있지만 광범위한 수용은 보편적 인 표준의 부족으로 인해 방해 받았다.
C++.
C++는 OOP 기능을 제공 한 C 언어의 확장입니다. 아마도 현재 사용중인 가장 널리 퍼진 객체 지향 언어 일 것입니다. C 는 표준 C 프로그램을 컴파일하기 때문에 하이브리드 언어입니다. 이를 통해 기존 c 소프트웨어를 활용할 수 있으며 새 소프트웨어에 객체 방향을 사용할 수 있습니다. C 는 ANSI 표준에 의해 제어됩니다.
자바.
Java 는 가장 널리 받아 들여지는 순수한 객체 지향 언어입니다. 그것은 원래 작은 가전 제품에 대한 제어 언어로 썬 마이크로 시스템즈에 의해 개발되었다. 그러나 인터넷과 함께 사용하기에 이상적인 것으로 판명되었습니다. 자바 애플릿은 웹 페이지에 임베드 될 수있다. 브라우저가 웹 페이지를로드하면 애플릿도로드하고 표시합니다. 썬은 여전히 언어 표준을 엄격하게 통제하고 있습니다.
플랫폼 간 조작성(다시 컴파일하지 않고 완전히 다른 컴퓨터 유형에서 작업)을 용이하게하기 위해 Java 는 두 부분으로 구현됩니다. 컴파일러는 Jvm(Java Virtual Machine)에 의해서만 실행될 수 있는 오브젝트 파일을 생성합니다. 지원되는 각 운영 체제(Windows,Unix/Linux 또는 Solaris)에 대해 별도의 JVM 을 사용할 수 있습니다. 이렇게하면 Java 프로그램을 다시 컴파일하지 않고 해당 시스템 중 하나에서 실행할 수 있습니다.
다른 언어.
오늘날 일반적으로 사용되는 대부분의 언어는 어떤 형태의 객체 방향을 허용합니다. 기본은 객체 지향 비주얼 베이직;파스칼은 객체 지향 델파이로 진화했다. 일반적으로 이들은 C 와 같은 하이브리드 언어로 객체 방향을 요구하지 않고 지원합니다.
컴파일러를 참조하십시오;마우스;절차 언어.
Donald M.McIver
참고 문헌
Deitel,Harvey M.,Paul J.Deitel. Java:프로그래밍 방법,2nd ed. 어퍼 새들 리버,뉴저지:프렌 티스 홀,1998.