《面向对象程序设计》
- 格式:doc
- 大小:88.00 KB
- 文档页数:13
《面向对象程序设计》教案一、教案简介本教案旨在帮助学生掌握面向对象程序设计的基本概念、原理和方法,培养学生的编程能力和软件开发思维。
通过本课程的学习,学生将能够熟练运用面向对象的编程语言,如Java或C++,进行软件开发和设计。
二、教学目标1. 了解面向对象程序设计的基本概念,如类、对象、封装、继承和多态等。
2. 掌握面向对象程序设计的基本原则,如单一职责原则、开闭原则、里氏替换原则等。
3. 学会使用面向对象的编程语言进行程序设计和开发。
4. 培养学生的软件开发思维和团队协作能力。
三、教学内容1. 面向对象程序设计的基本概念1.1 类与对象1.2 封装1.3 继承1.4 多态2. 面向对象程序设计的基本原则2.1 单一职责原则2.2 开闭原则2.3 里氏替换原则2.4 接口隔离原则2.5 依赖倒置原则3. 面向对象的编程语言3.1 Java3.2 C++4. 面向对象的设计模式4.1 创建型模式4.2 结构型模式4.3 行为型模式四、教学方法1. 讲授法:讲解面向对象程序设计的基本概念、原理和编程方法。
2. 案例分析法:分析实际项目中的面向对象设计案例,让学生理解并掌握面向对象的设计思想。
3. 实践操作法:让学生通过编写代码,亲身体验面向对象程序设计的流程和方法。
4. 小组讨论法:分组进行讨论,培养学生的团队协作能力和解决问题的能力。
五、教学评价1. 课堂参与度:评估学生在课堂上的发言和提问情况,了解学生的学习兴趣和积极性。
2. 课后作业:布置相关的编程作业,检查学生对面向对象程序设计知识的掌握程度。
3. 项目实践:评估学生在团队项目中的表现,包括代码质量、设计思路和团队协作能力。
4. 期末考试:全面测试学生对面向对象程序设计知识的掌握情况。
六、教学资源1. 教材:推荐《Java面向对象程序设计》、《C++ Primer》等经典教材。
2. 在线资源:提供相关的在线教程、视频课程和编程练习平台,如慕课网、Coursera、LeetCode等。
面向对象的程序设计教案一、教学目标1. 理解面向对象程序设计的基本概念,如类、对象、封装、继承和多态。
2. 掌握使用面向对象的方法分析问题、设计解决方案并实现。
3. 学会使用面向对象编程语言(如Java、C++等)进行程序设计。
二、教学内容1. 面向对象程序设计概述介绍面向对象程序设计的发展历程、优点及应用领域。
2. 类与对象讲解类的定义、属性、方法;对象的概念、创建方式及使用。
3. 封装与信息隐藏解释封装的原理、作用;演示如何通过访问修饰符实现信息隐藏。
4. 继承与多态阐述继承的概念、分类;展示多态的实现方法和应用场景。
5. 面向对象设计原则介绍单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。
三、教学方法1. 讲授法:讲解基本概念、原理和方法。
2. 案例分析法:通过实际案例演示面向对象程序设计的应用。
3. 动手实践法:让学生编写代码,巩固所学知识。
4. 小组讨论法:分组讨论问题,培养团队协作能力。
四、教学环境1. 教室环境:投影仪、计算机、网络。
2. 编程工具:集成开发环境(IDE),如Eclipse、Visual Studio等。
3. 编程语言:选择一种面向对象编程语言,如Java、C++等。
五、教学评价1. 课堂表现:观察学生在课堂上的参与程度、提问回答情况等。
2. 课后作业:检查学生完成作业的质量、代码规范性和正确性。
3. 项目实践:评估学生在团队项目中的贡献、解决问题能力和编程技能。
4. 期末考试:考查学生对面向对象程序设计知识的掌握程度。
六、教学计划1. 第一周:面向对象程序设计概述2. 第二周:类与对象3. 第三周:封装与信息隐藏4. 第四周:继承与多态5. 第五周:面向对象设计原则七、教学资源1. 教材:推荐《Head First 面向对象编程》、《大话数据结构》等。
2. 在线资源:开源中国、CSDN、Stack Overflow 等。
3. 教学视频:网易云课堂、慕课网等平台的面向对象程序设计课程。
面向对象程序设计是什么面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性或字段)和代码(通常称为方法或功能)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作数据的代码(方法)组合在一起的过程。
这样做的好处是,它允许开发者隐藏对象的内部状态,只暴露必要的接口。
封装提高了代码的安全性和可维护性,因为外部代码不能直接访问对象的内部状态,只能通过对象提供的方法进行交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时保持了代码的组织性和清晰性。
继承还可以支持多态性,因为子类可以重写父类的方法,提供特定的实现。
多态多态性是指允许不同类的对象对同一消息做出响应的能力,但具体的行为会根据对象的实际类型而有所不同。
这通常通过方法重写实现,即子类可以提供一个与父类具有相同名称和参数的方法,但具有不同的实现。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前问题相关的方面。
在面向对象程序设计中,抽象通常通过创建抽象类和接口来实现。
抽象类不能被实例化,但可以被继承,而接口则定义了一组方法规范,具体的类可以实现这些接口。
面向对象程序设计的优点包括:- 代码重用:通过继承和多态,可以减少代码的重复编写。
- 模块化:封装使得每个对象都是独立的模块,易于管理和维护。
- 易于扩展:新的功能可以通过添加新的类或扩展现有类来实现,而不影响现有的代码。
- 易于理解:面向对象的方法模仿现实世界中的对象和行为,使得代码更易于理解和学习。
面向对象程序设计的缺点可能包括:- 性能开销:由于面向对象的特性,如动态绑定和继承,可能会引入额外的性能开销。
- 过度设计:开发者可能会过度使用面向对象的特性,导致设计过于复杂。
- 学习曲线:对于初学者来说,理解和掌握面向对象的概念可能需要一定的时间和实践。
《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。
本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。
一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。
2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。
封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。
3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。
二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。
类用来创建对象的模板,包含数据成员和成员函数。
2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。
通过类实例化,可以创建多个对象来表示真实世界的实体。
3. 类的成员:类包含数据成员和成员函数。
数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。
三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。
继承可以实现代码的复用,并且可以建立类之间的关系。
2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。
多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。
四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。
面向对象程序设计(Object-Oriented Programming,OOP)是一种编程范式,它主张将现实世界的对象抽象为具有数据和行为的程序实体。
C++ 是一种广泛使用的面向对象编程语言,其特点是将 C 语言的程序结构扩展为包含面向对象的特性。
C++ 的面向对象编程核心概念包括:1. 类(Class):类是对象的抽象表示,定义了一组包括数据和方法的结构。
类可以看作是对象的蓝图或模板。
class MyClass {// 成员变量和成员函数的声明};1. 对象(Object):是类的一个实例,具有由类定义的数据和方法。
通过类,我们可以创建多个相同类型的对象。
MyClass obj1;MyClass obj2;1. 封装(Encapsulation):封装是将对象的内部结构(数据和方法)与外部环境隔离,提供一种访问和修改对象数据的安全机制。
// 使用 private 和 public 限定符实现封装class MyClass {private:int data;public:void setData(int d) {data = d;}int getData() {return data;}};1. 继承(Inheritance):继承是面向对象编程中重用代码的一种方法,通过继承,一个类可以从另一个类派生出子类,并从基类继承成员变量和成员函数。
class Parent {// 基类(父类)的定义};class Child : public Parent {// 派生类(子类)的定义};1. 多态(Polymorphism):多态是指基类的指针或引用可以指向派生类的对象,并调用派生类重写的虚函数。
class Base {public:virtual void func() {std::cout << "Base::func()" << std::endl;}};class Derived : public Base {public:void func() override {std::cout << "Derived::func()" << std::endl;}};Base* pObj = new Derived;pObj->func(); // 输出 "Derived::func()"以上简要介绍了 C++ 中面向对象程序设计的几个核心概念。
面向对象程序设计的概念面向对象程序设计(Object-Oriented Programming,OOP)是一种以对象为核心的程序设计范型。
面向对象的程序设计强调将系统看作是由各种不同的对象组成的,对象之间通过消息传递来通信和协作,从而完成系统的功能。
这种设计思想使得程序具有更高的可读性、可维护性和可扩展性。
1. 对象和类:在面向对象程序设计中,对象是程序的基本单元,代表了一个实体或者概念。
每个对象都有自己的属性(数据)和方法(行为)。
而类是对象的抽象,用于描述具有相同属性和方法的一组对象。
对象是类的实例,通过实例化类来创建对象。
2. 封装:封装是面向对象程序设计的重要特点之一,它将数据和方法集成在对象内部,并对外部隐藏实现细节。
通过封装,可以将复杂的系统划分为多个模块,并定制不同的接口,提高系统的安全性和可维护性。
3. 继承:继承允许一个类派生出子类,并从父类继承其属性和方法。
子类可以通过继承来增加或修改父类的功能,实现代码的复用。
继承还能体现出类之间的层次关系,使得程序结构更清晰,易于理解和扩展。
4. 多态:多态是指同一个方法可以根据不同的对象调用出不同的行为。
多态性在程序设计中非常有用,它可以通过基类指针或引用来引用派生类对象,从而实现对不同对象的统一操作。
多态性可以提高代码灵活性和可扩展性。
5. 抽象:抽象是面向对象程序设计的核心思想之一,它使得程序能够将问题领域的实际概念映射到代码结构中。
通过抽象,可以定义类和接口来描述对象的属性和行为,将具体的实现细节分离出来,实现高内聚、低耦合的代码结构。
6. 消息传递:面向对象程序设计的通信机制是通过对象之间的消息传递来实现的。
对象通过向其他对象发送消息,请求执行某个行为或获取某个属性。
消息传递可以实现对象之间的协作和交互,从而完成复杂的系统功能。
7. 构造函数和析构函数:构造函数用于创建对象时进行初始化操作,可以为对象的属性赋初值。
析构函数在对象销毁时被调用,用于释放对象占用的资源。
《面向对象程序设计》课程标准1.课程说明《面向对象程序设计》课程标准课程编码〔 38321 〕承担单位〔计算机信息学院〕制定〔〕制定日期〔2022年11月16日〕审核〔专业指导委员会〕审核日期〔2022年11月20日〕批准〔二级学院(部)院长〕批准日期〔2022年11月28日〕(1)课程性质:本门课程是物联网应用技术专业的必修课程。
(2)课程任务:主要针对程序员、测试员等岗位开设,主要任务是培养学生在软件工程项目开发岗位上的程序设计能力,要求学生掌握面向对象程序设计方面的基本技能。
(3)课程衔接:在课程设置上,前导课程有《计算机应用基础》、《C语言程序设计》、《Java程序设计》,后续课程有《物联网应用系统开发》、《物联网综合项目实训2》。
2.学习目标通过本门课程的学习,使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程工具的使用方法;培养学生动手开发程序的能力,使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发环节强化学生的职业道德意识和素养,为学生以后从事专业化软件开发工作奠定坚实基础。
通过本门课程的学习,使学生熟练掌握C#程序设计开发运行的环境配置和使用方法,使学生能够应用C#程序设计语言进行程序编写和调试,进一步掌握面向对象程序设计的基本理念。
3.课程设计本课程以C#物联网实训系统项目为载体,与新大陆公司合作设计了若干个典型事例作为具体的学习情境;根据岗位要求,确定学习目标及学习任务;本课程采取项目教学和案例教学的教学模式,以学生为主体、以培养学生面向对象程序设计能力和提高团队合作意识为导向组织教学考核。
表1:学习领域的内容与学时分配表2:课程总体设计4.教学设计表3:学习情境设计5.课程考核本课程的考核主要由平时成绩、期末考试两部分组成。
其中:(1)平时成绩:平时成绩占总成绩的30%,主要考查指标有:平时上课出勤情况、课堂表现、作业完成情况、实训环节等。
《面向对象程序设计》课程设计任务书一、课程设计目的《面向对象程序设计》是一门重要的计算机专业课程,通过本课程设计,旨在让学生更深入地理解和掌握面向对象程序设计的基本概念、原理和方法,提高学生运用面向对象技术解决实际问题的能力。
具体而言,课程设计的目的包括以下几个方面:1、巩固和加深学生对面向对象程序设计中类、对象、继承、多态等核心概念的理解,培养学生的抽象思维和逻辑思维能力。
2、让学生熟悉面向对象程序设计的开发流程,包括需求分析、设计、编码、测试和维护等阶段,提高学生的软件开发能力。
3、培养学生运用面向对象编程语言(如 C++、Java 等)进行实际编程的能力,提高学生的代码编写规范和调试能力。
4、培养学生的团队合作精神和沟通能力,让学生在团队中共同完成一个较为复杂的项目,学会分工协作和相互交流。
5、激发学生的创新意识和解决实际问题的能力,让学生能够将所学知识应用到实际场景中,开发出具有一定实用价值的软件系统。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计题目应具有一定的实用性和挑战性,能够涵盖面向对象程序设计的主要知识点。
3、学生在进行课程设计时,应严格按照面向对象的方法进行分析、设计和实现,确保程序的结构清晰、可读性强、可维护性好。
4、学生需提交课程设计报告,报告内容应包括需求分析、总体设计、详细设计、编码实现、测试结果以及总结等部分。
5、课程设计报告应书写规范、条理清晰、图表完整、数据准确。
三、课程设计题目以下是几个可供选择的课程设计题目,学生可根据自己的兴趣和实际情况选择其中一个进行设计:题目 1:学生成绩管理系统设计一个学生成绩管理系统,能够实现对学生成绩的录入、查询、修改、统计等功能。
系统应具备良好的用户界面,方便用户操作。
题目 2:图书管理系统设计一个图书管理系统,能够实现对图书的入库、借阅、归还、查询等功能。
系统应能够记录图书的基本信息、借阅记录以及读者信息等。
面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。
2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。
3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。
4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。
5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。
6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。
7. 请解释类(Class)与对象(Object)之间的关系。
8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。
9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。
二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。
2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。
(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。
(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。
(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。
3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。
封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。
(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。
(3)降低模块之间的耦合度,提高代码的灵活性。
4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。
C++面向对象程序设计教案一、教学目标1.理解面向对象程序设计的基本概念,包括类、对象、继承、多态等。
2.掌握C++面向对象程序设计的基本语法和编程技巧。
3.能够运用面向对象的思想进行程序设计,解决实际问题。
二、教学内容1.面向对象程序设计的基本概念(1)类与对象类是对具有相同属性和行为的一组对象的抽象描述。
对象是类的实例,具有类定义的属性和行为。
(2)继承继承是面向对象程序设计的一个重要特性,用于表示类之间的层次关系。
子类可以继承父类的属性和行为,并在此基础上添加新的属性和行为。
(3)多态多态是指同一个操作作用于不同的对象时,可以有不同的解释和行为。
多态分为编译时多态和运行时多态。
2.C++面向对象程序设计的基本语法(1)类的定义与实现类定义包括类名、属性(成员变量)和方法(成员函数)。
类实现包括成员函数的定义。
(2)构造函数与析构函数构造函数用于创建对象时初始化成员变量,析构函数用于对象销毁时释放资源。
(3)继承与派生继承使用关键字class和public、protected、private访问限定符。
派生类可以添加新的成员变量和方法,也可以重写父类的方法。
(4)多态的实现多态可以通过虚函数、抽象类和接口实现。
虚函数使用关键字virtual声明,抽象类包含至少一个纯虚函数,接口是一种特殊的抽象类,只包含纯虚函数。
3.面向对象程序设计实例(1)设计一个简单的银行账户管理系统,包括账户类、储蓄账户类和信用卡账户类。
(2)设计一个图形类库,包括点、线、矩形和圆形等基本图形类。
三、教学方法1.讲授法:讲解面向对象程序设计的基本概念、语法和编程技巧。
2.案例分析法:通过分析实际案例,让学生理解面向对象程序设计的应用。
3.实践法:让学生动手编写代码,加深对面向对象程序设计的理解。
4.讨论法:组织学生讨论面向对象程序设计在实际项目中的应用。
四、教学评价1.课后作业:布置课后作业,检查学生对课堂知识的掌握程度。
《面向对象程序设计》课程设计报告XX大学XXXX学院2012.10一、设计思路首先构建计算器的结构框架1、创建一个计算器外框Frame。
2、创建6个面板,其中:a)Panel1用于存放backspace,ce,c三键,1行,3列,水平间距5,垂直间距为5;b)Panel2用于存放数字区及运算区共20键,4行,5列,水平间距5,垂直间距为5;c)Panel3用于存放MC,MR,MS,M+键及显示M状态文本框(Panel6);d)Panel4用于存放Panel1,Panel2;构成一个整体;e)Panel5存放显示器;f)Panel6 用于存放MC键上方框显示;3、创建各个按键,包括数字键、运算键、backspace,ce,c及MC,MR,MS,M+。
4、创建菜单条MenuBar及菜单项。
5、将各个元素添加到计算器外框Frame。
其次,设计运算逻辑函数actionPerformed()最后,在主函数Main()中调用框架实现和actionPerformed()二、程序功能本次课程设计的计算器所包括的功能有:数据的输入,加减乘除运算,开方运算,取倒数运算,取百分号运算,清空输入,数据的保存,读取,加倍,删除。
具体实现过程参见程序代码各模块的内容。
三、程序代码1)面板设计及其声明变量import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculation extends WindowAdapter implements ActionListener { double dResult = 0;double dNowInput = 0;double dMemory;int n = 0; //记载小数位数int nOperation = 1; // 记录运算符类型int nBitsNum = 0; //记录总共输入的位数boolean alreadyHaveDot = false; //已经有小数点?boolean keyAvailable = true;boolean alreadyClickedEqueal = false; //是否按下过"="?boolean isTempNowInput = false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?static JFrame f;//计算器框架static JPanel p1, p2, p3, p4, p5, p6;//模块化,见66行分配static JTextField tf1, tf2;//显示框及固定框static JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b0;//数字键static JButton bDiv, bSqrt, bMulti, bMinus, bPercent, bPlus, bReciprocal, bEqual, bDot, bNegative;//运算键static JButton bBackspace, bCE, bC, bMR, bMS, bMC, bM;//操作键/* 创建菜单条*/static MenuBar mba = new MenuBar();/* 创建菜单*/static Menu m_View = new Menu("visual");static Menu m_Edit = new Menu("edit");static Menu m_Help = new Menu("help");/* 创建m_View菜单项 */static MenuItem m_View_1 = new MenuItem("standard", new MenuShortcut(KeyEvent.VK_1));static MenuItem m_View_2 = new MenuItem("scientist", new MenuShortcut(KeyEvent.VK_2));static MenuItem m_View_3 = new MenuItem("programmer", new MenuShortcut(KeyEvent.VK_3));static MenuItem m_View_4 = new MenuItem("statistic", new MenuShortcut(KeyEvent.VK_T));static MenuItem m_View_5 = new MenuItem("history", new MenuShortcut(KeyEvent.VK_H));/* 创建m_Edit菜单项 */static MenuItem m_Edit_1 = new MenuItem("copy", new MenuShortcut(KeyEvent.VK_C));static MenuItem m_Edit_2 = new MenuItem("paste", new MenuShortcut(KeyEvent.VK_V));/* 创建m_Help菜单项 */static MenuItem m_Help_1 = new MenuItem("list help", new MenuShortcut(KeyEvent.VK_F1));static MenuItem m_Help_2 = new MenuItem("Made by Qiumoon");public void display() {f = new JFrame("计算器");f.setSize(400, 245);//面板宽,高f.setLocation(200, 200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);f.setLayout(new BorderLayout(3, 3));p1 = new JPanel(new GridLayout(1, 3, 5, 5)); //用于存放backspace,ce,c 三键p2 = new JPanel(new GridLayout(4, 5, 5, 5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整,4行;5列;水平间距5;垂直间距5p3 = new JPanel(new GridLayout(5, 5, 5, 5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整;及p6p4 = new JPanel(new FlowLayout()); //用于存放p1,p2p5 = new JPanel(new FlowLayout());//存放显示器p6 = new JPanel(new FlowLayout());//MC键上方框显示p4.add(p1);p4.add(p2);tf1 = new JTextField(35); //存放显示区tf1.setText("0.");tf1.setEditable(false);p5.add(tf1);/* 菜单栏相关设置 */mba.add(m_View);mba.add(m_Edit);mba.add(m_Help);m_View.add(m_View_1);m_View.add(m_View_2);m_View.add(m_View_3);m_View.addSeparator();m_View.add(m_View_4);m_View.add(m_View_5);m_Edit.add(m_Edit_1);m_Edit.add(m_Edit_2);m_Help.add(m_Help_1);m_Help.add(m_Help_2);f.add(p5, BorderLayout.NORTH);f.add(p4, BorderLayout.CENTER);f.add(p3, BorderLayout.WEST); f.setMenuBar(mba);b1 = new JButton("1");b2 = new JButton("2");b3 = new JButton("3");b4 = new JButton("4");b5 = new JButton("5");b6 = new JButton("6");b7 = new JButton("7");b8 = new JButton("8");b9 = new JButton("9");b0 = new JButton("0");b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bDiv = new JButton("/");bSqrt = new JButton("sqrt"); bMulti = new JButton("*"); bMinus = new JButton("-"); bPercent = new JButton("%"); bPlus = new JButton("+"); bReciprocal = new JButton("1/x"); bEqual = new JButton("="); bDot = new JButton("."); bNegative = new JButton("+/-"); bDiv.addActionListener(this); bSqrt.addActionListener(this); bMulti.addActionListener(this);bMinus.addActionListener(this); bPercent.addActionListener(this); bPlus.addActionListener(this); bReciprocal.addActionListener(this); bEqual.addActionListener(this);bDot.addActionListener(this); bNegative.addActionListener(this);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bSqrt);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bPercent);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bReciprocal);p2.add(b0);p2.add(bNegative);p2.add(bDot);p2.add(bPlus);p2.add(bEqual);bBackspace = new JButton("Backspace"); bCE = new JButton("CE");bC = new JButton("C"); bBackspace.addActionListener(this); bCE.addActionListener(this);bC.addActionListener(this);p1.add(bBackspace);p1.add(bCE);p1.add(bC);tf2 = new JTextField(2);tf2.setEnabled(false);tf2.setBackground(Color.LIGHT_GRAY); bMC = new JButton("MC");bMR = new JButton("MR");bMS = new JButton("MS");bM = new JButton("M+");bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(this);p6.add(tf2);p3.add(p6);p3.add(bMC);p3.add(bMR);p3.add(bMS);p3.add(bM);f.setVisible(true);f.addWindowListener(this);}2)函数功能实现a.数字的输入public void actionPerformed(ActionEvent e) {//key 0 to 9if (this.keyAvailable && e.getActionCommand().length() == 1 && e.getActionCommand().compareTo("0") >= 0 && e.getActionCommand().compareTo("9") <= 0) {if (this.isTempNowInput) {this.dNowInput = 0;this.isTempNowInput = false;}this.nBitsNum++;if (this.alreadyHaveDot == false) {this.dNowInput = this.dNowInput * 10 + Double.parseDouble(e.getActionCommand());} else {double temp = Double.parseDouble(e.getActionCommand());for (int i = this.n; i < 0; i++) {temp *= 0.1;}this.dNowInput += temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}// key dotif (this.keyAvailable && e.getActionCommand() == ".") {if (this.alreadyHaveDot == false) {this.nBitsNum++;this.alreadyHaveDot = true;this.n = -1;}}b.加减乘除的实现//key "+","-","*","/"if (this.keyAvailable && e.getActionCommand() == "+" || e.getActionCommand() == "-" || e.getActionCommand() == "*" || e.getActionCommand() == "/") {if (this.alreadyClickedEqueal) {this.dNowInput = this.dResult;this.isTempNowInput = true;} else {switch (this.nOperation) {case 1:this.dResult += this.dNowInput;break;case 2:this.dResult -= this.dNowInput;break;case 3:this.dResult *= this.dNowInput;break;case 4: {if (this.dNowInput == 0) {tf1.setText("ERROR:除数不能为零");this.keyAvailable = false;} else {this.dResult = this.dResult / this.dNowInput;}}}if (this.keyAvailable) {tf1.setText(Double.toString(this.dResult));}this.dNowInput = 0;}if (e.getActionCommand() == "+") {this.nOperation = 1;}if (e.getActionCommand() == "-") {this.nOperation = 2;}if (e.getActionCommand() == "*") {this.nOperation = 3;}if (e.getActionCommand() == "/") {this.nOperation = 4;}this.nBitsNum = 0;this.alreadyClickedEqueal = false;}// key "+/-"if (this.keyAvailable && e.getActionCommand() == "+/-") { this.dNowInput = 0 - this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}// key "C"if (e.getActionCommand() == "C") {this.nBitsNum = 0;this.dResult = 0;this.dNowInput = 0;this.alreadyHaveDot = false;this.n = 0;this.nOperation = 1;this.keyAvailable = true;this.alreadyClickedEqueal = false;tf1.setText("0.");}c.清空所有运算,归零功能// key "CE"if (e.getActionCommand() == "CE") {this.nBitsNum = 0;this.dNowInput = 0;this.alreadyHaveDot = false;this.n = 0;this.nOperation = 1;this.keyAvailable = true;tf1.setText("0.");}// key "sqrt"if (this.keyAvailable && e.getActionCommand() == "sqrt") { if (this.alreadyClickedEqueal) {if (this.dResult >= 0) {this.dResult = Math.sqrt(this.dResult);tf1.setText(Double.toString(this.dResult));} else {tf1.setText("ERROR:函数输入无效");this.keyAvailable = false;}} else {if (this.dNowInput >= 0) {this.dNowInput = Math.sqrt(this.dNowInput);tf1.setText(Double.toString(this.dNowInput));} else {tf1.setText("ERROR:函数输入无效");this.keyAvailable = false;}}}d.取倒数预算// key "1/x"if (this.keyAvailable && e.getActionCommand() == "1/x") { if (this.dNowInput == 0) {tf1.setText("ERROR:除数不能为零");this.keyAvailable = false;} else {this.dNowInput = 1 / this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}}// key "="if (this.keyAvailable && e.getActionCommand() == "=") {this.alreadyClickedEqueal = true;switch (this.nOperation) {case 1:this.dResult += this.dNowInput;break;case 2:this.dResult -= this.dNowInput;break;case 3:this.dResult *= this.dNowInput;break;case 4: {if (this.dNowInput == 0) {tf1.setText("ERROR:除数不能为零");this.keyAvailable = false;} else {this.dResult = this.dResult / this.dNowInput;}}}if (this.keyAvailable) {tf1.setText(Double.toString(this.dResult));}}e.数据保存功能// key "MS"if (this.keyAvailable && e.getActionCommand() == "MS") {this.dMemory = this.dNowInput;if (this.dMemory != 0) {tf2.setText("M");}}f.保存数据清空// key "MC"if (this.keyAvailable && e.getActionCommand() == "MC") {this.dMemory = 0;tf2.setText("");}g.保存数据的读取// key "MR"if (this.keyAvailable && e.getActionCommand() == "MR") {this.dNowInput = this.dMemory;tf1.setText(Double.toString(this.dNowInput));}h.保存数据的加倍// key "M+"if (this.keyAvailable && e.getActionCommand() == "M+") {this.dMemory += this.dNowInput;if (this.dMemory != 0) {tf2.setText("M");} else {tf2.setText("");}}// key "%"if (this.keyAvailable && e.getActionCommand() == "%") {this.dNowInput = (this.dResult * this.dNowInput) / 100;tf1.setText(Double.toString(this.dNowInput));}i.删除一个输入数字// key "Backspace"if (this.keyAvailable && e.getActionCommand() == "Backspace") { if (!this.alreadyClickedEqueal) {if (this.dNowInput != 0) {if (this.alreadyHaveDot) {if (this.n == -1) {this.alreadyHaveDot = false;this.n = 0;} else {String str, str1;str = tf1.getText();str1 = str.substring(0, this.nBitsNum - 1);this.nBitsNum--;this.n++;this.dNowInput = Double.parseDouble(str1);tf1.setText(Double.toString(this.dNowInput));}} else {int temp;temp = (int) (this.dNowInput / 10);this.dNowInput = (double) temp;tf1.setText(Double.toString(this.dNowInput));}}}}}public static void main(String args[]) {Calculation cal = new Calculation();cal.display();}public void windowClosing(WindowEvent e) {System.exit(0);}}四、运行结果五、学习心得通过本次面向对象程序设计的学习,我们深刻意识到掌握一门编程语言的重要性。