이전 포스팅에서 프로그래밍 언어와 컴파일에 대하여 알아볼 때 절차지향 언어와 객체지향언어에 대한 언급이 있었습니다.
오늘은 이 두가지에 대하여 알아보도록 하겠습니다.
절차지향 언어란?
절차지향 프로그래밍에 쓰이는 언어를 절차지향 언어라고 하며, 대표적인 예로 C언어가 있습니다.
절차지향언어는 개체를 순차적으로 처리하여 프로그램 전체가 연결되어야 합니다.
절차지향언어의 구조는 컴퓨터의 처리구조와 유사합니다.
따라서 실행 속도가 빠르다는 것이 장점입니다.
하지만, 소프트웨어가 엄청난 발전을 이루면서 절차지향언어의 단점이 두드러지게 나타납니다.
절차지향 언어의 단점
- 유지보수의 어려움
- 모든 구성요소가 유기적으로 연결되어 있으면 하나가 고장났을 때 시스템 전체가 고장납니다. 이 말은 즉슨, 문제를 해결하기 위하여 일부분이 아닌 시스템 전체를 수리해야 한다는 말입니다.
- 절차지향 언어는 이런 유지보수가 매우 까다로운 편이며, 특히 디버깅과정이 매우 어렵습니다.
- 순서가 정해져 있어 비효율적임.
- 실행 순서가 정해져 있기 떄문에 코드의 순서가 바뀌면 결과가 달라질 가능성이 높습니다.
- 언어의 융통성이 부족해 생산 효율이 매우 떨어집니다.
이러한 절차지향 언어의 단점을 보완하기 위하여 객체지향 언어의 개념이 등장합니다.
객체지향 언어란?
객체란 구체적인 사물, 혹은 사람이 될 수 있고 추상적인 개념이 될 수도 있는 무언가입니다.
컴퓨터로 예를 들자면, 컴퓨터에 쓰이는 모든 부품과 컴퓨터가 제공하는 모든 기능이 전부 객체입니다.
객체지향 언어란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어입니다.
컴퓨터의 모든 부품을 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것이라고 볼 수 있습니다.
객체지향 언어의 특징
캡상타취(캡슐화, 상속, 다형성, 추상화)
- 캡슐화
- 데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것
- 데이터와 코드의 형태를 외부에서 알 수 없습니다.
- 캡슐화되어 있지 않은 데이터와 코드는 사용하기 어렵습니다.
- 상속
- 부모가 자식에게 유전자를 물려주듯, 상위 클래스의 모든 것을 하위 클래스가 이어받는 것입니다.
- 다형성
- 상속과 연관된 개념
- 하나의 객체가 다른 여러 객체로 재구성되는 것입니다.
- 자바의 오버로드, 혹은 오버라이드 다형성이 이 다형성을 드러내는 대표적인 예입니다.
- 추상화
- 실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한(공통적인) 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것입니다
객체지향언어의 장점
- 재사용성
- '상속'이 가능하기 때문에 코드를 재사용할 수 있어서 편리합니다.
- 생산성 증가
- 문제가 되는 일부분만 수정하여 작동시키면 정상 실행됩니다.
- 자연스러운 모델링
- 개발자가 생각하는 대로 자연스럽게 기능을 구현할 수 있습니다.
객체지향의 단점
- 느린 개발 속도
- 모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요됩니다.
- 느린 실행 속도
- 객제지향 언어의 처리속도는 절차지향언어보다 느립니다.
- 높은 난이도
- 객체지향언어는 대체로 난이도가 높습니다.
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA의 특징 (0) | 2022.02.17 |
---|---|
JDK?JRE? (1) | 2022.02.15 |
자바와 타 언어(c/c++)의 실행 환경 차이 (1) | 2022.02.14 |
JAVA[자바]의 실행환경 (0) | 2022.02.14 |
프로그래밍 언어란? (1) | 2022.01.16 |