- 객체 지향 언어(OOP : Object Oriented Programming)
자바는 객체 지향 언어다. 객체 지향이란? 현실 세계를 '객체' 중심으로 사고하고 파악하는 것이다.
객체(Object)란, 우리 주변에 있는 물질적이고 추상적인 그 무엇도 다 해당되는데, 하나의 사물을 뜻한다.
지금 내가 타이핑을 치고 있는 이 컴퓨터도 객체이며, 타이핑을 하고 있는 내 손도 하나의 객체가 될 수 있다.
객체 지향 언어란, 바로 이 객체가 중심이 되는 (컴퓨터)언어인 것이다.
그리고 현실 세계에서도 그렇듯이, 이 객체는 절대로 혼자서만 존재할 수가 없다.
절대적으로 객체는 서로 관계를 맺을 수밖에 없으며, 그래서 관계 안에서만 활동이 가능하다.
위의 예시에서의 컴퓨터는 활동하기 위해서 컴퓨터를 켜고 자판으로 무언가를 입력하는 사람의 손이나, 크게는 사람이 필요하며, 내 손은 혼자 존재하는 것이 아니라 나라는 사람의 몸에 붙어있으며 혼자 움직이는 것이 아니라 나의 의지에 따라 움직이는 것이다. 이런 방식으로 객체는 늘 다른 객체와 관계를 맺고 있는 것이다.
이러한 현실 세계를 객체 중심으로 파악하고 이를 '자바'라는 컴퓨터의 언어로 옮겼을 때(객체 지향 언어에는 자바 말고도 파이썬 등의 다양한 언어들이 존재함), 이를 객체 지향 프로그래밍이라고 일컬으며,
객체를 둘러싼 여러 요소들에 대해 이름을 붙이게 되는데 이 때 등장하는 것들이 바로 변수, 메서드, 클래스 등의 것이다.
추가로 객체 지향 언어는 가장 큰 특징으로 다음의 것들을 지닌다.
1) 캡슐화(Encapsulation)
외부의 잘못된 사용으로 인한 객체의 손상을 보호하기 위해, 외부로부터 객체를 숨겨놓는 것이다. 이로써 공개하기로 선택한 객체에 한해서만 취사로 '접근 제어자(Access Modifier)'를 이용해 공개 여부를 설정할 수 있다.
2) 상속(Inheritance)
말그대로 부모가 가지고 있는 재산을 자식에게 물려주는 것이다. 자바에서는 주로 부모 격인 인터페이스를 자식인 클래스가 상속하여 부모 인터페이스가 가지고 있는 재산들(변수, 메서드) 등을 자유롭게 사용하는 형태로 사용된다. 이 방법은 특히 부모의 재산을 재사용함으로써 자식 클래스가 쉽고 빠르게 코드를 작성할 수 있게 도와주며, 재사용하여 코드를 작성하기 때문에 중복된 코드의 사용도 줄여준다. 또한 수정이 필요할 때 부모 격인 인터페이스만 수정하면 되므로, 유지 보수 시간 측면에 있어서도 효율적인 개발이 가능하다.
3) 다형성(Polymorphism)
다형성이란, 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 것이다. 예를 들어, 자동차는 타이어로 같은 타이어 타입인 한국 타이어와 금호 타이어를 사용할 수 있으며 이에 따라 결과는 각 타이어의 성능으로 말미암아 다르게 나타난다.
- 변수
변수란, 우리가 실제적인 값을 다룰 때 해당 값을 다루기 위해 사용하는 일종의 도구이다. 예를 들어 '파랑'이라는 값을 데이터로서 저장하고 이를 이용해야 하는데, 프로그램에서는 이 값을 그대로 가져다가 이용하는 것이 아니라 '파랑'에 내가 원하는 이름을 설정하여 이 이름을 가지고 해당 값을 이용하게 된다. 그러니까 일종의 네이밍 된 것이 변수다.
그리고 이 변수는 혼자 다니는 것이 아니라, 이 변수가 어떤 타입(종류)인지를 표현하는 데이터 타입과 늘쌍 함께 다니는데, 자바에서 이 변수의 데이터 타입으로 쓰이는 것이 바로 primitive(기본) 타입과, reference(참조) 타입 두 가지다.
기본 타입이라 함은 말그대로 가장 기본 타입으로서, 이 타입은 변수에 값을 저장하지만 참조 타입은 말그대로 역시 참조 타입으로서, 이 타입은 변수에 값을 저장하는 것이 아니라 값의 '주소(번지수)'를 저장한다. 그래서 참조 타입이다.
- 메서드
메서드란, 여러 객체가 서로 소통할 때에, 즉 관계를 맺을 때에 이용하는 일종의 기능이라 볼 수 있다. 각 객체는 메서드를 자신의 기능으로서 소유한다. 예를 들어 A객체에서 B객체의 기능을 빌려 작업을 수행해야 할 일이 필요할 때, B객체의 메서드를 호출하여 처리하는 방식으로 이용된다. 그리고 메서드는 return를 추가하여 다른 객체로 기능을 수행한 결과를 데이터로써 전달도 가능하다.
참고 : 도서 <이것이 자바다>
'TIL' 카테고리의 다른 글
<자바 Java> 서블릿(Servlet) 개발 환경 설정 (0) | 2021.11.03 |
---|---|
<자바 Java> I/O 스트림과 서블릿 (0) | 2021.11.02 |
<자바 Java> DB 연동하기 (1) (0) | 2021.10.31 |
<자바 Java> 컬렉션 프레임워크(Collection Framework) (0) | 2021.10.30 |
<자바 Java> JVM이란? (0) | 2021.10.29 |