본문 바로가기
IT

[Java 개발자가 되기 위한 첫걸음 2] 04 캡슐화와 정보 은닉

by csongin 2022. 5. 28.
728x90
접근 제한자
클래스의 상호작용
Singleton Pattern

접근 제한자

접근 제한자를 활용하여 클래스의 변수와 메소드를 보호

접근 제한자 접근 범위
public 외부 클래스 어디서나
protected 상속 관계의 클래스(부모 / 자식 관계)
private 같은 클래스 내부
(default) 같은 패키지 내부

캡슐화

사용자에게 필요한 부분만 공개하는 것

private은 클래스 밖에서의 접근을 막는다.
class Student {
    private int number;
    int score;
    String name;
}

Student s = new Student();
s.number = 1001; // Error, private 변수는 접근 불가
s.score = 99; // 99 
s.name = "Java"; // Java

private 변수를 외부에서 사용하려면 private 변수에 접근하는 public 메소드를 제공해야 한다.

//get, set 메소드를 직접 제공

class Student {
    private int number;
    
    public int getNumber() {
        return number;
    }
    
    public void setNumber(int number) {
        this.number = number;
    }
}

접근 제한자를 사용하는 이유

잘못된 값 설정을 막을 수 있다.

class Student {
    private int number;
    
    public void setNumber(int number) {
        if( number < 1000 || number > 9999 ) {
            System.out.println("올바른 학번이 아닙니다.");
            return;
        }
        this.number = number;
    }
}

클래스 내부에서만 사용할 변수나 메소드는 private로 선언

 

접근 제한자가 없는 경우

default 접근 제한이며 같은 패키지 내에서만 접근 가능

 

public class

class는 기본적으로 default 속성

public class는 해당 자바 파일의 대표 클래스이며 파일명과 클래스 이름이 일치해야 한다.

 

클래스의 상호작용

객체지향 프로그래밍

클래스를 속성과 기능으로 설계하고 객체들의 상호작용으로 프로그램을 작성하는 것

 

자바 프로그래밍

자바는 객체지향 프로그래밍 언어이며 모든 것은 클래스 단위로 이루어진다.

 

Singleton Pattern

프로그램 전반에 이용될 인스턴스를 단 하나만 생성하는 디자인 패턴

ex) 교내 학생들을 관리하는 프로그램, 학생은 여러 명이지만 학교는 단 하나

 

1. private 생성자 만들기

class School {
    // 외부에서의 객체 생성을 금지함
    private School() {};
}

2. 클래스 안에 static 인스턴스 만들기

class School {
    // 프로그램 전체에서 사용할 유일한 인스턴스
    private static School instance;
}

3. 객체를 얻을 수 있는 public 메소드 제공

class School {
    // 외부에서의 객체 생성을 금지함
    public static School getInstance() {
        if(instance == null)
            instance = new School();
        return instance;
    }
}

4. 싱글턴 객체 사용

...
School mySchool = School.getInstance();

mySchool.addStudent("Java");
...

Singleton Pattern

디자인 패턴은 상황에 맞는 적용법일 뿐 고유한 장/단점은 없다.

인스턴스가 프로그램에 1개만 존재해야 하는 경우에 적용

반응형