using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ex10OOP
{
class Program
{
static void Main(string[] args)
{
Person person; //참조변수 생성
person = new Person(); // 객체생성 및 할당
//Person person = new Person(); 이렇게 줄여서 가능
// 1. acces public field
//person.Number = 1;
//person.Name = "장동건";
//person.Phone = "011-000-6005";
//person.Email = "newto000@nate.com";
// 2. acces private field
//person.SetNumber(1); // 직접 접근이 아니라 메서드를 통해 접근한다
//person.SetName("장동건");
//person.SetPhon("011-000-6005");
//person.SetEmail("newto000@nate.com");
// 3.
person.Number = 1;
person.Name = "장동건";
person.Phone = "011-0000-6005";
person.Email = "newto000@nate.com";
Console.WriteLine(person.GetPersonInfo());
}
}
}
******************************************** 코드파일 추가 ******************************************
using System;
namespace Ex10OOP
{
class Person
{
#region public field
//특성 (Data)
//public int Number;
//public string Name;
//public string Phone;
//public string Email;
//public string GetPersonInfo()
//{ //Console.WriteLine 와 같다
// return string.Format(
// "[{0}][{1}][{2}][{3}]", Number, Name, Phone, Email);
//}
#endregion
#region public field
private int number; // private 같은 클래스 접근만 가능
private string name; //name 드래그후 리팩터링 -> 필드 캡슐화
private string phone;
private string email;
#endregion
public int GetNumber() { return number; }
public void SetNumber(int number)
{
if (number > 0)
{
this.number = number;
}
else
{
//강제로 오류를 발생
throw new ArgumentException("0보다 커야 합니다.");
}
}
public string GetName() { return name; }
public void SetName(string name)
{
this.name = name;
}
public string Name // 리펙터링 - > 필드캡슐화
{
get { return name; } //접근자/ 접근자메소드 쓰는이유!코드량이 줄어든다!
set { name = value; } //접근자/ 접근자메소드
}
public string Phone// 리펙터링 - > 필드캡슐화
{
get { return phone; }
set { phone = value; }
}
public string Email// 리펙터링 - > 필드캡슐화
{
get { return email; }
set { email = value; }
}
public string GetPhon() { return phone; }
public void SetPhon(string p) { phone = p; }
public string GetEmail() { return email; }
public void SetEmail(string e) { email = e; }
public int Number //프로퍼티
{
get { return number; }
set
{
if(value > 0)
number = value; //전달인자 대체
else
throw new AggregateException("0보다 커야 합니다.");
}
}
//기능(Method)
public string GetPersonInfo()
{ //Console.WriteLine 와 같다
return string.Format(
"[{0}][{1}][{2}][{3}]", number, name, phone, email);
}
}
}
/************************************************************
* 명명규칙
* 1. Oascal 기본 / Camel 선택적
* Camel : 지역변수, 전달인자, private/protected field(언더스코어 자료 사용도하다)
* Pascal : 위 경우를 제외한 나머지 모든 경우
*
* *********************************************************/
'프로그램 > C# - Study' 카테고리의 다른 글
7D - readonly, const (0) | 2010.09.14 |
---|---|
7D - 오버로딩 (0) | 2010.09.14 |
6D - private, pubic 접근 (0) | 2010.09.13 |
객체지향은? (0) | 2010.09.13 |
6D - 배열 , 다차원 배열, Langth(), Sort(), Reverse(), IndexOf() 기능 (0) | 2010.09.13 |