jineecode
객체 지향 프로그래밍 언어 본문
개요: JS가 객체 지향 프로그래밍 언어인 줄 알았는데 아니라는 소리를 듣고 알아보았다.
1. 객체 지향 프로그래밍Object-Oriented Programming 언어의 개요
소프트웨어를 개발할 때 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법.
2. 객체지향 프로그래밍의 장 단점
상속을 통한 재사용과 시스템의 확장이 용이.
코드의 재활용성 높음
대형 프로그램의 작성 용이
정형화된 분석 및 설계 방법이 없음
실행 속도가 느림
3. 객체지향 프로그래밍의 종류
언어 | 특징 |
C++ | C언어에 객체지향 개념을 적용한 언어 모든 문제를 객체로 모델링하여 표현 |
C# | Microsoft에서 개발한 객체지향 프로그래밍 언어 C++, JAVA와 문법 비슷 불안전 코드와 같은 기술을 통해 플랫폼간 상호 운용성 확보 |
JAVA | 분산 네트워크 환경에 적용이 가능 멀티스레드 기능 제공, 여러 작업을 동시에 처리 가능 운영체제 및 하드웨어에 독립적, 이식성이 강함 캡슐화 가능 재사용성 높음 |
Delphi | 파스칼 문법. WINDOW운영체제에서 모든 부분을 프로그래밍 할 수 있음 높은 생산성과 간결하 코드가 대표적 |
Smalltalk | 1세대 객체지향 프로그래밍 언어 최초로 GUI를 제공 |
4. 언어의 구성 요소
*객체(Object)
-독립적으로 식별 가능한 이름을 갖고 있음.
-객체가 가질 수 있는 조건인 상태(state)는 일반적으로 시간에 따라 변함
-객체와 객체는 상호 연관성에 의한 관계가 형성됨
-객체가 반응할 수 있는 메시지의 집합을 method라고 하며 객체는 method의 특징을 나타냄
-객체는 일정한 기억장소를 가지고 있음
*클래스(Class)
-공통된 속성과 연산을 갖는 객체의 집합
-객체지향 프로그램에서 데이터를 추상화하는 단위
-객체들이 갖는 속성과 메서드를 정의하고 있는 틀
-슈퍼클래스는 특정 클래스의 부모 클래스
-서브 클래스는 특정 클래스의 하위 클래스
*인스턴스(instance)
-클래스에 속한 각각의 객체
-클래스로부터 새로운 객체를 생성하는 것을 인스턴스화라고 함
*메서드(method)
-클래스로부터 생성된 객체를 사용하는 방법
-전통적 시스템의 함수 또는 프로시저에 해당하는 연산
*메시지(message)
-객체에게 어떤 행위를 하도록 지시하기 위한 방법
5. 객체 지향 프로그래밍 언어의 특징
특징 | 설명 |
캡슐화 | 데이터와 데이터를 처리하는 함수를 하나로 묶는 것. 캡슐화된 객체의 세부 내용이 외부에 은폐되어 변경이 발생할 때 오류의 파급효과가 적음 캡슐화된 객체는 재사용이 용이함 |
상속성 | 이미 정의된 부모클래스의 모든 속성과 연산을 자식 클래스가 물려 받는 것 |
다형성 | 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유의 방법으로 응답할 수 있는 능력 |
추상화 | 불필요한 부분은 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화, 모델화 하는 것 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념 |
정보 은닉 | 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것 |
*자바스크립트는 객체지향방식으로는 쓸 수 있으나 객체지향언어라고 보기에는 어렵다.
ES6로 인해 class를 사용하긴 하지만 프로토타입으로 그 기능을 구현했다.
자세한 참조:
'지식' 카테고리의 다른 글
BOM과 DOM (0) | 2021.05.17 |
---|---|
SSR, CSR, TTV, TTI (0) | 2021.05.17 |
프로세스와 스레드의 차이(Process vs Thread) (0) | 2021.04.15 |
스크립트 언어 (0) | 2021.02.15 |
절차적 프로그래밍 언어 (0) | 2021.02.15 |