'.NET프로그래밍/C# 3.5 SP1'에 해당되는 글 118건

  1. 2009.08.14 64. 봉인클래스(Sealed)
  2. 2009.08.14 63. 인터페이스(Interface)
  3. 2009.08.14 62. 추상클래스(Abstract)
  4. 2009.08.14 61. ToString메서드오버라이드
  5. 2009.08.14 60. 부모의 멤버접근
  6. 2009.08.14 59. 자동차클래스상속
  7. 2009.08.14 58. 클래스상속
  8. 2009.08.14 57. 네임스페이스(Namespace)
  9. 2009.08.14 56. 클래스복습
  10. 2009.08.13 55. 무명메서드


==> 봉인클래스.cs



using System;

public class 봉인클래스
{
    public static void Main()
    {
        Sonata s = new Sonata();
    }
}



==============================================================================================



==> Car.cs



using System;
public interface IIso { }
public interface IKs { }
public abstract class Car { }
public class Hyundai : Car, IIso, IKs
{

}

public sealed class Sonata : Hyundai
{

}

//public class Other : Sonata
//{
//    // 실행결과 에러가 난다. 하나의 완성된 제품이므로 더이상 상속해서 쓸 필요가 없다는 의미이다.
//}



'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

C# 프로그래밍 관련 단어정리  (0) 2009.08.14
"상속(Inheritance)" 필기  (0) 2009.08.14
63. 인터페이스(Interface)  (0) 2009.08.14
62. 추상클래스(Abstract)  (0) 2009.08.14
61. ToString메서드오버라이드  (0) 2009.08.14
Posted by holland14
:


==> 인터페이스.cs



using System;

public class 인터페이스
{
    public static void Main()
    {
        Sonata sonata = new Sonata();
        sonata.Run();
        sonata.Left();
        sonata.Right();
        sonata.Back();
    }
}



==============================================================================================



==> Car.cs



using System;
// Interface : ISO 규격 : 전세계표준
public interface IIso // 인터페이스 이름 : I대문자 그다음 첫자도 대문자로 표기한다.
{
    void Run(); // 이름만 정의(멤버가 없다.)
}

// Interface : KS 규격 : 한국표준
public interface IKs
{
    void Back();
}

// Abstract : 현대자동차 규격
public abstract class Hyundai : IIso, IKs // Hyundai는 IIso, IKs의 상속을 받는다.
{
    public void Run() { Console.WriteLine("전진"); }
    public void Back() { Console.WriteLine("후진"); }
    public abstract void Left(); // 추상메서드    
}
// Class : Sonata
public class Sonata : Hyundai // Sonata는 Hyundai의 상속을 받는다.
{
    public override void Left()
    {
        Console.WriteLine("좌회전");
    }
    public void Right()
    {
        Console.WriteLine("우회전");
    }
}

 

/*
- 추상클래스는 추상메서드 외에도 일반메서드들도 와도 된다.
- 인터페이스와 추상클래스는 멤버내용( {~} )이 없다. 이름만 있다.
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

"상속(Inheritance)" 필기  (0) 2009.08.14
64. 봉인클래스(Sealed)  (0) 2009.08.14
62. 추상클래스(Abstract)  (0) 2009.08.14
61. ToString메서드오버라이드  (0) 2009.08.14
60. 부모의 멤버접근  (0) 2009.08.14
Posted by holland14
:


==> 추상클래스.cs



using System;

public class 추상클래스
{
    public static void Main()
    {
        Sonata son = new Sonata();
        son.Run(); // 표준
        son.Left(); // 공통
        son.Right(); // 자체
    }
}



==============================================================================================



==> Car.cs


using System;
// 국내표준 : 강제성 => 추상
public abstract class KS
{
    // 추상메서드
    public abstract void Run();
}

// 현대공통
public class Hyundai : KS
{
    public override void Run()
    {
        Console.WriteLine("전진");
    }

    public virtual void Left()
    {
        Console.WriteLine("좌회전");
    }
}

// 소나타만의 기능
public class Sonata : Hyundai
{
    public void Right()
    {
        Console.WriteLine("우회전");
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

64. 봉인클래스(Sealed)  (0) 2009.08.14
63. 인터페이스(Interface)  (0) 2009.08.14
61. ToString메서드오버라이드  (0) 2009.08.14
60. 부모의 멤버접근  (0) 2009.08.14
59. 자동차클래스상속  (0) 2009.08.14
Posted by holland14
:


== > ToString메서드오버라이드.cs



using System;

public class ToString메서드오버라이드
{
    public static void Main()
    {
        // 모든 변수 : 클래스명
        System.Collections.Stack s = new System.Collections.Stack();
        Console.WriteLine("{0}", s.ToString()); // 기본값 : 클래스명

        // 정수형 변수
        Int32 intNum = 1234;
        Console.WriteLine("{0}", intNum.ToString()); // 정수형 -> 문자열 형변환

        // 내가 만든 클래스에 ToString()을 요청했을 때???
        // 특정한 필드의 값을 바로 출력...
        Car car = new Car();
        Console.WriteLine(car.Name);
        Console.WriteLine(car);

        Car sonata = new Car("소나타");
        Console.WriteLine(sonata.Name);
        // ToString 메서드 오버라이드
        Console.WriteLine("{0}", sonata.ToString());
        Console.WriteLine("{0}" ,sonata);
    }

}



==============================================================================================



==> Car.cs



using System;

public class Car
{
    private string name; // Field
    public string Name // Property
    {
        get { return name; }
        set { name = value; }
    }
    public Car() // Constructor
    {
        this.name = "자동차";
    }

    public Car(string name)
    {
        this.name = name;
    }

    public override string ToString()
    {
        return name; // name값 출력
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

63. 인터페이스(Interface)  (0) 2009.08.14
62. 추상클래스(Abstract)  (0) 2009.08.14
60. 부모의 멤버접근  (0) 2009.08.14
59. 자동차클래스상속  (0) 2009.08.14
58. 클래스상속  (0) 2009.08.14
Posted by holland14
:


==> 부모의멤버접근.cs



using System;

public class 부모의멤버접근
{
    public static void Main()
    {
        Hyundai sonata = new Hyundai("소나타");
        sonata.Run(); // 소나타가 달린다.

        Hyundai santafe = new Hyundai();
        santafe.Run(); // 현대자동차가 달린다.

        Samsung sm = new Samsung();
        sm.Run();
    }
}



==============================================================================================



==> Car.cs


using System;

public class Car
{
    private string name; // 이름
    public Car()
    {

    }
   
    public Car(string name)
    {
        this.name = name;
    }

    public void Run()
    {
        Console.WriteLine("{0}가 달린다.", this.name);
    }
}

public class Hyundai : Car
{
    public Hyundai() : this("현대자동차")
    {
        // Empty
    }

    public Hyundai(string name) : base(name) // 생성자
    {
        // 부모클래스 : base
       
    }
}

public class Samsung : Car
{
    public Samsung() : base("삼성자동차") { }
}




/*
this는 '나 자신' / base는 '부모'를 나타내다.
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

62. 추상클래스(Abstract)  (0) 2009.08.14
61. ToString메서드오버라이드  (0) 2009.08.14
59. 자동차클래스상속  (0) 2009.08.14
58. 클래스상속  (0) 2009.08.14
57. 네임스페이스(Namespace)  (0) 2009.08.14
Posted by holland14
:


==> 상속.cs



using System;

public class 상속 : Object
{
    public static void Main()
    {
        //Car car = new Car();
        //car.Run();

        Hyundai sonata = new Hyundai();
        sonata.Run(); // 공통
        sonata.Left(); // 전용

        GM matiz = new GM();
        matiz.Run();
        matiz.Right();
    }

}




==============================================================================================



==> Car.cs



using System;
// 공통
public class Car : Object
{
    public void Run()
    {
        Console.WriteLine("전진");
    }

    public virtual void Back()
    {
        Console.WriteLine("후진");
    }
}
// 현대 전용
public class Hyundai : Car
{
    public void Left()
    {
        Console.WriteLine("좌회전");
    }

    public new void Run()
    {
        Console.WriteLine("현대전진");
    }
}

// 대우 전용
public class GM : Car
{
    public void Right()
    {
        Console.WriteLine("우회전");
    }

    public override void Back()
    {
        Console.WriteLine("대우후진");
    }
}

 


/*
모든클래스들은 앞에 System.Object가 생략되어있다.
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

61. ToString메서드오버라이드  (0) 2009.08.14
60. 부모의 멤버접근  (0) 2009.08.14
58. 클래스상속  (0) 2009.08.14
57. 네임스페이스(Namespace)  (0) 2009.08.14
56. 클래스복습  (0) 2009.08.14
Posted by holland14
:


==> 클래스상속. cs



using System;

public class 클래스상속
{
    public static void Main(string[] args)
    {
        Child c = new Child();
        c.Hi();
    }

}



==============================================================================================



==> ParentChild.cs



using System;

public class Parent : Object //( Object는 생략가능 )
{
    private string msg = "Hi";
    protected string Message
    {
        get { return msg; }
        set { msg = value; }
    }
    public virtual void Hi()
    {
        Console.WriteLine(msg);
    }
}

public class Child : Parent // Parent클래스의 모든 기능을 Child클래스에 상속하겠다
{   
    public override void Hi()
    {
        Console.WriteLine("자식 : " + Message);
    }
}






==============================================================================================


똑같은 내용 참고자료



클래스상속.cs

 

using System;

 

public class 클래스상속

{

    static void Main(string[] args)

    {

        Child c = new Child();

        // c.msg = "메롱~";

        // 필드값 변경 가능하기 때문에 private로 변경

        // 자식 클래스에만 사용할 수 있게 하려면 protected

        c.Hi(); // 자식

       

        Console.WriteLine(c.ToString()); // Object로 부터 상속

       

    }

}

 

==============================================================================================


ParentChild.cs

 

 


using System;

 

public class Parent : Object // 모든 클래스는 Object클래스로 부터 상속 받음. 생략가능

{

    private string msg = "Hi"; // 필드는 캡슐화. 숨겨야 함

    public string Message

    {

        get { return msg; }

        set { msg = value; }

    }

    public virtual void Hi()

    {

        Console.WriteLine("Hi");

    }

}

 

public class Child : Parent

{

    //public string msg = "Hi2"; // 부모클래스에 선언되어서 따로 안해도 됨

    public override void Hi()  // new : 부모클래스의 Hi()메소드를 재정의

    {

        Console.WriteLine("자식 :" + Message);

    }

}


 

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

60. 부모의 멤버접근  (0) 2009.08.14
59. 자동차클래스상속  (0) 2009.08.14
57. 네임스페이스(Namespace)  (0) 2009.08.14
56. 클래스복습  (0) 2009.08.14
55. 무명메서드  (0) 2009.08.13
Posted by holland14
:

using System;
using hw = Hyundai.Weight; // 축약형
using Hyundai.Weight.New; // 전체

namespace 닷넷학습
{
    public class 네임스페이스
    {
        public static void Main()
        {
            System.Console.WriteLine("네임스페이스.클래스.멤버");
            Hyundai.Sonata sonata = new Hyundai.Sonata();
            sonata.Run();
            Hyundai.Weight.Genesis ge = new Hyundai.Weight.Genesis(); ge.Run();
            hw.Genesis gen = new hw.Genesis(); gen.Run();
            Equus e = new Equus(); e.Run();
        }
    }
}

namespace Hyundai
{
    public class Sonata
    {
        public void Run() { Console.WriteLine("소나타 달리다"); }
    }
    namespace Weight
    {
        public class Genesis
        {
            public void Run() { Console.WriteLine("제네시스 달리다"); }
        }
    }
    namespace Weight.New
    {
        public class Equus
        {
            public void Run() { Console.WriteLine("에쿠스 달리다"); }
        }
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

59. 자동차클래스상속  (0) 2009.08.14
58. 클래스상속  (0) 2009.08.14
56. 클래스복습  (0) 2009.08.14
55. 무명메서드  (0) 2009.08.13
54. 이벤트(Event)  (0) 2009.08.13
Posted by holland14
:


==> 클래스복습.cs


using System;
using Hyundai;

public class 클래스복습
{
    public static void Main()
    {
        Hyundai.Car car = new Car("현대");

        car.Length = 2; // 2대

        car[0] = "에쿠스";
        car[1] = "제네시스";

        car.Show(); // 에쿠스, 제네시스

        // 대리자를 통한 호출
        CarHandler ch = new CarHandler(car.Show); // ch라는 대리자인스턴스를 생성하면서, Show라는 메서드를 등록
        ch();

        car.Go += car.Show;
        car.OnGo();
    }
}



==============================================================================================


==> Car.cs


using System;
// Namespace
namespace Hyundai
{
    // Class생성
    public class Car
    {
        // Field생성
        private string name;

        // Constructor생성
        public Car()
        {
            // Empty
        }
        public Car(string name)
        {
            this.name = name;
        }

        // Property
        private int _Length;
        public int Length
        {
            get { return _Length; }
            set
            {
                _Length = value;
                names = new string[value];
            }
        }

        // Indexer 생성
        private string[] names;
        public string this[int index]
        {
            get { return names[index]; }
            set { names[index] = value; }
        }

        // Method 생성
        public void Show()
        {
            Console.WriteLine("{0}", name);
            foreach (string s in names)
            {
                Console.WriteLine("{0}", s);
            }
        }

        // Destructor 생성
        ~Car()
        {
            names = null;
        }

        // Event생성
        public event CarHandler Go; // CarHandler라는 대리자타입으로 (이벤트'Go'를)만들겠다.

        // Event Handler 생성
        public void OnGo()
        {
            if (Go != null)
            {
                Go();
            }

        }
    }
    // Delegate 생성
    public delegate void CarHandler();
 
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

58. 클래스상속  (0) 2009.08.14
57. 네임스페이스(Namespace)  (0) 2009.08.14
55. 무명메서드  (0) 2009.08.13
54. 이벤트(Event)  (0) 2009.08.13
53. 대리자(Delegate)  (0) 2009.08.13
Posted by holland14
:

using System;

namespace 무명메서드
{
    //[!] 대리자 선언
    public delegate void SayHandler(string msg);

    public class Button
    {
        public event SayHandler Click; //[1] 이벤트 생성

        public void OnClick(string msg) //[2] 이벤트 핸들러 생성
        {
            if (Click != null)
            {
                Click(msg);
            }
        }
    }

    public class Program
    {
        public static void Say(string msg)
        {
            Console.WriteLine(msg);
        }

        static void Main(string[] args)
        {
            //[1] 메서드 호출
            Program.Say("안녕"); Say("안녕");

            //[2] 대리자를 통해서 대신 호출
            SayHandler sh = new SayHandler(Program.Say);
            sh += new SayHandler(Program.Say);
            sh("방가"); // 실행

            //[3] 이벤트와 이벤트 처리기를 통해서 등록해서 호출
            Button btn = new Button();
            btn.Click += new SayHandler(Say); // 기본
            btn.Click += Say; // 축약형
            btn.OnClick("또봐");  // 실행

            //[4] 무명메서드 : 간단하게 메시지만 출력하는 기능이라면 함수사용하지 않고 그 자리에 delegate로 바꿔서 써준다.
            SayHandler hi = delegate(string msg) { Console.WriteLine(msg); };
            hi("언제"); hi("언제");
            Button button = new Button();
            button.Click += delegate(string msg) { Console.WriteLine(msg); };
            button.Click += delegate(string msg) { Console.WriteLine(msg); };
            button.OnClick("내일");

        }
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

57. 네임스페이스(Namespace)  (0) 2009.08.14
56. 클래스복습  (0) 2009.08.14
54. 이벤트(Event)  (0) 2009.08.13
53. 대리자(Delegate)  (0) 2009.08.13
알고리즘 - 11. 병합정렬(Merge)  (0) 2009.08.13
Posted by holland14
: