Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 JShell에서 캡슐화(Encapsulation) 개념 구현하는 방법

JShell이란 무엇인가?

Java Shell(JShell)은 Java 언어를 학습하고 Java 코드의 프로토타입을 빠르게 작성하기 위한 REPL(Read-Eval-Print Loop) 대화형 도구입니다. 사용자가 입력하는 선언문(declarations), 문장(statements), 표현식(expressions)을 즉시 평가하여 결과를 바로 출력하며, 별도의 컴파일 과정 없이 명령줄에서 간편하게 실행할 수 있습니다.

캡슐화(Encapsulation)란?

캡슐화는 Java의 핵심 객체지향 개념 중 하나로, "민감한(sensitive)" 데이터를 외부 사용자로부터 숨겨 보호하는 역할을 합니다. 캡슐화를 구현하려면 다음과 같은 원칙을 따라야 합니다.

  • 클래스 변수는 private으로 선언하여 외부에서 직접 접근하지 못하도록 합니다.
  • private 변수의 값을 읽고 수정할 수 있도록 public getter/setter 메서드를 제공합니다.

Employee 클래스로 캡슐화 구현하기

아래 코드 스니펫은 Employee 클래스에 캡슐화 개념을 적용한 예입니다. 모든 필드를 private으로 선언하고, 생성자와 public getter 메서드를 통해 안전하게 접근할 수 있도록 구성했습니다.

jshell> class Employee {
...> private String firstName;
...> private String lastName;
...> private String designation;
...> private String location;
...> public Employee(String firstName, String lastName, String designation, String location) {
...> this.firstName = firstName;
...> this.lastName = lastName;
...> this.designation = designation;
...> this.location = location;
...> }
...> public String getFirstName() {
...> return firstName;
...> }
...> public String getLastName() {
...> return lastName;
...> }
...> public String getJobDesignation() {
...> return designation;
...> }
...> public String getLocation() {
...> return location;
...> }
...> public String toString() {
...> return "Name = " + firstName + ", " + lastName + " | " +
...> "Job designation = " + designation + " | " +
...> "location = " + location + ".";
...> }
...> }
| created class Employee

위 코드에서 firstName, lastName, designation, location 네 개의 필드는 모두 private으로 선언되어 있어 클래스 외부에서 직접 값을 변경할 수 없습니다. 대신 getFirstName(), getJobDesignation() 등의 public 메서드를 통해서만 데이터에 접근할 수 있습니다.

객체 생성 및 결과 확인

아래 코드 스니펫에서는 Employee 클래스의 인스턴스를 생성한 후, toString() 메서드를 통해 이름(name), 직무(designation), 위치(location) 정보를 출력합니다.

jshell> Employee emp = new Employee("Jai", "Adithya", "Content Developer", "Hyderabad");
emp ==> Name = Jai, Adithya | Job designation = Content Developer | location = Hyderabad.

이처럼 JShell을 활용하면 전체 프로그램을 작성하지 않고도 캡슐화 같은 객체지향 개념을 대화형으로 손쉽게 실험하고 학습할 수 있습니다.