HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
🥇
OOP 4대 원칙
🥇

OOP 4대 원칙

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🌞
OOP 4대 원칙
주제내용객체 지향의 4대 특성 - 캡 ! 상추다 클래스 vs 객체 = 붕어빵틀 vs 붕어빵? 퀴즈캡슐화 : 정보 은닉?정보 은닉정리해보자면상속 : 재사용과 확장성정리하기추상화 : 모델링다형성 : 사용 편의성
 

주제

상추다 캡 일까 캡상추다일까 상추가 캡일까 캡추상다 다추캡상 상캡다추 ㅋ

내용

삼겹살을 먹을 때 무엇보다 중요한 요소는 바로 좋은 상추다. 필자처럼 삽겹살을 상추에 싸먹지 좋아하는 마니아들은 좋은 상추를 만났을 때 이렇게 외친다. “와우.. 캡! 상추다" - 스프링 입문을 위한 자바 객체 지향의 원리와 이해 -

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

notion image
 

클래스 vs 객체 = 붕어빵틀 vs 붕어빵?

  • 클래스 객체명 = new 클래스(); ⇒ 납득 가능
  • 붕어빵틀 붕어빵 = new 붕어빵틀(); ⇒ 납득 가능? 불가능

퀴즈

  • 사람은 클래스인가? 객체인가?
  • 김연아는 클래스인가? 객체인가?
  • 뽀로로는 클래스인가? 객체인가?
  • 펭귄은 클래스인가? 객체인가?
⇒ 클래스 : 객체 = 펭귄 : 뽀로로 = 사람 : 김연아
 
notion image
  • 클래스와 객체의 관계 - 분류(class)와 사물(Object)의 관계
 

캡슐화 : 정보 은닉?

  • 접근 제어자
    • public : 모두가 접근 가능
    • protected : 상속 / 같은 패키지 내의 클래스에서 접근 가능
    • default : 같은 패키지 내의 클래스에서 접근 가능
    • private : 본인만 접근 가능
 
  • 캡슐화
    • 데이터를 공용 메소드를 통해서만 접근할 수 있도록 허용하는 방법이다.
    • 관련된 요소들을 묶음으로써 캡슐 내부와 외부를 구별 짓기 때문에 캡슐 내에 속한 부분과 캡슐 외에 속한 부분들에 대해 구분이 명확하게 되어있다.
    • 특정 객체 속에 있는 데이터와 함수들을 다른 객체 속에 있는 데이터와 함수들과 구별이 이뤄진다는 의미이다.
  • 캡슐화의 특성
    • 추상화 단위가 된다.
      • 캡슐화는 관련된 데이터와 함수들을 하나의 캡슐 단위로 묶어주기 때문에 추상화 단위가 된다.
    • 재사용의 단위가 된다.
      • 객체지향에서 캡슐화의 단위는 클래스 단위로 정의하고, 클래스를 통해 객체 단위로 생성되어 움직인다.
      •  

정보 은닉

  • 모든 객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법
  • 정보 은닉의 목적
    • 코드가 구체적인 것들에 의존하는 것을 막아줌으로써 객체 간의 구체적인 결합도를 약화시켜 기능의 교체나 변경이 쉽도록 함. ⇒ 유연성
    • 동일한 타입의 다른 구현 객체들을 교체함으로써 동적 기능 변경이 가능함
    • 연동할 구체적인 구현이 없는 상태에서도 정확한 연동 코드의 생성이 가능함
    • 코드를 적절히 모듈화하여 주어진 코드의 일부를 이해하기 위해 필요한 정보의 양이 적기 때문에 코드를 이해하기 쉽다.
    • 상호 교환이 필요한 정보의 양이 최소화하면서 독자적으로 각 모듈에 대한 작업을 진행할 수 있기에 개발 기간을 단축시킬 수 있다.

정리해보자면

  • 캡슐화는 관련된 요소들을 묶음으로써 캡슐 내외부를 구별 짓는 장치이다.
    • 특정 객체 속에 있는 데이터와 함수들이 다른 객체 속에 있는 데이터와 함수들과 구별된다.
    • 객체들 끼리 서로 상대방의 인터페이스만 볼 수 있다.
    • 각 객체가 가지고 있는 데이터는 외부에서 볼 수 없다.
  • 정보 은닉은 캡슐내의 요소들에 대한 세부 구현사항을 외부에 숨기는 장치
    • 캡슐화되어 있는 데이터와 함수에 대해 외부에서 함수가 어떻게 구현되어 있는지 세부사항을 숨긴다.
    • 캡슐화가 되어 있다고 해서 반드시 정보은닉이 되는 것은 아니다.
 

 

상속 : 재사용과 확장성

notion image
  • 상위 클래스의 특성을 하위 클래스에서 상속하고 더 필요한 특성을 추가, 확장해서 사용할 수 있다.
  • 상위 클래스 쪽으로 갈수록 추상화, 일반화 되었다.
  • 하위 클래스 쪽으로 갈수록 구체화, 특수화 되었다.
public class 포유류 extends 동물 { ... }
  • extends를 사용하여 확장할 수 있다.
  • ~ is a 관계를 만족한다
    • 포유류는 동물이다. 고래는 포유류다.
  • 더 정확하게 ~ is a kind of
    • 고래는 포유류의 한 분류이다.

정리하기

  • 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것이다.
  • 객체 지향의 상속은 상위 클래스의 특성을 확장하는 것이다.
  • 객체 지향의 상속은 is a kind of 관계를 만족해야 한다.
 

추상화 : 모델링

notion image
  • IT 용어로 바꿔 보자면 ?
    • 추상화란 구체적인 것을 분해해서 관심 영역에 있는 특성만 가지고 재조합하는 것
    • 모델링
  • 모델링
    • 실제 사물을 정확히 복제하는 것이 아닌 목적에 맞게 관심 있는 특성만을 추출해서 표현하는 것
 

다형성 : 사용 편의성

public class 펭귄 extends 동물 { @Override public void showName() { ... } // 오버 로딩 public void showName(String name) { ... } }
  • 오버라이딩
    • 같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 메서드를 재정의
  • 오버로딩
    • 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의
  • 사용 편의성 ?
    • 함수명 하나를 가지고 인자 목록만 달리하면 되니 사용에 편리하다.
    • 하위 클래스가 재정의한 메서드를 알아서 호출해 줌으로 형변환이나 instanceof 연산자를 사용해서 하위 클래스가 무엇인지 신경 쓰지 않아도 된다.