C#/실습으로 다지는 C#

[012] C# 집합 관계 실습 - 쇼핑 센터, 상품

언제나휴일 2020. 4. 8. 11:03
반응형

집합 관계 클래스 다이어그램

소스 코드

Product.cs

namespace 집합_관계
{
    public class Product
    {
        public string Name
        {
            get;
            private set;
        }
        public int Price
        {
            get;
            private set;
        }
        public string Company
        {
            get;
            private set;
        }
        readonly int pn;
        public int PN
        {
            get
            {
                return pn;
            }
        }
        static int lastpn;
        public Product(string name,int price,string company)
        {
            Name = name;
            Price = price;
            Company = company;
            lastpn++;
            pn = lastpn;
        }
        public override string ToString()
        {
            return Name;
        }
    }
}

Mall.cs

using System.Collections;
using System.Collections.Generic;

namespace 집합_관계
{
    class Mall : IEnumerable<Product>
    {
        Dictionary<int, Product> pdic = new Dictionary<int, Product>();

        public bool InProduct(Product product)
        {
            if(pdic.ContainsKey(product.PN))
            {
                return false;
            }
            pdic[product.PN] = product;
            return true;
        }

        IEnumerator<Product> IEnumerable<Product>.GetEnumerator()
        {
            return pdic.Values.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return pdic.GetEnumerator();
        }
    }
}

Program.cs

//http://ehpub.co.kr
//실습으로 다지는 C#
//집합 관계 실습
using System;

namespace 집합_관계
{
    class Program
    {
        static void Main(string[] args)
        {
            Mall mall = new Mall();
            mall.InProduct(new Product("Escort C#", 5000, "언제나 휴일"));
            mall.InProduct(new Product("실습으로 다지는 C#", 5000, "휴일"));
            foreach(Product product in mall)
            {
                Console.WriteLine(product);
            }
        }
    }
}
반응형