C# 面向对象之概念理解
什么是对象?
《韦氏大词典》中对对象定义:
(1)某种可为人所感知的物质。
(2)思维、感受或动作所作用的物质或精神体。
----说白了万物皆对象
熟悉的对象描述:
对象就是客观世界中的物体在人脑中的映像,和人为的概念。一棵树、一个人、一本书、一个借口都是对象。只要这个对象存在于我们的思维意识当中,我们就可以以此判断同类的东西。在软件开发中,对象是建立面向对象程序所依赖的基本单元。
软件对象定义:
所谓(软件)对象,是一种将状态(数据)和行为(操作)合成到一起的软件构造,用来描述真实世界的一个(物理或概念性的)对象。
对象操作也可以看作是可以向对象要求提供的服务(C#编程语言称作为方法。行为/操作/方法)。
什么是类?
类是对具有相同属性和行为的一个或多个对象的描述(抽象),即类是对象的模板,通过同一个类创建的不同对象具有相同的行为,对象是类的具体化。
类定义的要素:
1.定义该类的对象所需要的数据结构;
2.这些东西要执行的操作,尤其是有哪些操作,类的对如何被调用执行这些操作。
术语“特征”和“成员”:被用来描述类的attribute和方法。例如:一个类定义包括三个attribute声明和五个方法声明,则可以说它有八个特征/成员。
类定义可以看作是创建软件对象的模版——一种“模版”,用来:
- 在内存中开辟一个数据区,储存新对象的attribute
- 把一系列行为和对象关联起来。
实体化:指对象在类的声明基础上被创建(构造)过程。(实际上是把对象被创建到的物理内存地址与变量关联起来。当对象的引用丢失时,CLR(公共语言运行时)会定时执行垃圾回收操作,自动回收丢失了的对象所占的内存。)
类与对象的不同之处在于:
- 类定义特征——attribute、方法等——该类的所有对象都拥有这些特性。
- 对象是模版的单一实体,attribute值已经给出,方法可以被调用。
- 对象可以看作是填充了内容的模版。
为何要面向对象?
1) 与人类习惯的思维方式一致
- 传统的程序设计技术是面向过程的设计方法,以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。
- 传统的程序设计技术忽略了数据和操作之间的内在联系,设计的软件系统其解空间和问题空间并不一致,难于理解。
- 面向对象的软件技术以对象为核心,软件系统由对象组成。对象是对现实世界实体的正确抽象,它由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。
- 面向对象的软件技术的基本原理,使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。
- 传统的软件开发过程可以用“瀑布”模型来描述,强调“自顶向下”按部就班地完成软件开发工作。
- 面向对象方法学的出发点和基本原则就是分析、设计、实现一个软件系统的方法和过程,尽可能接近人们认识世界解决问题的方法和过程。也就是使描述问题的问题空间和描述解法的解空间在结构上尽可能一致。
2)稳定性好
- 传统的程序设计技术以算法为核心,开发过程基于功能分析和功能分解。
- 面向对象的软件技术以对象为核心,基于构造问题领域的对象模型。当系统的功能需求变化时并不会引起软件结构的整体变化,仅需要做一些局部修改。
3)可重用性好
- 用已有零部件装配新的产品是典型的重用技术。
- 传统方法学中内聚性好的模块独立性高,但数据和程序彼此独立,实际上重用性差。
- 面向对象的软件技术中的对象具有很强的自含性,对象所固有的封装性和信息隐藏机理,使得对象的内部实现和外界隔离,具有较强的独立性。
4)较易开发大型软件产品
- 开发大型软件系统时,开发人员的组织方法不当是出现问题的主要原因。面向对象范型开发软件时,可以把一个大型软件产品看作一系列本质上相互独立的小产品来处理。一方面降低了技术难度,另一方面改善了管理工作。
5)可维护性好:
- 面向对象的软件稳定性好;
- 面向对象的软件比较容易修改;
- 面向对象的软件比较容易理解;
- 面向对象的软件易于测试和调试。
面向对象中的术语:
面向对象对象(Object-Oriented,OO)
面向对象分析(Object-Oriented Analysis,OOA)面向对象分析
面向对象设计(Object-Oriented Design,OOD) 面向对象设计
面向对象编程(Object-Oriented Programming,OOP) 面向对象编程
C# 面向对象之概念理解的更多相关文章
- C# 面向对象之概念理解(2)
委托 如果对象A为了满足某个请求,而寻求另一个对象B的帮助,这被称作是A对B的委托. 对象间的委托,和现实世界中人与人之间的委托一样:如果你“那位”要求你在他外出公干期间帮忙助剪草坪,而你转而雇佣邻居 ...
- C# 面向对象之概念理解(3)
多态 多态是指两个或多个属于不同类的对象,对同一个消息(方法调用)做出不同响应的能力. 多态(<韦氏大词典>)中定义:可以呈现不同形式的能力或状态. C#如何实现多态的知识——即继承上覆载 ...
- JAVA_SE基础——22.面向对象的概念
我写博客是为了提升自己和为了进入黑马程序员学习,还有分享些自己的心得给大家,希望能帮助大家学习JAVA. 我是自学的,如果写的有错误或者能更好的修改的请提出. 在这里我先引用下<think in ...
- 我对面向对象设计的理解——Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...
- OO 面向对象的概念
面向对象的概念 一.什么是面向对象? 传统的:世间万物都是对象.例如:桌子,凳子,电脑等: 个人理解: 1.软件开发方法: 2.面向对象是一种解决问题和分析问题的(编程)一种思想: 3.他是通过面向过 ...
- OC学习--面向对象的个人理解
1. 什么是面向对象? 以下一段话是我在百度上找的解释: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面 ...
- 03.JavaScript 面向对象精要--理解对象
JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...
- JAVA类与对象(一)----基础概念理解
面向对象基本概念 面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范,其基本思想是使用对象.类.继承.封装.消息等基本概念来进行程序设计.它是从现实世界客观存在的事物(即对象)出发来构造软 ...
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
javascript面向对象编程方式,对于初学者来说,会比较难懂. 要学会面向对象以及使用面向对象编程,理解对象的创建在内存中的表示,至关重要. 首先,我们来一段简单的对象创建代码 var obj = ...
随机推荐
- 隐藏虚拟键盘,解决键盘挡住UITextField问题
再正式开始之前,先来介绍一下IOS的键盘类型: 一.键盘风格 UIKit框架支持8种风格键盘 ? 1 2 3 4 5 6 7 8 9 10 typedef enum { UIKeyboard ...
- 使用DriverManager获取数据库连接
DriverManager 是驱动的管理类 * 1).可以通过重载的getConnection() 方法获取数据库连接,较为方便 * 2).可以同时管理多个驱动程序,若注册了多个数据库连接,则调用ge ...
- 12.iscsi-target
server: 环境:rhel7.2 软件包:targetcli-2.1.fb41-3.el7.noarch,selinux-policy-targeted-3.13.1-60.el7.noarch ...
- JQGrid+Webservice+LINQ
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="jqgridtest.asp ...
- Enhanced RCP: How views can communicate – The e4 way | Tomsondev Blog
Some weeks ago I published how views can communicate using the EventAdmin-Service. To get things wor ...
- hibernate 知识梳理
一.hibernate背景介绍: 作者: Gavin King 分hibernate ORM(for relation db),OGM(for nosql db),hearch,validator,t ...
- http 错误编号大全(转)
状态行包含HTTP版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了Content-Type之外的所有应答头都是可选的.但Content-Type是必需的,它描述的是后面文档的MI ...
- 虚拟局域网VLAN
6.5.1配置路由器广域网端口的PPP封装 (1)配置路由器A: Router>enable Router#config Router_config#hostname Router-A Rout ...
- 11g RAC R2 体系结构---用户及用户组
10.2 RAC 到11.2 RAC 用户及用户组的变化: 在10.2 RAC 的部署中,只需要一个用户(oracle)和一个用户组(dba).Database.Clusterware都是用oracl ...
- python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
背景: 虚拟机centos下安装python辅助工具 setuptools报错,错误信息大概如下: Traceback (most recent call last): File "setu ...