C++课件 第七章 面向对象程序设计概述 1
2024年度-c面向对象程序设计(完整课件)pptx
04 继承与派生
17
继承概念及语法规则
继承的概念
继承是面向对象程序设计中的一个重要特征,它允许在已有的类的基础上创建 新类,新类继承了现有类的属性和方法,同时还可以添加新的属性和方法或者 覆盖现有方法。
继承的语法规则
在C中,继承通过使用冒号(:)和访问控制符(public、protected、private)来实 现。子类可以继承父类的公有成员、保护成员,但是不能继承私有成员。
介绍C中的基本数据类型,如整型、浮点型 、字符型等。
变量和常量
运算符和表达式
阐述变量和常量的概念,以及它们在程序 中的作用和使用方法。
列举C中的各种运算符,如算术运算符、关 系运算符、逻辑运算符等,并解释表达式 的概念和计算方法。
9
C语言数据类型
基本数据类型
详细介绍C中的基本数据类型, 如int、char、float、double 等。
20
纯虚函数和抽象类
纯虚函数的概念
纯虚函数是一种特殊的虚函数,它在基类中声明但没有定义,要求任何派生类都必须提供该函数的实 现。纯虚函数通过在函数声明后添加 "= 0" 来标识。
抽象类的概念
包含纯虚函数的类被称为抽象类。抽象类不能被实例化,只能作为其他类的基类使用。抽象类提供了 一种定义接口的方式,使得开发者可以定义一组相关类应该实现的方法,而不必关心具体实现细节。
析构函数
用于清理对象使用的资源,在对象 销毁时自动调用。
构造函数的重载
可以定义多个构造函数,以适应不 同的初始化需求。
14
对象数组和指针
对象数组
存储多个对象的数组,每个数组 元素都是一个对象。
对象指针
指向对象的指针,通过指针可以 访问和操作对象。
上海交大面向对象程序设计C课件第7、8章
类对象作为成员实例
#include <iostream.h>
#include <string.h>
class girl { char name[10]; int age;
public:girl(char *n, int d) {strcpy(name,n); age=d;}
void disp() {cout<<name<<" "<<age<<" \n";} };
class A { int x;
public: A(int i) {x=i;} int getx() const { x =7; //错误,修改了数据成员x return x;}
};
const的其他用法
• 如果以“指针传递〞方式的函数返回值加 const修饰,那么函数返回值的内容不能被修 改,该返回值只能被赋值给加const修饰的同 类型指针。
void main()
{ A a1, a2(12), a3(1,3); //或者:A a1,a2=12,a3(1,3);
B b1, b2(789, 111, 333);}
执行结果
A... x=0 y=0 A... x=12 y=0 A... x=1 y=3 A... x=0 y=0 B... x=0 A:x=0 y=0 A... x=111 y=333 B... x=789 A:x=111 y=333
• A a(100); //对象a的SIZE的值为100
• A b(200); //对象b的SIZE的值为200
const对象与const成员
• 常量定义 • 常量对象 • 常量成员 • 整个类的常量 • const的其他用法
第七章 面向对象的程序设计
第七章面向对象的程序设计本章是面向对象的程序设计。
与第五章介绍的面向过程的结构化程序设计不同,主要介绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对象的编程技术,详尽介绍了对各类控件的选择与使用方法。
在对诸如表单等各类控件对象的设计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序代码设计中,仍然使用到结构化的程序设计方法。
本章的主要内容是面向对象程序设计的理论基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。
7.1 学习提要1.学习目标与要求通过本章学习,读者应达到以下要求:⑴了解对象、类等基本概念;⑵理解对象的属性、方法和事件;⑶熟练掌握表单的基本设计、操作和应用;⑷掌握常用控件的设计与使用。
⑸熟练掌握常用事件、方法的过程代码的设计方法。
⑹了解自定义类的创建和使用方法。
2.重点与难点:⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控件属性、事件和方法的选择与运用。
⑵本章难点:本章的重点即为本章的难点3.主要知识点⑴面向对象的概念①对象、类②属性、方法、事件③Visual FoxPro 中的基类⑵表单的创建与基本操作①表单的创建使用“窗体设计器”或“表单向导”创建表单。
②表单的修改、运行使用“窗体设计器”编辑修改表单。
使用菜单或命令方式运行表单。
③表单的属性、事件和方法表单常用属性的设置,表单的常用事件、常用方法。
④设置表单的数据环境数据环境的概念,数据环境的设置。
⑶表单常用控件①表单常用控件的基本操作控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。
②常用控件对象标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。
③控件对象的常用属性设置Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。
面向对象程序设计第七章PPT教学课件
生成Windows窗体的代码被放置在Form.cs文件和 Form1.Designer.cs文件中。在Form.cs文件中,定义 了一个分部类Form1,它就是Windows窗体类。
3. 对窗体和窗体上的控件初始化
分部类Form1包含的InitializeComponent方法。该方 法完成对窗体和窗体上的控件进行初始化工作。
性。它是一个Cursor对象,常用Cursors集合设置。 鼠标指针的取值:
Arrow:箭头光标。 Cross:十字线光标。 Default:默认光标,通常为箭头光标。 Hand:手形光标。 WaitCursor:等待光标,通常是沙漏形状。
Form1.Cursor=Cursors.WaitCursor;
6. 关闭窗体 调用Form类的Close方法,可以关闭窗体。它只能在程序
代码中使用。
2020/12/10
8
7. 激活窗体并给予它焦点 使用Focus或Activate方法,激活窗体并给予它焦点。
public bool Focus() 如果窗体获得焦点,该方法返回true;否则,返回
false。
2020/12/10
3
7.2 Windows窗体
7.2.1 Windows窗体基本知识 Windows应用程序的窗体本身也是一个对象,它是位
于System.Windows.Forms命名空间中的Form类。 1. 设置窗体的名称 使用Form类的Name属性,可以指定窗体的名称。在
代码中,使用窗体的名称可以访问窗体。
2020/12/10
11
7.3 Windows窗体控件
7.3.1 控件概述 控件是Windows窗体的重要组成部分,它是封装界面元素,
重大社2024《人工智能技术基础》课件模块7 面向对象程序设计
7.1.4 私有成员与公有成员
>>> class A: def __init__(self, value1 = 0, value2 = 0): self._value1 = value1 self.__value2 = value2 def setValue(self, value1, value2): self._value1 = value1 self.__value2 = value2 def show(self): print(self._value1) print(self.__value2)
在Python中,可以使用内置方法isinstance()来测试一个对 象是否为某个类的实例。
>>> isinstance(car, Car) True >>> isinstance(car, str) False
7.1.1 类定义语法
Python提供了一个关键字“pass”,类似于空语句,可以 用在类和函数的定义中或者选择结构中。当暂时没有确定 如何实现功能,或者为以后的软件升级预留空间,或者其 他类型功能时,可以使用该关键字来“占位”。
7.1.4 私有成员与公有成员
下面的代码演示了特殊成员定义和访问的方法:
>>> class Fruit:
class Car: def infor(self): print(" This is a car ")
7.1.1 类定义语法
定义了类之后,可以用来实例化对象,并通过“对象名. 成员”的方式来访问其中的数据成员或成员方法。
>>> car = Car() >>> r()
C语言面向对象程序设计ppt课件
函数返回值为指向环链最表新版的整理最pp后t 一个节点的指针
8
3. Jose * count(int, Jose *) 两个参数分别为数小孩的个数、当前节点的指针 函数返回值为数了小孩个数后的当前节点的前一个节点的指针
4. void process(int, int, Jose *) 三个参数分别为小孩总数、间隔数、当前节点的前一个节点 的指针
定义两个类: Ring类 属性: 链表的始地址; 当前指针; 哨兵指针
操作: 按照间隔数确定当前指针; 输出小孩的编号; 将当前小孩从链表中删除; 构造环链表; 析构环链表;
Jose类 属性: 总数; 间隔数; 开始位置 操作: 属性赋初值; 处理所有小孩并找出胜利者
最新版整理ppt
13
//文件为ring.h
1 n
n-1
2 3
...
};
其函数声明如下:
1. int assign(int *, int *, int *)
三个参数分别为指向总数、间隔数、开始位置的指针
函数返回值为1,则初始化成功;为0,则失败
2. Jose * initial(int , Jose *)
两个参数分别为总数和结构指针, 指向待初始化的结构数组
return 1;
}
最新版整理ppt
10
jp
Jose * initial(int n, Jose * jp)
{
int nline=0;
Jose * px = jp;
for(int i=1; i <= n; i++) {
px -> next = jp + i%n;
px ->code = i;
C#面向对象程序设计-正式版PPT课件
-
14
2.2 类的声明
• 以上的类修饰符可以两个或多个组合起来使用,但需要注意下面几点: (1) 在一个类声明中,同一类修饰符不能多次出现,否则会出错。 (2) new类修饰符仅允许在嵌套类中表示类声明时使用,表明类中隐藏了
//香蕉类中其他的属性和方法 }
-
6
1.2 面向对象语言的特点
(2) 封装
• 类是属性和方法的集合,为了实现某项功能而定 义类后,开发人员并不需要了解类体内每行代码 的具体涵义,只需通过对象来调用类内某个属性 或方法即可实现某项功能,这就是类的封装。
• 封装提供了外界与对象进行交互的控制机制,设
计和实施者可以公开外界需要直接操作的属性和
• 例如:某个对象,其基类为“笔”,在调用它的“写”
方法时,程序会自动判断出它的具体类型,如果是毛
笔,则调用毛笔类对应的“写”方法,如果是铅笔,
则调用铅笔类对应的“写”方法。
-
9
2 定义类
• 在C#中,“类”是一种数据结构,它可以包含数据成员 (常量和字段)、函数成员(方法、属性、事件、索引器、
运算符、构造函数、析构函数)。
由基类中继承而来的、与基类中同名的成员。
(3) 在使用public、protected、internal和private这些类修饰符时,要注意这些类 修饰符不仅表示所定义类的访问特性,而且还表明类中成员声明中的访问特 性,并且它们的可用性也会对派生类造成影响。
(4) 抽象类修饰符abstract和密封类修饰符sealed都是受限类修饰符。
Chap.1面向对象程序设计概述
[例1.1]输入一个日期并输出。 1.1]输入一个日期并输出。 输入一个日期并输出 #include<iostream.h> //定义一个Date结构体类型 定义一个Date struct Date //定义一个Date结构体类型 //成员有 成员有: { int year,month,day; //成员有:年、月、日 }; //输入过程的定义 void Input(Date *pd) //输入过程的定义 { cout<<"Please input year,month,day: "; cin>>pd->year>>pd->month>>pdcin>>pd->year>>pd->month>>pd->day; } //输出过程的定义 void Output(Date *pd) //输出过程的定义 cout<<pd->year<<"年"<<pd->month<<"月 { cout<<pd->year<<"年"<<pd->month<<"月“ <<pd->day<<"日 <<pd->day<<"日"<<endl; } void main() //定义一个结构体变量 { Date d; //定义一个结构体变量 //输入过程的调用 Input(&d); //输入过程的调用 //输出过程的调用 Output(&d); //输出过程的调用 }
面向对象程序设计介绍课件
封装:将数据和方法封装在一个对象中,降低耦合度
02
继承:通过继承实现代码重用,提高开发效率
03
多态:允许一个接口有多种实现,提高程序的灵活性和可扩展性
04
2
面向对象程序设计的基本要素
类和对象
类:具有相同属性和方法的一组对象的抽象
对象:类的实例,具有类的属性和方法
封装:将对象的属性和方法封装在一个类中,隐藏内部实现细节
02
设计模式的应用可以帮助开发人员解决一些常见的设计问题,例如:创建型模式、结构型模式和行为型模式。
04
设计模式的应用可以帮助开发人员更好地理解和应用面向对象程序设计的原则和思想,从而提高软件开发的水平和技能。
敏捷软件开发方法
敏捷软件开发方法是一种以人为核心、迭代、增量的软件开发方法。
常见的敏捷软件开发方法包括Scrum、极限编程(XP)和看板(Kanban)等。
封装和抽象的目的:提高代码的可维护性、可重用性和可扩展性
封装和抽象的实现:通过类和接口来实现封装和抽象,将数据和方法封装在类中,通过接口定义抽象行为
封装和抽象的应用:在面向对象程序设计中,封装和抽象是实现模块化、分层和组件化的基础,有助于降低复杂性和提高代码的可维护性。
3
面向对象程序设计的实践案例
抽象:将复杂的问题分解成简单的对象和交互,便于理解和处理
面向对象的三大特征
封装:将数据和行为封装在一个对象中,隐藏内部实现细节,只对外提供接口
继承:一个对象可以继承另一个对象的属性和行为,实现代码重用和扩展
多态:一个对象可以表现出多种形态,根据不同的情况做出不同的反应
面向对象的编程优势
模块化:将程序划分为多个模块,便于管理和维护
c语言教学 面向对象程序设计概述
C++语言中的对象由描述对象状态的数据结构和 作用于这个数据结构上的方法(操作)构成,它们 都可以分为私有的和公有的两个部分,私有部分从 对象的外部不可直接访问,而公有部分可以由对象 的外部访问。C++语言中对象之间的相互联系和作用 通过对公有数据和方法(操作)的访问来实现。
例如对于某个人,它的属性可能是:
变缓冲区的管理方法,则第二个模块必须作相应的改变。如果数
据处理模块对缓冲区操作有误,将影响数据接收模块,在程序调 试时难以确定错误发生在哪一个模块中。实际上,数据处理模块 并不需要缓冲区的管理信息,它只需知道缓冲区中有没有数据以 及有什么样的数据。上面的处理方法违反了软件工程中的信息隐
藏原则,数据处理模块访问了它不需要的信息。
身高: 175 cm
年龄: 20
性别: 男
肤色: 黄色
它的公共操作可能是: 回答身高 回答年龄 回答性别 回答肤色
其它对象不能直接访问它的内部状态信息,只
能通过调用这些公共操作来访问该对象。
客观世界的同一对象在不同的应用系统中,由 于考察对象的角度不同,对其抽象的数据结构和操
作都可能是不同的。例如对于一个学生,在学籍管
代码,可以通过从已有的具有类似特性的类中
派生出一个类,继承原有类中的部分特性,再 加上所需的新的特性。
另外,人们在对客观世界的事物分类时,一个事物可能 属于多个类,具有多个类的特性。例如一个黑人学生,他既 属于学生类,又属于黑人类。这种情形在面向对象方法中称 为多继承,即一个类同时从多个类中派生出来,此时类的层 次结构是网状的。多继承在有些面向对象的程序设计语言中 是不允许的,C++语言允许多继承。只允许派生类有一个基 类称为单继承,单继承的类层次结构是树状的。
c面向对象系列c的面向对象程序设计思想PPT课件
• 更好的可重用特性 • 软件更易扩展与更可维护性
第6页/共9页
小结
• 面向对象的程序设计方法 • 面向过程与面向对象的对比 • 面向对象的优点
第7页/共9页
作业
• 完成课堂上讲解的案例程序
第8页/共9页
感谢您的欣赏!
第9页/共9页
第2页/共9页
面向对象的程序设计方法
• 分析并分解出某个问题中的种种对象 • 准确的描述所有对象之间的种种关系 • 找到它们之间的所有相互作用 • 用程序设计语言与工具来描述它们 • 用程序开发语言来表达(实现)它们
第3页/共9页
对象的抽象特点
• 对象的抽象特点 • 对所有对象进行抽象总结
• 名称 • 属性 • 行为 • 用class来表述
第4页/共9页
面向对象与面向过程的对比
• 面向过程
•程序=数据+算法 •算法=函数+控制流程 •结构化封装,但无法隐藏 •算法依赖于数据,更改与维护困难 •重用性差
• 面向对象
•分析问题,找到对象 •抽象出对象的属性与特点
第5页/共9页
面向对象的优点
•更好的封装
• 数据隐藏 • 操作屏蔽 • 把特定的数据与相应的操作组合在一起 • 把可见的与不可见的部分很理想的分离开来
本节目标
• 面向对象的程序设计方法 • 面向过程与面向对象的对比 • 面向对象的优点
第1页/共9页
ห้องสมุดไป่ตู้
面向对象的程序设计方法
• 自然界就是由许多的对象组成 • 自然界中的任何一个实体都可以看作一个对象 • 非实体也能看成某种对象(逻辑上的实体)
• 自然界的现象就是许许多多的同类与不同类的对象在相互作用 • 一个对象包含一个或多个其他的对象 • 一个对象使用另一个或多个对象 • 同种或不同种的对象之间存在各种复杂的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构化
2、结构化的核心思想 是功能的分解,将数 据结构与过程分离, 设计重点放在过程
面向对象
2、面向对象的核心思想 是数据的分解,设计重点 是数据而不是过程。数据 及其操作作为一个整体, 数据不能被外部过程直接 存取
3、程序由类 的定义和类 的使用两部 分组成,主 程序中定义 各个对象并 规定它们之 间传递消息 的规律,程 序中的一切 操作都通过 向对象发送 消息来实现,
结构化程序设计回顾(1)
结构化程序设计是为了解决早期计算机程序的难于阅 读、理解、调试、维护和扩充,以及开发周期长、不易控 制程序的质量等问题而提出来的,它的产生和发展奠定了 软件工程的基础。 结构化程序设计的基本思想是:自顶向下,逐步求精。 将整个程序结构划分成若干个功能相对独立的模块,模块 之间的联系尽可能简单;每个模块用顺序、选择、循环三 种基本结构来实现;每个模块只有一个入口和一个出口。 结构化程序设计有很多优点:各模块可以分别编程, 使程序易于阅读、理解、调试和修改;方便新功能模块的 扩充;功能独立的模块可以组成子程序库,有利于实现软 件复用等。
一个学校系统,目标是教学管理, 3. 确定一个事物是否是一个类的步骤是: 划分的类可能是教师、学生、教 材、课程、教室等。目标是后勤 先判断该事物是否有一个以上的实例对象,有则可能是一 管理,划分的类了能是宿舍、食 个类。再判断该事物的对象是否有绝对的不同点,没有就 堂、后勤工作人员、教室等。
第七章 面向对象程序设计概述
要点: 1. 面向对象程序设计的基本思想; 2. 对象、类、消息、抽象性、封装性、继承性、 多态性的基本概念。
本章内容
7.1 面向对象的思想 7.2 面向对象程序设计的基本概念 7.3 面向对象程序设计的语言
7.1 面向对象的思想
7.1.1 结构化程序设计回顾 7.1.2 面向对象的思想 7.1.3 结构化和面向对象的比较
消息(2)
1. 2.
消息的性质
同一对象可以对不同形式的多个消息作出不同的响应。 相同形式的消息可以传递给不同的对象,作出的响应可以是不同的。 消息的发送者可以不考虑具体的接受者,接受者可以响应,也可以不响 应。
3.
消息分为公有消息和私有消息两类
公有消息是由其他对象发送来的消息 私有消息是自己向自己发送的消息。 公有消息和私有消息的区分与消息传递要调用的方法有关,如果被调用 的方法在对象类中使用public说明的,则为公有消息,如果使用private 说明的,则为私有消息,私有消息只能发送调用属于自己的方法。
这里的属性说明了李东 这个对象的特征,操作说明 了李东能做什么。
对象和类—面向对象设计中(2)
面向对象程序设计中的类是一组有相同属性结构和 操作行为对象的抽象。类由类名区分,如人、树等。
如学生是对学生对象抽象所 形成的类,它由学生共同的 属性和操作来表征:
类名:学生 属性:年龄,性别,身高,体 重,特长,专业等. 操作:回答有关针对个人的提 问,从事本专业的简单工作
现实世界中的对象是现实世界中的实体
每个对象都有一个 用于与其他对象相 区别的名字。 具有某些特征,称 它为属性或状态。 有一组操作,每一 个操作决定对象的 一种行为即对象能 干什么。 对象的状态只能被 自身的行为所改变。 对象之间以消息传 递的方式相互通信。
颜色 座位数 发动机缸数
2.
3.
4.
5.
车轮数
刹车
加速
对象和类—现实世界中(2)
现实世界中的类是对一组具有共同属性和行为的对 象的抽象。
类和对象是抽象和具体的关 系。 具有共同属性和行为的事物 的抽象叫做类,同类中的事 物可以具有不同的属性值。 例如,右图中的车具有共同 的属性,因此同属轿车类。 同类的具有不同属性值的事 物叫做该类的一个对象。例 如,右图中每一部轿车,由 于其属性值各不相同,故是 轿车类的对象。
对象和类—类的确定和划分
1.
2.
确定和划分类的重要性: 面向对象技术是将系统分 解成若干对象,对象之间的相互作用构成了整个系 统。设计类而不是对象可以避免重复编码,类只需 不能指望一次性正确地确定 和划分类,需要不断地对实 编码一次,就可以创建所有的对象。 际问题进行分析和整理,反 确定和划分类的一般原则 :寻求系统中各事物的共 复修改才能得出正确的结果。 性,将具有共性的那些事物划分成一个类。
结构化和面向对象的比较(2)
程序可以看成是一系列对数据进行操作的过程。目 前有两种组织数据和操作的方法:
面向过程的方法 即程序=数据+操 作(对数据和操 作不进行分类) 面向对象的方法 即程序=对象+对象 而对象=数据+操作 (对数据和操作进 行分类)
木材 钢材 水泥
搅拌机械 木工机械 金属加工机床
重71公斤,特长篮球运动,专业计算 机科学和技术,现在就不能代表在座 的所有学生了,故取名李东
对象和类—面向对象设计中(4)
特别要指出的是,在面向对象程序设计中,类只出 现在源程序代码中,不会出现在正在内存运行的程 序中,换句话说,类只是在编译时存在,为对象的 创建提供样板。对象作为类的实例出现在内存运行 的程序中,占有内存空间,对象是运行时存在的实 体。所以类实际上是一个新的数据类型,要使用它 时,要在源程序中说明,而说明部分的代码是不在 内存中运行的。在内存中运行的是类的对象,对象 在内存中分配空间并完成计算任务,对象通过类来 定义。所以,必须严格区分说明和定义两个概念。 在C++中,把描述类的属性的数据称为数据成员, 把描述行为的操作称为成员函数。
对象和类—对象的状态
1.
2.
对象能够独立存在于现实世界中的原因,是每个对 象都有各自的特征,这些特征就是对象的状态。对 象的状态用属性的值来表征,是所有静态属性和这 些属性的动态值的总和。 面向对象程序设计中对象的状态可以是初等的数据 类型,如整型、实型、字符型等,也可以是用户自 定义的数据类型,如结构性、枚举型等,还可以是 对象,如人的状态除姓名等外,可能有家庭成员, 而家庭成员是一个对象。
面向对象的思想(1)
面向对象程序设计是在结构化程序设计的基础上发展 起来的,它吸取了结构化程序设计中最为精华的部分,有 人称它是“被结构化了的结构化程序设计”。 在面向对象程序设计中,对象是构成软件系统的基本 单元,并从相同类型的对象中抽象出一种新型的数据类 型—类,对象只是类的实例。类的成员中不仅包含有描述 类对象属性的数据,还包含对这些数据进行处理的程序代 码(这些程序代码被称为对象的行为或操作)。将对象的属 性和行为放在一起作为一个整体的方法称为封装,它将对 象的大部分行为的实现隐蔽起来,仅通过一个可控的接口 与外界交互。 面向对象程序设计提供了类的继承性,可通过对一个 被称为基类的类增添不同的特性来派生出多种被称为派生 类的特殊类,从而使得类与类之间建立了层次结构关系, 为软件复用提供了有效的途径。
结构化程序设计回顾(2)
结构化程序设计方法以解决问题的过程作为出发点, 其方法是面向过程的。它把程序定义为“数据结构+算法”, 程序中数据与处理这些数据的算法(过程)是分离的。这 样,对不同的数据结构作相同的处理,或对相同的数据结 构作不同的处理,都要使用不同的模块,从而降低了程序 的可维护性和可复用性。同时,由于这种分离,导致了数 据可能被多个模块使用和修改,难于保证数据的安全性和 一致性。因此,对于小型程序和中等复杂程度的程序来说, 它是一种较为有效的技术,但对于复杂的、大规模的软件 的开发来说,它就不尽如人意了。 通过上面的分析可以看出:结构化程序设计的核心思 想是功能的分解,思想的特点是将数据结构与过程分离, 着重点在过程。用这种方法开发的软件可维护性和可复用 性差。
面向对象的思想(2)
面向对象程序设计支持多态性。多态性与继承性相结 合,使不同结构的对象以各自不同的方式响应同一个消息。 软件系统中,对象与对象之间存在着一定的联系,这 种联系通过消息的传递来实现。在面向对象程序设计中, 消息表现为一个对象对另一个对象的行为的调用。 通过上面的分析可以看出:面向对象程序设计的核心思 想是数据的分解,着重点放在被操作的数据上而不是实现 操作的过程上。它把数据及其操作作为一个整体对待,数 据本身不能被外部过程直接存取。思想的特点是程序一般 由类的定义和类的使用两部分组成,主程序中定义各个对 象并规定它们之间传递消息的规律,程序中的一切操作都 通过向对象发送消息来实现,对象接收到消息后,调用有 关对象的行为来完成相应的操作。用这种方法开发的软件 可维护性和可复用性高。
结构化和面向对象的比较(1)
1、解决了早期计算机 程序难于阅读、理解、 调试、维护和扩充、 开发周期长、不易控 制程序的质量等问题。 1、解决了结构化方法 中数据与算法分离带 来的可维护性、可复 用性、数据的安全性 和一致性差等问题。
3、程序由模 块构成,每 个模块用顺 序、选择、 循环三种基 本结构来实 现;模块单 入口单出口, 程序的功能 是通过过程 对数据的直 接操作而实 现的
这里的属性说明了学生 共有的特征,但没有具体的 属性值,操作说明了学生能 做什么。
他们都是学生,李 东是其中之一
对象和类—面向对象设计中(3)
类是创建对象的样板,它没有具体的属性值和具体 的操作,以它为样板创建的对象才有具体的值和操 作。一个对象是类的实例,有了类才能创建对象。
类名:学生 属性:年龄,性别,身高, 体重,特长,专业 操作:回答提问,从事本专 业的简单工作 当把类的各属性赋予实际李 东相关的值,同时给这个具 体化了的类命名李东后,就 用学生这个类创建了一个对 年龄20,性别 男,身高173厘米,体 象李东。
分类 前的 建筑 工地
木材 钢材 水泥
木工机械 金属加工机床 搅拌机械
分类 后的 建筑 工地