반응형
    
    
    
  | 
 실습) 다음 내용에 맞게 형식을 정의하시오. 상품   | 
| *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);
            }
        }
    }
}

반응형
    
    
    
  '언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
| [C# 실습] 반도체 장비 관리 프로그램 (0) | 2020.09.21 | 
|---|---|
| [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 |