Roc*_*oal 26 c# oop namespaces
我正在阅读Heads First C#(它非常有趣且用户友好),但我想知道是否有人有一个有用的比喻来描述名称空间,类,方法,属性等如何"融合在一起"?
类是父类,方法是小孩等,还是更复杂?
一个名字空间可以是一个房子,一个类是一个房间(浴室)和一个方法可以在那个房间里做什么(洗涤等)和属性是做这项活动时可以做的,使用肥皂,热水...
......我会得到我的外套.
sha*_*kin 64
我会说:
命名空间:汽车的类别或品牌.请注意,该品牌确实无需决定汽车的制造方式.你不能说本田总有四扇门,或者它总是有4wd.这些具体细节取决于班级的要求.Rich.Carpenter的帖子很好地解释了命名空间的用途.
类:如何构建特定汽车的蓝图.
对象:从汽车蓝图(类)创建的实际汽车(实例)
方法:汽车用户可以做的事情.Start()
,IncreaseThrottle()
,Brake()
,OpenDoor()
,等.
属性:汽车包含的属性,信息和构建块.例如总行驶里程,颜色,方向盘尺寸,立体声系统等.
一些看起来更先进的概念.也许现在有点矫枉过正,但如果你有兴趣,请阅读它:
继承:当一个类基于另一个类并添加一些更具体的细节时.一系列的继承通常从最常见和最普遍的方面出发,一直到一个更具体无意义的地步.动物背景下的例子:动物 - > Mamal->啮齿动物 - >大鼠 - > RattusNorvegicus
聚合:"构建"对象的属性.例如"这辆车是四轮,底盘,发动机等的集合体".
属性:描述对象的属性,通常不是其物理构造的一部分.例如颜色,最高速度,发动机容量等.
封装:隐藏用户的某些属性,或保护某些属性不被错误使用(从而破坏对象)的概念.例如,您不要公开汽车类的齿轮属性以便自由更改.你封装它并确保Clutch()
之前被调用SetGear()
.
覆盖:如果一个类继承自另一个类,它还会继承该类的方法.覆盖基本上是在继承类用自己的必需行为替换这种方法的实现时.下一点的用法示例.
多态性:一个难以掌握的概念,直到你开始实际使用它.它意味着引用一种非常特殊的对象,通过使用允许您忽略特定类型的通用引用(当您不需要知道它时).例如,如果您想"阅读"停车场中每辆车的车牌号码属性,您并不关心该品牌是什么,或者即使它是拖车或摩托车或其他什么.为了能够做到这一点,我们确保车牌号是继承行(可能是Vehicle
类)中最常规类的属性.所以你只需要将它们作为Vehicle
类来处理列表中的所有对象然后调用它们Vehicle::GetLicensePlateNumber()
.任何需要一些特殊处理来检索数字的车辆都可以通过覆盖方法并使其按要求运行来实现此行为.因此,可以使用多种对象类型,就好像它们属于同一类型,但行为方式可能不同.
Ric*_*ter 28
将类视为对象和方法的描述,将其视为对象可以执行的操作.
例如,我设计了一辆新车.该车的计划或蓝图(类)用于创建实际的,实体的汽车(物体).那些计划表明汽车应该有功能喇叭.因此,我已经将鸣喇叭功能(一种方法)设计到汽车中.那些计划还表明这辆车有四个轮子.车轮将是汽车的一个属性,具有实例化(在创建对象时分配给属性)值为4.颜色将是另一种可能的属性.属性描述对象质量或特征(颜色,高度,宽度等).
现在,我为丰田工作(不是真的,但请耐心等待我).丰田将是包含我的汽车蓝图的命名空间.由于福特,通用汽车等都可以拥有自己的汽车设计(类)以及相同的名称(汽车)和方法(鸣喇叭),丰田,福特和通用汽车的名称空间将这些蓝图(类)分开, distinct,因为当应用程序具有不同的名称空间时,您可以在应用程序中使用具有相同名称的多个版本的类和方法.
希望有所帮助.
归档时间: |
|
查看次数: |
30004 次 |
最近记录: |