객체지향 특성 - 캡슐화

2020. 1. 18. 09:22·OOP

객체지향 특성 중에 캡슐화에 대해 알아볼게요!

객체지향 4대 특성 중에 캡슐화에 대해 알아볼게요!

스프링 입문을 위한 자바 객체 지향의 원리와 이해- 김종민 지음 을 참고했습니다!

객체 지향의 4대 특성은 캡슐화, 상속, 추상화, 다형성 이 있어요. 캡! 상추다! 라고 외우면 잘 외워지니까 반드시 외우도록 해요.

캡슐화 : 정보은닉

자바에서 정보은닉이라 하면 접근제어자(private, default, protected, public)가 생각날거에요. 접근제어자의 범위 먼저 봅시다.

접근제어자 설명
public 모두가 접근 가능
protected 상속 / 같은 패키지 내의 클래스에서 접근 가능
default 같은 패키지 내의 클래스에서 접근 가능
private 본인만 접근 가능

접근제어자를 통해 외부에서 객체 내부 정보를 직접 접근, 조작하지 못하게 막는 것이 캡슐화의 하나의 예 입니다.

캡슐화의 특성

  1. 추상화 단위가 된다.

    • 추상화란 불필요한 부분을 숨기고 의미 있는 부분만 표현한다.
    • 캡슐화가 된다는건? 곧 추상가 된다는 것!
  2. 재사용의 단위가 된다.

    • 객체 지향에서 캡슐화의 단위는 클래스 단위로 정의하고, 클래스를 통해 객체 단위로 생성되어 움직인다.
  3. 정보은닉을 실현한다.

    • 캡슐화를 통해 인터페이스를 제외한 데이터와 함수들을 캡슐 속으로 숨기기 때문에 정보은닉이 실현된다.

정보은닉

다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것이에요. 캡슐화를 통한 정보은닉의 장점은 아래와 같아요.

  • 객체에 포함된 정보의 손상과 오용을 막을 수 있다.
  • 객체 내부의 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다.
  • 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지

객체 멤버, 정적 멤버

그리고 객체 멤버(인스턴스 멤버), 정적 멤버(클래스 멤버)를 사용할 때 아래와 같은 사항을 기억해놔요!

  • 상속을 받지 않았다면 객체 멤버는 객체를 생성한 후에 객체 참조 변수를 이용해 접근해야 한다.

  • 정적 멤버는 클래스명.정적멤버 형식으로 접근하는 것을 권장한다.

예를 들어 사람.인구 , 고양이.다리개수 형식으로 접근하는 것이 홍길동.인구수 , 키티.다리개수 형식으로 접근하는 것보다 권장돼요. 즉! 정적 멤버에 접근할 때는 객체참조변수명.정적멤버 형식으로 접근하기보다는 클래스명.정적멤버 형식으로 접근하라는 것이에요!

반응형
'OOP' 카테고리의 다른 글
  • 옵저버 패턴
  • 객체지향 특성 - 다형성
  • 객체지향 특성 - 상속
  • 추상화
Jadie Blog
Jadie Blog
  • Jadie Blog
    Jadie
    Jadie Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • OOP (7)
      • DDD (1)
      • JAVA (8)
      • Spring (12)
      • Kafka (1)
      • TDD,Test (4)
      • Basic (1)
      • ETC (1)
      • MySQL (0)
      • Javascript (0)
      • Spark (3)
      • Infra (2)
      • Algorithm (0)
      • Network (1)
      • Jobs (0)
      • 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 휴튼
  • 공지사항

  • 인기 글

  • 태그

    OAuth2 #Spring
    API문서
    HTTP #HTTPS
    slave
    JPQL
    localdatetime
    Spring #ApplicationContext
    의존역전원칙
    Spring
    우아한스터디
    추상클래스 #인터페이스
    java
    캡슐화
    OOP
    springboot
    Resilience4jFeign
    jpa
    JAVA #IO
    entitymanager
    객체지향
    메시징시스템
    Kafka
    Transactional Outbox
    글또
    객체지향사실과오해
    Test
    routingdatasource
    MASTER
    테스트
    MSA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jadie Blog
객체지향 특성 - 캡슐화
상단으로

티스토리툴바