객체지향 1. 객체지향이란?

min seung moon·2021년 6월 24일
0

Spring

목록 보기
2/50

1. 객체지향의 등장

  • 1970년 대에 들어서 용어가 나왔으며, 이는 벌써 50년이 넘어가는 역사를 가지고 있다
  • 이전 C언어 처럼 실행하고자 하는 순서대로 명령어를 입렵해서 실행되는 절차지향이 주를 이뤘으며, 이러한 방법으로 코딩하는 언어들을 절차지향 언어라고 한다
  • 이 때에는 프로그램의 단위가 크지 않고, 대체적으로 간단한 Logic을 순차적으로 처리하여 결과를 얻는데 그쳤지만, 점점 컴퓨터의 발전과 이로 인하여 프로그램의 복잡도가 증가하면서 이에 들어가는 유지보수, 개발기간 등 다양한 부분에서 비 효율이 발생
  • 이런 어려움을 해결하기 위해 선택한 방법이 효과적인 개발방식을 채택하게 되었고, 이는 이전에 사용하던 흐름에 따른 개발 방식에서 벗어남
  • 객체지향의 특성은 추상화, 상속, 정보 은닉, 재사용, 인터페이스 등 여러 곳에서 객체지향으로 개발을 시작
    • 캡슐화(Encapsulation)
    • 정보은닉(Information Hiding)
    • 추상화(Abstarction)
    • 상속성(Inheritance)
    • 다형성(Polymorphism)
  • 함수의 활용으로도 충분히 좋은 프로그램을 개발할 수 있었으나, 새로운 시각으로 바라보기 시작
  • 객체지향이란 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정의하고, 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계하기 시작
  • 이는 사물에 대해서는 객체(Object)라고 부르며, 해당 사물이 하는 행위(Method)로 정의하고 해당 사물이 가지는 속성을 변수(Variable)라고 정의
  • 실제 사물을 중심으로 설계를 하기 때문에 기존의 절차지향 보다는 조금 더 편리하게 설계가 가능해 졌다.
  • Java는 1995년 Sun Microsystems 작은 언어를 지향하는 객체지향 언어로 Java를 소개, 이는 당시 C++과 유사한 언어의 구문을 채택하였으나, C++이 가지고 있는, 시스템 레벨 접근, 메모리 직접 할당 및 해제, 포인터 등 복잡한 개발 방식을 사용하지 않았습니다
  • 또한 어떠한 운영체제에서도 자바 가상 머신만 있으면 독립적으로 실행 될 수 있도록 설계가 되어 있어서, 여러 플랫폼에서 호환성을 제공하느 장점을 가지고 있다

2. 객체 설계하기

  • 객체 == 사물 == Object

01. 객체의 3가지 요소

  • 상태 유지(객체의 상태)
    • 객체는 상태 정보를 저장하고, 유지되어저야 하며 이러한 속성(Variable)은 변수로 정의 되어져야 한다
    • 이러한 속성값이 바뀜으로 인하여, 객체의 상태가 변경 될 수 있어야 한다
  • 기능 제공(객체의 책임)
    • 객체는 기능을 제공해야 한다, 이 부분은 Method의 제공으로 이루어 진다
    • 이 부분은 캡슐화와 연관이 있으며, 외부로부터 직접 속성에 접근하여 변경하는 것이 아닌객체가 제공하느 Method로기능이 제공되어져야 한다
  • 고유 식별자 제공(객체의 유일성)
    • 각각의 객체는 고유한 식별자를 가져야 한다
    • 예를 들면 카드번호, 계좌번호, 자동차 번호와 같은 속성을 통해서 각각 고유한 값을 줄 수 있으며 이는 이후 DB에서 Unique Key, 또는 Primary Key로도 작성이 가능

3. 물리 객체와 개념 객체

01. 물리객체

  • 물리적인 객체는 실제로 사물이 존재하며, 이를 클래스로 정의한 객체를 의미
    • EX)
      • 자동차 렌탈 시스템 : 자동차, 고객, 직원, 사어방, 정비소 등등
      • 급여 관리 시스템 : 직원, 월급 통장 등등
      • PC방 관리 시스템 : PC, 직원, 공간, 책상, 의자 등등

02. 개념 객체

  • 이후 우리가 개발한 웹 시스템에서 Service에 해당되며, 이는 Business Logic을 처리하는 부분을 의미
  • Business Logic에서는 여러 객체를 서로 상호작용 하도록 하며, 객체가 제공하는 오퍼레이션 method를 통하여 객체의 속성을 변경
    • EX
      • 사용자 관리 시스템 : 사용자 객체의 마지막 접속일자를 이용하여, 계정만료, 비밀번호 초기화, 재등록 처리 등등
      • ATM 시스템 : 사용자(Object)의 Action에 따라, 계좌(Object)의 잔고의 속성을 변경하는 , 입금/출금 Logic 처리

03. 객체지향 객체 코딩

  • 객체지향에서의 대부분의 코딩은 각 객체에 기능을 정의하고 이를 Business Logic을 처리하는 Service에서 객체의 Method를 활용하여, 여러 가지 조건을 확인하여, 객체의 속성을 변경하는 작업이 주된 코딩이 된다
  • 이러한 작업을 하기 위해서는 각 객체의 속성(Variable) 이러한 속성을 변겨앟거나 상태를 변경할 수 있는 오퍼레이션(Method)을 잘 정의 해야 한다
profile
아직까지는 코린이!

0개의 댓글