ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 복습
    Writer/WarmingUp Code 2008. 10. 2. 19:48
    반응형
    /*
    class car //프로그램 세계에서는 개체를 하나의 데이터형으로간주 
    // car 데이터형 E또는 car형이라고 명명한
    {
    public void Move()
    {
    }
    }
    class calss1
    {

    static void Main()
    {
    car c = new car(); // 객체 생성 new 연산자 이용
    c.Move();  // Move 메서드 부르기
    }
    }
    // 네임스페이스는 클래스를 분류할 때 사용
    // ex)        Vehicle.car     //    vehicle.airplane


    // 클래스와 네임스페이스 예제


    namespace drawObject
    {

    class point  
    {
    }
    class rectangle
    {
    }
    class ellipse
    {
    }
    }
    */
    using System;
    //using drawObject;
    //////////////////// 네임스페이스 정의
    using drawObject;


    namespace drawObject
    {
    class class1
    {
    static void Main(string[] args)
    {
    point pt = new point();
    }
    }
    class point
    {
    }
    }



    class point   ///////// point 클래스 정의
    {
    public int x; // 필드 x // public 필드 맴버 추가 x,y
    public int y; // 필드 y
    // 메서드 정의
    public void setPoint(int ax, int ay) // setPoint 메서드 추가 x,y 값을 지정합니다
    {
    x= ax;
    y= ay;
    }
    }


    /// 필드 :: 객체의 속성을 나타내는 값으로 맴버 변수라 부르기도 한다 ex) int x;
    /// 
    /// 메서드 ::  객체의 기능을 함수로 정의 맵버 함수라고 부르기도 한다 ex) void setPoint(int x, int y)
    /// 
    /// 프로퍼티 :: 프로페티는 메서드를 정의한 것이다 ex) get과 set
    /// 

    // !!!!   맴버 접근 제어   !!!!
    // 클래스 맵버를 정의할때, 맵버마다 외부에서 함부로 접근할 수 없도록 접근 권한을 지정
    // 접근 권한을 지정하는 키워드에는 private/ public 키워드등이 가 있다

    //////////// public 맴버 선언  ////////////////
    public int x;
    public void setPint (int x, int y)
    {
    ......
    }
    //public 맴버는 클래스 내부는 물론 외부에서도 사용할 수있는 맵버


    // private 맴버 선언
    private int x;
    // private 맴버는 클래스 내부에만 사용하는 맵버  * 클래스 외부에서 private 맵버를 사용하려고 하면 컴파일 오류발생



    //맴버 접근 제어자/
    //클래스에 정의한 맴버 각각에 대해 멤버 접근 제어자를 붙여서 사용을 제한할수있다
    //    [제어자] data_typeMember;
    //  [제어자] date_typeMemver([param1, param2......]);
    // 지정할 수있는 맴버 접근자~~!!!!!!!!!!! 맴버 접근자 종류
    // public ,private, protected ,protexted internal , internal

    객체 생성및 맴버이용

    클래스로 정의한 객체를 생성하려면 new 연산자를 사용
    public static void Main()
    {
    //클래스 생성
    point pt = new point();
    }

    클래스 맴버를 사용할 때는 변수이름 뒤에  '.'을 붙여서 사용
    ex) pt.x =100;       pt.y =200;

    객체에 정의된 메서드를 부르는 방법도 '.'을 붙이고 메서드를 부른다
    ex) pt.selPoint (100, 200);

    console객체를 이용해서 맴버값ㅇ를 출력 할 수도 있다.
    console.Write("{0}{1}" , pt.x , pt.y);





    using System; ////// point 클래스 구현


    class testclass
    {
    public static void Main()
    {
    newclass nc = new newclass();
    nc.setPoint(100,200);
    Console.WriteLine("{0}{1}",nc.x , nc.y); 


    // nc.x=100;
    // nc.y=200;
    // Console.WriteLine("{0}{1}",nc.x, nc.y);
    }
    }


    class newclass
    {

    public int x;
    public int y;

    public void setPoint(int ax, int ay)
    {
    x= ax;
    y= ay;
    }

    }








    //인스턴스
    //new 연산자를 사용해서 생생한 객체를 부르는 용어
    //this 키워드
    //인스턴스 : new 연산자를 사용해서 생성한 객체를 부르는 용어....
    //ex) pt1과 pt2 가 point 객체의 인스턴스
    // point 객체의 인스턴스 (instance)
    // point pt1 = new point();
    // point pt2 = new point();
    ///
    //
    //
    // 인스턴스  
    // pt1.setPoint() 메서드를 부르면 pt1 인스턴스 객체 값이 바뀌고
    // pt2.setPoint() 메서드를 부르면 pt2 인스턴스 객체 값이 바뀐다.
    // 실제로는 인스턴스의 값이 바뀐다.
    // pt1.setPoint(100,100);
    // pt2.setPoint(200,200);
    // setPoint 메서드에서 x, y값에 값을 할당하는 것은 각 인스턴스의 값을 바꾸는 것이다
    // 
    public void setpoint (int ax, int ay)
    {
    // 인스턴스에 값을 할당한다
    x= ax;
    y= ay;
    }

    // this 키워드

    //메서드에서 현재 인스턴스를 가르키는 키워드이다
    // 메서드 내에서 현재 불려진 인스턴스 객체를 참조할 때 사용
    // 클래스 내에 정의한 모든 메서드에서 사용 가능
    // this 키워드를 써주면 ***인자와 맴버를 구분***할 수 있기 때문에 일부러 인자 이름을 다르게 지정할 필요가없다

    public void setPoint(int x, int y)
    {
    // 인스턴스를 가리키는 this를 이용한다
    this.x = y;
    this.y = y;
    }

    // this키워드.../// 클래스를 사용하려고하면 클래스를 맵버리스트를 보여준다
    // 메서드 this 키워드를 입력하고 '.' 을 입력하면 현재 정의된 맵버리스트를 보여준다.
    ///////////////////////////////////////////////////////////////////////////////





    프로퍼티 



    // 프로퍼티

    // 프로퍼티가 나오기까지

    //public 맴버일때는 바로 맴버를 사용할 수있었기 때문에 다름과 같이 사용

    //직접데이터맴버를 사용하는 경우
    pt1.x = 100;
    interface x = pt1.x;


    // pravate맴버로 바꾼후에는x맴버를 사용하려면 다음과같이 사용

    // 메서드를 통해서 사용하는 경우
    pt1.setX(100);
    int x= pt1.getX();

    // 프로퍼티의 정의
    // 프로퍼티는 실제로는 값을 지정하는 메서드와 가져오는 메서드를 정의
    // 프로퍼티는 다음과 같이 맴버사용범위는 public으로 지정하고 프로퍼티로 다룰 데이터형을지정
    // 값을 가져올때는 get을 이용하고, 값을 넣을 떄는 set 을 이용하며 set에서 입력 입력값은 value 키워드를 사용

    //프로퍼티의 정의

    public data_type property_name
    {
    get
    (
    return 리턴값; // 값을 가져올때
    )
    set
    {
    // 값지정 , value 이용 // 값을 지정할때...
    }
    }


    ///////////////////////////////// 프로퍼티의 예//////////////////////////////////////////////
    //       'X'(대문자) 프로퍼티를 int 형으로 정의한 예
    //이 프로퍼티는 private 맴버 'x'(소문자) 필드를 사용하기 위해 정의한 프로퍼티

    using System;l

    public int X
    {
    get
    {
    return x;
    set
    {
    x = value;    //프로퍼티에 값을 할당하면 set메서드에서value를 통해서 100값이 전달
    }
    }
    //프로퍼티에 값을 할당하면 set메서드에서value를 통해서 100값이 전달
    // ex) pt.X =100 //set 메서드

    // Console 객체에서 'X'값을 출력하면 내부적으로는get 메서드가 불려지며 get 메서드가 리턴한'x'값을 보여줄것이다
    // ex) int x= pt.X;  //get 메서드


    // point 클래스에서 x,y 프로퍼티로 정의 . private 맴버인 x와 y 필드를 프로퍼티 X.Y 를 통해서 사용

    using System;
    class point
    {
    // private 필드 맴버, x , y 선언
    private int x;
    private int y;

    public int X  // x 프로퍼티
    {
    get 
    return x; 
    }
    set 
    x = value; 
    }
    }

    public int Y  // y 프로퍼티
    {
    get 
    return y; 
    }
    set 
    y = value; 
    }
    }
    }

    class class1
    {
    static void Main(string[] args)
    {
    point pt1= new point();
    pt1.X =100; // 프로퍼티의 set메서드가 불린다
    pt1.Y =200; // 프로퍼티의 set메서다가 플린다
    Console.WriteLine("{0}{1}",pt1.X , p1.Y); // 프로퍼티의 get메서드가 불린다
    }
    }

    //프로퍼티를 사용하는 이유//
    // 실제 맴버에 값을 넣기전에 적절한 값인지 판단
    // 값을 변형해서 리턴하는 경우도 만들 수 있다
    // 값이 바귈때마다 알려주는 이벤트를 구현할 수도 있다
    // 코드를 다시 수정할 필요가 있을대에도 프로퍼티를 사용하면 get/set 메서드에서만 수정해도 간단히 해결할수있는경우가많다


    //X 프로퍼티의 get/set 메서드에 여러경우를 적용해본 예

    private int x;

    public int X
    {
    get
    {
    return x * mratio;// 변형된x 값 리턴
    }
    set
    {
    if(value >0)  // x값이 0보다 큰 경우만 넣는다
    {
    x= value;
    OnUpdateX();  // x 값이 바귈때 불리는 메서드
    }
    }
    }









    반응형

    'Writer > WarmingUp Code' 카테고리의 다른 글

    눈물의 소스 박스형 for와 if 사용 첨부 상철 상봉 오윤  (0) 2008.10.09
    소스 복습  (0) 2008.10.08
    객체지향 소스  (0) 2008.10.07
    성적출력  (0) 2008.10.07
    소스연습  (0) 2008.10.06
    프로퍼티 웜업소스  (0) 2008.10.05
    string ToString() bool float object enum boxing char  (0) 2008.10.04
    클래스 구조체  (0) 2008.10.01

    댓글

Designed by Tistory.