Spring(1) - 객체지향
Spring에 대해 공부하기 전에 기본적인 특성을 공부하겠습니다.
1. 객체지향이란
객체지향이란 현실에 존재하는 사물을 있는 그대로 모델링하여,
이들의 행위와 속성을 정의하고, 절차적이 아닌 객체가 중심이 되어
실제 사물이 동작하는 방식으로 설계한 것입니다.
사물에 대해서는 객체(Object)라고 부르고,
해당 사물이 하는 행위를 메소드(Method)로 정의하고
해당 사물이 가지는 속성을 변수(Variable)라고 정의합니다.
2. 객체 설계하기
객체는 속성과 행위로 이루어져 있습니다.
ex) 자동차
- 속성(variable)
- 자동차 이름
- 자동차 번호
- 모델명
- …
- 행위(method)
- 주행거리
- 연비계산
- 번호교체
- …
객체를 설계하는데 있어서 중요한 3가지 요소가 있는데,
- 상태 유지(객체의 상태)
- 객체는 상태 정보를 저장하고, 유지되어져야 하며 이러한 속성(Variable)은 변수로
정의 되어져야합니다. 이러한 속성값이 바뀜으로 인해, 객체의 상태가 변경 될 수 있어야 합니다.
- 객체는 상태 정보를 저장하고, 유지되어져야 하며 이러한 속성(Variable)은 변수로
- 기능 제공(객체의 책임)
- 객체는 기능을 제공해야 합니다. 이 부분은 메소드(Method)의 제공으로 이루어집니다.
해당 부분은 캡슐화와 연관이 있으며, 외부로 부터 직접 속성에 접근하여 변경하는 것이 아닌
객체가 제공하는 메소드로 기능이 제공 되어져야합니다.
- 객체는 기능을 제공해야 합니다. 이 부분은 메소드(Method)의 제공으로 이루어집니다.
- 고유 식별자 제공(객체의 유일성)
- 각각의 객체는 고유한 식별자를 가져야합니다.
예를 들면 카드번호, 계좌번호와 같은 속성을 통해 각각 고유한 값을 줄 수 있으며,
이는 이후 DB에서 Unique Key, 또는 Primary Key로도 작성이 가능합니다.
- 각각의 객체는 고유한 식별자를 가져야합니다.
3. 물리 객체와 개념 객체
- 물리 객체
물리적 객체는 실제로 사물이 존재하며, 이를 클래스로 정의한 객체입니다.
ex) 자동차 렌탈 시스템
- 자동차
- 고객
- 직원
- 사업장 등
- 개념 객체
- 개념 객체는 실제로 존재하는 객체는 아닙니다.
이후 우리가 개발할 웹 시스템에서 Service에 해당되며, 이는 business logic을 처리하는
부분을 의미 합니다.
(Spring에서 개념객체를 Service라고 부르고 주로 business logic이 대부분 처리합니다.) - Business Logic에서는 여러 객체를 서로 상호작용 하도록 하며,
객체가 제공하는 오퍼레이션 메소드를 통해 객체의 속성을 변경시킵니다. - ex) 사용자 관리 시스템
사용자 객체의 마지막 접속일자를 이용하여, 계정만료, 비밀번호 초기화, 재등록 처리 등등
(판단, 처리를 담당)
- 개념 객체는 실제로 존재하는 객체는 아닙니다.
객체지향에서의 대부분의 코딩은 각 객체에 기능을 정의하고 이를 business logic을 처리하는
Service에서 객체의 메소드를 활용하여, 여러가지 조건을 확인하여, 객체의 속성을 변경하는 작업이 주된 코딩이 됩니다.
이러한 작업을 하기 위해서는 각 객체의 속성(Variable)을 잘 정의하고,
이러한 속성을 변경하거나 상태를 변경할 수 있는 오퍼레이션(Method)를 잘 정의해야합니다.
댓글남기기