02理解面向对象
- 2.1 面向对象
- 2.1.1 程序的三种基本结构
- 1、顺序结构
- 2、选择结构
- 3、循环结构
- 2.1.2 结构化程序设计简介
- 2.1.3 面向对象程序设计简介
- 2.2 UML介绍
- 2.3 Java面向对象特征
- 2.3.1 类和对象
Java是纯粹的面向对象的程序设计语言,完全支持面向对象的三种基本特征:继承、封装和多态。Java整个程序最小单位是类。
2.1 面向对象
主流软件开发方法:结构化开发方法和面向对象开发方法。相应的分为结构化编程语言:C 、Basic、Pascal,面向对象编程语言:C++、Java、C#和Ruby。
2.1.1 程序的三种基本结构
很多编程语言都提供了GOTO语句,GOTO语句非常灵活,以至于如果大量使用GOTO语句,程序完全不需要使用循环。但GOTO语句实在太随意了,随意使用会使程序难以理解。实力软件开发过程中,更注重软件的可读性和可修改性,因此GOTO语句逐渐被抛弃。Java中不能使用GOTO语句,但将goto作为保留字。
任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。
1、顺序结构
顺序结构表示程序中的各操作是按照他们在源代码中的排列顺序依次执行的。
Created with Raphaël 2.2.0 开始 S1 S2 结束
2、选择结构
选择结构表示程序的处理需要根据某个特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
3、循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才停止循环。分为当型结构和直到型结构。
当型结构:先判断条件,当条件为真时执行循环体,并且在循环体结束时自动返回到循环入口处,再次判断循环条件;如果条件为假,则推出循环体到达流程出口处。先判断后执行。
直到型结构:从入口处直接执行循环体,循环体结束时判断条件,如果条件为真,则返回入口处继续执行循环体,直到条件为假时退出循环体到达流程出口处。先执行后判断。
虽然Java语言是面向对象的,但是Java的方法里则是一种结构化的程序流。
2.1.2 结构化程序设计简介
主张按功能分析系统需求,主要原则:自顶向下、逐步求精、模块化等。
结构化程序设计李最小的程序单元是函数,每个函数都负责完成一个功能,用以接收一些输入数据,函数对这些数据进行处理,处理结束后输出一些数据。
程序入口的函数被称为主函数,主函数依次调用其他普通函数,普通函数之间一次调用,从而完成整个软件系统的功能。
2.1.3 面向对象程序设计简介
面向对象是一种更优秀的程序设计方法,它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。强调直接以现实世界中的事物(即对象)为中心来思考,认识问题,并根据这些事物的本质特点,把他们抽象地表现为系统中的类,作为系统的基本构成单元,这使得软件系统的组件可以直接映像到客观世界,并保持客观世界中事物及其相互关系的本来面貌。
采用面向对象方式开发的软件系统,其最小的程序单元是类。
面向对象有三个基本特征:
1、封装
将对象的实现细节隐藏起来,通过一些公用方法来暴露该对象的功能。
2、继承
面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法。Java不支持多继承,支持多层继承。
3、多态
子类对象可以直接赋值给父类变量,但运行时仍然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。
例如:
// BlackDog类、YellowDog类、RedDog类都继承于Dog类
Dog 小黑 = new BlackDog();
Dog 小黄 = new YellowDog();
Dog 小红 = new RedDog();
以上就是子类BlackDog的对象赋值给父类Dog并命名为“小黑”,同理“小黄”、“小红”都是父类Dog的变量。看起来“小黑”、“小黄”、“小红”都是同一个类型的变量,如果有一个方法叫“展示毛色”,那么这三个同类型的变量执行“展示毛色”方法得到的结果却不一样,“小黑”为黑色,“小黄”为黄色,“小红”为红色。
2.2 UML介绍
面向对象软件开发需要经过面向对象分析OOA(Object Oriented Analysis)、面向对象设计OOD(Object Oriented Design)、面向对象编程OOP(Object Oriented Programming)三个阶段,OOA对目标系统进行分析,建立分析模型,并将之文档化;OOD用面向对象的思想对OOA的结果进行细化,得出设计模型。OOA和OOD的分析、设计需要统一的符号来描述、交流并记录,统一建模语言UML(unified modeling language)就是这种统一的符号表示法。
最常用的UML图包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图。
2.3 Java面向对象特征
Java是纯粹的面向对象的编程语言,完全支持面向对象的三个特征:封装、继承、多态。Java语言中,除了8个基本数据类型值之外,一切都是对象。
2.3.1 类和对象
具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述。对象是实际存在的该类事物的个体,因而也称为实例(instance)。
对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。
Java语言使用class关键字定义类,定义时可使用成员变量描述该类对象的数据,使用成员方法描述该类对象的行为特征。
客观世界中的类之间主要有两种结构关系:
1、一般-特殊的关系:这是典型的继承关系。Java使用extends关键字表示这种关系。是一种“is a”的关系。
2、整体-部分的关系:这是典型的组合关系。Java通过在一个类里保存另一个对象的引用来实现这种组合关系。是一种“has a”的关系。
定义了Java类之后,使用new关键字创建指定类的对象。