캡슐화(encapsulation)

한바울·2023년 2월 6일
0

스터디

목록 보기
2/4

캡슐화란?

  • 개발하려는 기능이 해당 기능만을 위해 작동하게끔 설계하는 것
    (중복제거, 유지보수를 쉽게)
  • 멤버변수와 메서드 은닉 / 그렇다고 캡슐화가 정보은닉인것은 아님

접근제어자를 이용한 캡슐화

  • 클래스나 멤버, 주로 멤버에 접근제어자를 사용하는 이유는 클래스 내부에 선언된 데이터를 보호하기 위해서이다.
  • 데이터가 유효한 값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서 외부로부터의 접근을 제한하는 것이 중요하다.
  • 이를 데이터 감추기(data hiding)라고 하며, 객체지향개념의 캡슐화(encapsulation)에 해당하는 내용이다.
  • 또 다른 이유는 클래스 내에서만 사용되는, 내부 작업을 위해 임시로 사용되는 멤버 변수나 부분 작업을 처리하기 위한 메소드 등의 멤버들을 클래스 내부에 감추기 위함이다.
  • 외부에서 접근할 필요가 없는 멤버들은 private으로 지정하여 외부에 노출시키지 않음으로써 복잡성을 줄일 수가 있다.

스터디 개인 문제

  1. 좋은 설계는 낮은 응집도와 높은 결합도를 구성하는 것이다 (o,x)
    (X) 높은 응집도와 낮은 결합도여야 함

  2. 객체지향 기법에서 캡슐화에 대한 설명으로 틀린 것은?
    1) 캡슐화를 하면 객체 간의 결합도가 높아진다.
    2) 캡슐화된 객체들은 재사용이 용이하다.
    3) 프로그램 변경에 대한 오류의 파급 효과가 적다.
    4) 인터페이스가 단순해진다.

  3. 캡슐화는 객체의 ( ) 와 ( ) 을 높임으로써 객체의 ( )를 지향한다. 빈칸을 채워주세요.
    응집도, 독립성, 모듈화

  4. 정보은닉을 위해서 객체에 있는 데이터와 함수들을 모두 은닉시켜야 한다 (o/x), 그 이유는?
    (x) 외부로부터의 접근을 막기 위해 숨기는 작업을 진행하고, 함수까지 은닉하게 되면 데이터를 사용할 수 없기 때문

  5. 정보 은닉의 종류 중 캡슐화는 객체의 ( ) 및 ( )를 은닉하는 것이다.
    멤버변수(속성), 메서드(행위)

  6. 멤버변수의 경우 보통 ( )접근제어자를 사용하여 외부로부터의 직접적인 접근을 막고 ( )를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 한다.
    private, public(getter/setter)


  1. Special class
class Special{
    private Special special;

    Special(){

    }

    public Special getInstance(){
        if(special == null){
            return new Special();
        }
        return special;
    }
}

7-1. Special 클래스는 한 번만 생성하게끔 개발하려고 한다. 이러한 작업을 설계하는 디자인 패턴은?
SingleTon

7-2. 위 코드는 해당 디자인 패턴이 미적용된 상태이다. 수정해야할 줄번호와 수정된 코드를 쓰시오
3번 - private static Special special;
5번 - private Special(){}
9번 - public static getInstance(){ / 내용 / }


  1. Person class
public class Person {
    private String name;

}

8-1. Person 클래스의 name을 읽기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
public getName

8-2. Person 클래스의 name을 쓰기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
public setName

profile
몰두하는 사람

0개의 댓글