面向对象的七大原则解释
面向对象比面向过程更高级吗?
面向对象比面向过程更高级吗?
面向对象更高级
面向过程 :
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展 。
面向对象 :
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 。
缺点:性能比面向过程低 。
什么是对象型方法?
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。定义二:面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。
由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。面向对象方法的主要优点是:符合人们通常的思维;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。
面向过程程序设计和面向对象程序设计的各自特点?
C语言是面向过程的编程,它的最重要特点是函数,通过主函数来调用一个个子函数。程序运行的顺序都是程序员决定好了的。它是我学的第一种程序语言。C 是面向对象的编程,类是它的主要特点,程序执行过程中,先由主函数进入,定义一些类,根据需要,执行类的成员函数,过程的概念被淡化了(实际上过程还是有的,就是主函数的那些语句),类就是对象,所以我们称之为面向对象程序设计。现在我学了Visual C ,有了很多体会。
它是面向事件的编程,程序执行时,不断检测有没有事件(消息)发生,如果有,那么就看有没有对应于事件的函数,如果有就执行这个函数。
相比之下,它过程式的味道几乎没有了,但是实际上也是面向过程的,这个过程就是检验有没有事件,只不过这个过程被隐藏了起来。到目前为止,我没发现真正的没有过程的程序。
面向对象中对象,实例,类,父类,超类都是什么关系,怎么理解和区分?
我们以“白马非马”这个典故来讲一下这几个概念之间的关系吧。
马,是一个名词,一个概念,泛指长的像驴和骡子的那种动物,吃草的,一般生活在大草原上,古代打仗的代步工具,现代骑兵的坐骑,视觉效果如下图所示:
上面说了这么多,你可能对马还是没有一个具体的概念,为了搞清楚这个问题,你可能需要对“马”这个东西作一个详细的归类,这就产生了“类”的概念,你可以对马这个东西的类别作如下的说明:
类别 马:
身高
体长
体重
食性
四肢
毛色
...
其实上面的“类别 马”,就是对马这个概念做了一个“类”的定义,这就是类,如果对类下一个科学的定义,我的理解是:
类,就是对某种事物的一种描述,描述是通过列举各种特性来细化的。
实例就是一种具体的马,比如汗血宝马,对象跟实例在编程领域的意思是相同的,都是指一种具体的马。
超类和父类的概念又是相同的,在编程领域,超类和父类是类的子集,即只包含类的属性集的一小部分,在马这个例子中,哺乳动物就是马的超类或父类,有蹄动物也是马的超类或父类,植食动物也是马的超类或父类,即只有具备马的属性集中的一个,就可以是马的超类或父类。
以上就是这几个概念之间的关系,对这几个概念,以拟物的思维去理解就很容易理解了,希望能帮助到各位,这里是TechStar!