객체 지향이란???

김상범·2021년 4월 28일
0
post-thumbnail

1. 객체지향의 등장

  • 이전에는 C언어 처럼 순서대로 명령어를 입력해서 실행하는 "절차 지향"이 주로 사용되었습니다.
  • 이전에 프로그램 단위가 크지 않아 간단한 로직을 순차적으로 처리하여 결과를 얻는데 그쳤습니다.
  • 프로그램이 복잡해지면서 유지보수 개발기간 등 다양한 부분에서 비 효율이 발생했습니다.

이런 어려움을 해결하기위해 선택한 방법이 효과적인 개발방식을 채택 하게 되었고, 이전에 사용하던 흐름에 따른 개발방식에 벗어나 추상화 상속 은닉 재사용 인터페이스 등 여러 곳에서 객체지향으로 개발을 시작했습니다.

2. 객체 설계하기

객체의 3 요소

  • 상태 유지 : 객체는 상태 정보를 저장하고 유지되어야 하며 이러한 속성은 변수로 정의 되어져야 한다. 속성값이 바뀜으로 객체의 상태가 변경될 수 있다.
  • 기능 제공 : 객체는 기능을 제공해야 한다. 이부분은 메서드의 제공으로 이루어진다. 캡슐화와 연관되어 있으며 외부로 직접 속성에 접근하여 변경하는 것을 삼가고 객체가 제공하는 메서드로 기능이 제공되어야 한다.
  • 고유 식별자 제공 : 각 객체는 고유한 식별자를 가져야 한다. 카드번호 계좌번호 등 같은 속성을 통해 각각 고유한 값을 줄 수 있으며 이는 이후 db에서 유니크 키 , 혹은 기본 키 로도 작성이 가능하다.

3. 물리 객체와 개념 객체

물리 객체

  • 물리 객체는 실제로 사물이 존재하며, 이를 클래스로 정의한 객체를 의미한다.

개념 객체

  • 이후 우리가 개발할 웹 시스템에서 서비스에 해당하며 이는 business logic 을 처리하는 부분을 의미한다.
  • EX) ATM시스템 사용자의 액션에 따라 계좌(object)의 잔고의 속성을 변경하는 입금 출금 Logic 처리

물리 객체와 개념객체

  • 객체 지향에서의 대부분 코딩은 각 객체에 기능을 정의하고 이를 business logic을 처리하는 서비스 에서 객체의 메서드를 활요하여 여러가지 조건을 확인하여 객체의 속성을 변경하는 작업이 주된 코딩이 됩니다.

4.객체 지향의 4대 특성

4-1. 캡슐화

  • 캡슐화는 객체의 속성을 보호하기위해 사용합니다.
  • 객체 지향 패러다임 중 하나인 추상화를 제공합니다. 실제 메서드가 어떻게 동작하는지 외부에서 이해할 필요가 없고 이를 단순 호출로만 해당 기능을 실행할 수 있고 이를 통해 객체 단위로 프로그램 설계가 가능합니다.
  • 재사용성 향상 됩니다. 한 객체에 관련된 속성 및 메서드는 모두 캡슐화 형태로 제공됨으로 객체의 모듈성과 응집도가 높아져 이를 통해 재 사용성이 높아집니다.
  • 앞선 이유로 인해 유지보수 효율성이 상승합니다.

메서드 설계

  • 속성이 선언 되었으나 이의 상태를 변경하는 메서드가 없다면 잘못된 선언 속성입니다. 자신이 가지고 있는 속성에 대해 해당 상태를 변경하는 기능을 제공해야 합니다.
  • 실물 객체가 가진 모든 기능을 제공해야 합니다.
  • 각각의 메서드는 서로 관련성이 있어야 합니다.
  • 객체안의 메서드는 객체안의 속성을 처리해야 하며 다른 객체를 받아 해당 객체에 정의된 속성을 직접 처리 하면 안됩니다.
  • Getter/Setter ,CRUD method ,Business Logic Method, 객체의 생명 주기 처리 Method, 객체의 영구성 관리 Method
  • 무결성 관리를 위해 getter setter를 제외하고 입력된 매개변수를 Validation을 한 후 실행하는 것을 원칙으로 합니다.

4-2 상속

  • 객체지향의 상속은 속성의 상속이 아닌 하위로 내려갈 수록 구체화 되는 것을 말합니다.
  • 프로그램 구조의 이해도를 향상 시킵니다.
  • 재사용성이 향상 됩니다. 상속을 이용하여 해당 클래스에 필요한 속성 메서드를 정의하지 않고 상속을 받아 사용이 가능합니다.
  • 확장성 향상 일관된 형태의 클래스 객체를 추가 할 수 있어 간단하게 프로그램 확장이 가능합니다.
  • 다형성 : 하나의 개체가 여러개의 형태로 변화하는 것을 말합니다. @Overriding

4-3 추상화

  • 객체지향에서의 추상화는 모델링입니다.
  • 앞서 배운 다형성 상속 모두 추상화에 속합니다.
  • 구체적으로 공통적인 부분 특정 특성을 분리해서 재조합 하는 부분이 추상화 입니다.
profile
아기개발자

0개의 댓글