1. 객체지향의 등장
1970년대에 들어서 용어가 나왔다.
이전에는 c언어 처럼 실행하고자 하는 순서대로 명령어를 입력해서 실행되는 "절차 지향"이 주를 이뤘다,
이러한 방법으로 코딩 하는 언어들을 "절차지향 언어" 라고 한다.
이 때에는 프로그램의 단위가 크지 않았으며 , 대체적으로 간단한 Logic을 순차적으로 처리하여 결과를 얻는데 그쳤지만, 점점 컴퓨터의 발전과 이로 인하여 프로그램의 복잡도가 증가하며 이에 들어가는 유지보수 , 개발기간 등 다양한 부분에서 비 효율이 발생 했다.
이런 어려움을 해결하기 위해 선택한 방법이 " 효과적인 개발방식" 을 채택하게 되었고, 이는 이전에 사용하던 흐름에 따른 개발 방식에서 벗어나, 객체지향의 특성인 추상화 ,상속, 정보 은닉 ,재사용 , 인터페이스 등 여러 곳에서 객체지향으로 개발이 시작되었다.
함수의 활용으로도 충분히 좋은 프로그램을 개발 할 수 있었으나 , 새로운 시각으로 바라보기 시작했다.
객체지향이란 현실에 존재하는 사물을 있는 그대로 모델링하여 , 이들의 행위와 속성을 정의하고 , 절차가 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계하기 시작했다 .
이는 사물에 대한 객체Object 라고 부르며 ,해당 사뭉리 하는 행위를 Method로 정의 하고 해당 사물이 가지는 속성을 변수 Variable 이라한다.
Java는 1995년 Sun Microsystems 작은 언어를 지향하는 객체지향 언어로 Java를 소개 했다. 이는 당시 C++과 유사한 언어의 구문을 채택 하였으나 , C++이 가지고 있는 , 시스템레벨접근 , 메모리 직접 할당 및 해제 , 포인터등 복잡한 개발 방식을 사용하지 않았다.
또한 어떠한 운영체제에서도 자바 가상 머신만 있으면 , 독립적으로 실행 될 수 있도록 설계가 되어 있어서, 여러 플랫폼에서 화환성을 제공하는 장점을 가지고 있다.
2. 객체의 설계
객체는 == 사물 == Object
1.객체의 속성 예시
자동차 | 유저 | 계좌 |
자동차 이름 | 아이디 | 계좌번호 |
자동차 번호 | 패스워드 | 잔고 |
등록년월 | 이메일 | 예치금 |
모델명 | 전화번호 | 이율 |
2.객체의 행위 예시
자동차 | 유저 | 계좌 |
주행거리 | 계정등록 | 잔고계산 |
연비계산 | 계정삭제 | 이율계산 |
번호교체 | 비밀번호 변경 | 입금기록 |
등록증갱신 | 이메일 변경 | 출금기록 |
3. 객체의 3가지 요소
- 상태 유지 (객체의 상태)
객체는 상태 정보를 저장하고 , 유지되어ㅇ져야 하며 이러한 속성(variable)은 변수로 정의 되어져야 한다.
이러한 속성값이 바뀜으로 인하여 ,객체의 상태가 변경 될 수 있어야 한다.
- 기능 제공 (객체의 책임)
객체는 기능을 제공해야한다 이 부분은 Method의 제공으로 이루어진다.
이 부분은 캡슐화와 연관이 있고 , 외부로 부터 직접 송석ㅇ에 접근하여 변경 하는 것이 아닌 객체가 제공하는 Method로 기능이 제동 되어져야 한다.
-고유 식별자 제공(객체의 유일성)
각각의 객체는 고유한 식별자를 가져야 한다. 예를 들어 카드번호 , 계좌번호 , 자동차 번호 와 같은 속성을 통하여 각각 고유한 값을 줄 수 있고 이는 이후 Db에서 Unique Key 또는 Primary Key 로도 작성이 가능하다.
4. 물리 객체와 개념 객체
객체지향에서 대부분의 코딩은 각 객체에 기능을 정의하고 이를 Bussiness logic을 처리하는 Service 에서 객체의 Method를 활용하여 , 객체의 속성을 변경하는 작업이 주된 코딩이 된다 . 이러한 작업을 하기 위해서는 각 객체의 속성 이러한 속성을 변경하하거나 상태를 변경 할 수 있는 오퍼레이션(Method)를 잘 정의 해야 한다.
물리객체
물리적 객체는 실제로 사물이 존재하며 , 이를 클래스로 정의한 객체를 의미한다.
Ex)
자동차 렌탈 시스템: 자동차 ,고객 , 직원 , 사업장 , 정비소
급여 관리 시스템 : 직원 , 월급 통장
PC방 관리 시스템 : PC , 직원 공간, 책상 , 의자
개념객체
Service에 해당되며 , 이는 bussiness logic을 처리하는 부분을 의미한다. Business logic에ㅓ는 여러 객체를 서로 상호 작용하도록 하며 , 객체가 제공하는 Method를 통하여 객체의 송석을 변경 시킨다.
Ex)
사용자 관리 시스템
사용자 객체의 마지막 접속일자를 이용하여 ,계정만료 , 비밀번호 초기화 ,재등록 처리 하기 등의 로직
ATM 시스템
사용자의 Action에 따라 , 계좌 (Object)의 잔고의 속성을 변경 하는 , 입 /출금 로직
'객체지향 OOP' 카테고리의 다른 글
객체지향 이란? 4 - POJO (0) | 2021.05.05 |
---|---|
객체지향 이란? 3 - 객체지향 설계 5원칙 SOLID (0) | 2021.05.04 |
객체지향 이란 ? 2 - 객체지향의 4가지 특성 (0) | 2021.05.04 |