면접을 보러 다니면서, 자바 기초가 부족하다는 생각이 들었다.
때문에 직접 원문을 보면서 매일 핵심적인 부분을 조금씩 적어보고자 한다.
먼저, 객체란 무엇일까?
실제 객체는 두 가지 특성을 공유한다. 그 두가지 특성은 상태 와 행동 이다.
예를 들어, 개(dog)는 상태 (이름, 색깔, 번식, 배고픈)와 행동 (짖기, 주워오기, 꼬리 흔들기)이 있다.
객체는 필드 (일부 프로그래밍 언어의 변수)에 상태를 저장하고 메서드 (일부 프로그래밍 언어의 함수)를 통해 행동을 노출하는데, 메서드는 개체의 내부 상태에서 작동하며 객체 간 통신을 위한 기본 메커니즘 역할을 한다.
내부 상태를 숨기고 모든 상호 작용이 객체의 메서드를 통해 수행되도록 요구하는 것은 객체 지향 프로그래밍의 기본 원칙인 데이터 '캡슐화' 로 알려져 있다.
상태 (현재 속도, 현재 페달 가속 및 현재 기어)를 귀속하고 해당 상태를 변경하는 방법을 제공함으로써 객체는 외부 세계가 사용하도록 허용하는 방식을 제어할 수 있다.
예를 들어, 자전거에 6개의 기어 만있는 경우(상태) 기어를 변경하는 방법은 1보다 작거나 6보다 큰 값을 거부 할 수 있다.
이렇듯, 코드를 개별 소프트웨어 객체에 결합하면 다음과 같은 여러 가지 이점이 있다.
1. 모듈성
객체의 소스 코드는 다른 개체의 소스 코드와 독립적으로 쓰고 유지할 수 있다. 일단 생성되면 시스템 내에서 객체를 쉽게 전달할 수 있다.
2. 정보 은닉
객체의 방법과만 상호작용함으로써, 내부 구현의 세부사항은 외부 세계로부터 숨겨져 있다.
3. 코드 재사용
다른 소프트웨어 개발자가 작성한 객체가 이미 있는 경우 해당 개체를 프로그램에서 사용할 수 있다.
이를 통해 개발자는 복잡한 작업별 객체를 구현/테스트/디버그할 수 있으며, 이 객체를 신뢰할 수 있는 사용자 고유의 코드로 실행할 수 있다.
4. 플러그 인(갈아 끼움) 및 디버깅 용이성
특정 객체에 문제가 있는 것으로 확인되면 응용 프로그램에서 해당 객체를 제거하고 다른 객체를 대체하여 연결할 수 있다. 이것은 현실에서 기계적인 문제를 고치는 것과 비슷하다. (볼트가 파손되면 기계 전체가 아니라 해당 볼트만 교체)
출처 : docs.oracle.com/javase/tutorial/java/concepts/object.html
'Language > Java' 카테고리의 다른 글
Java api 일기 6 연산자 요약 (0) | 2021.01.18 |
---|---|
Java api 일기 5 패키지란? (0) | 2021.01.18 |
Java api 일기 4 인터페이스란? (0) | 2021.01.18 |
Java api 일기 3 상속이란? (0) | 2021.01.17 |
Java api 일기 2 클래스란? (0) | 2021.01.17 |