对象与类

一、面向对象与面向过程的区别

项目名称 面向对象程序设计 面向过程程序设计(也叫结构化编程)
定义 面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。 面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法。
特点 封装、继承、多态 算法+数据结构
优势 适用于大型复杂系统,方便复用 适用于简单系统,容易理解
劣势 比较抽象、性能比面向过程低 难以应对复杂系统,难以复用,不易维护、不易扩展
设计语言 Java、Smalltalk、EIFFEL、C++、Objective-、C#、Python等 C、Fortran

转自:https://blog.csdn.net/sugar_no1/article/details/86366714

二、类与对象

类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。

(1)类与对象的主要区别:

对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 

类:类是一个模板,它描述一类对象的行为和状态。

(2)对象的三个主要特性:

对象的行为——可以对对象施加哪些操作,或可以对对象施加哪些方法?

对象的状态——当施加那些方法时,对象如何响应?

对象的标识——如何辨别具有相同行为与状态的不同对象?

同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。对象的行为是用可调用的方法定义的。

此外,每个对象都保存着描述当前特征的信息。这就是对象的状态。对象的状态可能会随着时间而发生改变,但这种改变不会是自发的。对象状态的改变必须通过调用方法实现(如果不经过方法调用就可以改变对象状态,只能说明封装性遭到了破坏)。(关于对象的状态见https://www.cnblogs.com/guozhenqiang/p/5620924.html

但是,对象的状态并不能完全描述一个对象。每个对象都有一个唯一的身份。例如,在一个订单处理系统中,任何两个订单都存在着不同之处,即使所订购的货物完全相同也是如此。需要注意,作为一个类的实例,每个对象的标识永远是不同的,状态常常也存在着差异。

(3)类之间的关系

在类之间,最常见的关系有依赖(“uses-a”)、聚合(“has-a”)、继承(“is-a”)

依赖,即“uses-a”关系,是一种最明显的。最常见的关系。例如,Order(订单)类使用Account(账户)类是因为Order对象需要访问Account对象查看信用状态。但是Item(产品)类不依赖于Account类,这是因为Item对象与客户账户无关。因此,如果一个类的方法操作另一个类的对象,我们就说一个类依赖于另一个类。

应该尽可能地将相互依赖的类减至最少。如果类A不知道B的存在,它就不会·关心B的任何改变(这就意味着B的改变不会导致A产生任何 bug)。用软件工程的属于来说,就是让类之间的耦合度最小。

聚合,即“has-a”关系,是一种具体且易于理解的关系。例如,一个Order对象包含一些Item对象。聚合关系意味着类A的对象包含类B的对象。

继承,即()

原文地址:https://www.cnblogs.com/peng19920430/p/12913174.html