클래스 (class) - 클래스(class)는 특정한 객체를 생성하기 위해서 메서드(Method), 속성(Property), 필드(Field), 이벤트(Event) 등을 멤버로 포함하는 소프트웨어 단위.
메서드(Method) - 클래스에서 실제 행동을 일으키는 코드 블록. 일련의 코드를 하나의 그룹으로 묶은 것. 객체지향 프로그래밍 관점에서 객체의 데이터 처리 방법을 추상화한 것이다.
속성(Property) - 클래스의 내부 데이터를 외부에서 사용할 수 있게 하거나, 외부에서 클래스 내부의 데이터를 간단하게 설정할 때 사용한다.
필드(Field) - 클래스 안에 선언된 변수들을 일컬어 필드라고 한다.
이벤트(Event) - 이벤트는 객체 내부의 특정 상태를, 혹은 어떤 일이 일어났다는 이벤트를 외부로 전달하는데 이용된다.
클래스의 선언
클래스와 메서드
위 코드의 Cat 클래스에 선언되어 있는 Name과 Color처럼 클래스 안에 선언된 변수들을 일컬어 필드라고 한다. 그리고 필드와 메서드를 비롯하여 프로퍼티, 이벤트 등의 클래스 내에 선언되어있는 요소들을 일컬어 멤버라고 한다.
하지만 클래스는 설계도일 뿐, 실체(인스턴스)가 아니다. 따라서 Cat도 설계도(?)일 뿐 인스턴스가 아니다.
객체는 소프트웨어 세계에 구현할 대상이고, 이를 구현하기 위한 설계도가 클래스 이며, 이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스이다.
객체는 현실의 대상과 비슷하여, 상태나 행동 등을 가지지만, 소프트웨어 관점에서는 그저 콘셉에 불과하다. 소프트웨어에서 객체를 구현하기 위해서는 콘셉 이상으로 많은 것들을 사고하여 구현해야 하므로, 이를 위한 설계도로 클래스를 작성한다. 설계도를 바탕으로 객체를 소프트웨어에 실체화하면 그것이 인스턴스가 되고, 이 과정을 인스턴스화라고 한다. 실체화된 인스턴스는 메모리에 할당된다.
클래스는 참조형식이며, Cat kitty; 와 같은 선언문에서 kitty는 null값을 가진다. kitty 자체에 메모리가 할당되는 것이 아니고 kitty는 참조로써 객체가 있는 곳을 가리킬 뿐이다. 그래서 new 연산자와 생성자가 필요한 것이다. new 연산자와 생성자를 이용해서 힙에 객체를 생성하고, kitty는 생성자가 힙에 생성한 객체를 가리키는 것이다.
참고 : 이것이 C# 이다, https://cerulean85.tistory.com/149
※ 혼자 공부하며 정리하는 블로그 입니다.
'Programming Language > C#' 카테고리의 다른 글
[C#] 정적 필드와 메소드 (0) | 2019.05.18 |
---|---|
[C#] 생성자와 종료자 (0) | 2019.05.18 |
[C#] 메소드 오버로딩 (0) | 2019.05.18 |
[C#] foreach문 (0) | 2019.05.18 |
[C#] Null 병합 연산자 (Null-Coalescing Operator) (0) | 2019.04.28 |