반응형
/*
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 |