• 회원가입
  • 로그인
  • 구글아이디로 로그인

[class] C# - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)

4,068  
목차
  1. Encapsulation (캡슐화)
  2. properties (속성) - get/set 메서드
  3. Automatic Properties (자동 속성)  - 축약 방식
  4. 캡슐화 장점

 

Encapsulation (캡슐화)

 

1.

속성 (= 필드) 이해에 앞서, '캡슐화' 개념 이해 필요.

※ 캡슐화 : "민감한" 데이터를 사용자에게 비노출.

 

2. 

캡슐화 위해,

클래스 안 데이터의 직접 수정을 막고 메서드로만 변경 허용.

1. 데이터 보호. 

2. 내부적으로만 작동하는 코드 숨김.

 


[방법]

 

1. 클래스 안 속성(=변수)을 private으로 설정. 

private 수정자 :동일 클래스에서만 접근 가능.

 

2. private 설정된 속성에 접근 방법 :

public 설정된 get/set 메서드 통해서만 허용.

 

 

properties (속성) - get/set 메서드

 

1.

클래스 안 필드 private 설정 시 해당 클래스에서만 접근 가능한데,

public 설정된 properties (속성) 이용 시 외부에서도 접근 가능함.

 

2.

properties (속성)은 변수와 메서드 결합된 것으로서,

이 안에 필드값 얻거나 설정하는 get /set 메서드 있음.

 

3.

get 메서드 : 필드 값 반환. 

set 메서드 : 필드 값 설정.

 

4.

Properties (속성)은 필드명과 동일하게 하되,

첫 글자는 대문자로 입력.

 


[예제]

 

class Hz

{

  private string host; // field


  public string Host   // property

  {

    get { return host; }   // get 메서드

    set { host = value; }  // set 메서드

  }

}

 


PS. 코드 설명.

 

※ host : private (= 다른 클래스에서 접근 금지) 설정된 필드. 

※ Host : host 필드 값을 얻거나 설정 위한 Property (속성).

※ get 메서드 : host 필드 값 반환.

※ set 메서드 : host 필드 값 설정. 

※ value : property (속성)에 할당하는 값 의미.

 


[예제]

 

1. Hz.cs

 

using System;

namespace Homzzang

{

    class Hz

    {

        private string host;  // field

        public string Host    // property

        {

            get { return host; }

            set { host = value; }

        }

    }

}

 

 

2. Index.cs

 

using System;

namespace Homzzang

{

    class Index

    {

        static void Main(string[] args)

        {

            Hz my = new Hz();

            my.Host = "Homzzang.com";

            Console.WriteLine(my.Host);

        }

    }

}


결과값: Homzzang.com

 

Automatic Properties (자동 속성)  - 축약 방식

 

properties (속성) 위한 필드명 따로 정의 불필요함.

그저, properties (속성) 안에  get; set; 적으면 됨.

즉, 

Host 위한 host 정의할  필요 없이, 

Host 안에 get; set; 적기만 하면 됨.

 


[예제]

 

1. Hz.cs

 

using System;

namespace Homzzang

{

  class Hz

  {

    public string Host // property

    { get; set; }  

  }

}


2. Index.cs

 

using System;

namespace Homzzang

{

    class Index

    {

        static void Main(string[] args)

        {

            Hz my = new Hz();

            my.Host = "Homzzang.com";

            Console.WriteLine(my.Host);

        }

    }

}

 

결과값: Homzzang.com 

 

캡슐화 장점

 

1.

클래스 안 속성/메서드에 대한 더 나은 제어.

즉, 누군가에 의해 코드가 엉망이 될 가능성 ↓.

 

2.

클래스 안 필드는, 읽기전용/쓰기전용으로 설정 가능.

※ 읽기 전용 : get 메소드만 사용. 

※ 쓰기 전용 : set 메소드만 사용.

 

3.

유연성↑. (즉,  다른 부분에 영향 안 주고, 코드 일부만 변경 가능.)

 

4.

데이터 보안 강화.

 



분류 제목
method C# - Methods (메서드) - 정의/호출
method C# - Method Parameters (메서드 매개변수)
method C# - Method Overloading (메서드 오버로딩)
class C# - OOP (객체 지향 프로그래밍)
class C# - Class (클래스) / Object (객체)
class C# - Class Members (클래스 멤버) - 속성(=필드), 메서드
class C# - Constructors (생성자)
class C# - Access Modifiers (접근 수정자)
class C# - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)
class C# - Inheritance (상속)
class C# - Polymorphism (다형성)
class C# - Abstraction (추상화)
class C# - interface (인터페이스) ★
class C# - enums (이넘) - 상수 열거형 클래스
class C# - Files (파일) - 파일생성/파일읽기/파일쓰기
class C# - Exceptions (= Try...Catch..) - 에러 제어
howto C# - 사용자 입력값 더하기 ★ (Add Two Numbers)
2/2
목록
찾아주셔서 감사합니다. Since 2012