| 
 실습) 다음 시나리오에 맞게 프로그램을 작성하시오. * 목적: 상속과 다형성 기초 밴드를 생성 후에 피아니스트와 드러머를 멤버로 추가한다.   | 
| *2019년도 공주대에서 | 
| 소스 코드 예) Musician.cs | 
| 
 using System; 
 namespace 상속과_다형성_실습1 { class Musician { string name; protected string Name { get { return name; } } public Musician(string name) { this.name = name; } public void Play() { Console.WriteLine("{0} 연주하다.", name); } public override string ToString() { return name; } } } 
  | 
| Pianist.cs | 
| 
 using System; 
 namespace 상속과_다형성_실습1 { class Pianist:Musician { public Pianist(string name) : base(name) { } public void Tuning() { Console.WriteLine("{0} 조율하다.", Name); } } } 
  | 
| Drummer.cs | 
| 
 using System; 
 namespace 상속과_다형성_실습1 { class Drummer:Musician { public Drummer(string name):base(name) { } public void Polling() { Console.WriteLine("{0} 휘리릭~", Name); } } } 
  | 
Band.cs
using System;
namespace 상속과_다형성_실습1
{
    class Band
    {
        Musician[] members = new Musician[2];
        int mcnt;
        public void AddMember(Musician member)
        {
            if(mcnt <members.Length)
            {
                members[mcnt] = member;
                mcnt++;
            }
        }
        public void StartConcert()
        {
            foreach(Musician m in members)
            {
                m.Play();
                Drummer drummer = m as Drummer;
                if(drummer !=null)
                {
                    drummer.Polling();
                }
            }
        }
        public void Ready()
        {
            foreach (Musician m in members)
            {
                Pianist pianist = m as Pianist;
                if(pianist != null)
                {
                    pianist.Tuning();
                }
            }
        }
    }
}
Program.cs
using System;
namespace 상속과_다형성_실습1
{
    class Program
    {
        static void Main(string[] args)
        {
            Band band = new Band();
            band.AddMember(new Pianist("송정수"));
            band.AddMember(new Drummer("장언휴"));
            band.Ready();
            band.StartConcert();
        }
    }
}

'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
| [C#] 컬렉션(Dictionary) 실습 - 도서 관리 프로그램 (0) | 2019.08.10 | 
|---|---|
| [C#] 상속과 다형성, 인터페이스 실습 - 도형 (0) | 2019.08.10 | 
| [C#] 컬렉션 실습 - IList 인터페이스 구현 약속한 컬렉션 (0) | 2019.08.09 | 
| [C#] 상속과 다형성 실습 - 학생, 학사학생, 마법학생, 운동학생 (0) | 2019.08.09 | 
| [C#] 상속과 다형성 - 상품, 할인상품 (0) | 2019.08.08 | 
| [C#] 캡슐화 - 학생 클래스 정의, 인덱서 포함 (0) | 2019.08.08 | 
| [C#] 캡슐화 실습 - 학생 클래스 (0) | 2019.08.08 | 
| [C#] 캡슐화 실습 - 복소수 정의(멤버 필드와 멤버 속성) (0) | 2019.08.08 | 
| [C#] 제어문 - 퀴즈 abc + cca = 1ab2 (0) | 2019.08.08 | 
| [C#] 제어문 - 정사각형 출력 (0) | 2019.08.07 |