小编Ion*_*onR的帖子

C#OOP组成和概括同时进行

这可能是一个简单/基本的OOP问题,但我仍然无法弄清楚如何解决它.我在访谈中遇到了以下问题:制作一个UML类图并编写一个"智能"手机的基本代码,其中包含电话和MP3播放器的功能.我们有以下(接受)解决方案:

class Telephone 
{
    public string name { get; set; }

    public Telephone()
    {
        name = "name telephone";
    }
}

class MP3 
{
    public string name { get; set; }

    public MP3()
    {
        name = "name mp3";
    }
}
Run Code Online (Sandbox Code Playgroud)

而"智能"手机类:

class TelephoneMP3 
{
    public Telephone tel;
    public MP3 mp3;

    public TelephoneMP3()
    {
        tel = new Telephone();
        mp3 = new MP3();
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我们在TelephoneMP3和Telephone/MP3类之间有一个组合关系.

但是,使用此代码,TelephoneMP3不是电话,而且TelephoneMP3也不是MP3,这是不合逻辑的.那么,为了使这个有效,我应该做些什么改变?例如,这种测试:

if (telMp3 is Telephone)
{
    Console.WriteLine("TelephoneMP3 is telephone");
}           
if (telMp3 is MP3)
{
    Console.WriteLine("TelephoneMP3 is …
Run Code Online (Sandbox Code Playgroud)

c# oop composition generalization

17
推荐指数
6
解决办法
2802
查看次数

标签 统计

c# ×1

composition ×1

generalization ×1

oop ×1