프로그램/C# - Study / / 2010. 9. 14. 12:08

7D - private, pubic 접근 - 추가

반응형


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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유