问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何学习面向对象编程

发布网友 发布时间:2022-04-23 23:26

我来回答

3个回答

热心网友 时间:2023-07-06 02:39

一般的,单纯从面向对象编程这方面来说,我们需要先理解对象的概念,以及为什么我们要使用面向对象编程,以及跟传统过程化编程之间的优劣。


对象(object),即将一组数据与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。


用通俗的话来讲,一个人也可以算是一个对象,这个对象可能包含一些属性(attribute),例如男性女性,这个对象也会有一些功能,例如让一个人去吃饭,他能去吃饭,这就是功能(function)。


我们在编程的时候,尽可能要让代码看起来更有可读性,举例当我们去写一款游戏,我们要创建人类这个类(class)

//以C++为例
class Person
{
    //这段代码定义了人这个类
}

我们把人类的属性和功能输入进去

class Person
{
    public:
        String Name {get; set;}
        int Age {get; set;}
        void Eat(Food food){/** 吃点东西吧 **/}
    privite:
        int Height {get; set;}
}

到这时这还只是个类。当类创建完毕以后我们可以实例化这个类

Person p1;

这个实例化出来的实体p1就是一个对象,我们可以去单独改变这单个对象的属性数据或者是调用这个类的功能(或者说方法)

p1.Age = 20;
p1.Eat();

我们还可以创建另一个人

Person p2;
p2.Age = 22;

每一个对象都可以有不一样的属性,但是他们是属于一类的,就好比姚明跟郭敬明虽然身高不同但都是人类一样。


当理解了面向对象编程是为了解决何种问题以后,面向对象的编程将不是一个难题,而是一种更为丰富的编程玩法。


如果把面向对象跟面向过程比较有什么不同呢?


面向过程注重的是每个动作


比如我们来运行一台电脑,那么我们就得打开显示器,让后打开主机,当然前提是你已经插上电源,所以我们就得描述两个过程,然后我们打开电视机,只要按个按钮,这个动作其实和按电脑的显示器是同一个过程,当然我们又得描述这个过程,如果我们用面向过程开发的话,我们就要把开电脑和开电视分开描述,那么按视频按钮就重复了两次


然而我们如果用面向对象思想,把按视频按钮提取出来,然后开主机又是一个类,继承与按视频按钮,那么我们只要一次的描述按视频按钮就可以同时用于开电脑和电视机,原因是我们提取了开视频显示器的本质,所以面向对象就是我们把一件事情按一个一个动作来描述出来,而面向对象则是提取共有性质让后重复利用该类

热心网友 时间:2023-07-06 02:40

在学习面向对象的过程中,我自己也走了很多的弯路。一般来讲,接触面向对象是做为编程语言的一部分。那时候认为在程序中写一个Class 关键字就是面向对象,写Class A: Class B就是面向对象的继承。实际从编程语言的角度来理解是无法掌握面向对象的精髓的,在这里我想以我的经验来告诉大家我的一些方法。面向对象是一种思想理论,要远远高于编程语言。不深入理解面向对象理论就无法做到编写比较高级的软件,而且往往这些软件不能有效应对变化,不能复用,不能扩展,不能维护等。使用抽象方法还能应对软件的复杂度,因为抽象是对事物的简化方法。比如分类法就是抽象的基本方法。然后联系对行为抽象,因为分类法是主要是针对静态的东西进行抽象(淡然不排除动态),而行为是对象与对象交互方式,所以对行为抽象也具有重要的意义。思考面向对象的继承、封装以及多态软件实现为了达到应对变化,提高复用。继承的本质是提高重用,但是继承不是重用的唯一方法,还有组合这个非常重要的方法。继承从语言层面来讲可以简单理解为class A : class B,组合才是提高重用的关键,现在很多的商业上不都是要整合啊,实际就是组合的一种显示表述,自己不实际去做,但是掌握着关键的东西(核心竞争力)。那具体的上来讲,我们的软件外包不就是组合的一种现实表述吗,发达国家设计软件,而把软件的具体编码交给别的国家。多态可以简单理解为一个抽象有很多具体实现。 那么在软性期间就需要动态决定采用哪种具体实现。

热心网友 时间:2023-07-06 02:40

尽管我们都是从OOP发展而来,事实上,真正的面向对象来自于OOD。没有OOD的过程,就无法真正的面向对象。
书上那些小例子只不过是在展示“如何OOP”的手段,也就是在告诉大家“面向对象的语言有哪些特点”,而并没有回答“什么是面向对象”以及“为什么要面向对象”。
事实上,这种小程序永远也不能体现出“为什么要面向对象”。面向对象与传统的面向功能与面向数据的开发相比,最大的优势在于业务逻辑的可重用性。传统的开发最容易重用的是数据结构和底层代码,而上面的调用代码则很难重用,而面向对象则专注于如何另维护了业务逻辑的调用代码更容易地被其它项目或是后继项目使用。
同时,面向对象的开发也有利于提高可移植性。我前面说过,传统的开发成果越是底层的代码可重用性就越高,但如果牵涉到大量OS相关的内容时——比如GUI,则越是底层的调用就越难以移植,这就形成了一个矛盾。而面向对象的方法解决了调用代码的可重用性,也就顺带提高了代码的可移植性。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
计算∫L√x^2+y^2ds,其中L为xoy平面上的圆周x^2+y^2=2x ∮√x^2+y^2ds(其中L为圆周x^2+y^2=ax)的值是多少? 高等数学,第一类曲线积分:计算√x^2 +y^2ds,其中L为圆周x2 +y2 =4x? 设L是圆周x^2+y^2=1在第一象限的部分,则曲线积分∫Lxy^2ds=? 计算∫根号下x^2+y^2ds,其中L为x=根号下a^2-y^2,y=x,y=0围成的闭... ∫l3xdx+2ydy= ,其中l为x²+y²=1的封闭曲 绝代双骄2江湖凶险 为什么我下的新绝代双骄前传不能玩? 大侠帮我过过新绝代双骄2的任务。 我的人类来源哪里?? 如果是猿猴,那猿猴来源哪里?? 车载磁带可以用磁带播放机播放吗? 汽车磁带机和普通MP3怎么对接 车载磁带机换MP3 如何将老式汽车磁带收音机改装mp3 怎么接汽车拆下来的磁带机? 汽车收放机(放磁带的)可以改做放mp3吗?有知道的作个答,谢了 可以放磁带的汽车是那种 谁能帮我修修车载磁带机 能否把H445JMC改装到磁带式收放机的车上 车用磁带机与mp3 想换掉车用磁带机,请教各位 汽车磁带机怎样增加usb接口 车载磁带机怎么用?我买了个二手面包,是磁带机的 为什么插上卡带怎么没反应?电源开关在那?收音机会用! 老式汽车磁带机电源怎么接 汽车上的磁带机怎么加装USB接口 汽车磁带怎么改 汽车磁带机f/c什么意思 05年奥迪汽车磁带机怎么使用 为什么现在汽车不用磁带机 请教高手怎么能把系统里的驱动提出来,备份起来。 英魂之刃十大必买英雄有哪些? 该怎么系统的学习面向对象编程? 新买的固态硬盘可以直接用U盘装系统吗 面向对象程序设计 学习这门课程需要什么基础吗? 简单面向对象编程的方法或思路 英魂之刃,有一张英雄兑换卡,对英雄不怎么熟悉,求个很炫伤害高的英雄 面向对象编程的核心知识有哪些 怎么样才能更好的掌握面向对象编程思想(oop)啊? 《面向对象程序设计》课程讲什么内容? 如何学习面向对象程序设计(C++) C++面向对象的编程怎么学? 试述面向过程的编程语言和面向对象的编程语言的概念、特点和区别。_百... 面向对象编程相对于面向过程编程有什么优点?二者有什么区别? 面向对象程序设计这门课程第四讲C#面向对象编程入门的知识点有哪些? 面向对象编程语言有哪些,哪个比较易上手 支付宝借呗欠款两万八逾期两年多今天委托方给我打电话说要起诉我是真的吗_百度问一问 被花呗借呗起诉会有什么影响呢? 花呗借呗30000逾期90接到电话说是要起诉? 花呗借呗逾期要被起诉怎么办? 欠花呗,借呗发律师函了,这是真的会被起诉吗?