언어 자료구조 알고리즘/프로그래밍 실습
[C#] 상속과 다형성 - 상품, 할인상품
언제나휴일
2019. 8. 8. 15:42
반응형
실습) 다음 내용에 맞게 형식을 정의하시오. 상품 |
*2019년 공주대에서 |
Product.cs
using System;
namespace 상품과_할인_상품
{
class Product
{
/* 속성 get 블럭에서 멤버 필드 값을 반환하고
* 속성 set 블럭에서 멤버 필드 값을 설정하며
* 이 외에 다른 행위가 없다면 자동 속성으로 정의할 수 있다.*/
#region 이름을 멤버 필드와 멤버 속성으로 표현
//string name;//상품 이름
//public string Name
//{
// get
// {
// return name;
// }
// private set
// {
// name = value;
// }
//}
#endregion
public string Name
{
get;
private set;
}
#region 상품 가격을 멤버 필드와 멤버 속성으로 표현
//int price;//상품 가격
//public int Price
//{
// get
// {
// return price;
// }
// private set
// {
// price = value;
// }
//}
#endregion
public int Price
{
get;
private set;
}
public Product(string name,int price)
{
Name = name;
Price = price;
}
public override string ToString()
{
return Name;
}
//GetSalePrice처럼 명명하여 혼돈을 피하면 더 좋은 코드라고 생각함
public virtual int GetPrice()
{
return Price;
}
}
}
DiscountProduct.cs
namespace 상품과_할인_상품
{
class DiscountProduct:Product
{
public int Discount
{
get;
private set;
}
public DiscountProduct(string name, int price,int discount):base(name,price)
{
Discount = discount;
}
public override string ToString()
{
return string.Format("할인 상품 ")+base.ToString();
}
public override int GetPrice()
{
return Price * (100 - Discount) / 100;
}
}
}
Program.cs
using System;
namespace 상품과_할인_상품
{
class Program
{
static void Main(string[] args)
{
Product[] proes = new Product[2];
proes[0] = new Product("지우개", 1000);
proes[1] = new DiscountProduct("지울까",1000,30);
Console.WriteLine(proes[0]);
Console.WriteLine(proes[1]);
Console.WriteLine(proes[0].Price);
Console.WriteLine(proes[1].Price);
Console.WriteLine(proes[0].GetPrice());
Console.WriteLine(proes[1].GetPrice());
ViewDiscountInfo(proes[0] as DiscountProduct);
ViewDiscountInfo(proes[1] as DiscountProduct);
}
private static void ViewDiscountInfo(DiscountProduct dp)
{
if(dp != null)
{
Console.WriteLine("{0} 할인율:{1}",dp, dp.Discount);
}
}
}
}
반응형