클래스 lifecycle

 

 

 

ØBirth
linstance 생성
lConstructor 메소드가 관여함

 

ØLiving
l멤버 변수와 메소드를 이용함

 

ØDeath
lInstance 파괴를 위한 행동
lDestructor 메소드가 관여

 

ØGarbage collection
l죽은 객체가 사용하던 메모리를 반환시킴

 

 

 

 

 

 

 

public static Main 메소드

 

 

 

 

Ø main 메소드

public static void Main( string[ ] args )

 

l public은 모든 클래스에서 Main( ) 메소드에 접근할 수 있다는 의미이고, staticMain( ) 메소드가

    속해 있는 클래스에 대한 객체를 생성하지 않고도 Main( ) 메소드를 호출할 수 있음을 의미한다.

 

l 프로그램을 실행시키는 어떤 부분이 Main( ) 메소드가 포함되어 있는 클래스의 인스턴스를 만들지 않고,

       Main( ) 메소드를 호출하기 위해서이다.

 

l 당연히 외부에서 메소드를 호출해야 하기 위해 public이다.

 

 

 

 

정적(Static) 멤버

 

 

 

 

Ø정적(static) 필드
l같은 클래스의 각 인스턴스가 공유해야 하는 변수가 있을 경우, static으로 설정한다.

  class People{

      string static classNameInKorean=“사람”

  }

l정적 멤버들은 객체를 인스턴스화 하지 않고 사용할 수 있다.

  Console.WriteLine(People.classNameInKorean);

 

 

 

 

 

실습 2

 

 

 

 

 

ØAccessTest라는 클래스 이름을 갖는 프로그램을 작성합니다. AccessTest 클래스는 다음과 같은 조건을 만족시켜야 합니다.
lSetRadius : 원의 반지름을 setting합니다.
lGetArea : 반지름을 이용하여 원의 면적을 구합니다.
lDisplay : 결과를 출력하는 기능을 수행합니다.
l반지름과 면적을 public, private으로 바꿔가면서 작동여부를 test해 봅니다.

 

 

 

 

실습 1

 

 

 

 

Ø클래스의 개념 이해를 위해 작은 클래스 하나를 정의해봅니다.(Rectangle 클래스)
l멤버 변수 : private double x1, y1, x2, y2
l멤버 메소드(public)
§GetArea()
§SetPoint1(double v1, double v2)
§SetPoint2(double v1, double v2)

 

Ø위 두 클래스를 정의한 후 사각형의 두 점을 이용하여 사각형의 면적을 구하는 프로그램을 작성합니다.

 

 

 

 

 

접근 제어 – Example(해설)

 

 

 

 

Øx,y,zprivate이므로 클래스 Rectangle에서만 접근할 수 있음에도 불구하고 클래스 MainClass에서 접근했기 때문에 오류이다.
Ø앞 예제에서는 x,y,z를 직접 엑세스 하는 것을 피하고 setValue를 이용하도록 하고 있다.
Ø변수에 대한 읽기나 쓰기만을 제공하고 싶은 경우에 이런 방법을 사용하게 된다.

 

 

 

 

 

 

접근 제어 – Example(3)

 

 

 

  c2.SetValue(4.0, 5.0, 6.0); // OK

  k2 = c2.GetArea(); // OK

  Console.WriteLine(k2); // 결과 : 120.0

  Console.ReadLine();  // 잠시 멈춤을 위해 사용

  }

}

}

 

 

 

접근 제어 – Example(2)

 

 

 

 

 

class MainClass

{

  public static void Main(string[] args)

  {

  Rectangle c1, c2;

  double k1, k2;

 

  c1 = new Rectangle();

  c2 = new Rectangle();

     //  c1.x = 3.0; // ERROR

//  c1.y = 4.0; // ERROR

//  c1.z = 5.0; // ERROR

//  k1 = c1.x * c1.y * c1.z; // ERROR

//  Console.WriteLine(k1); // 결과를 얻을 수 없음

 

 

+ Recent posts