캡슐화를 알아보고 실습해보자
안녕하세요.
고코더 입니다.
객체지향에 큰 특징중에 하나가 바로 캡슐화 입니다. 영어로는 Encapsulation 입니다. 봉인하다. 라는 뜻인데요. 중요한 데이터를 보존하고 보호하는 것입니다. 이름에서 느껴지듯 내부의 정보를 최소한으로 외부에 노출하는걸 의미합니다. 즉 내부에서 정의한 필드와 자료구조등에 대한 접근을 차단한다는 뜻입니다. 그리고 이를 메쏘드로 접근해서 사용해야 합니다.
- 객체의 필드와 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감츤다.
- 외부 객체는 제공하는 필드와 메소드만 이용할 수 있다.
- 캡슐화는 외부의 잘못된 사용으로 인해 객체가 침해 당하지 않게 한다.
- 노출을 위해 접근 제한자(Access Modifier)를 사용한다.
캡슐화 예제 소스
Gocoder class : 캡슐화 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class gocoder{ private String name; private String blog; public void setName(String name){ this.name = name; } public void setBlog(String blog){ this.blog = blog; } public void getName(){ return name; } public void getBlog(){ return blog; } } | cs |
gocoder 클래스는 멤버 변수들을 private를 사용해 은닉화 합니다. 그리고 이 변수들을 접근하기 위해서는 메소드를 활용하도록 코딩 합니다.
메소드를 이용한 캡슐화 사용 예제 소스
GocderNet class : 캡슐화를 사용하는 소스
1 2 3 4 5 6 7 8 9 10 11 12 | public class GocoderNet{ public static void main(String[] args) { gocoder gcn = new gocoder(); gcn.SetName(""); gcn.SetBlog("gocoder.tistory.com"); System.out.println("이름 :" +gcn.getName()); System.out.println("블로그 :" +gcn.getBlog()); } } | cs |
고코더넷이라는 클래스에서 고코더를 불러와 사용하는 예제이다.
메소드를 활용해서 gocoder에 간접적으로 접근해서 사용할 수 있다. 일명 new를 사용해서 객체를 만들어 사용한다.
마무리
캡슐화는 높은 응집도와 낮은 결합도가 필수
'IT_Developers > JAVA' 카테고리의 다른 글
JAVA - 자바 기본 자료형 (primitive data type) 란? (0) | 2020.03.11 |
---|---|
JAVA - String, StringBuffer, StringBuilder 차이점은? (0) | 2020.03.11 |
JAVA - 1부터 100까지 더 하는 프로그래밍 실습 (0) | 2020.03.07 |
JAVA - abstract class, interface / 추상클래스, 인터페이스의 차이점은? (0) | 2020.03.07 |
ecripse - "Project facet Java version * is not supported" / 프로젝트 자바 버전 변경 (1) | 2019.10.13 |
댓글