이번 역시 생각 보다 오래 걸리게 되었네요
C# 을 먼저 해야 되는데 VB.NET 으로 프로젝트를 하다 보니 ㅋㅋㅋ 많이 까먹진 않았을 런지..
이번에는 C# 초급 시간 4번째 직접 유용한 정보를 정리 해 볼려고 합니다.
이번에는 클래스에 대해서 간단하게 설명 하고 싶은데요
일단 클래스란 무엇인가?? 기본 개념 부터 잡고 넘어 가도록 하겠습니다.
클래스란? " 객체들의 공통된 개념과 정의를 표현하는 하나의 틀이다. " 라고 정의 해볼 수 있습니다.
1. 클래스의 구조
연습용 클래스를 정의 하도록 하겠습니다 간단하게 Test 클래스를 만들어서 클래스의 구조와
사용 접근 한정자를 Setting 해보도록 하겠습니다.
아 그리고 위의 클래스를 분석하기 전에 간단한 접근 제한자에 대해서 추가적으로 공부를
하고 넘어 가는게 좋을 꺼 같습니다. ㅋㅋ 쫌 두서가 없지만 양해를 부탁 드립니다.
C# 에서는 접근 제한자를 아래와 같이 5 개로 두고 사용 합니다 .대표적으로는
private, protected ,public 만으로도 표현이 가능 하지만 어셈블리코드 개념 범위까지
넘어 갔을 때도 표현이 가능한 internal, protected internal 2가지가 더 있습니다.
동일한 어셈블리의 다른 코드나 해당 어셈블리를 참조하는 다른 어셈블리의 코드에서 형식이나 멤버에 액세스할 수 있습니다.
동일한 클래스 또는 구조체의 코드에서만 형식이나 멤버에 액세스할 수 있습니다.
동일한 클래스나 구조체의 코드 또는 파생 클래스의 클래스에서만 형식이나 멤버에 액세스할 수 있습니다.
동일한 어셈블리의 코드에서는 형식이나 멤버에 액세스할 수 있지만 다른 어셈블리의 코드에서는 액세스할 수 없습니다.
형식 또는 멤버는 선언되는 어셈블리의 모든 코드에 액세스하거나 다른 어셈블리의 파생 클래스 내에서 액세스할 수 있습니다. 다른 어셈블리의 액세스는 보호된 내부 요소가 선언되는 클래스에서 파생되는 클래스 선언 내에서 발생해야 하며 파생된 클래스 형식의 인스턴스를 통해 발생해야 합니다.
이제 위의 간단한 클래스에 구조에 대해 분석을 해보겠습니다.
// public class: public class test // test 클래스 적용 및 생성
{ // 정적인 속성 부분
private int x = x; // x 값에 대한 필드 속성 정의
private int y = y; // y 값에 대한 필드 속성 정의
// 동적인 동작 부분
// 생성자 부분
public test (int x, int y)
{
this.x = x;
this.y = y;
}
// 메소드(Method) 부분 public void print() { System.Console.WriteLine("({0},{1})", x, y); } }
윗 부분을 간단하게 사용하는 ex) 이다.
class test
{
private int x;
private int y;
public test(int x, int y)
{
this.x = x;
this.y = y;
}
public void Print()
{
System.Console.WriteLine("({0},{1})", x, y);
}
}
class Program
{
static void Main()
{
test ts= new test(5,5);
ts.Print();
}
}
위와 같이 사용하면 간단한 결과는 (5,5) 라는 점이 찍혀서 나오게 되는 소스입니다
Program 클래스에 Main 메서드에서 test 클래스의 객체 활성화 후 그 관련 객체에
Print() 메서드를 가져 옴으로써 관련 정보를 활용할 수 있습니다.
여기서 ts 는 test 클래스의 '객체' 입니다. 객체는 new 연산자로 생성하고, 정확히
얘기해서는 ts 는 tes 객체의 참조 변수(참조자) 가 됩니다.
실제 객체는 관리 heap 메모리에 생성되고 클래스 형식은 참조 형식으로 모든 참조
형식 객체는 힙에 생성되며 가비지 컬렉션(자동 메모리 관리)가 되게 됩니다.
클래스 구조 1에 대해서는 이렇게 마무리 하도록 하겠습니다.
다음 (5) 관련 적용 부분에서는 클래스와 객체 가 어떻게 서로 상호 작용 할 수 있는지에 대해 간단하게 설명 하겠습니다.
'프로그래밍_객체지향언어 > C#_프로그래밍' 카테고리의 다른 글
C# Tip) Serial Port 에러 발생시 Tip (0) | 2013.07.29 |
---|---|
곰용이의 C# 초급 (3) (0) | 2013.04.01 |
곰용이의 C# 초급 (2) (0) | 2013.04.01 |
곰용이의 C# 초급 (1) (0) | 2013.03.21 |
C# 프로그래밍의 개념 (0) | 2013.03.20 |