




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象基础 Java程序设计 内容提要 面向过程的程序设计方法面向对象的程序设计方法类对象消息 用计算机解决问题需要用程序设计语言对问题求解加以描述 即编程 我们编写的程序由两个主要方面组成 1 数据的集合程序中要处理的信息对象 算法在这些数据上操作 以提供问题的解决方案 2 算法的集合就是将指令组织成程序来解决某个特定的问题 面向过程的程序设计方法 结构化编程的基本方法是 功能分解法 具体来说 就是把所要解决的实际问题进行分解 把一个大问题分成若干个子问题 每个子问题又可以被分解为更小的问题 直到得到的子问题可以用一个函数来实现为止 面向过程的程序设计方法 举例编程计算 1999年6月3日到2008年3月8日期间一共有多少天 面向过程的程序设计方法 有以下的基本常识 1 一年有365天 但闰年有366天 2 一年有12个月 大月31天 小月30天 3 二月最特殊 普通年有28天 闰年有29天 面向过程的程序设计方法 计算步骤 算法 设计如下 1 计算从1999年到2008年期间有多少个整年 2 计算从1999年6月3日到年底共有多少天 3 计算从2008年元旦到2008年3月8日有多少天 程序 Input 两个日期 Output 两个日期间的天数 面向过程的程序设计方法 将 程序 方框完成的功能转化为由一个函数实现 intCalcDaysOfTwoDate intbeginYear intendYear intbeginMonth intendMonth intbeginDay intendDay 面向过程的程序设计方法 改进将年 月 日封装起来作为一个整体 类 structMyDate intYear intMonth intDay intCalcDaysOfTwoDate MyDatebeginDate MyDateendDate 面向过程的程序设计方法 按照前面的计算步骤 可以写出以下两个函数 intDaysOfTwoYear intbeginYear intendYear intDaysOfTwoMonth MyDatebeginDate MyDateendDate 还需设计一个函数判断某年是否为闰年 intIsLeapYear intyear 面向过程的程序设计方法 至此设计工作完成 得到以下的结果 CalcDaysOfTwoDate DaysOfTwoYear DaysOfTwoMonth IsLeapYear 面向过程的程序设计方法 传统的结构化编程小结 1 结构化软件系统的基本编程单位是函数 2 整个系统按功能划分为若干个模块 每个模块都是由逻辑上相关的若干个函数构成 各模块在功能上相对独立 3 公用的函数存放在公用模块中 各模块间可以相互调用 4 由一个主模块来进行总体控制把所有的模块联接在一起并协调它们之间的活动 面向过程的程序设计方法 容易导致对一种数据的操作分布在整个程序的各个角落 而一个操作也可能会用到很多种数据 在这种情况下 对数据和操作的任何一部分进行修改都会变得很困难 算法和数据的关系数据和处理数据的操作算法分离用一个函数来实现一个功能 所有的数据都是公用的 一个函数可以使用任意一组数据 而一组数据又能被多个函数所使用 程序设计者必须考虑每一个细节 什么时候对什么数据进行操作 当程序规模较大 数据很多 操作种类繁多时 程序设计者往往感到难以应付 面向过程的程序设计方法 面向对象的程序设计方法 两个日期间相差天数的面象对象分析 为日期建立一个模型 面向对象的程序设计方法 1999 6 3 2008 3 8 d1 d2 1999 6 3 d1 面向对象的程序设计方法 daysBetweenTwoDate int 2008 3 8 d2 Dated1 newDate 1999 6 3 Dated2 newDate 2008 3 8 intdays days d1 daysBetweenTwoDate d2 System out println days 与结构化程序相比面向对象的程序具有以下的几个特点 1 所有的函数都放入到一个类中 成为某个类的成员 类是编程的基本单元 2 外界不能直接调用类的成员函数 必须先创建一个对象 再通过对象来调用这些函数 3 只有声明为public的函数可以被外界调用 其余声明为private的函数是私有的 外界无法访问 面向对象的程序设计方法 打我们一出生 眼里落入的就是各式各样的实体 而我们区分它们主要依靠就是事物各式各样的特征 包括事物不同的结构和特定的行为 而结构化设计方法试图通过信息流及其转换来认识系统 这天生造成了某种障碍 相比之下 面向对象方法则和我们所熟悉的认识世界的方式相吻合 更加的自然 面向对象的程序设计方法 思考 我们如何处理现实世界的情况 再进而考虑如何使计算机套用这项技术模式 例如 假设一个叫Chris的人想送花给他的一位名叫Robin的住在另一座城市的朋友 一种观察世界的方式 单一对象的存在并没有多大的作用 自行车自身是不能活动的 只有多个对象相互作用才会完成复杂的行为 对象和对象之间是通过传递消息来完成相互通信的 当一个消息发送给某个对象时 包含要求接收对象去执行某些活动的信息 接收到消息的对象经过解释 然后予以响应 这种通讯机制叫做消息传递 发送消息的对象不需要知道接收消息的对象如何对请求予以响应 消息和方法 软件对象之间也是通过彼此发送消息来相互作用和通信的 当对象A想要对象B为它提供某种服务时 对象A发送一个消息给对象B B通过执行相应的操作 方法 来完成对A的服务 消息和方法 消息由三个部分组成1 消息的接收者2 接收对象采用的方法3 执行方法所需要的参数 YouBicycle changeGears lowerGear 消息和方法 一个对象的行为是通过它的方法来表达的 所以消息传递可以支持对象间所有可能的相互作用 两个对象可以不在同一进程中 甚至可以不在同一台机器中 面向对象的程序设计 对象 对象 消息 消息 消息和方法 现实世界中的对象操纵一个对象是一件很普遍的事情 如调整时钟 或者经过训练之后驾驶一辆汽车 使用一台电脑等 现实对象 现实对象 对象是要研究的任何事物 从一本书到一家图书馆 单的整数到整数列庞大的数据库 极其复杂的自动化工厂 航天飞机都可看作对象 它不仅能表示有形的实体 也能表示无形的 抽象的 规则 计划或事件 对象是由事物的属性和事物的行为构成一独立整体 认识真实世界中的对象从两方面入手1 状态 state 包含了某种固定的信息 电视机 位置 尺寸 开关机状态 正在播放的频道节目 2 行为 behavior 和对象相关的活动 对外提供的功能 电视机开机 关机 调台 调音量等 现实对象 例如 你家dogs1 状态 state name color breed hungry等 2 行为 behavior eating barking fetching waggingtail等 现实对象 例如 自行车 bikes 1 状态 state currentgear currentpedalcadence twowheels numberofgears等 2 行为 behavior braking accelerating slowingdown changinggears 现实对象 类 class 类是具有共同属性和行为的对象的抽象 类可以看作是构建对象的设计图纸 描述了以它所创建的对象 1 有哪些属性 即有什么 2 能提供哪些功能 即能干什么 通过类这个 模板 可以生成一个或多个对象 类和对象 例如 电脑类基本属性有 显示器 主板 CPU和内存等共同操作有 开机 关机 执行程序等电脑对象实际存在的一台电脑 张三的电脑 李四的电脑 有时也称为一个电脑类的实例 instance 现实世界到计算机世界 类的定义 可访问性 classClassName Fields 字段 Methods 方法 在最简单的设计中 我们定义两种类的成员 属性 用于描述 状态 保持 状态 方法 用于定义行为 类的定义 用UML图来表示类 类的定义 例1 假定一个对象类表示一杯咖啡 叫做CupOfCoffee publicclassCupOfCoffee publicStringbeanType publicboolinstant publicboolmilk publicbytesugar publicStringdescription publicbyteaddSugar byteamount body publicclassBankCustomer publicStringfirstName fields attributespublicStringlastName publicdoublebalance publicvoiddeposit doubleamount methods this Balance amount 例2 设计一个BankCustomer类 类的定义 实例化就是创建对象的过程使用new关键字来创建 publicclassBankCustomer publicStringfirstName publicStringlastName publicdoublebalance publicvoiddeposit doubleamount this balance amount BankCustomerc c newBankCustomer c FirstName Kim c LastName Lee c Balance 0 0M c Deposit 1000 00M 实例化 Instantiation 对象vs对象引用 对象变量保存的仅仅是对象的一个引用 不是对象本身 这点是非常重要的 有助于理解Java BankCustomerc c newBankCustomer c newBankCustomer BankCustomerc c newBankCustomer c newBankCustomer 栈内存 堆内存 对象vs对象引用 c 0088 4400 创建bankcustomers 对象具有以下特征 对象有可以唯一标识它的名字 由一系列属性构成的数据 在某个时刻对象的属性都有一个确定的值 具有对数据执行的一系列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级阅读理解质量检测试题1
- 柳州市人教版七年级上册地理期中试卷及答案复习试卷
- 人教小学三年级上册数学期末复习(附答案)
- 六年级下册期末数学综合测试真题经典
- 七年级下学期期末考试数学试题及解析
- 2025年死因监测培训考核试题及答案
- 建设工程质量安全监督人员考试题库含答案
- 出租汽车驾驶员从业资格考试区域科目题库及答案
- 网络安全工程师设备安全岗位面试问题及答案
- 中心静脉导管维护资质认证试题附答案
- 湖南安全员c3考试试题及答案
- 2025年中学生心理健康测试题及答案
- 二年级防溺水教案
- 后厨设备安全操作培训课件
- 好风起二部合唱简谱致远音乐
- 电子辅料基础知识培训
- Unit 2 Ways to go to school Part A Let's talk 英语教学课件
- 无人机使用课件
- 柔性装配基础知识培训课件
- 卫生检验副高评审个人汇报
- 2025年低压电工理论考试1000题(附答案)
评论
0/150
提交评论