devlos
Devlos Archive
devlos
전체 방문자
오늘
어제
12-12 16:33

최근 글

  • 분류 전체보기 (107)
    • 프로젝트 (1)
    • MSA 설계 & 도메인주도 설계 (9)
    • 클라우드 컴퓨팅 & NoSQL (87)
      • [Cilium Study] 실리움 스터디 (8)
      • [KANS] 쿠버네티스 네트워크 심화 스터디 (12)
      • [T101] 테라폼 4기 스터디 (8)
      • [CICD] CICD 맛보기 스터디 (3)
      • [T101] 테라폼 기초 입문 스터디 (6)
      • [AEWS] Amazon EKS 워크숍 스터디 (7)
      • [PKOS] 쿠버네티스 실무 실습 스터디 (7)
      • Kubernetes (13)
      • Docker (7)
      • Redis (1)
      • Jenkins (3)
      • Terraform (1)
      • Ansible (4)
      • Kafka (1)
    • 프로그래밍 (7)
      • Spring Boot (5)
      • Broker (1)
    • 성능과 튜닝 (1)
    • ALM (0)
    • 기타 (2)

인기 글

태그

  • terraform
  • docker
  • 쿠버네티스 스터디
  • Kubernetes
  • 쿠버네티스
  • MSA
  • kOps
  • cilium
  • 도커
  • DevOps
  • t101 4기
  • CloudNet@
  • PKOS
  • 데브옵스
  • 테라폼

티스토리

최근 댓글

hELLO · Designed By 정상우.
devlos

Devlos Archive

객체지향 프로그래밍 정리  #1
프로그래밍/Spring Boot

객체지향 프로그래밍 정리 #1

2021. 11. 19. 10:23
반응형

이 글은 조영호 님의 저서 "객체지향의 사실과 오해"를 읽고 정리한 내용이다. 객체 지향에 대해 엄청 이해하기 쉽게 풀어주셨다고 생각한다. 글의 맨 아래 참고 서적에 대한 링크를 공유한다.


객체

  • 식별 가능한 개체 또는 사물을 의미한다.
  • 객체로 표현하는 것은 구체적인 사물(자동차) 일 수도 있고, 추상적인 개념(시간) 일 수도 있다. 하나의 개별적인 실체로 식별 가능한 물리적, 개념적인 사물은 어떤 것이라도 객체가 될 수 있다. 인간의 인지 능력 안에서 개수를 셀 수 있거나, 다른 사물과 구별할 수 있으며, 생성 지점을 알 수 있고, 독립적인 하나의 단위로 인식할 수 있는 모든 사물을 의미한다.
  • 객체는 상태(State), 행동(Behavior), 식별자(Identity)를 가진다.
  • 객체의 상태를 조회하는 작업을 Query, 객체의 상태를 변경하는 작업을 Command 라 한다.


객체.상태

  • 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현하는 것이다.
  • 객체의 상태는 객체에 존재하는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다. 아래에 나오는 행동을 통해 간접적으로 변경이 가능하다.


객체.행동

  • 외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동을 의미한다.
  • 객체는 행동의 결과로 자신의 상태를 변경하거나, 다른 객체에게 메시지를 전달할 수 있다. 객체는 행동을 통해 다른 객체와 협력에 참여하므로 행동은 외부에 가시적이다.


상태 캡슐화

  • 객체는 상태를 캡슐 안에 감춰둔 채 외부로 노출하지 않는다.
  • 이는 위에서 설명한 상태와 행동의 개념을 이해한다면 당연한 것이다. 객체가 외부에 노출하는 것은 행동뿐이고, 외부에서 객체에 접근할 수 있는 방법 역시 행동뿐이다. 메시지 송신자는 수신자의 상태 변경에 대해 전혀 알지 못해도 행동할 수 있으므로, 행동을 경계로 캡슐화하면 객체의 자율성이 높아진다. 객체의 자율성이 높아진다면 스스로 판단하고 스스로 결정할 수 있기 때문에 객체의 지능이 높아진다. 협력에 참여하는 객체들의 지능이 높아지면 협력 과정은 유연하고 간결해진다.


식별자

  • 어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 프로퍼티다.
  • 값은 식별자를 가지지 않기 때문에, 상태를 이용한 동등성 검사를 통해 두 인스턴스를 비교해야 한다. 상태는 동등성(비슷한지의 여부)을 판단할 수 있지만 동일성(같은지의 여부)을 판단할 수 없다. 왜냐하면 시간에 따라 객체의 상태가 변하기 때문이다. 객체는 상태가 변경될 수 있기 때문에 두 인스턴스의 동일성을 확인하기 위해 식별자를 이용한다.
  • 식별자를 기준으로 객체를 분류하면, 식별자가 있는 객체는 Reference Object, Entity이고, 식별자가 없는 객체는 Value Object가 된다.


참고자료
[1] 객체지향의 사실과 오해 | 2015 | 조영호 | 링크

객체지향의 사실과 오해 - 교보문고

역할, 책임, 협력 관점에서 본 객체지향 | 현재의 소프트웨어 개발에 있어 가장 중요한 패러다임이 객체지향이라는 사실에 대부분 이견이 없을 것이다. 절차형 패러다임을 접목한 C++나 함수형

www.kyobobook.co.kr

반응형

'프로그래밍 > Spring Boot' 카테고리의 다른 글

Springboot 프로젝트 생성하기  (0) 2021.08.16
IntelliJ 단축키  (0) 2021.08.08
Lombok  (0) 2021.08.08
Annotation 이란?  (0) 2021.08.08
    devlos
    devlos
    안녕하세요, Devlos 입니다. 새로 공부 중인 지식들을 공유하고, 명확히 이해하고자 블로그를 개설했습니다 :) 여러 DEVELOPER 분들과 자유롭게 지식을 공유하고 싶어요! 방문해 주셔서 감사합니다 😀 - DEVLOS -

    티스토리툴바