프로그래밍/Java

객체지향언어로서 자바

개발자 이시윤 2024. 1. 15. 23:15

1. 객체지향언어

: 객체지향언어란 마치 인간 사회처럼 프로그램의 시스템 체제가 객체라는 부품들이 유기적으로 소통 및 결합하며 실행되는 개발언어를 말한다.

하나의 덩어리가 아닌 모듈화, 계층화처럼 작은 객체의 단위로 나뉜 것이다. 각자 인간사회처럼 객체로 각 역할이 분담되어 맡고 있으며 그들(객체)끼리 소통하며 프로그램을 실행하게 된다.

1) 객체

ex) 컴퓨터 - 컴퓨터 부품(모니터, 키보드, 마우스, .., 등) - 컴퓨터의 역할 및 기능(화면 제공, 소리 제공, ..., 등)

    = 자바 - 객체 - 자바 구동/역할

 

 

 

2. 객체지향언어 관련 용어

1) 캡슐화

(*HTTP할 때 언급되는 캡슐화와 다르다.)

보통의 알약 캡슐 안에 무수히 고운 입자의 가루들이 들어있는 것을 하나씩 집어먹어야 한다고 생각해보자.

정말 힘들 것이다.

이와 마찬가지로 캡슐화되지 않은 데이터와 코드는 사용하기 어렵다.

 

캡슐화란 데이터와 알고리즘을 하나로 묶어둔 것으로, 데이터의 구조와 역할 및 기능을 하나로 묶어둔 것이라 할 수있다.

캡슐에 담겨있으니 데이터와 코드의 형태는 외부에서 알 수가 없다. 

 

 

2) 상속

상위 클래스의 모든 것을 하위 클래스에 상속시켜주는 것이다. (ex. 부모를 닮은 자식 -재산 상속 및 유전자 상속)

 

 

3) 다항성

한 객체가 다른 여러 객체(형태)로 재구성되는 것을 말한다. 

부모가 이란성 쌍둥이를 낳는 것과 비슷하다. 이런 점에서 상속과 비슷하다고 볼 수도 있지만 상속과 비슷한데 조금 다르다. 왜냐하면 이란성, 즉 서로 다른 상태이기 때문이다. 

 

자바의 Overload(오버로드), 자바의 Override(오버라이드)가 대표적인 예다. 

이를 구현하는 것은 뒤에 -ing를 덧붙인, 오버로딩과 오버라이딩이라고 부른다.

 

 

4) 추상화

객체의 공통점들만 추출해서 정의하는 것이다. 

실존하는 객체들을 프로그램화하기 위해 그들의 공통적인 특성은 파악하고 필요없는 특성은 제거한다.

 

 

 

4. 객체지향언어의 종류

자바(대표적), 파이썬,  C++,  C#,  루비, 시뮬라67(최초), 스몰토크, 오브젝티브, 비주얼 베이직 닷넷, 스위프트, 등.

 

 

 

5. 객체지향언어의 장단점

1) 장점

(1) 높은 재사용성

 

: 상속이라는 특성을 가지고 있다. 이를 이용하면 코드의 재사용을 높이는 것이 가능하다.

 

(2) 자연적인 모델링

: 객체지향언어의 프로세스는 인간사회와 유사하다. 모델링 시에도 생각하는 그대로 자연스러운 구현이 가능하다.

 

(3) 유지보수의 용이성(경제성)

: 캡슐화라는 특성 덕에 프로그램의 수정, 개정, 업데이트 등을 진행할 때에도 주변의 영향을 덜 받는다. 따라서 유지보수가 용이하여 경제적이다.

 

(4) 생산성 향상

: 클래스를 잘 설계하여 독립적인 객체를 사용하면, 개발의 생산성이 향상된다.

 

 

2) 단점

(1) 느린 개발속도

: 객체라는 세세한 설정값을 하기 위해선 객체의 처리 대상에 대한 정확한 이해가 필요하다. 때문에 설계 단계에서부터 시간을 많이 소요하게 된다.

 

(2) 느린 실행속도

: 객체들로 세부화되어 있기에 객체지향언어는 대개 느린 실행속도를 가지고 있다. (대표적으로 파이썬)

 

(3) 높은 코딩 난이도

: C++의 경우 다중 상속도 지원되어 복잡한 코딩이 가능한데, 이는 곧 난이도의 상승을 의미한다.

 

 

 

 

참고

 

'프로그래밍 > Java' 카테고리의 다른 글

자바랑 친해지기!  (0) 2024.02.23
자바 용어 정리 (단어 사전)  (1) 2024.02.06
자바란 무엇인가  (0) 2024.01.15
JDK, JRE, JVM, API, TOOL이란 무엇인가  (0) 2024.01.15
코딩을 하는 순서  (1) 2024.01.15