代码之家  ›  专栏  ›  技术社区  ›  Giorgio Galante

给没用过“类”和“对象”这两个词的人下定义的最好方法是什么?

  •  22
  • Giorgio Galante  · 技术社区  · 5 年前

    我的邻居正在学习“Java入门”,并请我帮助解释一些第一天的概念。我意识到,由于我每天都这样做,我没有初学者的头脑,很难从零开始讲述这些东西。

    我要解释的一个事实并非微不足道的问题是“到底什么是类?”


    • A 变量 保存某种数据;一个变量可能是名字,另一个变量可能是你的体重(磅)。

    • 是一个函数,它做一些事情,可以用这些变量做一些事情。一个方法可能会在屏幕上显示你的名字,或者告诉你应该减掉多少体重才能有一个好的BMI比率。

    • 对象 同时包含变量和方法;一个对象可能代表您,另一个对象可能代表我。

    • A 是一种蓝图或模板,用于描述每个对象中的方法和变量。一个对象是一个实例化的(类的实例);一个对象是某物,而类仅仅是使之成为某物的计划。

    继续这个例子,我们有一个Person对象,它被实例化来保存Alice的数据,另一个Person对象被实例化来保存Bob的数据,还有一个用于Carol,依此类推。


    (我认为这是一个有用的问题,但显然是主观的;标记为CommunityWiki。)

    29 回复  |  直到 14 年前
        1
  •  43
  •   McDowell    14 年前
        2
  •  25
  •   Paul Sasik    14 年前

    类:对象::蓝图:建筑

        3
  •  13
  •   T.J. Crowder    14 年前

    “车”是一门课。 我的 汽车,坐在我的车道上,是一个实例(对象)。

        4
  •  3
  •   Mike Baranczak    14 年前

    一个物体就是一个物体 事情 . 一节课就是一节课 类别

    “Person”是一个类;您是一个对象,Person类的一个实例。此外,“你”这个词也可以看作是一个变量,因为它指的是一个人,但并不总是同一个人。

        5
  •  3
  •   Colin Hebert    7 年前

    我在java课程中使用的一个例子是 Human

    每个读到这篇文章的人都是 人类 (至少我希望如此!),我们都有我们的差异,我们的相似之处,但最终我们都是 (毕竟)。

    人类 实例 对象 )具有特定的特征,如眼睛的颜色或声音是 领域 (你这么叫 变量 人类 另一个。

    还有一个共同的知识,与人类共享,像“毕达哥拉斯定理”的原则。这种知识是普遍的,可以解释为 (我知道这有点夸张)这意味着这种知识不仅包含在一个人身上,而且包含在整个人类身上。

    人类 会走路、说话等,这就是所谓的 方法 ,走路对每个人都一样,但我走路的时候,不是每个人都会走路。走路的行为只影响身体 人类 实例 但它仍然是由 人类


    Teaching OOP to non-programmers

        6
  •  3
  •   joe snyder    14 年前

    一个类的描述就像一个房子的蓝图。所有根据那张蓝图建造的房子都是那一类的东西。给定的房子就是一个例子。房客可以是房子里不断变化的变量。方法的一个例子是邮局通过邮箱向房子发送和接收信息(邮件)的过程。

        7
  •  3
  •   OscarRyz    8 年前

    面向的

    例如,如果要创建通讯簿程序,可以定义以下对象:

    person, address, phone
    

    在许多其他人当中。这些将是现实生活中的对象,你用这些抽象来描述你的程序。

    记住这一点,你可以开始描述一些概念。

    等级

    Person:
       - name 
       - last name 
       - phone number 
       - address 
    

    等。

     Address:
        - street 
        - number
        - city 
        - zip code 
        - country 
    

    等等。您可以注意到,类me可以用其他类来定义,例如,在本文中,一个人只有一个地址。

    对象

     onePerson  ofType Person is (  
         - name = "Oscar"
         - last name = "Reyes" 
         - phone number = "56 58 11 11"
         - address = anAddress ofType Address (
                         - street = "Tecolotes" 
                         - number = 32
                         - city   = "D.F." 
                         - zip code = 23423
                         - country = "Mexico"
                     ) 
      )
    

    所以,这个对象是一个用数据实例化的类。通讯簿中的其他条目是具有不同数据的其他对象。

    这显示了他们之间的区别。

    OOP中还有其他相关概念值得列出,并且与对象和类的概念相关:

    抽象 你不需要列出一个人的所有属性,就可以使用它。例如,在这种情况下,你不在乎那个人是单身还是已婚,即使在现实生活中,人们不是单身就是已婚。

    封装 来自个人的属性被隐藏到其他对象中,并通过方法进行访问,这可以防止数据损坏。

    多态性 不同类型对同一消息或方法的响应可能不同。

    继承 类可以具有继承超类特征的子类、属性和行为。

        8
  •  2
  •   duffymo    14 年前

    类==cookie cutter,对象==cookie。

        9
  •  2
  •   mhshams    14 年前

    班级:男还是女

        10
  •  2
  •   realPK    8 年前

    A 是用于创建对象的蓝图/模板。安 是一个班级的代表。

    enter image description here

        11
  •  1
  •   epotter    14 年前

    如果他熟悉柏拉图的形式理论,你就可以做一个类比,类和柏拉图的形式相似,物体和柏拉图的真实世界物体相似。

    看到了吗 this post 完整的描述。

        12
  •  1
  •   loxxy    14 年前

    班级:女生

    是的,所有的女孩都应该拥有女孩的属性(在这种情况下是班级)。

        13
  •  1
  •   baklap    14 年前

    我总是把它们定义为蓝图和产品。

        14
  •  1
  •   Jeff    14 年前

    如果你的邻居是古典哲学的话,阶级是柏拉图的形式,物体是我们每天看到的基于形式的东西。

        15
  •  1
  •   Davinder Goyal    9 年前

    类可以定义为定义实体的属性、操作、状态的蓝图或模板,而对象将是实体的实现。

        16
  •  1
  •   Vidyut Singhai    8 年前

    java类是对象的结构或蓝图,对象是类的实例(内存创建)。

    示例:Car是一个对象(真实世界实体)。 首先,将汽车的结构或设计作为一个类,在设计汽车时,要将现实世界中的汽车转化为一个对象。汽车(对象)现在代表汽车(类)的设计工作。

        17
  •  0
  •   karim79    14 年前

        18
  •  0
  •   Bill K    14 年前

    如果他们正在学习编程,就让他们使用 BlueJ . 他们应该在阅读了第一个教程之后得到不同之处。

    它确实比你想尝试的任何类比都能更好地帮助你理解这一点。即使你把这个比喻搞清楚了,对于那些还没有学会OO的人来说,它也不能转化为代码(尽管对于我们所有人来说,它看起来很自然,所有这些描述都很有意义)

        19
  •  0
  •   Wildcat    7 年前
        20
  •  0
  •   Thorbjørn Ravn Andersen    14 年前

    你可能会发现盖伊·斯蒂尔的演讲很有趣: http://video.google.com/videoplay?docid=-8860158196198824415#

        21
  •  0
  •   Alexander Ivanov    14 年前

    对象是类的实例 变量是类型的实例

    因此,一个类可以是“类固醇类型”: 它可以有: 方法,其中 +(bool,bool) ) 可以访问类变量 一切都是你自己定义的!

    您可以使用这些类以最佳方式对问题进行建模。 但有时也有其他方法可以做到这一点;)(不仅仅是面向对象)

        22
  •  0
  •   Kevin    11 年前

    类:自定义变量类型

        23
  •  0
  •   Zunaira Sattar    10 年前

    我们还可以将类和对象的概念理解为: 例1:蛋糕的配方是一个模板,因此它是一个类和制作的蛋糕 以下是对象。 示例2:brick maker是类,brick是对象

        24
  •  0
  •   Anupama G    9 年前

    . 正如您所说,这是一种“蓝图”或“模板”,包含有关 全部的 一个组织中的员工种类——让我们考虑一下 主任 ,一个 ,一个 ,一个 承包商 工作人员。他们都是员工,所以他们都是 或者 .

    所有的物体都有一定的 属性 他们都被分配了,比如说,一个 员工ID 薪水 . 他们都有一个 . 人们可以称之为 ,因为它们对所有对象都存在,但它们的值明显不同,取决于它们所属的对象。

    最后,还有一些 功能 入职() 计算报警() .

        25
  •  0
  •   iSwaroop    9 年前
    Class: Human being
    Object : Man, Woman 
    
    Class : Fruit 
    Object : Apple, Banana, Mango ...
    
    Class : Mobile Phone
    Object : Apple , Samsung , LG ...
    
    Class : Food
    Object : Pizza, Rice ....
    
        26
  •  0
  •   SandeepGodara    8 年前

    对象是一组相关的数据和功能。类中定义了数据和功能组所包含的内容。类是对象的设计或规范。

        27
  •  0
  •   Saumya Khandelwal    6 年前

    类是对象的蓝图。它告诉虚拟机如何生成特定类型的对象。从该类生成的每个对象都可以有自己的值作为该类的实例变量。 示例:您可以使用Button类来创建几十个不同的按钮,每个按钮都有自己的颜色、大小、形状和功能。

        28
  •  -1
  •   Tariqul Islam    10 年前

        29
  •  -1
  •   Javid Jamae    8 年前

    我强烈建议他/她买一本叫做 The Object-Oriented Thought Process