C# 프로그래밍 - 클래스(class)

반응형

C# 프로그래밍 - 클래스(class)

클래스(class)

객체지향 프로그래밍에서 클래스(class)는 객체를 생성하기위한 설계도로써 관련 데이터와 동작을 정의하는 사용자 정의 데이터 타입입니다.  클래스는 데이터를 저장하고 나타내는데 사용되는 데이터 멤버(속성), 수행되는 동작을 정의하는 동작 멤버(메서드), 기타 멤버를 가질수있습니다.

 

클래스의 맴버

클래스는 필드(field), 속성(property), 메서드(method), 생성자(constructor), 이벤트(event), 기타를 가질 수 있습니다.

 

필드(field)

클래스 내부에 선언된 변수로 클래스에서 사용되는 데이터를 저장하는데 사용됩니다. 클래스 객체의 상태를 유지하고 나타내는 속성이 될수있습니다. 필드의 접근제한자에 따라서 외부 객체, 상속 객체에 노출할수있습니다. public을 사용하여 외부에 노출할수있지만 객체지향프로그래밍 방식에 부합하지않습니다. 일반적으로 private 사용하고 public을 사용한 속성(프로퍼티, property)을 이용해서 필드의 값을 외부에 전달하는 방식을 사용합니다.

 

속성( property)
속성은 필드에 접근하는 방법을 제공합니다. 클래스 내부의 데이터를 외부에서 사용할수있게 하거나 외부에서 클래스 내부의 데이터를 설정할때 사용합니다.

 

메서드(method)
클래스에서 수행되는 동작 또는 기능을 정의하는 함수입니다. 객체의 특정한 행동을 구현하고 상태를 조작하거나 데이터를 처리하는데 사용합니다. 

 

생성자와 소멸자(constructor)

생성자는 객체가 생성될 때 초기화를 수행하는 특별한 메서드입니다. 객체는 생성자에 의해서 만들어지고 소멸자에 의해 제거됩니다.

 

이벤트(event)

클래스에서 발생하는 동작으로써 객체 내부의 특정 상태, 이벤트를 외부로 전달하는데 사용됩니다. 이벤트가 발생했을때 이벤트에 가입한 모든 외부의 객체들에게 그 사실을 통보합니다(casting)

 

 

클래스의 선언

접근제한자 class 클래스이름

{
    //속성(멤버변수)
    //메서드(멤버함수)

    //생성자

    //기타멤버


}

 

접근 제한자

클래스의 외부에서 해당 클래스에 대한 접근 권한을 지정할수있는 키워드입니다. public(클래스의 내부, 외부에서 접근 가능), private(클래스 외부에서 접근 불가능), protected(클래스 외부에서 접근 불가능, 자식 클래스에서 접근 가능) 등이 사용될 수 있습니다.

 

class

클래스는 class 키워드를 사용하여 선언합니다.

 

클래스이름

클래스의 이름으로 클래스를 식별하는 식별자입니다.

 

멤버변수와 멤버함수(메서드)

데이터를 저장하기위한 변수와 동작을 수행하기위한 함수(메서드)를 선언합니다.

 

생성자

객체를 생성할때 초기 상태를 설정하기위해 생성자를 선언합니다. 생성자를 명시적으로 선언하지않으면 기본생성자(default constructor)가 사용됩니다

 

 

클래스의 선언 예시

아래 예시에서 Person 클래스는  Name과 Age라는 멤버변수를 가지고 있으며 SayHello라는 메서드를 정의합니다. 

 

public class Person
{
    // 속성
    public string Name;
    public int Age;

    // 메서드
    public void SayHello()
    {
        Console.WriteLine("Hello, my name is " + Name + " and I'm " + Age + " years old.");
    }
}

 

 

클래스(class)와 객체(Object)

클래스는 객체(Object)의 설계도(blueprint)입니다. 객체는 클래스의 인스턴스로(instance)써 클래스를 실체화하여 메모리에 할당된 데이터를 가지고 있는 실제 개체입니다. 클래스는 객체를 생성하기 위한 템플릿이며 객체는 클래스의 인스턴스를 나타냅니다.

인스턴스의 구현
클래스의 객체를 생성하려면 new 키워드를 사용하여 다음과 같이 작성합니다.
클래스명 인스턴스명(객체) = new 클래스명();

아래 예시에서 Person 클래스를 기반으로 person1이라는 객체를 생성하고 객체의 데이터 멤버에 값을 할당한 후 SayHello 메서드를 호출하여 출력 결과를 확인합니다.

Person person1 = new Person();
person1.Name = "John";
person1.Age = 30;
person1.SayHello();  

// 출력: Hello, my name is John and I'm 30 years old.

 

반응형

댓글

Designed by JB FACTORY