주제
- OOP 4가지 특성
목차
내용
용어 정리 👊🏻
클래스
- 객체를 찍어내기 위한 도구 라기 보다는 분류에 대한 개념이다.
추상화를 통해 현실 세계의 대상을 컴퓨터 세계에 옮긴 것으로 집합으로써의 표현한 방식
이다.
설계도
라고도 불리운다.
객체
- 컴퓨터 세계로 표현한 클래스가 실제 컴퓨터세계에서 사용되어 질 수 있는 형태이다.
객체 지향의 4가지 특성
캡
슐화
- 한 곳에 모아두어서 관리하는 것으로 유지 보수를 편하게 해준다.
- 상태와 행위를 한곳에 모음으로써 관리하는 데 용이하다라는 특징이 있다.
- 또한 정보 은닉 기능을 제공하고 있어 외부에서 접근하지 못하도록 제한 할 수 있다. 정보 은닉 에 대한 정도 레벨은
public > default > protected > private
(범위가 좁아짐)- 정보은닉을 제공함으로써 다른 클라이언트에서 변경할 여지조차 주지 않아 변경에 대한 스코프를 짧게 유지할 수 있어 불변 객체의 범를 보장할 수 있다.
public | 다 가능 |
protected | 클래스, 패키지, 상속 |
default | 클래스, 패키지 |
private | 클래스 |
상
속
- 하위 개념이 상위 개념의 특징을 물려받음으로써 확장하고 재사용하는 의의를 둔 특징이다.
- 해당 상속을 통해 멤버 변수나 메소드를 그대로 물려받아 사용할 수 있으므로 코드를 재사용할 수 있는 특징을 가지고 있습니다.
- is - a 라는 관게라고 많이 보시게 될것이지만, is kind of에 더 가깝다.
- is-a 는 ~은 ~이다 로서 예를 들어 표현하자면 부모님 사이애 나와 동생은 부모님의 특성을 받아 구체화한 클래스로서 “나는 부모님이다” 라고 표현하기에는 부적절 하다 오히려 나는 부모님의 특징을 물려받은 종류라면 더 적절하게 표현할 수 있을 것이다.
추
상화
- 관심영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것으로써 모델링 이라고도 불리운다.
- 비로 한줄의 정의 이지만 해당 특징은 매우 중요하다.
- why ❗
- 해당 특성을 이용하지 못하면 현실세계의 대상들을 컴퓨터 세계 로 옮 길 수없다.
- 유지보수 측면에서 추후에 엄청난 영향이 갈 수 있는 존재이기도 하다.
다
형성
- 인터페이스 관점에서 무슨 행동을 한다는 동일성을 보장하면서 실제적인 구현체들에 의해 다양하게 사용되어 질 수 있는 특징을 가진 객체지향의 특징이다.
- is able to 관계 동일한 행위를 보장할 수 있게 된다.
- 또한 상속을 통해 상위 개념에서 가지고 있던 메소드를 오버라이드 하여 다른 행위를 기대할 수 있다.
- ex) 핸드폰의 키패드 자판이 게임에서 방향키 혹은 공격키가 될 수 있는 것을 예시로 들 수 있다.
➕상속과 다형성의 관계
- 상위 클래스의 물려줄 특성이 풍부하면 풍부할 수 록 좋고, 인터페이스는 구현을 강제할 메서드의 개수가 적을 수록 이상적힌 방향이다.
➕오버라이딩과 오버로딩의 구분
- 오버라이딩 : 상위 클래스의 메서드와 같은 시그니처로 메소드 바디를 재정의 하는 것이다. 즉 실제 행위는 다를 수 있다는 뜻이다.
- 오버로딩 : 같은 메소드이름을 가진 행위를 다른 시그니처로 포현할 수 있게 하는 형태이다. 즉 중복된 이름을 가지지만 행위를 하기 위해 조건(매개변수 개수, 타입)이 다를 수 있다는 것이다.