当前位置:  开发笔记 > 编程语言 > 正文

你如何向新程序员解释OO?

如何解决《你如何向新程序员解释OO?》经验,为你挑选了3个好方法。

我的亲戚正在学习编程,很难理解课程.他很难理解,例如你需要实例化它,方法不能在其他方法中访问变量,如果你在一个类的实例中更改变量,它对其他实例不会改变.

我试图使用像类定义这样的类比就像一个房子的蓝图.实例是由该蓝图制成的房屋.

你如何解释一般的课程和OO?



1> Robert Gould..:

认真使用动物,效果很好.这就是多年前为我设计这个概念的原因.刚刚找到了这个C#代码.看起来不错

    // Assembly: Common Classes
    // Namespace: CommonClasses

    public interface IAnimal
    {
        string Name
        { 
             get; 
        }
        string Talk();
    }

    // Assembly: Animals
    // Namespace: Animals

    public class AnimalBase
    {
        private string _name;
        AnimalBase(string name)
        {
           _name = name;
        }
        public string Name
        {
           get
           {
              return _name;
           }
        }
    }

    // Assembly: Animals
    // Namespace: Animals

    public class Cat : AnimalBase, IAnimal
    {
        public Cat(String name) :
            base(name)
        {
        }

        public string Talk() {
            return "Meowww!";
        }
    }

    // Assembly: Animals
    // Namespace: Animals

    public class Dog : AnimalBase, IAnimal
    {
        public Dog(string name) : 
            base(name)
        {
        }

        public string Talk() {
            return "Arf! Arf!";
        }
    }

    // Assembly: Program
    // Namespace: Program
    // References and Uses Assemblies: Common Classes, Animals

    public class TestAnimals
    {
        // prints the following:
        //
        // Missy: Meowww!
        // Mr. Bojangles: Meowww!
        // Lassie: Arf! Arf!
        //
        public static void Main(String[] args)
        {
            List animals = new List();
            animals.Add(new Cat("Missy"));
            animals.Add(new Cat("Mr. Bojangles"));
            animals.Add(new Dog("Lassie"));

            foreach(IAnimal animal in animals)
            {
                 Console.WriteLine(animal.Name + ": " + animal.Talk());
            }    
        }
    }

一旦他得到了这个钉子,你挑战他定义鸟(飞),然后企鹅(飞!)



2> paxdiablo..:

我通过我的妻子(特许会计师)获得的最佳方式如下.

在"常规"编程中,您拥有数据(被操纵的东西)和代码(操作的东西),它们是分开的.有时你会混淆,因为某段代码试图操纵错误的东西.

在我妻子的情况下,我说发票到了(没有实物转手)并且不小心更新了银行余额,她立刻看到这是潜在的欺诈行为(她曾经做过法务会计,一切都是潜在的欺诈行为,包括大多数我的股票交易:-).

你可以很容易地说,用一把巨大的拖把洗地板的一段代码决定用你的牙刷做.

通过OO编程,操纵器和操纵器不可避免地缠绕在一起.您不要将地板清洗过程应用到地板上,而是指示地板自行清洗.它知道如何执行此操作,因为代码是对象的一部分,而不是外部的代码.

在上面的会计案例中,我认为我们最终将会计科目表作为对象,并且我们告诉它将发票应用于自身.由于它了解这个过程,它知道允许更新哪些帐户(债权人责任帐户和费用帐户,如果我没记错的话).

无论如何,这是无关紧要的,我现在只是在蜿蜒.我所说的是用目标受众理解的术语来表达它.我想这是大多数教学的秘诀.



3> Guge..:

像所有老屁一样,我想用自己生活中的故事回答这个问题.

我开始在VIC-20上编程基础.不知道其他什么,我虽然这是所有计算机的编程方式.我认为跟踪哪些变量名称以及哪些变量仍然是免费的(范围问题)有点困难.我还认为很难将我的程序划分为可重复的块,使用gosub-return并设置和读取这些将使用的变量(缺少方法).

然后我通过MS-DOS进入Turbo C. 现在我可以创建自己的方法和功能!我不再坚持基本的旧有限命令集.我觉得我正在为我编写的每个程序创建一种新语言.C给了我更多表现力.

C++是我听说的第一个面向对象的语言.对我而言,最重要的时刻是我明白我可以创建自己的数据类型,甚至超载运算符.再一次,我觉得我可以创建自己的语言,包含新的功能和数据类型,以及运算符.

这就是我如何向新的程序员出售OO.说明它具有表达能力,因为它们可以定义自己的数据类型.我一直认为封装是比继承更好的卖点.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有