의견.png

"캡슐화"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (같이 보기)
1번째 줄: 1번째 줄:
 
'''캡슐화'''(capsule化) 또는 '''인캡슐레이션'''(encapsulation)이란 [[객체 지향 프로그래밍]](OOP)에서 [[객체]]의 데이터와 기능을 하나로 묶고 외부에 노출되지 않도록 숨김 처리하는 것을 말한다. [[변수]], [[메소드]], [[클래스]]에 대해 접근 제어자를 사용함으로써 캡슐화를 할 수 있다.
 
'''캡슐화'''(capsule化) 또는 '''인캡슐레이션'''(encapsulation)이란 [[객체 지향 프로그래밍]](OOP)에서 [[객체]]의 데이터와 기능을 하나로 묶고 외부에 노출되지 않도록 숨김 처리하는 것을 말한다. [[변수]], [[메소드]], [[클래스]]에 대해 접근 제어자를 사용함으로써 캡슐화를 할 수 있다.
 +
 +
==목적==
 +
캡슐화는 외부로부터 데이터를 보호하기 위해 외부에는 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해<ref>예스30, 〈https://soozl91.tistory.com/48 제어자 public, protected, private]〉, 《개인블로그》, 2020-02-07</ref> 특정 속성이나 메소드를 사용자가 사용할 수 없도록 은닉화한 것이다. 캡슐화는 객체의 필드(속성), 메소드를 하나로 묶어 실제 구현 내용을 외부에 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 제공하는 필드와 메소드만 이용할 수 있다. 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인한 객체의 손상을 방지하기 위함이다. [[자바]]에서는 캡슐화된 멤버를 [[접근제어자]]를 사용하여 노출시킬지 숨길지 결정할 수 있다.<ref>재희, 〈[https://webclub.tistory.com/156 객체지향 프로그래밍의 캡슐화, 상송, 다형성]〉, 《개인블로그》, 2016</ref>
 +
  
 
== 특징 ==
 
== 특징 ==
5번째 줄: 9번째 줄:
 
* [[메소드]]의 구현 방법이 바뀌거나 [[객체]] 내의 데이터가 바뀌어도 다른 객체에는 영향을 주지 않아 독립성이 보장된다.
 
* [[메소드]]의 구현 방법이 바뀌거나 [[객체]] 내의 데이터가 바뀌어도 다른 객체에는 영향을 주지 않아 독립성이 보장된다.
  
== 접근 제어자 ==
+
== [[접근제어자]] ==
* [[퍼블릭]](public) : 클래스 외부에서도 접근할 수 있다.
+
접근 제어자는 [[멤버]] 또는 [[클래스]]에 사용되어 외부에서 접근하지 못하도록 제한하는 역할을 한다. 접근제어자는 생략할 수 있으며 생략 시 자동으로 [[디폴트]](default)로 지정된다. 접근제어자가 사용될 수 있는 곳은 [[클래스]], [[멤버변수]], [[메소드]], [[생성자]]이다.<ref>shaking shaking, 〈[https://88240.tistory.com/448 JAVA 접근제어자(Access Modifier)]〉, 《개인블로그》, 2016</ref>
* [[프로텍티드]](protected) : 다른 [[클래스]]에서는 접근할 수 없지만, [[상속]] 받은 [[자식 클래스]]에서는 접근이 가능하다.
+
 
* [[프라이빗]](private) : [[클래스]] 내부에서만 접근이 가능하다.
+
===[[퍼블릭]](public)===
 +
접근 제한이 없다. 다른 패키지, 다른 클래스에서 접근할 수 있다.
 +
 
 +
===[[프로텍티드]](protected)===
 +
같은 [[패키지]] 내에서 접근할 수 있다. 다른 [[클래스]]에서는 접근할 수 없지만, [[상속]] 받은 [[자식 클래스]]에서는 접근이 가능하다.
 +
 
 +
===[[디폴트]](default)===
 +
같은 [[패키지]]내에서만 접근이 가능하다.
 +
 
 +
===[[프라이빗]](private)===
 +
같은 [[클래스]] 내부에서만 접근할 수 있다.
 +
 
 +
 
 +
{{각주}}
 +
 
 +
 
 +
==참고자료==
 +
*예스30, 〈https://soozl91.tistory.com/48 제어자 public, protected, private]〉, 《개인블로그》, 2020-02-07
 +
*재희, 〈[https://webclub.tistory.com/156 객체지향 프로그래밍의 캡슐화, 상송, 다형성]〉, 《개인블로그》, 2016
  
 
== 같이 보기 ==
 
== 같이 보기 ==

2020년 8월 11일 (화) 10:34 판

캡슐화(capsule化) 또는 인캡슐레이션(encapsulation)이란 객체 지향 프로그래밍(OOP)에서 객체의 데이터와 기능을 하나로 묶고 외부에 노출되지 않도록 숨김 처리하는 것을 말한다. 변수, 메소드, 클래스에 대해 접근 제어자를 사용함으로써 캡슐화를 할 수 있다.

목적

캡슐화는 외부로부터 데이터를 보호하기 위해 외부에는 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해[1] 특정 속성이나 메소드를 사용자가 사용할 수 없도록 은닉화한 것이다. 캡슐화는 객체의 필드(속성), 메소드를 하나로 묶어 실제 구현 내용을 외부에 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 제공하는 필드와 메소드만 이용할 수 있다. 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인한 객체의 손상을 방지하기 위함이다. 자바에서는 캡슐화된 멤버를 접근제어자를 사용하여 노출시킬지 숨길지 결정할 수 있다.[2]


특징

  • 객체 제공자와 이용자를 정확하게 나누며, 데이터의 직접 접근을 제한하므로 정보 은폐, 보안 등의 장점을 가진다.
  • 메소드의 구현 방법이 바뀌거나 객체 내의 데이터가 바뀌어도 다른 객체에는 영향을 주지 않아 독립성이 보장된다.

접근제어자

접근 제어자는 멤버 또는 클래스에 사용되어 외부에서 접근하지 못하도록 제한하는 역할을 한다. 접근제어자는 생략할 수 있으며 생략 시 자동으로 디폴트(default)로 지정된다. 접근제어자가 사용될 수 있는 곳은 클래스, 멤버변수, 메소드, 생성자이다.[3]

퍼블릭(public)

접근 제한이 없다. 다른 패키지, 다른 클래스에서 접근할 수 있다.

프로텍티드(protected)

같은 패키지 내에서 접근할 수 있다. 다른 클래스에서는 접근할 수 없지만, 상속 받은 자식 클래스에서는 접근이 가능하다.

디폴트(default)

같은 패키지내에서만 접근이 가능하다.

프라이빗(private)

같은 클래스 내부에서만 접근할 수 있다.


각주

  1. 예스30, 〈https://soozl91.tistory.com/48 제어자 public, protected, private]〉, 《개인블로그》, 2020-02-07
  2. 재희, 〈객체지향 프로그래밍의 캡슐화, 상송, 다형성〉, 《개인블로그》, 2016
  3. shaking shaking, 〈JAVA 접근제어자(Access Modifier)〉, 《개인블로그》, 2016


참고자료

같이 보기


  의견.png 이 캡슐화 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.