32일차 객체지향 복습(스프링 입문을 위한 자바 객체 지향의 원리와 이해)

LeeJaewon·2022년 12월 1일
0

객체지향 복습.

객체지향의 4대 특성 캡!상추다

  1. 캡슐화 - 정보 은닉
  2. 상속 - 재사용
  3. 추상화 - 모델링
  4. 다형성 - 사용 편의

객체지향의 4대 특성은 클래스를 통해 구현된다. 또는 객체라고 할 수도 있다.

  • 사람은 클래스인가? 객체인가?
  • 김연아는 클래스인가? 객체인가?
  • 뽀로로는 클래스인가? 객체인가?
  • 펭귄은 클래스인가? 객체인가?

클래스와 객체를 구분하는 간단한 방법은 나이를 물어 보는 것이다.
클래스는 분류에 대한 개념이지 실체가 아니다. 객체는 실체다.

추상화는 모델링이다

추상 : 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.
추상화 : 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합 하는 것.

객체 : 세상에 존재하는 유일무이한 사물.
클래스 : 분류, 집합. 같은 속성과 기능을 가진 객체를 총칭하는 개념.

	클래스:객체 = 펭귄:뽀로로 = 사람:김연아 = 쥐:미키마우스

새로운 사람이 태어났다. 이름은 홍길동이다. 이걸 객체 지향 언어인 자바로 표현하면

	사람 홍길동 = new 사람();

이번엔 줄리엣이 태어났다

	사람 줄리엣 = new 사람();

사람이라는 클래스(분류)를 이용해 유일무이하고 새로운 하나의 사람(객체)을 만들어 홍길동(객체 참조 변수)이라는 이름을 지어준 것이다.

클래스를 이용해 객체(object)를 만들었다는 것을 강조할 때는 object라는 표현보다는 클래스의 인스턴스(instance)라는 표현을 쓴다.

객체(object) = 클래스의 인스턴스

사람이라는 클래스를 설계한다고 생각해보면 사람, 즉 객체들을 관찰해서 사람 객체들이 가진 공통된 특성을 찾게 된다.
시력, 몸무게, 혈액형, 키 등 명사로 표현되는 특성을 속성이라고 한다. 속성은 값을 가질 수 있다. 먹다, 자다, 일하다, 운전하다 등 동사로 표현되는 특성을 기능/행위라고 한다. 이러한 기능/행위는 수행 절차 또는 로직이라고 하는 것을 갖게 된다. 기능/행위를 객체 지향에서는 메서드라고 한다.

위 UML 다이어그램 처럼 속성과 기능은 너무 많아서 한번에 나열하기 힘들다. 그리고 한번에 나열할 필요도 없다. 여기서 애플리케이션 경계에 대해 생각해 볼 필요가 있다.
애플리케이션 경계 = 컨텍스트(Context) 라고도 하는데 애플리케이션 경계를 프로그래밍적인 질문으로 바꾼다면 이렇게 바꿀 수 있다. "내가 만들고자 하는 애플리케이션은 어디에서 사용될 것인가?"
사용될 곳이 병원인지 은행인지에 따라서 클래스의 설계, 필요한 속성, 메소드가 달라질 것이다.
여기서 객체지향의 특성인 추상화를 다시 생각해 보면

추상화 : 구체적인 것을 분해해서 관심 영역에 대한 특성만을 가지고 재조합하는 것.

위의 정의를 IT 용어를 이용해 바꿔 보면

추상화 : 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링

  • OOP의 추상화는 모델링이다.
  • 클래스:객체 = 펭귄:뽀로로
  • 클래스 설계에서 추상화가 사용된다.
  • 클래스 설계를 위해서는 애플리케이션 경계부터 정해야 한다.(어디에서 사용될 것인지)
  • 객체지향에서 추상화의 결과는 클래스다.

추상화의 개념을 넓게 본다면 아래 내용도 포함된다.

  • 상속을 통한 추상화, 구체화
  • 인터페이스를 통한 추상화
  • 다형성을 통한 추상화

자바는 객체 지향의 추상화를 클래스를 통해 지원하고 있다.

profile
한 걸음 한 걸음 꾸준히

0개의 댓글