什么是对象?

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

(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. ECC校验原理以及在Nand Flash中的应用

         本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍      ECC,全称为Error Correcting Code, ...

  2. (一)Qt界面设计布局

    Qt提供四种布局: 这种布局生成的格局比较单一,这时候需要另外两个填充控件,来生成整行或整列的格式. 注意:使用Spacers控件时,必须要放在layouts中的布局中,否则无法保存. 示例: 1.往 ...

  3. 在Android项目中调用已有.so库

    注意该.so库指的是android平台的,非一般linux.unix平台:1.现有库libcom_ycan_testLib.so2.新建android项目TestLib23.添加新类:类名:testL ...

  4. 修改eclipse中tomcat的发布路径

    当我们在eclipse部署好tomcat的时候,默认这个项目是部署在eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\t ...

  5. webstorm 自定义代码模板

    Ctrl+Shift+A查找设置live 添加代码片段Live Template 编写代码的时候 缩写+Tab 即可输出代码片段 缩写启动对应代码片段的钥匙. 描述代码片段的名字. 模板文本代码片段的 ...

  6. 怎样按字母顺序(ABCDEF)动态添加控件

    考试系统中题库设计时,我想动态添加选项,顺序按ABCDEF这样,点击一下按钮添加A(radiobutton),再点击添加B,如此依次添加.本人比较菜,求达人写一个方法. private void bu ...

  7. .NET开发之窗体间的传值转化操作

    DOTNET开发之窗体间的传值转化操作 好想把自己最近学到的知识写下来和各位朋友分享,也希望得到大神的指点.今天终于知道自己要写点什么,就是关于WPF开发时简单的界面传值与简单操作. 涉及两个界面:一 ...

  8. 在Windows 上安装SQL Server的一些注意事项

    基本来说安装SQL Server 单节点数据库并不是很困难的事情,大多可以通过Next来安装完成.其中要注意以下几点 安装.net3.5 可以参考本Blog的一些安装须知. Windows Serve ...

  9. Oracle 主键

    给student 表产生 自增的序列主键 increment ; ----IBATIS简单入门教程http://www.cnblogs.com/ycxyyzw/archive/2012/10/13/2 ...

  10. MySQL Online DDL 工具之pt-online-schema-change

    MySQL DDL:DDL是一个令所有MySQL dDBA 诟病的一个功能,因为在MySQL中在对表进行dDDL时,会锁表,当表比较小比如小于1W行时,对前端影响较小,当时遇到千万级别的表,就会影响前 ...