본문 바로가기

Java 공부/신용권의 이것이 자바다

자바는 객체지향 프로그래밍(OOP)이다

반응형

자바(Java)의  가장 큰 특징은 '객체지향 프로그래밍'(Object Oriented Programming)이라는 것이다.

소프트웨어를 만들 때, 구성요소를 마치 기계의 부품처럼 하나하나 객체(Object)형태로 만들어 조립하는 방식을 '객체지향 프로그래밍'이라고 한다.

이를 위해서는 우선 '객체'의 개념을 잘 이해하는 것이 중요하다.


나는 '객체'라는 번역어보다 Object라는 용어를 이용해서 설명해 보겠다.

Object는  물질적인 것도 있고 눈에 보이지 않는 시스템적인 것도 있다.

눈에 보이지 않음에도 엄연히 물성을 지닌 것으로 자신의 정체성을 분명히 가지고 있는 존재인 것이다.

이러한 성질의 Object들 하나 하나가 서로 결합해 다시 복잡한 한 물건으로 만들어지듯, 자바에서도 Object들이 결합해 하나의 프로그램이 탄생한다.

또 현실에서 Object와 사람이 서로 상호작용 하듯, 소프트웨어에서도 Object들은 독립적으로 존재하기도 하고 다른 Object와 상호작용하면서 작동하기도 한다.


자바에서 Object들은 관계의 종류에 따라 집합관계사용관계상속관계가 있다.

'집합관계' 안에서 Object는 하나의 부품이고 그것들이 모여 완성품이 된다.

'사용관계'는 Object들 간의 상호작용을 통해 원하는 값을 얻어낸다.

'상속관계'는 상위Object를 통해 하위Object를 생성하는 것을 말한다.  

'객체지향 프로그래밍'(Object Oriented Programming)은 만들고자 하는 소프트웨어를 위해서 Object를 모델링하고 집합관계나 사용관계, 혹은 상위Object에서 물려 받은 Object들을 결합하는 방식으로 프로그램을 만들게 된다.


 *객체지향 프로그래밍의 특징을 가진 자바의 틀징

첫째, Object를 구성하는 필드, 메소드를 하나로 묶고 실제 구현내용을 감춰 '캡슐화'(Encapsulation)할 수 있다.

이것은 외부로부터 중요한 프로그램을 손상시키지 않고 잘 보호할 수 있는 기능을 한다.

둘째, '상속'(Inheritance)을 한다.

상속은 마치 부모가 자식에서 자기가 소유한 것들을 물려주듯이 상위Object가 하위Object에게 필드와 메소를 물려주는 것을 말한다.

이 기능을 통해 상위Object를  하위Object에서 재사용하게 된다.

그럼으로 더 쉽고 빨리새로운 객체를 만들 수 있고 잘 개발된 Object를 이용해 더 완성도 있는 Object를 만들수 있다는 장점이 있다. 

또 코드의 반복을 막아 메모리공간을 더욱 경제적으로 이용할 수 있다.

셋째, '다형성'(Polymorphism)을 들 수 있다.

다형성은 같은 타입(Type)이지만, 실행결과가 다양한 Object를 생산할 수 있는 특성을 말한다.

즉, 부모타입에는 모든 자식Object가 대입될 수 있고, 인터페이스(Interface)타입에는 모든 구현Object가 대입 가능하다.

'다형성'이라는 특징으로 인해 모든 Object는 부품화가 가능해지는 것이다.



반응형