• OOM之类、对象、实例、实体之辨析


    一、场景再现
            有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别。我用禅语来解释一下吧:
            鱼和三文鱼有什么区别?
            这个问题有没有让你有点晕呢?说真的,坐下来想一分钟。我的意思是说,鱼和三文鱼是不一样,不过它们其实也是一样的是不是?三文鱼是鱼的一种,所以说没什么不同,不过三文鱼又有些特别,它和别的种类的鱼的确不一样,比如三文鱼和大比目鱼就不一样。所以三文鱼和鱼既相同又不同。怪了。
     
            这个问题让人晕的原因是大部分人不会这样去思考问题,其实每个人都懂这一点,你无须去思考鱼和三文鱼的区别,因为你知道它们之间的关系。你知道三文鱼是鱼的一种,而且鱼还有别的种类,根本就没必要去思考这类问题。
     
            让我们更进一步,假设你有一只水桶,里边有三条三文鱼。假设你的好人卡多到没地方用,于是你给它们分别取名叫Frank, Joe,和Mary。现在想想这个问题:
     
            Mary和三文鱼有什么区别?
            这个问题一样的奇怪,但比起鱼和三文鱼的问题来还好点。你知道Mary是一条三文鱼,所以他并没什么不同,他只是三文鱼的一个“实例(instance)”。Frank和Joe一样也是三文鱼的实例。我的意思是说,它们是由三文鱼创建出来的,而且代表着和三文鱼一样的属性。
     
            所以我们的思维方式是(你可能会有点不习惯):鱼是一个“类(class)”,三文鱼是一个“类(class)”,而Mary是一个“对象(object)”。仔细想想,然后我再一点一点慢慢解释给你。
     
            鱼是一个“类”,表示它不是一个真正的东西,而是一个用来描述具有同类属性的实例的概括性词汇。 你有鳍?你有鳔?你住在水里?好吧那你就是一条鱼。
     
            后来河蟹养殖专家路过,看到你的水桶,于是告诉你:“小伙子,你这些鱼是三文鱼。” 并且专家还定义了一个新的叫做“三文鱼”的“类”,而这个“类”又有它特定的属性。长鼻子?浅红色的肉?生活在海洋里?吃起来味道还可以?那你就是一条三文鱼。
     
            最后一个厨师过来了,他跟专家说:“非也非也,你看到的是三文鱼,我看到的是Mary,而且我要把Mary和剁椒配一起做一道小菜。”于是你就有了一只叫做Mary的三文鱼的“实例(instance)”(三文鱼也是鱼的一个“实例”),并且你使用了它,这样它就是一个“对象(object)”。
     
            这会你应该了解了:Mary是三文鱼的成员,而三文鱼又是鱼的成员。这里的关系式:对象属于某个类,而某个类又属于另一个类。

     ----<上述文本摘抄于:https://flyouting.gitbooks.io/learn-python-the-hard-way-cn/content/learn-python-the-hard-way-exercise42.html>

    二、回归概念 

     类

    ①对具有相同数据和相同操作的一组相似对象。

    对具有相同属性和行为的一组相似的对象的抽象,类不存在在于真实世界。

    ----《软件工程概论》

    实例由某个特定的类所描述的一个具体的对象。

    ----《软件工程概论》

    辨析1【类与实例,类与对象】:类与实例可以看做型值对关系,类与对象也可以看做型值对的关系,实例与对象可以认为等价。 

    对象:

    ①在应用领域中有意义的,与所要解决的问题有关系的任何事物,可以是物理实体、人为概念或者是有明确边界和意义的东西。

     对象是对问题领域中某个实体抽象。

    ----《软件工程概论》

    实例化:用类创建对象的过程叫做实例化。实例化过程的结果是形成一个新的类的实例,一个新的类的具体对象。 

    ----《软件工程概论》

    辨析2:当使用“对象”这个术语时,既可以指一个具体的对象【实例】,也可以泛指一般的对象【类】。但是,当使用“实例” 这个术语时,必然是指一个具体的对象。

    ----《软件工程概论》

    这也就是为什么说,Mary是三文鱼的一个实例(化)对象,而三文鱼是鱼类的一个子类的原因。 

    辨析3【类,对象,实例】:类>=对象>=实例

    案例1:Person类是类;

    Chinese类是Person类的子类;

    Johnny是Person类的一个实例;

    Johnny也是Person类的一个对象;

    案例2: 

    String 类
    String str   str是对象(对字符串特征的抽象)
    String str = "abc";  "abc"是实例,也是对象.

    实体:

    客观存在并可相互区别的事物,可以是具体的人、事、物,也可以是抽象的概念、联系。比如:学生,一个学生,一门课,学生的一次选课,教师与院系的工作关系等。

    ----《数据库概论》(实体具有属性,实体之间具有实体关系,在结构化程序设计方法中,常用E-R图处理实体及其相关关系)

    ②实体作为一种数据性对象,与数据库表与之对应。实体类,反之,对应的类有:业务类,数据处理类等。

    实体类:面向对象程序设计方法中的,实体类是所有类的一种类。 

  • 相关阅读:
    <a href=”#”>与 <a href=”javascript:void(0)” 的区别
    win7与ubuntu11.04双系统
    winform中为控件设置鼠标样式
    如何得到格林威治标准时间(C#,SQL SERVER)
    winform中将光标定位到多行文本框的最下处
    VS2010 MV3开发时让jQuery支持智能感知
    转载:SQL Server 2005无日志文件附加数据库
    PowerPoint无法显示文件中某些幻灯片中的文字、图像或对象
    转载:版本简介
    使用 ADO.NET连接SQL Azure
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7173537.html
Copyright © 2020-2023  润新知