一个很好的面向对象的类比

tho*_*edb 6 language-agnostic oop

我正在寻找一种向初学者描述OO的好方法,虽然是类比.

目前我把一个班级比作一个购物清单,一个装满物品的购物车到一个物体.但我觉得这有点令人困惑.

优选地,类比将在代码示例(Ruby)中很好地反映出来,目前我有这个,并且它感觉很笨拙.

# First we create a class
class Shopping

    # The items method gives us a list of items in the Shopping
    def items
    ["apple", "cereal", "flour"]
    end
end

# Create a new Shopping, called basket
basket = Shopping.new

# ask the basket what items it has
basket.items        #=> ["apple", "cereal", "flour"]
Run Code Online (Sandbox Code Playgroud)

Ada*_*mke 6

我已经看到它描述为Man是一个类,而Steve是一个对象(Man的实例).史蒂夫有金发,6英尺,重180磅等.

然后你可以继承,所以Man继承Person,Person继承Animal,然后继续.

  • 这是基本类/对象关系以及继承的一个很好的类比.在通过继承讨论*扩展*类时,请注意不要使用它,或者您可以轻松地讨论有关使用类`Human`,添加新成员/函数以及创建类`Evil Cyborg Overlord`的讨论,这将需要创建另一个子类"突变超级英雄"等等,其余的课程螺旋式失控(从这里的经验来讲). (6认同)