본문 바로가기

카테고리 없음

SMART FACTORY - 초기화목록/상속/프로퍼티

반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        public class Car
        {
            string color;
            string vender;
            string name;
            //생성자에 대해 공부하자 ? 
            //메소드이다
            //클래스 이름과 같아야한다.
            //
           public Car() //디폴트 생성자 !
            {
                Console.WriteLine("Car 디폴트 생성자 호출");
            }
            /// <summary>
            /// 코드 중복을 제거하는 방법 this를 가져온다  초기화 목록
            /// </summary>
            /// <param name="name"></param>
            public Car(string name) : this(name,"","") //생성자 오버로딩!
            {
                //this.name = name;
                //Console.WriteLine("Car 생성자 호출");
            }
            public Car(string name,string vender) : this(name, vender, "") //생성자 오버로딩!
            {
                //this.name = name;
                //this.vender = vender;
                //Console.WriteLine("Car 생성자 호출");
            }
            public Car(string name, string vender,string color)  //생성자 오버로딩!
            {
                this.name = name;
                this.vender = vender;
                this.color = color;
                Console.WriteLine("Car 생성자 호출");
            }
            ~Car()
            {
                Console.WriteLine("Car 종료자 호출");

            }

        }
        static void Main(string[] args)
        {
            Console.WriteLine("1.==================");
            Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
            Car car= new Car();
            Console.WriteLine("2.==================");

        }
    }
}

null= "" = '0' 모두다 같은 값이다 기호에 맞게 사용하면 된다 !

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        public class Car
        {
            string color;
            string vender;
            string name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다

            public void SetName (string name)
            {
                name = "Auto:" + name  ;
                this.name = name;
            }
            public void Print()
            {
                Console.WriteLine( $"[{name}],[{vender}],[{color}]");
            }
            //생성자에 대해 공부하자 ? 
            //메소드이다
            //클래스 이름과 같아야한다.
            //
           public Car() //디폴트 생성자 !
            {
                Console.WriteLine("Car 디폴트 생성자 호출");
            }
            /// <summary>
            /// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다 
            /// </summary>
            /// <param name="name"></param>
            public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
            {
            }
            public Car(string name,string vender) : this(name, vender, "") 
            {
            }
            public Car(string name, string vender,string color)  
            {
                this.name = name;
                this.vender = vender;
                this.color = color;
                Console.WriteLine("Car 생성자 호출");
            }
            ~Car()
            {
                Console.WriteLine("Car 종료자 호출");

            }

        }
        static void Main(string[] args)
        {
            Console.WriteLine("1.==================");
            Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
            Car car= new Car();
            Console.WriteLine("2.==================");
            aCar.Print();
            aCar.SetName("비안츠");
            aCar.Print();
            Console.WriteLine("3.==================");

        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        public class Car
        {
            string color;
            string vender;
            string name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다
            public string GetName()
            {
                return name;
            }
            public void SetName (string name)
            {
                name = "Auto:" + name  ;
                this.name = name;
            }
            public void Print()
            {
                Console.WriteLine( $"[{name}],[{vender}],[{color}]");
            }
            //생성자에 대해 공부하자 ? 
            //메소드이다
            //클래스 이름과 같아야한다.
            //
           public Car() //디폴트 생성자 !
            {
                Console.WriteLine("Car 디폴트 생성자 호출");
            }
            /// <summary>
            /// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다 
            /// </summary>
            /// <param name="name"></param>
            public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
            {
            }
            public Car(string name,string vender) : this(name, vender, "") 
            {
            }
            public Car(string name, string vender,string color)  
            {
                this.name = name;
                this.vender = vender;
                this.color = color;
                Console.WriteLine("Car 생성자 호출");
            }
            ~Car()
            {
                Console.WriteLine("Car 종료자 호출");

            }

        }
        static void Main(string[] args)
        {
            Console.WriteLine("1.==================");
            Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
            Car car= new Car();
            Console.WriteLine("2.==================");
            aCar.Print();
            aCar.SetName("비안츠");
            aCar.Print();
            string name = aCar.GetName(); // 변수의 값 (데이터) 값을 보호할 때 이렇게 메소드를 통해 확인하고 변경한다.
            Console.WriteLine("읽어온 값은 : " + name);
            Console.WriteLine("3.==================");

        }
    }
}

보안을 위해서 변수 값을 바로 못 바꾸고 메소드를 통해서만 변경 또는 읽어 올 수 있게 만들 수 있다. !!!!!!!!!!!!!!!!

 

 

 

프로퍼티

 

 

set영역에서는 무조선 value 값을 넣어 준다 ,

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        public class Car
        {
            const int iNum1 = 10; // 컴파일 되기 전부터 셋팅 고정 
            readonly int iNum2;   // 컴파일 될때 셋팅이 되는 값 -로그인 할때 별명 값설정 이건 리드온리
            string _color;
            string _vender;
            string _name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다
            /// <summary>
            /// 프로퍼티 - 겟셋
            /// </summary>
            public string name
            {
                get
                {
                    return _name;
                }
                set
                {
                    value = "Auto:" + value;
                    this._name = value;
                }
            }
            public string GetName()
            {
                return _name;
            }
            public void SetName (string name)
            {
                name = "Auto:" + name  ;
                this._name = name;
            }
            public void Print()
            {
                Console.WriteLine( $"[{_name}],[{_vender}],[{_color}]");
            }
            //생성자에 대해 공부하자 ? 
            //메소드이다
            //클래스 이름과 같아야한다.
            //
           public Car() //디폴트 생성자 !
            {
                Console.WriteLine("Car 디폴트 생성자 호출");
            }
            /// <summary>
            /// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다 
            /// </summary>
            /// <param name="name"></param>
            public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
            {
            }
            public Car(string name,string vender) : this(name, vender, "") 
            {
            }
            public Car(string name, string vender,string color)  
            {
                iNum2 = 100; // 생성자에 변수를 불러 놓으면 생성자가 호출 될때 한번 값을 바꿔준다.
                this._name = name;
                this._vender = vender;
                this._color = color;
                Console.WriteLine("Car 생성자 호출");
            }
            ~Car()
            {
                Console.WriteLine("Car 종료자 호출");

            }

        }
        static void Main(string[] args)
        {
            Console.WriteLine("1.==================");
            Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
            Car car= new Car();
            Console.WriteLine("2.==================");
            aCar.Print();
            aCar.SetName("비안츠");
            aCar.Print();
            string name = aCar.GetName(); // 변수의 값 (데이터) 값을 보호할 때 이렇게 메소드를 통해 확인하고 변경한다.
            Console.WriteLine("읽어온 값은 : " + name);
            Console.WriteLine("3.==================");
            aCar.name = "람보르기니"; //프로퍼티 문법은 사용하여 정보 입력 및 호출
            aCar.Print();
            name = aCar.name;
            Console.WriteLine("읽어온 값은 : " + name);
            Console.WriteLine("4.==================");


        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Parent
    {
        public int iNum = 100;

        public Parent()
        {
            Console.WriteLine("Parent 클래스 생성자");
        }
        ~Parent()
        {
            Console.WriteLine("내가 Parent 소멸자이다");
        }

    }
    class Child : Parent
    {
        public int iNum=200;

        public Child()
        {
            Console.WriteLine("Child 클래스 생성자");
        }
        ~Child()
        {
            Console.WriteLine("내가 Child 소멸자이다");
        }

        public void Print()
        {
            Console.WriteLine("Child 클래스 iNum : "+iNum);
            Console.WriteLine("Parent 클래스 iNum : " + base.iNum);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Child child = new Child();
            child.Print();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp6
{class Parent
    {
        public /*virtual*/ void Name()
        {
            Console.WriteLine("Parent");

        }
    }
    class Child : Parent
    {
        public /*override*/ void Name()
        {
            Console.WriteLine("Child");
        }
    }
    class GrandChild : Child
    {
        public /*override*/ void Name()
        {
            Console.WriteLine("GrandChild");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Parent obj1 = new Parent();
            Child obj2 = new Child();
            GrandChild obj3 = new GrandChild();

            obj1.Name();
            obj2.Name();
            obj3.Name();
        }
    }
}

 

 

객체 기반의 엄청난 이점을 가져옵니다. 

이걸 트루로 바꾸면 버퍼링이 안걸린다 !

 

반응형