Programming/객체 지향 프로그래밍(OOP)

OOP 개념: 필드 참조 메소드 getter, setter 구현

vita12321 2023. 9. 19. 09:00
728x90
반응형

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 핵심 요소 하나인 '필드 참조 메소드 getter setter 구현' 대해 상세하게 알아보겠습니다. 이전 글에서는 객체의 필드와 메소드 참조에 대해 배웠으니, 이제 필드 값을 안전하게 가져오고 변경하는 방법을 살펴보겠습니다.


1. getter setter 무엇인가?

 

객체 지향 프로그래밍에서 'getter' 'setter' 클래스의 필드에 접근하는 특별한 종류의 메서드입니다.

 

  • 'getter' 메서드는 해당 필드의 값을 반환하며, 일반적으로 'get필드명()' 형식으로 이름을 붙입니다. 예를 들어, Dog 클래스 내부에 정의된 `name` 필드에 접근하기 위한 getter 메서드는 `getName()`이 됩니다.

 

  • 'setter' 메소드는 해당 필드의 값을 설정하며, 일반적으로 'set필드명()' 형식으로 이름을 붙입니다. 위 예제에서 `name` 필드값을 변경하기 위한 setter 메소드는 `setName()`이 됩니다.

2. getter setter 사용하는가?

 

직접적인 필도 접근을 통해 변경은 데이터 보호 측면에서 좋지 않습니다. 만약 외부 코드가 잘못된 (: 나이로 음수) 설정한다면 어떻게 될까요? 이러한 문제를 방지하기 위해 setter 메서들르 사용하여 적절한 검증을 수행할 있습니다.

 

다른 중요한 이유로는 캡슐화(encapsulation) 원칙 때문입니다. 객체 지향 프로그래밍에서 캡슐화란 객체 내부 상태를 직접 조작하지 않고 제공된 인터페이스(getter/setter )만을 통해서만 가능하게 하는 것입니다. 이렇게 함으로써 객체가 자신의 상태 관리 방법과 로직에 대해 자율성을 가지며 외부로부터 보호됩니다.


3. getter setter 구현하기

 

Java 언어를 기준으로 Dog 클래스 내부에 name age라는 개의 private 필들르 가지고 있다고 가정해 봅시다. 각각에 대한 getter setter 아래처럼 구현할 있습니다.

 

예시 코드:

public class Dog {

    private String name;

    private int age;

 

    // Name field's Getter

    public String getName() {

        return this.name;

    }

 

    // Name field's Setter

    public void setName(String newName) {

        this.name = newName;

    }

 

    // Age field's Getter

    public int getAge() {

        return this.age;

    }

 

   // Age field's Setter

   public void setAge(int newAge) {

       if(newAge > 0){

           this.age = newAge;

       } else{

           System.out.println("Invalid age");

       }

   }

}

 

위의 코드에서 있듯이, `getName()` `getAge()` 메서드는 각각 `name` `age` 필드의 값을 반환합니다. 반면에, `setName(String newName)` `setAge(int newAge)` 메서드는 새로운 값을 받아 해당 필드에 할당하며, 유효성 검사도 동시에 수행합니다.


4. getter setter 통한 필드 참조

 

getter setter 메서드를 통해 안전하게 필드 값을 가져오거나 변경할 있습니다.

 

예시 코드:

Dog myDog = new Dog();

myDog.setName("Rex");

myDog.setAge(5);

 

System.out.println(myDog.getName()); // "Rex" 출력

System.out.println(myDog.getAge());  // "5" 출력

 

myDog.setAge(-1); // "Invalid age" 출력, 유효하지 않은 나이 입력 시 에러 메세지 출력 후 값 변경 무시.

5. 결론

 

객체 지향 프로그래밍에서 'getter setter' 필드 참조의 중요한 메커니즘입니다. 이를 통해 필드에 안전하게 접근하고, 데이터의 유효성을 보장할 있습니다.

 

이러한 접근 제어 기법은 데이터 보호, 코드 재사용성 유지 관리성 증진에 중요한 역할을 합니다. 따라서 getter setter 정확한 구현 방법과 사용 방법을 이해하는 것은 객체 지향 프로그래밍의 핵심 요소 하나입니다.

728x90
반응형

 

728x90
반응형