스프링 입문을 위한 자바 객체 지향의 원리와 이해 - Chapter 03. 자바와 객체 지향

김광현·2022년 12월 28일
0

챕터3에서는 객체 지향의 4대특성에 대해 기술되어있습니다.

그렇기에 내용 위주 보다는 개념에 대해 적겠습니다.

자바 = 객체 지향 언어

그러기에 자바 개발자 라면 객체 지향의 4대 특성을 알아야합니다.

이번 포스트에서는 객체 지향의 4대 특성에 대해 알아보겠습니다.

1. 추상화 [Abstraction] : 모델링

추상화란?
객체들의 공통적인 특징(속성, 기능)을 뽑아 이름을 붙이는 것이라고 생각하면 됩니다.

헷갈리는 2가지(클래스, 객체)를 예시로 들겠습니다.

클래스 : 분류에 대한 개념 > 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념입니다. Ex) 사람
객체 : 실체 > 유일무이한 사물 입니다. Ex) 대림대학교 컴퓨터정보학부 김광현

그렇다면 어째서 모델링이라고 하는것일까요?

그 이유는 간단합니다.
구체적인 것을 분해해서 관심 영역 (애플리케이션 경계) 에 있는 특성만을 가지고
재조합하는 행위가 마치 모델링과 비슷하기에 붙여진 별명입니다.


2. 상속 [Inheritance] : 재사용

상속화란? 또한 어째서 재사용일까?
상위 개념의 특징을 하위 개념이 물려받는 것 입니다.

ㆍ하위 클래스 - 상위 클래스
	ㆍ하위 클래스는 상위 클래스의 특성을 재사용하고, 확장합니다.
    ㆍ상위 클래스의 물려줄 특성이 많으면 많을수록 좋습니다. (LSP)
    
ㆍ인터페이스
	ㆍ다중 상속 대신에 도입한 기술입니다.
    ㆍ어떤 객체가 해야할 일을 정의하는 추상 자료형 입니다.
    ㆍbe able to = 구현이 가능한 기능을 넣기에 인터페이스 네이밍을 ~able로 하는경우가 많습니다. 
    ㆍ인터페이스는 구현을 강제할 메서드가 적으면 적을수록 좋습니다. (ISP)

3. 다형성 [Polymorphism] : 사용 편의

다형성이란?
어떤 변수, 메소드가 상황에 따라 제각각 다른 결과값을 내는 것을 뜻합니다.

사용 편의 인 이유는?
다형성을 극대화 하기 위해 추상클래스나 인터페이스를 이용하는것이 핵심입니다.

ㆍ오버라이딩
	ㆍ같은 메서드의 이름 / 같은 인자 목록 / 상위 클래스의 메서드를 재정의 하는 행위입니다.
    ㆍ상위 클래스 타입의 객체 참조 변수에서 자동으로 하위 클래스가 오버라이딩한 메소드를 호출해 줍니다.

ㆍ오버로딩
	ㆍ같은 메서드의 이름 / 같은 인자 목록 / 다수의 메서드를 중복 정의하는 행위입니다.

4. 캡슐화 [Encapsulation] : 정보 은닉

캡슐화란?
특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶은 것을 뜻합니다. (모듈화와 동의)

어떤 점이 정보 은닉일까?
정보를 객체 안에 포함시킨후, 그 정보에 대한 직접 접근은 허용하지 않는 대신,
필요에 따라 확인할 수 있는 인터페이스를 외부에 공개하는 방식입니다.

ㆍ접근 제어자
	ㆍpublic : 클래스 외부에서도 접근이 가능함
    ㆍprivate : 클래스 내부에서만 접근이 가능함
    ㆍprotected : 상속받은 자식 클래스에서만 접근 가능함
    ㆍdefault : 같은 패키지 내 클래스에서 접근이 가능함

자바 키워드와 OOP 4대특성 키워드 표(그림)

책에 아주 좋은 이미지가 하나 있어 긁어왔습니다.

기억 안날때 마다 들어와서 한번씩 보면 좋을것 같아 올립니다.


느낀점 알게된점

전 포스트와 비슷한 후기이지만, 앞으로 객체 지향언어를 많이 다룰 예정인 저에게 아주 뜻깊은 챕터이지 않았나 싶습니다.
몇몇 알고 있는 지식들도 있어 복습도 되었습니다.

해당 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 참고하여 작성되었습니다.

profile
대림대학교 컴퓨터정보학부

0개의 댓글