程序开发中什么是对象?

程序开发中什么是对象?,第1张

类对象

1.类对象支持两种 *** 作:属性引用和实例化。

属性引用 使用和 Python 中所有的属性引用一样的标准语法:obj.name。类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

class MyClass:

"""A simple example class"""

i = 12345

def f(self):

return 'hello world'

2.那么 MyClass.i 和 MyClass.f 是有效的属性引用,分别返回一个整数和一个方法对象。也可以对类属性赋值,你可以通过给 MyClass.i 赋值来修改它。 __doc__ 也是一个有效的属性,返回类的文档字符串:"A simple example class"。

类的 实例化 使用函数符号。只要将类对象看作是一个返回新的类实例的无参数函数即可。例如(假设沿用前面的类):

x = MyClass()

3.以上创建了一个新的类 实例 并将该对象赋给局部变量 x。

这个实例化 *** 作(“调用”一个类对象)来创建一个空的对象。很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 __init__() 的特殊方法,像下面这样:

def __init__(self):

self.data = []

4.类定义了 __init__() 方法的话,类的实例化 *** 作会自动为新创建的类实例调用 __init__() 方法。所以在下例中,可以这样创建一个新的实例:

x = MyClass()

5.当然,出于d性的需要,__init__() 方法可以有参数。事实上,参数通过 __init__() 传递到类的实例化 *** 作上。例如,

>>>class Complex:

... def __init__(self, realpart, imagpart):

... self.r = realpart

... self.i = imagpart

...

>>>x = Complex(3.0, -4.5)

>>>x.r, x.i

(3.0, -4.5)

Windows应用程序创建的对象包括文件,文件夹,窗口,控件,线程,进程,网络连接,注册表项等。根据查询相关资料信息显示,Windows应用程序创建对象用于构建应用程序中的对象,以访问,查询, *** 作和更新系统资源,可以提供用户界面,数据访问和文件管理功能,以及数据库和网络连接等更多的功能。

头等程序对象(first class object)

以对象和函数为例阐述头等对象的定义

如果程序中的对象满足它的创建和使用没有任何限制,可以作为 *** 作数出现在表达式中求值,可以作为单独的存储实体,可以作为参数传递到过程或者函数,可以作为函数的返回值,可以构成复杂的数据结构。头等对象还有一个明显的特征就是可以在运行时被创建与销毁。C语言中的scalar data types(标量数据类型)我们知道是头等对象,比如int,float类型,这些基本对象均满足我们提出的头等对象的特征。

下面主要讨论C++语言中的Object和Function的对象等级问题。

对于C++中的object(对象)和class(类),前者是后者的实例化。Class的定义是一种虚拟化的规则的说明,而object则是具体的类的实现。一个对象有相应的构造函数与析构函数,在程序中动态声明对象的时候,程序会自动调用对象的构造函数,对象失效时,程序会进入对象的析构函数,撤销对象占用的资源。再者,对象可以作为参数传递给函数作为参数,比如在我们经常会看到这样的语句:bool Push(Stack &S, type x),同时对象还能够作为返回值返回。另外,对象有单独的存储实体,C++ 中的Serialize函数就是把对象写入文件或者从文件中读取对象,这说明在对象在文件中有一块独立的存储空间,这一点可以区分出class(类)并不是头等程序对象,因为class只是抽象地声明。而对于以上几点,说明object(对象)在C++语言中是头等对象。

在C和C++语言中,在程序运行过程中,我们不能动态创建一个function,C++中的函数都是实现在程序写好的,然而对于一些函数式的语言来说,Function就是头等程序对象,因为它们可以传递给其他函数作为参数,也能够在程序运行过程中动态地创建与销毁。对于C/C++中得Function,我们可以称之为second-class object(次等对象),因为虽然它不满足严格的头等对象的定义,但是我们可以通过指针类型,辅助function完成上述工作。

除了上述两者的讨论,数组,结构体均不是头等程序对象。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11228317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存