什么是对象?

《韦氏大词典》中对对象定义:

(1)某种可为人所感知的物质。

(2)思维、感受或动作所作用的物质或精神体。

----说白了万物皆对象

熟悉的对象描述:

对象就是客观世界中的物体在人脑中的映像,和人为的概念。一棵树、一个人、一本书、一个借口都是对象。只要这个对象存在于我们的思维意识当中,我们就可以以此判断同类的东西。在软件开发中,对象是建立面向对象程序所依赖的基本单元。

软件对象定义:

所谓(软件)对象,是一种将状态(数据)和行为(操作)合成到一起的软件构造,用来描述真实世界的一个(物理或概念性的)对象。

对象操作也可以看作是可以向对象要求提供的服务(C#编程语言称作为方法。行为/操作/方法)。

什么是类?

类是对具有相同属性和行为的一个或多个对象的描述(抽象),即类是对象的模板,通过同一个类创建的不同对象具有相同的行为,对象是类的具体化。

类定义的要素:

1.定义该类的对象所需要的数据结构;

2.这些东西要执行的操作,尤其是有哪些操作,类的对如何被调用执行这些操作。

术语“特征”和“成员”:被用来描述类的attribute和方法。例如:一个类定义包括三个attribute声明和五个方法声明,则可以说它有八个特征/成员。

类定义可以看作是创建软件对象的模版——一种“模版”,用来:

  • 在内存中开辟一个数据区,储存新对象的attribute
  • 把一系列行为和对象关联起来。

实体化:指对象在类的声明基础上被创建(构造)过程。(实际上是把对象被创建到的物理内存地址与变量关联起来。当对象的引用丢失时,CLR(公共语言运行时)会定时执行垃圾回收操作,自动回收丢失了的对象所占的内存。)

类与对象的不同之处在于:

  1. 类定义特征——attribute、方法等——该类的所有对象都拥有这些特性。
  2. 对象是模版的单一实体,attribute值已经给出,方法可以被调用。
  3. 对象可以看作是填充了内容的模版。

为何要面向对象?

1) 与人类习惯的思维方式一致

  • 传统的程序设计技术是面向过程的设计方法,以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。
  • 传统的程序设计技术忽略了数据和操作之间的内在联系,设计的软件系统其解空间和问题空间并不一致,难于理解。
  • 面向对象的软件技术以对象为核心,软件系统由对象组成。对象是对现实世界实体的正确抽象,它由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。
  • 面向对象的软件技术的基本原理,使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。
  • 传统的软件开发过程可以用“瀑布”模型来描述,强调“自顶向下”按部就班地完成软件开发工作。
  • 面向对象方法学的出发点和基本原则就是分析、设计、实现一个软件系统的方法和过程,尽可能接近人们认识世界解决问题的方法和过程。也就是使描述问题的问题空间和描述解法的解空间在结构上尽可能一致。

2)稳定性好

  • 传统的程序设计技术以算法为核心,开发过程基于功能分析和功能分解。
  • 面向对象的软件技术以对象为核心,基于构造问题领域的对象模型。当系统的功能需求变化时并不会引起软件结构的整体变化,仅需要做一些局部修改。

3)可重用性好

  • 用已有零部件装配新的产品是典型的重用技术。
  • 传统方法学中内聚性好的模块独立性高,但数据和程序彼此独立,实际上重用性差。
  • 面向对象的软件技术中的对象具有很强的自含性,对象所固有的封装性和信息隐藏机理,使得对象的内部实现和外界隔离,具有较强的独立性。

4)较易开发大型软件产品

  • 开发大型软件系统时,开发人员的组织方法不当是出现问题的主要原因。面向对象范型开发软件时,可以把一个大型软件产品看作一系列本质上相互独立的小产品来处理。一方面降低了技术难度,另一方面改善了管理工作。

5)可维护性好:

  • 面向对象的软件稳定性好;
  • 面向对象的软件比较容易修改;
  • 面向对象的软件比较容易理解;
  • 面向对象的软件易于测试和调试。

面向对象中的术语:

面向对象对象(Object-Oriented,OO)

面向对象分析(Object-Oriented Analysis,OOA)面向对象分析

面向对象设计(Object-Oriented Design,OOD) 面向对象设计

面向对象编程(Object-Oriented Programming,OOP) 面向对象编程

C# 面向对象之概念理解的更多相关文章

  1. C# 面向对象之概念理解(2)

    委托 如果对象A为了满足某个请求,而寻求另一个对象B的帮助,这被称作是A对B的委托. 对象间的委托,和现实世界中人与人之间的委托一样:如果你“那位”要求你在他外出公干期间帮忙助剪草坪,而你转而雇佣邻居 ...

  2. C# 面向对象之概念理解(3)

    多态 多态是指两个或多个属于不同类的对象,对同一个消息(方法调用)做出不同响应的能力. 多态(<韦氏大词典>)中定义:可以呈现不同形式的能力或状态. C#如何实现多态的知识——即继承上覆载 ...

  3. JAVA_SE基础——22.面向对象的概念

    我写博客是为了提升自己和为了进入黑马程序员学习,还有分享些自己的心得给大家,希望能帮助大家学习JAVA. 我是自学的,如果写的有错误或者能更好的修改的请提出. 在这里我先引用下<think in ...

  4. 我对面向对象设计的理解——Java接口和Java抽象类

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  5. OO 面向对象的概念

    面向对象的概念 一.什么是面向对象? 传统的:世间万物都是对象.例如:桌子,凳子,电脑等: 个人理解: 1.软件开发方法: 2.面向对象是一种解决问题和分析问题的(编程)一种思想: 3.他是通过面向过 ...

  6. OC学习--面向对象的个人理解

    1. 什么是面向对象? 以下一段话是我在百度上找的解释: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面 ...

  7. 03.JavaScript 面向对象精要--理解对象

    JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...

  8. JAVA类与对象(一)----基础概念理解

    面向对象基本概念 面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范,其基本思想是使用对象.类.继承.封装.消息等基本概念来进行程序设计.它是从现实世界客观存在的事物(即对象)出发来构造软 ...

  9. [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示

    javascript面向对象编程方式,对于初学者来说,会比较难懂. 要学会面向对象以及使用面向对象编程,理解对象的创建在内存中的表示,至关重要. 首先,我们来一段简单的对象创建代码 var obj = ...

随机推荐

  1. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化   在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...

  2. 2_1我的第一个应用hello world[wp8特色开发与编程技巧]

    2_1hello world -5min 大家好,我是徐文康,在上一个视频当中我们已经讲了,如何根据自己电脑系统去下载相应的SDK. 你可能花了很多时间去安装以及配置好了这个开发环境,如果还没有配置好 ...

  3. jQuery 实现网页图片动态游走,碰到边框反弹

    学学jQuery,实现个小功能练练手 需要用到定时器 html代码如下 <html> <head> <title></title> <script ...

  4. c#多层嵌套Json

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  5. php中的常用魔术方法总结

    以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...

  6. WPF 控件截图位置不正确的问题

    用WPF的RenderTargetBitmap可以截取控件内容到一张图片上,但是实际使用的时候经常出现截取的位置不正确的问题.今天是第二次解决这个问题,所以记录下,免得再忘了. RenderTarge ...

  7. 菜鸟学习Struts——简易计算器

    这是学习Struts的一个简单的例子文件结构如下: 1.配置Struts环境 2.新建input.jsp,success.jsp,error.jsp input.jsp代码如下: <%@ pag ...

  8. scanf gets fgets区别与联系 puts fputs printf区别与联系

    组一:scanf( )函数 gets( )函数    fgets()函数都可用于输入字符串, 组二:printf( )函数 puts( )函数 fputs()函数则用于字符串的输出. 两组内部函数各有 ...

  9. adbd cannot run as root in production builds

    首先必须保证手机已经root过,可以通过以下验证: $ adb shell root@dior:/ $ su root@dior:/ # 1 2 3 执行命令后,$ 变为 # 即 root 成功 但是 ...

  10. java实现合并两个已经排序的列表

    相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...