객체지향 언어

객체 지향 프로그래밍(Object-Oriented Programming)은 컴퓨터 프로그래밍의 패러다임 중 하나입니다.
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입니다. 
각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있습니다.
객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됩니다. 
또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있습니다. 
그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 합니다.

 

객체지향 언어의 역사

초창기에는 주로 과학실험이나 미사일 발사 실험과 같은 모의실험을 목적으로 사용되었습니다.
모의실험을 위해 실제 세계와 유사한 가상 세계를 컴퓨터 속에 구현하고자 노력하였으며 이러한 노력을 바탕으로 객체지향 이론을 탄생시켰습니다.

 

객체지향이론 개념

객체지향 이론의 기본 개념은 실제 세계의 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물 간의 상호작용이다.라는 것입니다.
객체지향 이론은 상속, 캡슐화, 추상화 개념을 중심으로 점차 구체적으로 발전되었습니다.
최초의 객체지향 언어는 1960년대 중반에 객체지향이론을 프로그래밍언어에 적용한 시뮬라(Simula)라는 언어입니다.
자바가 1995년에 발표되고 1990년대 말에 인터넷의 발전과 함께 크게 유행하면서 객체지향언어는 프로그래밍 언어의 주류로 자리 잡았습니다.

 

객체지향 언어의 주요 특징

코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 작성할 수 있습니다.

코드 관리가 용이하다.
코드 간의 관계를 이용해서 코드를 변경할 수 있습니다.

신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있습니다. 

 

객체 지향 프로그래밍 5 원칙

단일 책임 원칙 (Single responsibility principle)
한 클래스는 하나의 책임만 가져야 합니다.

개방-폐쇄 원칙 (Open/closed principle)
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 합니다.

리스 코프 치환 원칙 (Liskov substitution principle)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 합니다.

인터페이스 분리 원칙 (Interface segregation principle)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫습니다.

의존관계 역전 원칙 (Dependency inversion principle)
프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안 된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나입니다.

 

후기

객체지향 언어를 이론적으로만 알았지만,  와닿았던 순간은 디자인 패턴을 공부했을 때입니다.

 

참조 자료: 자바의 정석

'JAVA' 카테고리의 다른 글

[JAVA] 자바(JAVA)란?  (0) 2022.01.18

 

자바란?

자바는 썬 마이크로시스템즈(Sun Microsystems)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어입니다.
자바의 가장 중요한 특징은 운영체제에 독립적이라는 것입니다.
자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 변경하지 않고, 실행이 가능합니다.

 

자바의 역사

자바의 역사는 1991년에 썬의 엔지니어들에 의해 고안된 오크(Oak)라는 언어에서부터 시작되었습니다.
처음에는 C++을 확장해서 사용하려 했지만 C++로는 목적을 이루기에 부족하다는 것을 알게 되었습니다.
그래서 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발하기 시작했습니다.
처음에는 가전제품이나 PDA와 같은 소형기기에 사용될 모적이었으나 여러 종류의 운영체제를 사용하는 컴퓨터와 인터넷이 등장하자 운영체제에 독립적인 Oak가 이에 적합하다고 판단하였습니다.
Oak를 인터넷에 적합하도록 그 개발 방향을 바꾸면서 이름을 자바로 변경하였고, 자바로 개발한 웹브라우저인 핫 자바를 발표하고 그다음 해인 1996년 1월에 자바의 정식 버전을 발표했습니다.

 

자바언어의 특징

운영체제에 독립적
자바로 만든 프로그래밍은 운영체제와 하드웨어에 관계없이 실행 가능하며 이것을 한 번 작성하면, 어디서나 실행된다.(Write once, run anywhere)라고 표현하기도 합니다.

객체지향 언어
자바는 객체지향 프로그래밍 언어 중 하나로 객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 수수한 객체지향 언어입니다.

자동 메모리 관리(Garbage Collection)
자바로 작성된 프로그램이 실행되면, 가비지 컬렉터(Garbage Collector)가 자동적으로 메모리관리를 해줍니다.
가비지컬렉터(Garbage Collector)가 없다면 개발자가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리해야 할 것입니다.
개발자가 개발에 집중할 수 있도록 도와줍니다.

네트워크와 분산처리를 지원
다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 네트워크 관련 프로그램을 개발할 수입니다.

멀티스레드(Multi-thread)
자바에서 개발되는 멀티스레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 어렵지 않습니다.
여러 스레드에 대한 스케줄링을 자바 인터프리터가 담당하고 있습니다.

동적 로딩(Dynamic Loading)
자바로 만들어진 애플리케이션은 여러 개의 클래스로 구성되어 있습니다.
자바는 동적으로 로딩을 지원하기 때문에 실행 시에 모든 클래스를 로딩하지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있습니다.

 

JVM (Java Virtual Machine)

자바를 실행하기 위한 가상 기계인 JVM (Java Virtual Machine)은 자바의 특징이자 장점이다.
일반 어플리케이션 코드는 OS만 거치고 하드웨어로 전달되지만, 자바 어플리케이션은 JVM을 거쳐서 전달됩니다.
일반 어플리케이션은 OS와 바로 맞붙어 있기 때문에 OS 종속적입니다.
그래서 다른 OS에서 실행시키기 위해서는 애플리케이션을 그 OS에 맞게 변경해야 하는 번거로움이 있습니다.
반면에 자바 애플리케이션은 JVM 하고 상호작용하기 때문에 OS와 하드웨어에 독립적입니다.
다른 OS에서도 프로그램의 변경 없이 실행이 가능합니다.

 

후기

자바를 사용하는 개발자는 압도적으로 많습니다. 자바를 왜 사용하는지 생각해볼 필요가 있습니다.

 

참조 자료: Java의 정석

'JAVA' 카테고리의 다른 글

[JAVA] 객체지향언어란?  (0) 2022.01.19

+ Recent posts