前言
本课程没有在教材明确提出,为了后续学习UML建模,方便大家理解一些基本的概念,温故而知新。
一、基本原则
基本原则 | 定义 | 理解 |
抽象 | 对系统中的对象进行抽象,得出类 | 学习管理系统中,有老师、学生、课程等名词,把这些名词一个个抽象成类 |
封装 | 把一个对象的静态信息和动态信息封装成一个整体,做到一部分的信息隐藏 | 在C语言中把不同的数据类型封装成一个结构,但在结构中包含不同的分量,这些分量仅仅描述结构体的静态信息 |
模块性 | 把一个软件系统模块化分成一些子系统 | 有了基本的模块,就可以把代码有逻辑的、物理的存放起来,使结构更加清晰 |
层次性 | 层次性描述的是对象之间、类之间的一种依赖关系 |
二、基本概念
对象 | Object |
类 | Class |
属性 | Attributes |
操作 | Operation |
接口 | Interface(Polymorphism) |
组件 | Components |
包 | Package |
子系统 | Subsystem |
关系 | Relationships |
1、对象
what?物理实体(火车)、概念实体(抽象的、图片)、软件实体(队列)
how?对象描述一个事物的状态(静态信息,老师的名字、工号)、行为(动态信息,老师上课)、标识(对象的名字)
2、类
what?类是对一组具有相同属性、行为、关系和语义的对象的描述。
一个对象是一个类的实例。
对象 | 类 |
学生 | student |
类包含属性(描述类的静态信息)、方法
类的表示:
类和对象的关系:
类是对象的抽象定义
1、它定义了属性和方法
2、它提供了一个创建对象的模板(类是创建对象的模板)
对象是类的实例化
如上图所示,一个矩形有位置、宽度、高、面积属性信息,通过translatedBy方法得到不同的矩形。
3、属性
通过把类实例化,属性被赋值,从而得到不同的对象。
4、操作
类的方法即操作,通过操作可以修改属性
5、组件
一个组件可以是以下之一 | ||
源程序 | 运行时动态库 | 可执行程序 |
6、包
7、关系
关联关系:
程序实现:
class Professor
{
private University Employer;
}
class University
{
private Professor Employee;
}
三、发展历史
四、面向对象程序设计语言
高级程序设计语言 | Fortran | 第一个高级程序设计语言,适用于科学计算,在天体这样大规模的科学计算领域还在继续的使用。 |
面向对象程序设计语言 | Simula'67 | |
smalltalk | 是一款纯的面向对象程序设计语言,但并没有广泛的使用。 | |
C++ | 由C语言演化而来,不是一个纯的面向对象设计语言,很多现有的系统都是由c++语言编写的。 | |
Java |
由c++演化而来的,和c++的不同是,c++是一个编译型的语言,通过编译器把它编译成二进制代码,然后直接交由操作系统执行。
Java是一个解释型的语言,Java语言被编译成一种自解码,由Java虚拟机来解释,这样做的好处是,Java语言与硬件平台不相关。
| |
C# | 与Java类似,也是一款解释型语言。 | |
Eiffel | ||
Ada'95 |