SW/Groovy

Groovy : Class와 Object : 개념, 개요, 설명, 예제, 방법

얇은생각 2025. 1. 14. 07:30
반응형

Java 배경이 있거나 Groovy를 처음 접하는 경우에도, 클래스와 객체가 어떻게 작동하는지 이해하는 것은 효과적인 코딩을 위해 중요합니다. Groovy에서 클래스와 객체를 간단하게 생성하고 사용하는 방법을 예제와 함께 설명합니다. 생성자, getter, setter와 같은 핵심 개념도 함께 살펴봅니다.

 

Groovy : Class와 Object : 개념, 개요, 설명, 예제, 방법

 

Groovy 클래스와 객체 개요

클래스와 객체는 모든 객체 지향 프로그래밍 언어의 핵심이며, Groovy도 예외가 아닙니다. Groovy는 단순성과 유연성 덕분에 클래스와 객체를 효율적이고 직관적으로 생성하고 사용할 수 있습니다. Java에 익숙하다면 Groovy에서도 쉽게 적응할 수 있습니다.

 

Groovy에서 클래스 생성하기

Groovy에서 클래스를 생성하는 방법은 간단합니다. 기존 스크립트를 수정하거나 새 Groovy 타입을 생성할 수 있습니다. Patient라는 간단한 클래스를 만듭니다. 

  1. 새 Groovy 클래스 생성: IDE에서 마우스 오른쪽 버튼을 클릭하고, 새 Groovy 타입을 생성한 후 "Script" 대신 "Class"를 선택
  2. 클래스 이름 지정: 클래스 이름을 Patient로 지정하고, firstName, lastName, age 필드를 추가

 

class Patient {
    def firstName
    def lastName
    def age
}

이제 Patient 객체를 생성하고 속성에 접근할 수 있습니다. Groovy는 getter와 setter를 자동으로 생성하므로 직접 작성하지 않아도 됩니다.

 

객체 생성 및 속성 접근

클래스를 정의한 후에는 객체를 생성할 수 있습니다. Groovy에서는 Java와 유사하지만 코드가 더 간결합니다.

Patient p = new Patient()
println p.firstName + " " + p.lastName + " " + p.age

아직 속성에 값을 할당하지 않았기 때문에, 실행하면 null null null이 출력됩니다. Groovy는 map 기반 생성자를 사용해 더 간편하게 속성을 설정할 수 있습니다.

 

Map 기반 생성자 사용하기

Groovy의 map 기반 생성자를 사용하면 속성을 한 번에 설정할 수 있습니다.

Patient p = new Patient(firstName: 'John', lastName: 'Bailey', age: 40)
println p.firstName + " " + p.lastName + " " + p.age

이제 John Bailey 40이 출력됩니다. 이 기능은 코드의 가독성을 높이고 시간을 절약해줍니다.

 

Groovy의 Getter와 Setter

Groovy에서는 필드를 정의하면 자동으로 getter와 setter 메소드가 생성됩니다. 따라서 필드에 직접 접근하는 것처럼 보입니다. 하지만, 실제로는 생성된 메소드를 사용합니다. 필요한 경우 getter와 setter를 재정의할 수도 있습니다. 예를 들어 lastName에 대한 setter를 재정의하여 유효성 검사를 추가해보겠습니다.

void setLastName(String lastName) {
    if (lastName == null) {
        throw new IllegalArgumentException("Last name cannot be null")
    }
    this.lastName = lastName
}

이 코드는 lastNamenull이 될 수 없도록 보장합니다.

 

Setter 사용 및 재정의

재정의된 setter를 사용해봅시다:

p.setLastName('Buffer')
println p.firstName + " " + p.lastName + " " + p.age

lastName이 성공적으로 업데이트되며, 유효성 검사도 통과합니다.

 

정적 메소드 및 필드 추가하기

Groovy에서는 정적 메소드필드를 생성할 수 있습니다. 정적 메소드는 클래스 자체에 속하는 메소드로 특정 인스턴스에 속하지 않습니다.

class Patient {
    static String hospitalCode = "Best Hospital in Town"

    static void display() {
        println hospitalCode
    }
}

Patient.display()

이 코드를 실행하면 Best Hospital in Town이 출력됩니다. 이는 모든 인스턴스에 적용되는 공유 값을 나타낼 때 유용합니다.

 

요약: Groovy에서 클래스와 객체 생성

Groovy에서 클래스와 객체를 생성하는 것은 간단하고 효율적입니다. 최소한의 코드로 클래스를 생성하고, map 기반 생성자를 사용해 객체를 초기화하며, 자동으로 생성된 getter와 setter를 활용할 수 있습니다. 필요한 경우 메소드를 재정의하여 사용자 지정 논리를 추가할 수도 있습니다.

 

주요 요약:

  1. 클래스 생성: class 키워드를 사용하여 클래스를 생성
  2. Map 기반 생성자: 편리한 map 기반 생성자를 사용해 필드를 초기화
  3. Getter와 Setter: 자동으로 생성된 getter와 setter를 사용해 속성에 쉽게 접근
  4. 정적 필드와 메소드: 클래스 수준의 데이터나 동작을 위해 정적 멤버를 추가

 

Groovy 사용 경험 공유

Java에서 Groovy로 전환하면서 Groovy의 간결함이 큰 매력으로 다가왔습니다. 특히 map 기반 생성자를 사용해 객체를 초기화하는 방식은 개발자에게 큰 편의를 제공합니다. 또한 getter와 setter가 자동으로 생성되어 코드가 훨씬 깔끔해졌습니다. 유효성 검사 로직을 setter에 추가하는 것도 매우 쉬워, Groovy의 유연성과 단순함이 돋보였습니다.

 

Groovy 클래스 사용 팁

  • Map 기반 생성자 활용: 가능한 map 기반 생성자를 사용해 코드를 간결하게 유지
  • 유효성 검사를 위한 Setter 재정의: 필요한 경우 setter를 재정의해 유효성 검사 논리를 추가
  • 유틸리티 함수에 정적 메소드 사용: 인스턴스 데이터가 필요 없는 작업에는 정적 메소드를 사용
반응형