[JAVA] 은닉성(getter, setter) / 캡슐화 / 자바빈즈

형이·2023년 7월 9일
0

JAVA

목록 보기
7/19
post-thumbnail

📝 Day 5-(2)

🖥️ 1. 은닉성

1-1. 은닉성이란

📎 멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법

📎 객체를 사용하는 측의 실수로 인한 기능의 오작동을 방지하기 위해 클래스의 일부를 숨기는 처리를 말한다

1-2. 적용방법

📎 변수의 이름이나 메서드의 이름 앞에 "접근 한정자"를 지정

	public
		→ 모든 곳에서 접근 가능
		→ 일반적으로 모든 메서드 앞에 명시

	private
		→ 클래스 안에서만 사용 가능하고, 객체를 통해 접근할 수 없음
		→ 일반적으로 모든 멤버변수 앞에 명시

	protected
		→ 현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는 클래스와
        하위 클래스에서 접근 가능하지만 잘 사용하지 않음

	default
		→ 접근 한정자를 명시하지 않은 경우, 현재 클래스 내의 다른 자원이나
        동일 패키지 내의 다른 클래스에서 접근 가능

1-3. getter / setter

📌 멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라지므로 메서드틀 통하여 간접적으로 접근하는 방법이 마련되어야 한다

📌 getter, setter는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드들을 의미하는 용어

 📎 getter : 은닉된 멤버 변수의 값을 리턴하기 위한 메서드

 📎 setter : 파라미터로 전달된 값을 멤버변수에 복사하기 위한 메서드

	String userName
	· getter : String getUserName()
	· setter : void setUserName(String userName) 

 	int userAge 
	· getter : int getUserAge()
	· setter : void setUserAge(int userAge)

📌 get, set 접두사 뒤에 변수 이름을 첫 글자가 대문자인 형태로 명시

📌 getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시

📌 setter는 연결된 멤버변수의 데이터 타입을 파라미터형으로 명시

1-4. 클래스와 접근한정자

📎 클래스에 접근 한정자를 지정한 경우

	public
		→ 객체 생성 가능
		→ 서로 다른 소스코드에 정의된 클래스끼리도 객체 생성이 가능

	private
		→ 클래스에 적용할 수 없다

	protected
		→ 클래스에 적용할 수 없다

	default
		-> 동일한 소스코드에 정의된 클래스끼리만 객체로 생성 가능
           (지금까지의 예제 형태)

1-5. 클래스의 분리

📎 하나의 소스코드에서 프로그램의 모든 기능을 구현하게 되면 유지보수에 비효율적이므로 기능 단위로 소스코드를 분리해야 한다

📎 소스코드가 분리된 클래스끼리는 public이 명시되어야만 서로 객체 생성이 가능

📎 일반적으로 클래스 정의에는 public 접근 한정자만 사용

📎 하나의 소스코드에는 하나의 public 클래스만 존재할 수 있다


🖥️ 2. 캡슐화

📎 접근 제한자는 객체지향의 캡슐화 그리고 그를 통한 코드 은닉화를 위한 도구로, 데이터를 외부로부터 숨기거나 접근을 막고 또는, 접근에 처리를 강제화

📎 더 관리하기 쉽고 코드를 명확히 하기 위함

📎 정보를 외부에 은닉하여 외부에서는 해당 집합의 세부 내용에 집중하지 않도록 함

📎 외부에서 멤버를 엑세스 하는 방법을 지정할 수 있도록 직접 접근을 막거나 접근 전 부가적인 처리를 요구함


🖥️ 3. 자바빈즈 (Java Beans)

📎 자바 언어에서 사용하는 복합적 데이터 표현의 최소 단위로써 재사용 가능한 컴포넌트(구성요소)를 생성할 수 있다

📎 자바빈즈 클래스로써 작동하기 위해서는 객체 클래스는 명명법 / 생성법 그리고 행동에 관련된 일련의 관례를 따라야만 한다

📎 생성자를 가지고 있어야 한다

📎 클래스의 속성들은 get, set 혹은 표준 명명법을 따르는 메서드들을 사용해 접근할 수 있어야 한다

0개의 댓글