용어 | 1. 캡슐화(getter, setter) 와 프로퍼티

|

캡슐화와 프로퍼티

캡슐화는 정보를 은닉하기 위해 private로 선언하여 외부에서 접근을 불가능하게 합니다.
프로퍼티는 get 과 set을 사용하여 private으로 선언된 변수에 접근이 가능하도록 만듭니다.

프로퍼티 Property

객체의 프로퍼티는 두가지 종류가 있습니다

  • 데이터 프로퍼티 (Data Property)
  • 접근자 프로퍼티 (Accessor Property)
    • 값을 획득(get) 하고 설정(set) 하는 역할을 담당합니다.
    • 외부에서는 일반적인 프로퍼티처럼 보입니다.

접근 제한자

아래 접근 제한자로 수식하지 않은 멤버는 private로 지정됨

  • public : 클래스 안/밖 접근가능
  • protected : 클래스 안에서 접근가능. 파생 클래스에서는 접근 가능
  • private : 클래스 안에서 접근가능
  • internal : 같은 어셈블리에 있는 코드에서 public, 다른 어셈블리에 대해 private
  • protected internal : 같은 어셈블리에 있는 코드에서 protected, 다른 어셈블리에 대해 private
  • private protected : 같은 어셈블리에 있는 클래스에서 상속받은 클래스 내부에서만 접근가능

C# 에서 활용

using System;

class Car
{
    // Private 필드
    private int speed;

    // Public 프로퍼티를 통해 private 필드에 접근
    public int Speed
    {
        get
        {
            return speed;
        }
        set
        {
            // 속도가 0 이상 200 이하인 경우에만 값을 설정
            if (value >= 0 && value <= 200)
            {
                speed = value;
            }
            else
            {
                Console.WriteLine("속도는 0 이상 200 이하여야 합니다.");
            }
        }
    }

    // 메서드
    public void Accelerate()
    {
        Speed += 10;
    }

    public void Decelerate()
    {
        Speed -= 10;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Car myCar = new Car();
        myCar.Speed = 50;  // Speed 프로퍼티를 통해 speed 필드에 접근
        Console.WriteLine("현재 속도: " + myCar.Speed);

        myCar.Accelerate();
        Console.WriteLine("가속 후 속도: " + myCar.Speed);

        myCar.Speed = 300;  // 무효한 값, 메시지 출력
    }
}

C#에서는 private, protected, internal, public 등의 접근 제한자를 사용해 구현할 수 있습니다.
윈도우 프로그래밍 개발에 도움이 됩니다.

getter setter

  • get 접근자 : 필드 값을 반환합니다
  • set 접근자 : 필드 값을 대입합니다

class Person
{
    private string age;
    public string Age;
    {
        get { return age; }
        set { age = value; }
    }
}

JS에서의 getter setter

자바스크립트는 값을 변경하거나 꺼내 쓸 때 장점을 가지고 있습니다

  • 자료를 간소화 해야 할 때

사용법

  • get : 데이터를 꺼내쓰는 함수에 사용
    • return이 있어야 합니다.
    • 파라미터가 없어야 합니다.
  • set : 데이터를 변경하는 함수에 사용
    • 파라미터가 1개만 있어야 합니다

let 사람 = {
age : 30,
get nextAge(){
    return this.age + 1
}
get setAge(나이){
    this.age = parseInt(나이);
}
}

사람.setAge = '20';
사람.nextAge;

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다