




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4 4 面向对象的概念面向对象的概念4.1 来源在软件开发过程中及使用后,使用者会不断地提出各种更改要求。而结构化方法开发的程序中:这种修改往往是很困难的,而且还会因为计划或考虑不周,不但旧错误没有得到彻底改正,又引入了新的错误;另一方面,在结构化程序开发中,代码的重用率很低,使得程序员的效率并不高。为提高软件系统的稳定性、可修改性和可重用性,人们在实践中逐渐创造出软件工程的一种新途径面向对象方法学。面向对象基本概念面向对象基本概念1967年来源80年代才出现采用Simula首创的对象、属性、消息等编程模式趋于成熟SmalltalkObjective CC+Smalltalk-80C+Simu
2、la OOP的出现Object-Oriented Programming (OOP)Object-Oriented Analysis&Design (OOA&OOD)面向对象方法的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程。面向对象程序员的观点:计算机程序结构应该与要解决的问题一致,而不是与某种分析或开发方法保持一致。经验表明,对任何软件系统而言,其中最稳定的成分往往是其相应问题域problem domain中的成分。面向对象基本概念世界世界对象2对象1对象m对象n对象3 面向对象方法具有下述四个要点: (
3、1)认为客观世界是由各种对象组成的,任何事物都是对象。世界:学校、学生、教师、桌子、教学楼、书籍等等对象 (2)把所有对象都划分成各种对象类简称为类),每个对象类都定义了一组数据和一组方法。学生类:包含的对象有张三、李四等多个学生学生类的数据:姓名(name),性别(gender),年龄(age),籍贯(hometown)等学生类的方法:getName(),setName(),getAge(),calculateMark()面向对象基本概念 (3)按照子类或称为派生类与父类或称为基类的关系,把若干个对象类组成一个层次结构的系统也称为类等级)。 (4)对象彼此之间仅能通过传递消息互相联系。面向对
4、象基本概念4 4 面向对象的概念面向对象的概念4.1 4.1 来源来源4.2 4.2 对象和类对象和类4.3 4.3 消息和方法消息和方法4.4 4.4 对象接口对象接口4.5 4.5 继承性继承性4.6 4.6 封装性封装性4.7 4.7 多态性多态性4.2 对象和类某个信息系统所要处理的问题涉及的领域范围叫做问题空间问题域),而对象是问题空间中与系统问题处理相关的事物的抽象体。不同视角的观点:用户对象相当于现实世界的某类事物;系统分析员对象是描述该事物的一组属性数据和作用于这些属性数据之上的操作方法。一个对象是把事物的属性和对属性数据的操作方法结合而成的整体。面向对象基本概念对象表示真实的
5、事物,它可以是视觉可见的东西或抽象概念,它既可以是主动的、可以启动或控制过程的事物,也可以是被动响应服务请求的事物。 对象有三个特性:预定义行为、状态和标识。预定义行为是对象初始时所定义的动作序列,直观地说,是对象定义的各种方法的集合。一个对象可以有任意个属性或域,对象的状态和存储在它的域中的值相对应。而标识是对象的唯一编号,用来与其他对象相区别。面向对象基本概念学生对象张三,其数据包括name,gender,age,grade)形状:状态1:(张三,男,18,大一)状态2:(张三,男,19,大二)状态3:(张三,男,20,大三)预定义行为: getName(),setName(),getAg
6、e(),calculateMark()标识一个独有的引用:张三面向对象基本概念一个类定义了一组大体上相同的对象。一个类所包含的操作方法和属性数据描述了一组对象的共同行为和属性。 如学生是一个类,学生丁三、李四是两个对象,是学生类的实例。 每一个对象都属于某个类。类不仅决定了对象的类型,还决定它的域属性和方法。域和方法在类定义中表达出来。创建一个新对象时,与对象类型相对应的类定义决定了对象的结构和行为。 面向对象基本概念类(Class)一个类的上层可以有超类,下层可以有子类,形成一种层次结构,且在这种类层次结构中,一个类可以有多个超类,也可以有多个子类。类和类之间的主要关系:分类结构:聚集结构:
7、关联关系:面向对象基本概念 类的主要功能有三个:类定义了类型,即一组对象共有的属性和方法;类提供了它的类型的实现,它定义了实例如何表示以及根据选定的表示方法如何实现;类提供了初始化实例的构造器,构造器可以用来创建和初始化新的实例。 面向对象基本概念class Student String name; int age; String grade; public Student() age=0; public String getName() return name; public int getAge() return age; 面向对象基本概念/变量定义Student amy;Student
8、richard;/变量初始化amy=new Student();/方法调用int nowAge=amy.getAge();类Student的构造器4 4 面向对象的概念面向对象的概念4.1 4.1 来源来源4.2 4.2 对象和类对象和类4.3 4.3 消息和方法消息和方法4.4 4.4 对象接口对象接口4.5 4.5 继承性继承性4.6 4.6 封装性封装性4.7 4.7 多态性多态性对象之间进行通信的数据叫做消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息,接收到消息的对象对其进行解释,然后予以响应。这种通信机制叫做消息传递。一个消息由下列三个元素组成:消息名;零个或
9、多个参数列表,为接收对象提供数据信息;对接收对象的引用。 面向对象基本概念4.3 4.3 音讯音讯(Message)(Message)和方法和方法(Method)(Method)public class Student private int age; public void setAge(int newAge) age=newAge; public int getAge() return age; 面向对象基本概念Student amy;amy =new Student();amy.setAge(20);定义了类Student的对象amy接收对象消息名参数方法就是与一个对象有关的过程,即实现
10、某一操作的一段代码。一个对象可以有任意数目的方法。当对象收到一个消息时,决定调用哪个方法来响应消息的过程称为方法绑定。方法绑定就是找到型构(signature)和消息的元素相匹配的方法:方法名与消息名相匹配;方法的参数表与消息的参数表在类型和数目上相匹配。执行与消息对应的预定义行为可能会产生三种结果: 返回一个值给消息发送者。改变接收者的状态。改变作为参数传给接收者的对象的状态。 面向对象基本概念面向对象基本概念对象Student具有以下方法:getName()getAge()setAge()getMark(String grade)getMark(String grade,String co
11、urse)方法绑定:Student amy;amy.getAge();amy.getMark(”first year”,”english”);定义了类Student的对象amy寻找型构相同的方法getAge()寻找型构相同的方法getMark(String grade,String course)4 4 面向对象的概念面向对象的概念4.1 4.1 来源来源4.2 4.2 对象和类对象和类4.3 4.3 消息和方法消息和方法4.4 4.4 对象接口对象接口4.5 4.5 继承性继承性4.6 4.6 封装性封装性4.7 4.7 多态性多态性对象可响应的消息是由对象接口决定的。对象接口以一组操作方法
12、的形式出现;每一个操作对应于在响应某个消息时对象所完成的预定义行为;客户通过对象接口来理解对象支持的各种行为,并根据接口来发送消息。 调用对象的操作方法是要遵守一定的规则,这些规则描述了如何使用对象的每一个操作。 例如,当一个Person对象接收到带有一个参数的setAge()消息时,规则要求这个参数必须是整型数值对象,下面的消息就违反了对象调用规则: p.setAge(null);面向对象基本概念4.4 对象接口(Interface)对象接口的分类:面向对象基本概念公有接口:定义了一组可供任何对象发送的消息和调用的操作方法限制型接口:对象提供了仅供某些类型的客户使用的限制型操作。 class
13、 Student private String name,nickname; private int age; private String grade; public Student() age=0; public String getName() return name; public int getAge() return age; public void setName(String newName) name=newName; setNickName(“nick”+newName); private void setNickName(String newName) nickname=
14、newName; 4 4 面向对象的概念面向对象的概念4.1 4.1 来源来源4.2 4.2 对象和类对象和类4.3 4.3 消息和方法消息和方法4.4 4.4 对象接口对象接口4.5 4.5 继承性继承性4.6 4.6 封装性封装性4.7 4.7 多态性多态性 继承性是类层次结构中的一个重要特点,是超类和子类之间共享数据和操作方法的机制。 面向对象基本概念继承部分 增加部分从A继承AB4.5 继承性(inheritance) 面向对象基本概念继承是软件重用的一个基本机制。当通过继承定义一个新类时,新类获得了已存在类的属性和行为。新类称为子类,而已存在类称为超类或父类。子类又可以是其他类的父类
15、,这就形成了继承层次结构。RectangleEllipseRegionPointFigureLineSegmentCirclePoint,LineSegment,Region的父类Ellipse,Rectangle,Circle的父类类Figure的子类面向对象基本概念 继承有下面三种使用方式: 子类定义新的属性和方法作为对它所继承的属性和方法的补充。 子类重新实现所继承的一个或多个方法。被子类重定义的方法称为被覆盖了;也可以说子类覆盖了特定的方法。 方法被覆盖后,类的行为发生了变化:对同一个消息,子类和父类的实例调用不同的方法,产生不同的行为。 子类实现一个或多个其父类声明但没有实现的方法。
16、这种情况下,这个父类就是一个抽象类,而它声明但没有实现的方法称为抽象方法。 class Student public Student()age=0; String name;int age;String grade; public String getName() return name; public int getAge()return age; class MiddleStudent extends Student String nickName; public String getName() return nickName; 面向对象基本概念/变量定义Student amy; Mid
17、dleStudent richard;/变量初始化。/方法调用amy.getName()和richard.getName()对类Student的拓展对类Student方法的覆盖abstract class Student public Student()age=0; String name;int age;String grade; public String getName() return name; public int getAge()return age; public abstract void setAge(int newAge); class MiddleStudent ext
18、ends Student String nickName; public String getName() return nickName; public void setAge(int newAge) age=newAge;面向对象基本概念/变量定义MiddleStudent richard;/变量初始化。/方法调用richard.getName()和 richard.setAge(5)对类Student的拓展实现抽象方法对类Student方法的覆盖面向对象基本概念 继承的优点易编程、易理解:代码短, 结构清晰易修改:共同部分只要在一处修改即可易增加新类:只须描述不同部分4 4 面向对象的概
19、念面向对象的概念4.1 4.1 来源来源4.2 4.2 对象和类对象和类4.3 4.3 消息和方法消息和方法4.4 4.4 对象接口对象接口4.5 4.5 继承性继承性4.6 4.6 封装性封装性4.7 4.7 多态性多态性面向对象基本概念4.6 封装性(encapsulation)封装是把一组相关软件元素组织到一起的方法,其目的在于将对象的使用者和设计者分开,使用者不必知道对象行为实现的细节,只须用设计者提供的对象接口来访问对象。 利用封装来隐藏那些不属于对象公有接口的软件元素称为信息隐藏。封装的定义为: 对所有对象的内部软件范围的边界进行限定; 对各对象之间相互作用的接口进行描述; 对每个对象的内部实现操作程序和数据进行保护。 面向对象基本概念class Example private float bankRate; public float testResult() return bankRate; 类Example定义了自己的软件范围;仅能通过Example的接口来进行访问;类的属性定义和方法的具体实现外部不可见。面向对象基本概念 封装的好处:隐藏和保护对象的内部信息在对象行为发生变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 横幅打印制作合同协议
- 和伙装修协议合同
- 和中介解除贷款合同协议
- 商户进场装修合同协议
- 2025冰箱供货合同范本
- 2025年贵州省机动车辆买卖合同模板
- 2025商场展示空间租赁合同范本
- 快艇买卖协议书模板
- 武汉市社保合同协议
- 2025YY年销售员劳动合同样本
- 内部控制建设课件
- 《微电子学概论》第八章-光电子器件课件
- 水塘排水、清淤质量检验记录表
- 上海龙之梦丽晶大酒店客房预订单
- 化学分析送样单2
- 水污染控制工程课程设计说明书
- 妇产科学孕期B族链球菌感染课件
- 建筑工程施工质量控制要点ppt课件
- 【高考真题】2022年新高考浙江语文高考真题试卷(Word版含答案)
- 评茶员(高级)鉴定理论试题
- 目前最准确的通达信缠论分笔公式
评论
0/150
提交评论