[C#] 상속과 다형성 실습 - 밴드(음악가, 피아니스트, 드러머)
실습) 다음 시나리오에 맞게 프로그램을 작성하시오. * 목적: 상속과 다형성 기초 밴드를 생성 후에 피아니스트와 드러머를 멤버로 추가한다. |
*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();
}
}
}