본문 바로가기
Back-End/Spring Boot

예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해

by newny 2023. 4. 13.
반응형

객체 지향의 4대 특성

캡! 상추다

  • 캡슐화(Encapsulation) : 정보 은닉
  • 상속(Inheritance) : 재사용, 확장, 세분화 (extends)
  • 추상화(Abstraction) : 모델링
  • 다형성(Polymorphism) : 사용 편의

 

클래스와 객체의 구분

  • 객체: 세상에 존재하는 유일무이한 사물 → 따라서 속성에 값을 가지고 있음
  • 클래스: 분류, 집합, 같은 속성과 기능을 가진 객체를 총칭하는 개념 → 따라서 속성에 값을 가질 수 없다
  • 클래스와 객체의 구분은 개념과 실체로 구분할 수 있다. 예를들어 사람과 김연아가 있을 때 사람은 '개념'이고 김연아는 '실체' 이다. 클래스는 '개념', 객체는 '실체' 이므로 '클래스:객체 = 사람:김연아'의 관계가 성립된다.
  • 사람 줄리엣 = new 사람(); => 새로운 사람을 만들어 줄리엣이라는 이름을 붙여줌

 

추상화

  • 추상 : 여러가지 사물이나 개념에서 공통되는 특성이나 속성따위를 추출하여 파악하는 작용
  • IT 용어를 이용해 바꾼 추상화의 정의

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

→ 따라서 객체지향에서 추상화는 곧 모델링이다.

  • 모델 :  실제 사물을 정확히 복사하는것이 아니라 목적에 맞게 관심 있는 특성만을 추출해서 표현하는것 (ex. 지구를 모델링한 지구본, 태양계를 모델링한 태양계 모델)
OOP의 추상화는 모델링이다.
클래스 설계에서 추상화가 사용된다.
클래스 설계를 위해서는 애플리케이션 경계부터 정해야한다.
객체지향에서 추상화의 결과는 클래스다.

 

static

main() 메소드가 시작되기 전에 메모리에 올라가서, main() 메소드가 종료된 후 메모리에서 내려옴

클래스 특성상 속성에 값을 가질 수 없지만, 클래스의 모든 객체들이 같은 값을 갖는 멤버변수가 있다면 정적(static) 멤버 변수로 선언하여 메모리에 한번만 올려서 사용할 수 있다.

 

상속

잘못 번역되어 상속이라 사용하고 있으나, 실제 그 의미는 확장이다

조직도나 계층도의 의미가 아닌 분류도의 의미이다 (ex. 포유류는 동물의 특성을 확장, 고래는 포유류의 특성을 확장)

 

객체의 참조변수명은 유일무이하게

예)

새 bird = new 새(); → X

새 bird_a_bird = new 새(); -> O

반응형

댓글