java面向对象考试题的执行过程分析

java(26)
java基础(3)
本文主要探讨java的面向对象思想,顺带探讨面向过程的思想。
1.首先看一下面向过程
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“”特性(比如继承、),并且它们不允许混合持久化状态和域逻辑。
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
1.2与面向对象的比较
“”(Object Oriented,简称OO)是一种以事物为中心的编程思想。
(Object-Oriented Programming,简记为OOP)
比如以公共汽车而言。
“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。
1.3编程实现
到了编程就是:
public class 汽车运营
void 汽车启动
void 汽车到站
“”需要建立一个汽车的实体,由实体引发事件。我们关心的是由汽车抽象成的对象,这个对象有自己的属性,像轮胎,颜色等;有自己的方法,像启动,行驶等.方法也就是汽车的行为.而不是汽车的每个事件。
public class 汽车
void 到站()
void 启动()
使用的时候需要建立一个汽车对象,然后进行应用。
面向过程其实是最为实际的一种思考方式,就算是的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际地实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.比如拿学生早上起来的事情来说说这种面向过程吧.粗略的可以将过程拟为:
(3)洗脸刷牙
而这4步就是一步一步地完成,它的顺序很重要,你只须一个一个地实现就行了.而如果是用的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不能体现出来.
2.关于面向对象
Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承、封装和多态。Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。
Java完全支持使用对象、类、继承、封装、消息等基本概念来进行程序设计,允许从现实世界中客观存在的事物(即对象)出发来构造软件系统,在系统构造中尽可能运用人类的自然思维方式。实际上,这些优势是所有面向对象编程语言的共同特征。而面向对象的方式实际上由OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个部分有机组成,其中,OOA和OOD的结构需要使用一种方式来描述并记录,目前业界统一采用UML(统一建模语言)来描述并记录OOA和OOD的结果。目前UML的最新版是2.0它一共包括13种类型的图形,使用这13种图形中的某些就可以很好地描述并记录软件分析、设计的结果。
&面向对象的基本思想是使用类、对象、继承、封装、消息等基本概念来进行程序设计。
&&& 采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。采用面向对象方式开发的软件系统逻辑上的组成结构。如图所示:
从图上可以看出,面向对象的软件系统由多个类组成,类代表了客观世界上具有某种特征的一类事物往往有一些内部的状态数据,比如人有身高、体重、年龄、爱好等各种状态数据--当然程序没有必要记录该事物所有的状态数据,程序只要记录业务关心的状态数据即可。
面向对象的语言不仅使用类来封装一类事物的内部状态数据,这种状态数据就对应于图中的Field;而且类会提供操作这些状态数据的方法,还会为这类事物的行为特征提供相应的实现,这种实现也是方法。因此:可以得到如下基本等式:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Field(状态数据)+方法(行为)=类定义
& 从这个等式来看,面向对象比面向过程的编程粒度要大;面向对象的程序单位是类;而面向过程的程序单位是函数(相当于方法)因此面向对象比面向过程更简单、易用。我们举个例子来说,希望完成“把大象装冰箱”这样一件事情。
&&&&&&&&&&&&&&&&&&&&&&&& 面向过程的思维:装(大象,冰箱);&&&& 面向对象的思维:冰箱.装(大象);
2.2面向对象的特征
面向对象方法具有三个基本特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),其中封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;多态指是的子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,
&&& 面向对象还支持如下几个功能:
&&&& 1)对象是面向对象方法中最基本的概念,它的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。
&&&& 2)类是具有共同属性、共同方法的一类事物。类是对象的抽象;对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对所提供的功能,从而提高了类的内聚性,降低了对象之间的耦合性。
&&&& 3)对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间相互通信的机制。
&&&& 4)在面向对象方法中,类之间共享属性和操作的机制称为继承。继承具有传递性。继承可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)与多继承(一个类允许有多个直接父类),但Java不支持多继承。
在Java语言中除了8个基本数据类型值之外,一切都是对象,而对象就是面向对象程序设计的中心。对象具有状态,一个对象用数据值来描述它的状态。Java通过对对象定义Field(以前常被称为属性,现在也称字段)来描述对象的状态;对象还有操作,这些操作可以改变对象的状态,对象的操作也被称为对象的行为,Java通过为对象定义方法来描述对象的行为。
&&&&&& 对象是Java程序的核心,所以在Java里的对象具有唯一性,每个对象都有一个标识来引用它,如果某个对象失去了标识,这个对象将变成垃圾,只能等着系统垃圾回收机制来回收它。Java语言不允许直接访问对象,而是通过对对象的引用来操作对象。
在Java语言使用class关键字定义类,定义类时可使用Field来描述该类对象的数据,可使用方法来描述该类对象的行为特征。Java语言使用extends关键字来表示继承关系。
Java使用new关键字来创建指定类的对象,每个类可以创建任意多个对象,多个对象的Field值可以不同。
3.代码实现
还是以上面的“把大象装冰箱”来探讨面向随想和面向过程的区别与联系
分析一下需求
第一步:把冰箱门打开;
第二步:把大象装进去;
第三步:把冰箱门关上。
3.1运用面向过程的思想来实现
ProcedureOriented
package com.baosight.
/**面向过程测试类
* &p&Title:ProcedureOriented &/p&
* &p&Description:TODO &/p&
* &p&Company: &/p&
* @author yuan
上午10:25:16*/
public class ProcedureOriented {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(&把冰箱门打开&);
System.out.println(&把大象装进去&);
System.out.println(&把冰箱门关上&);
* @Title: close
* @Description: TODO
* @return void
* @author yuan
* @date 上午10:33:37
private static void close() {
// TODO Auto-generated method stub
System.out.println(&把冰箱门关上&);
* @Title: in
* @Description: TODO
* @return void
* @author yuan
* @date 上午10:33:07
private static void in() {
// TODO Auto-generated method stub
System.out.println(&把大象装进去&);
* @Title: open
* @Description: TODO
* @return void
* @author yuan
* @date 上午10:32:43
private static void open() {
// TODO Auto-generated method stub
System.out.println(&把冰箱门打开&);
3.2运用面向对象的思想来实现
须向创建大象类/冰箱类,冰箱类中2个方法,打开和关闭,大象类1个方法,装
package com.baosight.
* &p&Title:Elephant &/p&
* &p&Description:TODO &/p&
* &p&Company: &/p&
* @author yuan
上午10:27:16*/
public class Elephant {
public void in() {
System.out.println(&把大象装进去&);
Refrigerator
package com.baosight.
* &p&Title:Refrigerator &/p&
* &p&Description:TODO &/p&
* &p&Company: &/p&
* @author yuan
上午10:29:03*/
public class Refrigerator {
public void open() {
System.out.println(&把冰箱门打开&);
public void close() {
System.out.println(&把冰箱门关上&);
测试类ObjectOrientedDemo
package com.baosight.
/**面向对象测试类
* &p&Title:ObjectOrientedDemo &/p&
* &p&Description:TODO &/p&
* &p&Company: &/p&
* @author yuan
上午10:31:52*/
public class ObjectOrientedDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Elephant elephant = new Elephant();
Refrigerator refrigerator = new Refrigerator();
//打开冰箱
refrigerator.open();
//装进大象
elephant.in();
//关闭冰箱
refrigerator.close();
上面2种实现的运行结果是一致的
上面简单讲述了面向对象和面向过程的联系与区别,值得一提的是虽然Java等现在流行的语言是面向对象的,但是,作为编程语言基础的C语言是面向过程的。在实际的使用中,面向对象和面向过程的思想是紧密联系的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:53721次
积分:1018
积分:1018
排名:千里之外
原创:46篇
(5)(1)(11)(29)  我相信在各位学习的过程中,都会从书上看到面向对面和面向过程的定义,但是如何理解它们之间的区别和转换成自己的思想并运用在软件爱国过程中,我想很多初学者都不能很好的把握。下面我就对面向对象和面向过程做一个简单的分析。
  面向过程,顾名思义,其中心意义在于&过程&二字,比如你要吃饭,那么首先是要选地,播种,施肥,成熟,收获,煮饭,然后才能吃饭,那么面向过程就是从开始到结束,分析出解决问题的需要的每一个步骤,然后用函数将这些步骤一个一个实现,使用的时候一个一个一次调用就行了。
  面向对象,同样的,你去饭店吃饭的时候,只需要对服务员说一句你要吃饭就行了,你不需要关心饭是怎么来的,这就是面向对象。那么面向对象就是把组成问题事务分解成一个个对象,建立对象不是为了解决一个步骤,而是用来描述某个事务在解决问题步骤中的行为。面向对象是以功能来划分问题,而不是步骤。
  以上的解释来源于书上,对于初学者而言,这样的描述过于抽象,不能很好的理解。下面我举个具体的例子来说明。
  从书面上来说,可能面向过程更好理解,但是其实面向对象更符合人们的思考习惯。比如外面去商场买衣服,那么商场的功能就是提供衣服,你不需要关心衣服是怎么来的,你只需要向商场提出你要买衣服的要求就可以。就那贪吃蛇这个游戏而言,对于面向过程:1、吃一个;2、绘制画面;3判断是否死亡,就这样依次调用函数,一个一个步骤进行。
  而对于面向对象,建立三个对象:1、蛇;2、画面系统;3、规则系统。首先进行操作,然后将操作后的结果提交至画面系统进行画面绘制,绘制之后的结果提交至规则系统判断是否死亡。这样一招功能来划分问题。
  从上面的解释来看,面向对象和面向过程依然难以区分,但是如果我要返回上一步,那么对于面向过程而言,从初始状态到判断是否死亡到现实画面可能都需要改动。而对于面向对象则只需要重新设计画面系统,在里面保存上一步的坐标即可,这里不需要涉及到规则系统和其他操作。
  面向对象的功能划分保证了面向对象的可扩展性。比如我需要为贪吃蛇重新改写一套规则,在面向过程中,规则已经渗透到整个程序的各个角落,改写不如重写。那么在面向对象中,则只需要重新设计规则系统即可。
  其实面向对象和面向过程都强调代买重用,用了对象不代表你的程序就是面向对象,要做到局部改动需要足够的经验,很多人在用java编程时依旧是面向过程的思想(尽管在程序中使用的类和对象),这样的程序设计依然缺乏重用性和可移植性。
阅读(...) 评论()Java1234官方群18:
Java1234官方群18:
《深入浅出面向对象分析与设计(中文版)》P
《深入浅出面向对象分析与设计(中文版)》PDF 下载
提醒:假如百度云分享链接失效,请联系站长,我会补上的。
《深入浅出面向对象分析与设计(中文版)》PDF 下载
下载地址:版权归作者和出版社所有,下载链接已删除,可以到&&搜索
图书简介:
你是否早已对市面上那些只有在成为专家以后读起来才有感觉的OOA&D书籍感到厌倦?你可能早就听说过OOA&D书籍能帮助你写出伟大的软件&&让老板高兴、客户满意的软件。
但如何办到呢?
《深入浅出面向对象分析与设计》将告诉你如何分析、设计以及撰写真正面向对象的软件:容易重用、好维护、可扩展的软件;不再使你心碎的软件;让你增添新功能而不会破坏旧机制的软件。在本书中,你将学到:使用诸如封装(encapsulation)与委派(delegation)之类的OO原则建立灵活的应用程序;使用开闭原则(Open-Closed Principle)与单一职责原则(Single-Responsibilitv Principle)提升程序的重用性;学习如何将OO原则、设计模式及各种开发方法通通整合到OOA&D项目的生命周期里;运用UML、用例及用例图来确保所有利害关系人都能清楚地进行沟通,协助你交付正确的软件,达到每个人的要求。
相关截图:
图书目录:
 谁适合读这本书?
 我们知道你在想什么
 让你的脑袋顺从你的方法
 技术审阅团队
1 伟大软件由此开始:良好应用程序的基石
 永远的摇滚乐!
 Rick的金光闪闪的新应用程序
 什么是你要改变的第一件事?
 伟大软件&&
 伟大软件的简易三步骤
 先聚焦在功能性上
 测试驱动
 寻找问题
 运用基础的OO原则
 设计一次,设计两次
 改变你的应用程序有多简单?
 封装变化之物
 最后的伟大软件(就现在而言)
 OOA&D关系到编写伟大软件
2 给客户所需之物:收集需求
 大显身手的机会来了
 测试驱动
 不正确的使用(有一点)
 那么,需求究竟是什么?
 创建需求列表
 为错误作规划
 替代路径(alternate path)处理系统的疑:
 (再次)介绍用例
 一个用例,三个部分
 按照用例检查需求
 你的系统必须在真实世界里运作
 认识快乐路径(Happy Path)
 OOA&D工具箱
3 山可移,此情永不渝&&现在,情况有变:需求变更
 你是英雄!
软件分析与设计的不变真理
可选路径?替换路径?谁能分得清?
用例对你而言必须合理
从开始到完成:单一场景
替换路径的真心话
完成需求列表
重复程序代码,逊!
最后的测试驱动
写下你自己的设计原则
OOA&D工具箱
4 将你的软件带进现实世界:分析
 一只狗,两只狗,三只狗,四只狗&&
 你的软件有其情境
 识别问题
 规划解法方案
 两位程序员的故事
 委托绕道
 低耦合应用程序的威力
 注意用例里的名词
 从好分析到好类&&
 类图解析
 类图不是一切
5 第一部分:诸行无常&&良好的设计
 Rick的吉他事业蒸蒸日上
 类图解析(再一次)
 设计问题的警告
 通往伟大软件的三步骤(重访)
插曲:OO大灾难
5 第二部分:给你的软件30分钟的伸展操&&灵活的软件
 回到Rick的搜索工具
 仔细瞧瞧search()方法
 分析的好处
 类实际上关系到行为
 设计之死(决策)
 将坏的设计决策转变成好的
 Rick的软件中的&双封装&
 不要害怕犯错及改变
 瞧!Rick的具有灵活性的应用程序
 测试驱动Rick的设计良好的软件
 改变Rick的软件有多容易?
 变更容易性的大挑战
 具有内聚性的类善于处理好单一事情
 设计/内聚力生命周期
 伟大的软件通常就是&够好的软件&
 OOA&D工具箱
6 &我的名字是Art Vandelay&:解决真正的大问题
 解决大问题
关键在于你如何看待大问题
需求与用例是个好起点&&
共同性与变化性
功能与需求之间的&差别&
用例不总是帮你看出整体轮廓
小小参与者
参与者也是人(好吧,不全然)
做一点领域分析吧
化整为零,个个击破
别忘了真正的客户是谁
何谓设计模式?
OO&D的威力(以及一些小常识)
 OOA&D工具箱
7 为混乱带来次序:架构
 感觉有点头昏吗?
 我们需要架构
 从功能开始
 什么是架构的意义?
 架构三问
 减少风险
 场景有助于减少风险
 一次把焦点放在一个功能上
 架构是你的设计结构
 再访共同性
 共同性分析:通往灵活软件之路
 什么意思?问客户吧。
 减少风险有助于伟大软件自
8 原创性被高估:设计原则
 设计原则大集合
 开关原则(OCP)
 OCP,一步一步来
 不自我重复原则(DRY)
 DRY完全关系到一个地方一个需求
 单一职责原则(SRP)
 找出多重职责
 从多重职责到单一职责
 Liskov替换原则(LSP)
 子类化的误用:误用继承的案例研究
 LSP揭露继承结构所隐藏的问题
 子类型必须能替换其基类型
 违反LSP造成令人困惑的程序代码
 将功能性委托给其他类
 使用组合将来自其他多个类的行为集合起来
 聚合:组合,但没有突然的结束
 组合VS.聚合
 继承只是选项之一
 OOA&D工具箱
9 软件终究为客户服务:重复与测试
 你的工具箱满了
 伟大软件的编写是迭代进行的
 更深入地迭代:两种基本选择
 功能驱动开发
 用例驱动开发
 两种开发方式
 功能分析
 编写测试场景
 测试驱动开发
 再探共同性
 强调共同性
 强调封装
 比对你的测试与设计
 测试案例解析&&
 向客户证明
 到目前为止,我们一直在按契约编程
 按契约编程关乎信任
 防御性编程
将你的应用程序分解成较小的功能块
OOA&D工具箱
10 组合在一起:OOA&D生命周期
 开发软件,OOA&D风格
 对象村旅游&
 对象村地铁线路图
 功能列表
 用例反映使用性,功能反映功能性
 现在开始迭代&
 仔细看看地铁的表示
 使用或不使用Line类&&那是个问题
 对象村地铁的关注要点(Subway类)
 保护你的类(还有客户的类)
 中场休息
 回归需求阶段&&
 聚焦于程序代码,然后聚焦于客户
 迭代(iteration)让问题比较容易
 路线看起来像什么?
 让自己看看对象村!
 第三次迭代,有人要试试吗?
 旅程未结束&&
附录1:本书遗珠
附录2:欢迎光临对象村
(责任编辑:小锋)
------分隔线----------------------------
《了不起的Node.js: 将JavaScript进行到底》PDF 下载...
《Java RESTful Web Service实战》PDF 下载...
《架构探险从零开始写JavaWeb框架》PDF 下载...
《疯狂Workflow讲义——基于Activiti的工作流应用开发》PDF 下载...
《Oracle WebLogic Server开发权威指南》PDF 下载...
《深入理解OSGi:Equinox原理、应用与最佳实践》PDF 下载...
免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除,如果喜欢请购买正版资源!原作者如果认为本站侵犯了您的版权,请QQ告知,我们会立即删除!java面向对象编程思考过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
java面向对象编程思考过程
上传于||暂无简介
你可能喜欢

我要回帖

更多关于 java面向对象考试题 的文章

 

随机推荐