学习笔记:面向对象概念初论

原创 2007年09月19日 10:55:00

我现在正在学习C#,以前一直是用c,c++,其实用c++也只是把他当作一个更好的c来用的。也就是说虽然用过面向对象的语言,但是没真正去应用面向对象的思想和方法。 现在呢,就想了利用博客,在此记录自己的学习过程。从小开始就习惯了3步曲。学到面向对象概念这里也来个三步走,第一是初论,二是中论,三是末论。

初论主要学到的是,何为抽象,什么是对象。

中论主要学到的是,对象互操作,对象间关系,对象群集。

末论主要学到的是,多态。

下面就来梳理一下初论中所涉及的内容。

作为软件开发者,主要的也就是把真实世界的各种状况进行软件建模。那么我们面对真实世界如此繁杂的信息海洋,应该如何从这些信息中提炼精华,而不知为其所淹没。人类的大脑天生懂得简化接收到的信息,让信息细节通过一种叫做“抽象(abstraction)”的过程得到管理。

第一,通过抽象进行简化。我们最熟悉的莫过于旅游时用的游览路线图。你就是来一次欧洲或者世界游,你都可以用一根线把他们连起来,把主要的公路,游览点等等这些重要特征标记出来,基本上就一目了然了。学过离散数学的人就更好理解了,离散数学中有图论部分,很多用其他数学不好证明和理解的东西,在图论中很轻松的就解决了。其中很大一个功劳在于图论的简单化处理。

第二,通过抽象来概括特征。这也是人类认识世界的一个过程,通过抽象,让模型变得越简单,让其越通用,那么该模型就越具有普遍性。我们对事物的认识也越清楚。

第三,将抽象模型组织为层级结构。当人类有了成千上万的抽象模型时。为了对付由此带来的复杂性,人类根据既定标准进行分类处理,也就是一个层级结构的划分。在科学领域将所有自然物区分为动物、植物,矿物质。而动物之中又可分为哺乳类,鱼类,鸟类,爬行类,两栖类,昆虫类。哺乳类下就有了狗,猫,猴子啊,等等等。每种类别都是有非常清楚的概念,什么才是动物,什么是植物,什么是矿物质。我们用这些概念,构造出一个自顶向下渐趋复杂的抽象层级结构。如果我们不对其进行层级结构的划分的话,那么我们可能总是面对着这些什么狗,猴子,鸽子,鸡啊等等等等,我们终究会精尽而亡。

作为软件开发中抽象又是怎样的呢?

首先用户有很多的需求,用户和你讲我们要怎么怎么样,我们想怎么样怎么样。到时候他们另外一个部门的什么人又来了,我们要怎么样怎样。各个部门不同的人和你讲了七七四十九天,你的笔记大概有九九八十一本了。哇,我们该怎么建立我们的软件模型呢,我们的模型是一个应该是一个怎么样的呢,怎么样才能满足那些人呢?那么我们就需要判断这些细节中哪些是与系统最终目标相关的,这是根本大计,因为我们不能对付所有细节!容纳太多细节的结果,就是让系统变得过于复杂,使之难以被设计、编码、测试、调试撰写文档和维护,以后也难以扩展。在构建一个软件系统时,所有抽象过程的容纳或排除动作,都必须给予该系统的总体目标、应用域和关注点进行考虑。

抽象的重用。

挑战

虽然抽象是人类自然而然的信息处理方式,但为软件系统开发合适的模型确实是一个不容易的工作,因为

1,存在无穷多可能。抽象是观察者眼力的延展:独立工作的观察者,几乎总是会造出彼此不同的模型,那个最棒?争论随之而来。

2,对于将来的复杂状况,永远不会有最好或正确的模型,对于要解决的问题只存在较好或较差的模型。同一情形可能有多种功效等同的建模方式。

3,但是要注意,的确存在不正确的模型:即错误的表达真实世界的模型。

4,要测知模型是否已经全然捕捉到用户需求,这可没有现成的试剂。判断一种抽象方案是否恰当的最终依据,是软件系统的成品。我们可不愿一直等到项目尾声才发现误入歧途。所以必须详细而明确的和下列人员沟通:

程序的用户

软件工程师

如何成为成功的对象建模者

为软件系统进行恰当的抽象和建模,需要

1,洞察问题的所在

2,创造力

3,好的倾听技巧

4,好的观察技巧

5,选定抽象方案的有组织过程。

6,与软件开发人员和用户就结果模型进行简要沟通。

7,在比较理想的情况下,我们还会使用软件工具来使这样的蓝图创建工作变得更加自动化。

 

何为对象。

对象是面向对象系统的基本构成块。

我们先来说说真实世界的对象。对象是:

1,某种可为人感知的物质

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

也就是物理对象和概念性对象。

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

何为状态/属性/数据?

何为行为/操作?

可以访问对象的数据和修改/维护数据的方法.

关于面向对象概念详述

序: 最近在重新整理以前学过的javase部分,对一些概念进行整理。 java是一种面向对象的语言,自然就是针对对象,所以面向对象的程序是由对象组成的。OOP表示的意思就是面向对象编程。这里就会有...
  • u014206695
  • u014206695
  • 2016年10月25日 22:11
  • 304

java 面向对象概念

java 面向对象概念 封装 继承 多态 抽象
  • mappp
  • mappp
  • 2016年07月19日 10:59
  • 2911

D-S证据理论

 看了很多篇关于D-S证据理论的论文了,突然被人一问“什么是D-S证据理论”,我无言可对。     这个理论涉及的一些术语很生僻,有点难理解,不知道怎么表达,就凑活着说一下。这个理论和概率理论很相似,...
  • djzqbx
  • djzqbx
  • 2008年09月26日 21:36
  • 1132

面向对象基本定义及概念

面向对象的基本特征 抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方...
  • qq_18333833
  • qq_18333833
  • 2015年08月15日 14:30
  • 1884

C#61课的主要内容

读写内存流——memorystream类 memorystream类案例学习 案例学习: memorystream类的实际操作 读写缓存流——bufferedstream类 案例学习:通过缓冲...
  • jackli_zhang012
  • jackli_zhang012
  • 2016年11月25日 16:21
  • 114

js-面向对象的概念

什么是对象?
  • u011546421
  • u011546421
  • 2016年10月20日 20:22
  • 805

简述面向对象的概念

C与C++的最大区别是C++支持面向对象程序设计。面向对象这个词看似不好理解,其实与我们生活联系紧密。下面,我就结合生活中的实例,简单地谈一下面向对象程序设计这个概念。1、类与对象的区别人类是一个类,...
  • tongyongbbs
  • tongyongbbs
  • 2007年12月30日 21:18
  • 1918

面向对象的一些概念及举例说明

面向对象及相关概念:类、实例、消息、方法、属性、封装、继承、多态
  • sun15732621550
  • sun15732621550
  • 2015年10月06日 20:51
  • 1693

UML(二)——面向对象的基本概念

1、对象的基本特征 每个对象都有自己的唯一标识。对象之间通过消息进行通信。对象总是处于一定的状态。对象有若干种行为,分为三类:创建新对象,与其他对象通信,改变自身状态。对象的状态只能被自身的...
  • shangqing1123
  • shangqing1123
  • 2015年08月31日 10:52
  • 671

面向对象编程的几个关键概念继承、多态、组合

一、继承、接口与多态的相关问题:1、 继承的作用?好处?坏处?继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的。继承而得到的类称为子类,被...
  • u010159842
  • u010159842
  • 2015年06月17日 22:21
  • 1238
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记:面向对象概念初论
举报原因:
原因补充:

(最多只允许输入30个字)