Annotation

(공식 문서: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/package-summary.html)

  • Spring에서는 Java의 reflection을 사용해서 기능을 실시
  • 자바의 기능을 유연하게 동작하기 위해 사용한다.

Object-Oriented

  • '객체지향 시스템은 협력하는 객체들의 연결망이다. Freeman, 2009'
    • 객체 ---- 협력 ----- 객체 ---- 객체 ----- 협력 ----- 객체
  • 객체? Object
    • 객체가 각각의 역할과 책임이 있고 메세지로 상호작용해서 협력해나가는 것.
    • 객체(역할/책임) ---- 메시지 ---- 객체(역할/책임) ---- 객체(역할/책임) ---- 메시지 ---- 객체(역할/책임)
    • 커피주문 기능
      • 바리스타는 주문을 받고, 커피를 만들 책임이 있음. 고객은 어떻게 커피를 만드는지 알 필요가 없음.
        • 바리스타
          • 이름 
          • 주문받기
          • 아아만들기
          • 라떼만들기
        • 고객
          • 주문하기
      • 고객 -- (주문 메세지 -> '요청') -- 바리스타
        • 바리스타 메시지 수신 커피 줌.
      • 고객 -- (주문 메세지 -> '요청') -- 요리사
    • 바리스타 역할
    • 고객 역할
    • 고객
      • 바리스타가 뭘 하든 알바 아님. 커피만 받으면 된다.(캡슐화)
    • 인터페이스
      • UI, GUI, CLI, API
      • 화면 -- 상호작용 -- 유저
    • 특징
      • 내부 어떻게 동작하는지 알 필요 없음.
        • 버튼 누르기(메시지) 전달 ---> 화면 제대로 동작할 책임 (역할)
      • 인터페이스만 유지하면, 내부에서는 바꾸는 거 외부에서는 알 필요 없음.
        • 인터페이스 메시지를 주고 상호작용
    • 객체의 인터페이스는 객체가 수신할 수 있는 메시지 목록으로 구성됨.
      객체가 어떤 메시지를 수신할 수 있는지가 객체가 제공하는 인터페이스의 모양을 빚는다.

실제

  • 고객 ooo님이 바리스타 A에게 커피주세요라고 메시지를 보냄
    • 요청을 받고(수신) 커피 줌.
    • 바리스타 - class
      • 바리스타 A - 객체 object(인스턴스)
      • 바리스타 B - 객체 object(인스턴스)
    • 고객 ooo - 바리스타 B에게도 주문 가능
  •  다형성
    • 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미함. 
    • 객체들이 대체가능성을 사용해서 설계 유연 재사용
    • 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나
    • 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있다.
    • ex) 객체 A, 객체 B는 다른 사람 but 같은 일을 한다(음료제조).
      고객이 A나 B에게 주문을 하면 A와 B는 다른 사람이지만 음료를 만드는 일은 동일.
  • 추상화
    • 해당 클래스의 필요한 정보, 동작을 모델링 해보는 것.
    • ex) class user(고객) { 전화번호, 주소, 쿠폰보유여부, 적립금, 위치정보/ 동작: 주문하기() }
      고객의 키와 몸무게는 없어도 된다.(필요없는 것과 필요한 것을 생각해보고 속성을 채운다.)
  • > spring

 

class 예시

힙스터바리스타 extends 바리스타 {

//overriding

함수 정의

}

  • 고객 입장에서는 힙스터바리스타 김씨에게 주문하나 바리스타 유씨에게 주문하나 똑같음.
  • 힙스터 바리스타
  • 인터페이스
    • 운전자 - 자동차
    • Class 자동차 포르쉐
    • Class 자동차 테슬라
    • Class 자동차 람보르기니
    • 운전자 - 포르쉐 A
      • 자동차 연소과정 알 필요 없음.
      • 운전만 하면됨.
    • 운전자 - 테슬라 B
      • 면허 다시 딸 필요 없음.
      • 운전만 하면됨.(각 역할에 충실)

 

'Framework > Spring' 카테고리의 다른 글

Spring 서버 만들기  (0) 2021.11.18

+ Recent posts