자바는 대표적인 객체지향 프로그래밍 (OOP: Object Oriented Programming)언어이다.
여기서, 객체란 무엇일까?
객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말한다. 예를 들어 물리적으로 존재하는 사람, 책, 자동차, 컴퓨터 등 과 추상적인 학과, 강의, 주문 등이 모두 객체가 될 수 있다.
객체는 크게 속성 과 동작으로 구성되어 있다.
이해하기 쉽게 사람과 자동차를 예를 들어보면,
-사람의 속성 : 이름, 나이 등
-사람의 동작 : 말하다, 걷다, 웃다 등
-자동차의 속성 : 색상, 모델명 등
-자동차의 동작 : 달린다. 멈춘다 등 과 같다.
자바에서는 이러한 객체의 속성을 필드(field), 동작을 메소드(method)라고 부른다.
그리고 현실세계의 객체를 소프트웨어 객체로 설계하는 것을 객체모델링 이라고 하며, 현실세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정 이라고 볼 수 있다.
객체들은 각각 독립적으로 존재하고 있으며, 다른 객체와 서로 상호작용을 하며 동작한다. 이때, 객체들 간의 상호작용 수단은 메소드가 된다. 메소드 호출을 통해 다른 객체의 기능을 이용하며, 매개값(넘겨주는 값)과 리턴값(돌려받는 값)을 통해 데이터를 주고받기도 한다.
객체는 개별적으로 사용될 수 있지만, 대부분 다른 객체와 관계를 맺고 있다.
관계의 종류는 크게 상속관계, 집합관계, 사용관계가 있다.
- 상속관계는 상위(부모)객체를 기반으로 하위(자식)객체를 생성하는 관계를 말한다. 자전거는 교통수단이라는 상위객체의 하위객체가 될 수 있다.
- 집합관계는 부품과 완성품으로 비유할 수 있는데, 여러 가지 부품들의 집합이 모여 하나의 완성품 객체를 완성한다.(예를 들어, 바퀴객체, 브레이크 객체, 핸들객체 등이 모여 자전거 객체가 된다.)
- 사용관계는 객체간의 상호작용을 말한다. 예를 들어, 사람객체는 달린다, 멈춘다 등의 메소드를 통하여 자전거 객체를 사용할 수 있다.
객체 지향 프로그래밍의 특징 :
- 캡슐화(Encapsulation) : 캡슐화란 이름에서 유추할 수 있듯 캡슐처럼 묶어 내부의 구조를 감추는 것을 말한다. 외부에서는 내부의 구조를 알지 못하며, 객체가 노출하여 제공하는 필드와 메소드만 이용할 수 있따.
캡슐화를 하는 주된 이유로는 공개하고 싶지 않은 내용의 보안성과 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다. 중요한 부분이 밖으로 노출되어 있으면, 사용자의 실수로 인해 오류가 발생할 수 있기 때문이다. 자바에서는 접근제한자(Access Modifier)를 통해 캡슐화된 멤버의 사용범위를 제한한다. 접근제한자의 종류는 public, protected, private 등이 있다.
-상속(Inheritance)
일반적으로 상속은 부모가 가지고 있는 재산을 물려주는 것을 뜻한다. 하위객체는 상위객체를 재사용하여 쉽고 빠르게 설계할 수 있어, 반복된 코드의 중복을 줄여준다. (개발의 효율성 ↑, 개발 소요시간↓)
-다형성(Polymorphism)
다형성은 하나의 타입에 여러 객체를 대입하여 다양한 기능을 이용할 수 있도록 한다.
부모 타입에는 모든 자식 객체가 대입될 수 있으며, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.
클래스에 대해서 더 알아보고 싶다면? 👇
2019/12/01 - [👩💻TIL/JAVA] - [자바(JAVA) 개념] 클래스(class) 선언방법 / 필드 / 생성자
'👩💻TIL > JAVA' 카테고리의 다른 글
[자바/JAVA] toString()과 String.valueOf()의 차이점 비교 (0) | 2020.05.08 |
---|---|
[자바/JAVA ] 자바에서 세션(Session) 사용법 간단정리 (0) | 2020.05.07 |
[JUnit] JUnit을 이용한 단위 테스트하기+단정(assert)메소드 정리 (2) | 2020.03.27 |
[자바(JAVA) 개념] 클래스(class) 선언방법 / 필드 / 생성자 (0) | 2019.12.01 |
[JAVA / 자바] HELLO, WORLD! 자바란 무엇일까? (0) | 2019.12.01 |
댓글