理解面向对象

来源:互联网 发布:crossover linux 破解 编辑:程序博客网 时间:2024/06/08 19:20

概述:

我理解的面向对象的开发,就是开发“类”,思考的角度也是从类的层面思考的,也就是自上而下的。众多类通过三大特征,也就是:继承,封装和多态,来共同构成功能性的程序。世界上的一切都是对象,分析对象,创建类,实现类的过程就是面向对象的开发。 多年来,形成了这样一种表述方法,面向对象的开发由这三个阶段组成:
* OOA——面向对象的分析
* OOD——面向对象的设计
* OOP——面向对象的编程
其中前两个阶段业界采用了UML(统一建模语言)来描述并且记录结果。而UML也经过时间的检验,目前有13种图,常用的有7种:用例图、类图、组件图、部署图、顺序图、活动图、状态机图。
而之所以面向对象的开发比之前C语言用的结构化编程更有优势,我想是因为这样,结构化编程是把软件按照功能进行细分,最后归结为实现小功能的函数,函数主要完成处理数据,输出数据,而主函数则依次调用其他函数的功能。这样的设计方式不直观并且适应性差,可扩展性不强。面向对象的编程因为适应人类的思维方式,万物都是对象,从现实世界中的事物为中心进行思考,使得软件的组件直接映射到客观世界,更重要的是在发展的过程中体现出了很好的可重用性,可扩展性,可维护性。
但是面向对象的程序仍然使用“顺序结构”,“选择结构”,“循环结构”三种结构来实现世界上的任何一种算法。
面向对象的程序基本组成单元是“类”,类反映了客观世界的一类事物,类封装了这类事物的内部状态数据,以及操作这些数据的方法。也就是
数据+方法=类
而面向对象的三大特征是封装,继承和多态。正是这三大特征很好的解释了面向对象的优势。

UML介绍

OOA和OOD这两个过程是面向对象编程的第一步。OOA的目标是对目标模型分析,并将其文档化,OOD的目标是用面向对象的思想对OOA的结果进行细化,得出设计模型。UML就是描述这两个过程的结果的同意的符号语言。

这里写图片描述

*常用的介绍如下:*
- 用例图:描述系统提供的系列功能。主要是在需求分析阶段使用。
- 类图:描述逻辑类(事物种类)之间的关系和类的内部结构。
* 关联:单向关联,双向关联,组合(实心),聚合(空心)。
* 泛化:继承(实线三角),实现接口(虚线三角)。
* 依赖:虚线箭头,指向被依赖
- 组件图:一个组件打包成一个JAR或者WAR,之间的关系用组件图描述,是非常粗颗粒的描述。
- 部署图:不同软件部署在不同的服务器上,构成一个系统。
- 顺序图:具体用例或者是用例的一部分的详细流程,描述对象之间交互的时间顺序。有两个维度,垂直维度和水平维度。垂直维度以时间顺序表示对象被激活的时间。水平维度显示消息被发送到的实例对象。
- 活动图:描述用例内部的活动或者方法的流程。
- 状态机图:某个对象所处的不同状态和状态之间的转换关系图。

总之,在Java语言中,除了8个基本数据类型之外,一切都是对象,java语言的设计也是以对象为中心的,而对象反映了世间万物,对象吧数据和数据的操作封装成一个整体,具有相同特征的对象就是类。

下文是互联网上的一些表述

  • “这个世界是由什么组成的?”这个问题如果 让不同的人来回答会得到不同的答案。如果是一个化学家,他也许会告诉你“还用问嘛?这个世界是由分子、原子、离子等等的化学物质组成的”。如果是一个画家
    呢?他也许会告诉你,“这个世界是由不同的颜色所组成的”。……呵呵,众说纷纭吧!但如果让一个分类学家来考虑问题就有趣的多了,他会告诉你“这个世界是
    由不同类型的物与事所构成的”好!作为面向对象的程序员来说,我们要站在分类学家的角度去考虑问题!是的,这个世界是由动物、植物等组成的。动物又分为单
    细胞动物、多细胞动物、哺乳动物等等,哺乳动物又分为人、大象、老虎……就这样的分下去了!”
  • 面向对象的编程语言最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我想我必须要帮你搞清楚“类,对象,属性,方法它们之间的关 系”!就像我前面所说的,人这个“类”是什么也做不了的,因为“人类”只是一个抽象的概念,它不是实实在在的“东西”,而这个“东西”就是所谓的对象。只
    有人这个“对象”才能去工作。而类呢?类是对象的描述!对象从类中产生出来!此时,对象具有类所描述的所有的属性以及方法。
  • 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)/泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派(dynamic

总之:编程的实质就是利用编程语言和计算机这个工具交互处理世间万物的属性,而不是处理世间万物

Java编程就是操作计算机的内存中的数据,内存中的数据有多大,这就是数据类型,数据的操作就用运算符,控制流程是逻辑顺序,至于三大特性就是Java在设计时的一些关键字的功能表现出的一些看起来的特点。世界上的一切东西在计算机看来其实都是数据,这点不难理解,通过Java这个设计好的人机交互工具能操作世界上的一切虚拟化东西。编程的实质就是利用Java语言和计算机这个工具交互处理世间万物的属性。比如一个学生的属性是年龄,年纪,班级,老师,性别,成绩,上学期的数学成绩这些所有的东西都是这个学生身上的标签,也就是属性,把这些属性正确的存在内存里,进行必要的处理,在把结果通过计算机屏幕这个工具展示出来,这就是我们编程要做的事情。

0 0