코린이의 소소한 공부노트

객체지향 언어의 도입 배경과 특징 본문

Java

객체지향 언어의 도입 배경과 특징

무지맘 2022. 2. 20. 18:57

전에 주를 이루던 코볼(Cobol), 포트란(Fortran), C언어 등은 코드를 위에서 아래로 순서대로 실행하는 절차적 프로그래밍 언어다. 그러나 이런 언어들은 빠르게 변화는 시스템의 요구를 쫓아가지 못해 점차 쓰지 않게 되었다.

  - 절차 지향 언어는 코드의 재사용성이 크게 떨어진다.

  - 적은 노력으로 변경에 대응할 수 있는 유지보수성이 떨어진다.

 

이에 대한 해결책으로 도입하게 된 것이 시뮬라(Simula), 스몰톡(Smalltalk) 등의 객체지향 언어였다. C언어도 이후 C++로 발전했으나 받아들이기 어려웠던 부분들이 있어 이런 단점을 보완해 자바(Java)가 나오게 되었고, 이보다 더 간결하면서 직관적인 파이썬(Python)까지 이어지게 되었다.

 

객체지향 프로그래밍(Object-oriented programming = oop)의 핵심적 특징은 다음 4가지와 같다.

1. 캡슐화

  - 객체의 속성과 메서드를 하나로 묶어서 감추는 것을 말한다.

  - 사탕의 색과 맛이 속성과 메서드라고 한다면, 사탕을 '사탕'이라고 적힌 포장지로 감싸는 것을 캡슐화라고 할 수 있다.

2. 상속

  - 어떤 클래스에 정의되어 있는 속성이나 메서드를 그대로 물려받아 쓰는 것을 말한다.

  - 물려받아 쓰기 때문에 코드의 재사용성이 좋아진다.

  - 물려주는 클래스를 super / parent 클래스라고 하고, 물려받는 클래스는 sub / child 클래스라고 한다.

  - 1개의 클래스는 1개의 클래스만 상속받을 수 있다.

3. 추상화

  - 공통된 속성이나 메서드들을 묶어서 이름을 붙이는 것을 말한다.

  - 이렇게 만들어진 클래스를 상속받거나 인터페이스를 구현해 코드의 재사용성을 높일 수 있다. 

4. 다형성

  - 변수, 상수, 메서드 등의 프로그래밍 요소들이 여러 타입을 커버할 수 있는 성질을 말한다.

  - 단형성 프로그래밍 언어는 각 타입마다 다른 메서드를 이용하지만, 다형성은 1가지 메서드가 여러 타입을 커버한다.

아래 예시는 이해를 돕기 위해 임의로 만든 것으로, 실제 사용과는 다르다.

// num는 정수형
// arr는 배열

// 1) 단형성 체계에서 문자열로 변환하기
str1 = numToString(num);
str2 = arrToString(arr);

// 2) 다형성 체계에서 문자열로 변환하기
str1 = toString(num);
str2 = toString(arr);

각각의 자세한 설명은 다른 글에서 하고자 한다.

 

 

'Java' 카테고리의 다른 글

객체 배열  (0) 2022.03.01
클래스, 객체, 인스턴스  (0) 2022.02.20
배열 (5) Arrays클래스  (0) 2022.02.20
String 클래스  (0) 2022.02.06
배열 (4) 2차원 배열  (0) 2022.01.24