스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리.
1. 객체 지향의 4대 특성
- 캡슐화: 정보 은닉
- 상속: 재사용
- 추상화: 모델링
- 다형성: 사용 편의
2. 클래스 : 객체 = 붕어빵틀 : 붕어빵 X!!!!
클래스 객체명 = new 클래스();
- 붕어빵틀과 붕어빵이 아닌 개념과 실체로 설명했다. 예전에 배웠을 때 보다 훨씬 이해가 잘되는 문장이다.
3. 추상화 : 모델링
- 추상화는 모델링이다.
객체 지향의 추상화는 곧 모델링이다.
- 객체: 세상에 존재하는 유일무이한 사물
- 클래스: 분류, 집합 같은 속성과 기능을 가진 객체를 총칭하는 개념
- 추상화: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링
애플리케이션 경계 | 병원 애플리케이션 | 은행 애플리케이션 |
사람이란 | 사람은 환자. | 사람은 고객 |
클래스 모델링 | 시력 몸무게 혈액형 |
나이 직업 연병 |
- 추상화라는 단어에 어려움을 갖고 있었는데, 이번 기회에 어려움을 없앨 수 있었다. 이런 이해를 하고 코딩하면 코드가 더 깔끔해지지 않을까 생각한다.
- 책에선 미키마우스, 제리를 이용해서 추상화를 설명한다.
- 이 둘의 나이와 국적, 이름, 꼬리 등을 이용해서 추상화를 한다.
// 추상화 결과
public class Mouse {
public String name;
public int age;
public int countOfTail;
public void sing() {
System.out.println(name + "이 운다. 찍찍!");
}
}
- 추상화 이외에 T메모리에 대한 설명을 하는데, 코드가 한줄 한줄 진행될 때마다, 힙, 스택, 스태틱 영역에 메모리가 저장되었다가 가비지 콜렉터에 의해 지워지고 하는 과정을 이해할 수 있었다.
이름 | 다른 이름 | T 메모리 |
static 변수 | 클래스 [멤버] 속성, 정적 변수, 정적 속성... | 스태틱 영역 |
인스턴스 변수 | 객체 [멤버] 속성, 객체 변수... | 힙 영역 |
local 변수 | 지역 변수 | 스택 영역(스택 프레임 내부) |
- 참고
스태틱: 클래스 저장
스택: 메소드 저장
힙: 객체 저장
4. 상속: 재사용 + 확장
- 상속은 강력하다.
상속은 is a kind of이다.
- 예시
하위 클래스 is a kind of 상위클래스
펭귄 is a kind of 조류 -> 펭귄은 조류의 한 분류더,
- 꼭 기억하기
(1) 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것
(2) 객체 지향의 상속은 상위 클래스의 특성을 확장하는 것
(3) 객체 지향의 상속은 is a kind of 관계를 만족해야 함
5. 상속과 인터페이스
- 상속과 인터페이스 비교
(1) 상속
상속 관계: 하위 클래스 is a kind of 상위 클래스
해석: 하위 클래스는 상위 클래스의 한 분류다.
예제: 고래는 동물의 한 분류다.
(2)인터페이스
인터페이스: 구현 클래스 is able to 인터페이스
해석: 구현 클래스는 인터페이스할 수 있다.
예제: 고래는 헤엄칠 수 있다.
- 인터페이스는 "무엇을 할 수 있는"이라는 표현 형태로 만드는 것이 좋다.
예시
(1) Serializable: 직렬화할 수 있는
(2) Runnable: 실행할 수 있는
- 상위 클래스는 하위 클래스에게 물려줄 특성이 많을 수록 좋다!
- 인터페이스는 구현을 강제할 메소드의 개수가 적을수록 좋다!
'개발 > Java&Kotlin' 카테고리의 다른 글
[Java] 자바와 객체 지향 (2) (0) | 2022.08.03 |
---|---|
[JPA] 스프링 데이터 - 나머지 기능들 (0) | 2022.08.02 |
[JPA] 스프링 데이터 - 스프링 데이터 JPA 분석 (2) | 2022.08.01 |
[Spring] 프레젠테이션 층의 설계와 구현 (0) | 2022.07.28 |
[JPA] 스프링 데이터 - 확장 기능 (0) | 2022.07.28 |