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

OOP 개념: 생성자(Constructor)

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

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 요소 중 하나인 '생성자(Constructor)'에 대해 상세하게 알아보겠습니다. 이전 글에서는 객체의 필드 참조 메서드인 getter setter에 대해 배웠으니, 이제 객체를 생성하는 방법에 대해 더 깊게 살펴보겠습니다.


1. 생성자란 무엇인가?

 

객체 지향 프로그래밍에서 '생성자'는 클래스를 통해 객체가 생성될 때 호출되는 특별한 메서드입니다. 각 클래스에 따라 다양한 형태와 목적을 가진 여러 개의 생성자를 가질 수 있습니다.

 

생성자의 이름은 클래스 이름과 동일하며, 리턴 타입을 명시하지 않습니다. 주로 초기화 작업을 수행하는 데 사용되며, 필요한 매개변수를 받아 필드 값을 설정할 수 있습니다. 이렇게 함으로써 객체가 제대로 작동하기 위해 필요한 초기 상태를 설정할 수 있게 됩니다.


2. 왜 생성자를 사용하는가?

 

객체가 제대로 작동하기 위해서는 일부 필드들이 반드시 초기화되어야 할 경우가 많습니다. 예를 들어, Dog 클래스의 모든 인스턴스가 반드시 name age 값을 가져야 한다면, 이런 값들은 객체 생성 시점에 설정되어야 합니다.

 

또한, 생성자를 통해 값의 유효성 검사도 수행할 수 있습니다. 예를 들어 age 값이 양수인지 확인하는 등의 작업을 수행하여 잘못된 값으로 인스턴스가 만들어지는 것을 방지할 수 있습니다.

 

더 나아가서, 여러 개의 생성자를 정의함으로써 다양한 방식으로 같은 클래스의 인스턴스를 만들 가능성도 열립니다 - 이것을 '생성자 오버로딩(constructor overloading)'이라고 합니다.


3. 생성자 구현하기

 

Java 언어 기준으로 Dog 클래스 내부에 name age라는 두 개 private 필들르 가지고 있다고 가정합니다. 각각에 대한 Constructor(생성자) 구현은 아래처럼 할 수 있습니다:

 

예시 코드:

public class Dog {

 

    private String name;

    private int age;

 

    // Default Constructor

    public Dog() {

        this.name = "Unknown";

        this.age = 0;

    }

 

    // Parameterized Constructor

    public Dog(String name, int age) {

        this.name = name;

        if(age > 0){

            this.age = age;

        } else{

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

            this.age = 0; // Invalid value is set to default

        }

    }

}

 

위 코드에서 볼 수 있듯이 `Dog()` `Dog(String name, int age)` 메서드는 각각 기본 생성자와 매개변수가 있는 생성자입니다. 유효하지 않은 나잇값 입력 시 에러 메시지 출력 후 기본값으로 설정합니다.


4. 생성자를 통한 객체 생성

 

생성자 메서드를 통해 새로운 객체를 안전하게 생성할 수 있습니다.

 

예시 코드:

Dog myDog = new Dog("Rex", 5);

 

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

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

 

Dog unknownDog = new Dog();

 

System.out.println(unknownDog.getName()); // "Unknown" 출력

System.out.println(unknownDog.getAge());  // "0" 출력

5. 결론

 

객체 지향 프로그래밍에서 '생성자'는 객체의 초기 상태를 설정하는 중요한 메커니즘입니다. 이를 통해 필드에 안전하게 접근하고, 데이터의 유효성을 보장할 수 있습니다.

 

또한, 여러 개의 생성자를 가지고 있음으로써 다양한 초기 상태로 같은 클래스의 인스턴스를 만들 수 있다는 장점도 있습니다. 이런 기능은 코드의 유연성을 높여줍니다.

 

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

728x90
반응형

 

728x90
반응형