注册 登录
编程论坛 C++教室

求帮助对C++的类的概念不是很理解 不会用(有一家饭馆,来了一个人吃肉

编程小郭 发布于 2012-09-01 09:46, 909 次点击
有一家饭馆,来了一个人吃肉(这个人又可能是汉族人,满族人,回族人等),肉(猪肉,牛肉,狗肉,腊狗肉,扣肉等),因为风俗习惯的不同,

汉族人什么都吃
满族人不吃狗肉,其他都吃
回族人不吃猪肉,狗肉。其他都吃

这个人(如果是满族人)就想判断这个肉是否是他们符合他们的习惯。


肉;里加一个  湖南腊狗肉
湖南人    只吃 湖南腊狗肉
13 回复
#2
编程小郭2012-09-01 09:50
帮助顶顶
#3
pangding2012-09-01 13:51
没太看懂题,什么意思呀?

是要写一个程序判断一下一个湖南的满族人能吃什么肉吗?
#4
TonyDeng2012-09-01 13:59
创建一个“人”类,包含“吃肉习惯”属性,然后继承若干“种族人”类,分别具体实现吃肉习惯属性。最后,面向一个具体的种族人,供给一份特定的肉,判断此肉是否属于此人的禁忌。
#5
TonyDeng2012-09-01 16:37
只有本站会员才能查看附件,请 登录
#6
pangding2012-09-01 16:45
回复 5楼 TonyDeng
T版V5。
#7
TonyDeng2012-09-01 16:50
啥意思?
#8
TonyDeng2012-09-01 16:52
C++的语法忘得差不多了,只能用C#写:

程序代码:

/*----------------------------
有一家饭馆,来了一个人吃肉(这个人又可能是汉族人,满族人,回族人等),肉(猪肉,牛肉,狗肉,腊狗肉,扣肉等),因为风俗习惯的不同,

汉族人什么都吃
满族人不吃狗肉,其他都吃
回族人不吃猪肉,狗肉。其他都吃

这个人(如果是满族人)就想判断这个肉是否是他们符合他们的习惯。

肉里加一个  湖南腊狗肉
湖南人    只吃 湖南腊狗肉
----------------------------
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test1
{
    class Program
    {
        // 肉类字典
        protected static Dictionary<Int32, String> Meats = new Dictionary<Int32, String>()
        {
            { 1, "猪肉" },
            { 2, "牛肉" },
            { 3, "狗肉" },
            { 4, "腊狗肉" },
            { 5, "扣肉" }
        };

        // 人类(抽象类)
        protected abstract class Person
        {
            // 种族属性
            private String _ethnicity = "";
            public virtual String Ethnicity
            {
                get { return _ethnicity; }
            }

            // 地域属性
            public String Province { get; set; }

            // 禁忌
            public abstract Boolean is_taboo(Int32 meatID);
        };

        // 汉族
        protected class Han_Chinese : Person
        {
            public override String Ethnicity
            {
                get { return "汉族"; }
            }

            public override Boolean is_taboo(Int32 meatID)
            {
                return (Province != "湖南人") ? false : (meatID != 4);
            }
        }

        // 满族
        protected class ManChu_Chinese : Person
        {
            public override String Ethnicity
            {
                get { return "满族"; }
            }

            // 肉类禁忌:狗肉
            private static Int32[] meat_taboo = { 3 };

            public override Boolean is_taboo(Int32 meatID)
            {
                return meat_taboo.Contains(meatID);
            }
        }

        // 回族
        protected class Hui_Chinese : Person
        {
            public override String Ethnicity
            {
                get { return "回族"; }
            }

            // 肉类禁忌:猪肉、狗肉
            private static Int32[] meat_taboo = { 1, 3 };

            public override Boolean is_taboo(Int32 meatID)
            {
                return meat_taboo.Contains(meatID);
            }
        }

        static void Main(string[] args)
        {
            Person[] persons = new Person[4]
            {
                new Hui_Chinese(),
                new ManChu_Chinese(),
                new Han_Chinese(),
                new Han_Chinese() { Province = "湖南人" }
            };

            Int32 meatID = 1;
            Console.WriteLine("提供{0}\n", Meats[meatID]);

            foreach (Person p in persons)
            {
                Console.Write("[{0}] ", p.Ethnicity);
                if (p.is_taboo(meatID))
                {
                    Console.WriteLine("对不起,我是{0},不吃{1}。", String.IsNullOrEmpty(p.Province) ? p.Ethnicity : p.Province, Meats[meatID]);
                }
                else
                {
                    Console.WriteLine("谢谢!");
                }
            }

            Console.WriteLine("\n按Enter键结束程序...");
            Console.ReadLine();
        }
    }
}


[ 本帖最后由 TonyDeng 于 2012-9-1 16:54 编辑 ]
#9
有容就大2012-09-02 09:14
回复 8楼 TonyDeng
老大就为了一盘肉兴师动众啊
#10
TonyDeng2012-09-02 09:20
以下是引用有容就大在2012-9-2 09:14:33的发言:

老大就为了一盘肉兴师动众啊

你倒是做C++版啊
#11
有容就大2012-09-02 10:42
回复 10楼 TonyDeng
俺只有两条腿啊 都用光了~~
#12
TonyDeng2012-09-02 10:47
正常男生都三条腿
#13
有容就大2012-09-02 10:50
回复 12楼 TonyDeng
你又赢了
#14
liang02012-09-04 13:57
学习学习!!!
1