《面向对象的程序设计方法(Object-oriented programming Method)》教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:本科计算机科学与技术专业
(二)课程代码:3DX1126A
(三)学分/课内学时:3学分/48学时
(四)课程类别:专业教育
(五)课程性质:必修/理论课
(六)先修课程:C语言程序设计与应用、C语言程序设计专题实验、数据结构与算法(上)
(七)后续课程:操作系统原理与实现、企业级应用开发、毕业设计等
二、课程教学目标
本课程是计算机科学与技术专业的一门专业教育必修课程,是软件开发能力培养的关键环节。系统讲授面向对象程序设计(OOP)的核心思想与工程实践,基于C++与Java双语言对比,深入解析类与对象、继承与多态、内存管理、多线程编程等核心机制,结合现代开发工具链(如CLion/IntelliJ IDEA、AI代码辅助工具),培养学生构建模块化、可复用软件系统的能力。
课程目标及能力要求具体如下:
(一)具体目标
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育。
知识能力目标1:掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解类与对象、封装、继承、多态等OOP核心机制,掌握C++与Java在语法特性(如C++的虚函数表与Java的接口)、内存管理(手动管理 vs 垃圾回收)和类型系统(模板 vs 泛型)上的本质差异。能够针对不同需求场景(如高性能计算、企业级应用开发)合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。
知识能力目标2:具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型(线程创建、同步机制、原子操作),理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
2. 能够应用自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析计算机软件系统中的复杂工程问题,以获得有效结论。 |
观测点 2.2:能认识并判断软件系统开发过程的实际工程问题有多种解决方案。 |
知识能力目标1 |
面向对象程序设计基本概念,继承与多态,C++运算符重载,内存管理,异常处理。 |
作业、实验、期末考试 |
3. 能够设计针对计算机应用系统设计中的复杂工程问题的解决方案,设计满足特定需求的系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 |
观测点 3.3:能够进行计算机应用系统的需求分析、方案设计、代码实现和系统集成、部署等方面的方案优化,体现创新意识。 |
知识能力目标1 |
模板/泛型,STL/集合框架,设计模式 |
作业、实验、期末考试 |
4. 能够基于科学原理,采用适当的工程方法对计算机应用系统的复杂工程问题进行研究,包括系统方案设计、分析与解释数据、并通过信息综合得到合理有效的结论。 |
观测点 4.3:能选用或搭建系统架构,采用科学的组织方法,安全地开展系统方案的开发。 |
知识能力目标2 |
RTTI/反射,多线程 |
作业、实验、期末考试 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 (知识点) |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 教学目标 |
备注 |
1 |
面向对象程序设计基本概念 |
教学内容: 面向对象程序设计基本概念(类/对象/消息),- C++和java的类定义(成员变量/方法),构造/析构函数。C++运算符重载。 重点: 封装,构造和析构的时机,拷贝构造函数,深拷贝与浅拷贝。 |
能定义C++类并实例化对象。能定义java类并实例化对象。访问控制。理解构造函数调用时机。了解深拷贝与浅拷贝。了解C++运算符重载。 |
8 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业,实验 |
2 |
继承/多态 |
教学内容: C++与Java的继承语法,虚函数,C++多重继承,抽象基类;Java接口与@Override注解。 重点: 继承机制,抽象基类与接口。 难点: C++多重继承的问题与Java接口。多态的理解。 |
能实现三层继承体系,会使用虚函数实现运行时多态。 |
8 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
3 |
内存管理 |
教学内容: C++内存管理模型与Java内存管理模型。C++智能指针,Java垃圾回收机制。 重点: 内存管理模型。 难点: C++智能指针。 |
能使用智能指针管理资源,会分析内存泄漏场景。了解Java垃圾回收机制。 |
6 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
4 |
异常处理 |
教学内容: C++和Java的异常处理机制。 难点: 异常安全设计原则 |
能编写异常安全的文件读取代码 会自定义异常类 |
2 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
5 |
模板/泛型 |
教学内容: C++函数模板/类模板; Java泛型及其擦除机制;容器类设计应用。 重点: 容器类设计应用。 难点: Java泛型的擦除机制。 |
能实现通用容器类;理解类型擦除的局限性 |
4 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
6 |
STL/集合框架 |
教学内容: C++标准模板库,Java集合框架。 难点: 迭代器失效问题。 |
掌握C++标准模板库常用容器及算法;掌握Java集合框架常用集合。能根据场景选择合适容器。 |
4 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
7 |
设计模式 |
教学内容: 工厂模式应用场景;C++/Java实现对比 |
能重构代码应用设计模式;理解模式背后的OOP思想 |
4 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
8 |
RTTI/反射 |
教学内容: C++ typeid/dynamic_cast;Java反射API(Class/Method) |
能动态加载类并调用方法;会使用RTTI实现类型安全的对象拷贝 |
4 |
讲授 示范 实操 |
课程思政目标2、 知识能力目标2 |
作业 实验 |
9 |
多线程 |
教学内容: std::thread/Java Thread创建;互斥锁(mutex/synchronized);生产者-消费者模式实现 |
能实现线程安全计数器;会使用条件变量解决同步问题 |
8 |
讲授 示范 实操 |
课程思政目标2、 知识能力目标2 |
作业 实验 |
(二)教学方法
1.课堂讲授
(1)启发式教学:采用问题驱动和案例引导的方式,激发学生学习兴趣,培养其独立思考和实践能力。通过项目式学习、代码重构任务和开放性问题,鼓励学生自主探索面向对象程序设计(OOP)的核心概念,如封装、继承、多态等,并结合实际应用场景进行分析和优化。
(2)系统性知识讲授:系统讲解面向对象程序设计的基本概念和关键技术,包括:类与对象:定义、实例化、构造与析构;封装与访问控制:public/private/protected 的作用;继承与多态:虚函数、抽象类、接口;内存管理:C++智能指针、Java垃圾回收机制;模板与泛型:C++模板、Java泛型;设计模式:单例、工厂模式等。使学生掌握OOP的基本原理,并能灵活运用于软件开发。
(3)多元化教学手段:结合电子教案、多媒体演示、代码实时调试和传统板书,提高课堂信息量和直观性。通过:动态代码演示(如IDE调试、内存模型可视化),互动编程练习(如在线编译平台实操),对比分析(C++ vs. Java实现差异),增强学生对理论知识的理解,并提升实际编码能力。
(4)AI智辅工具的应用:引入AI编程助手(如通义千问、DeepSeek)辅助代码生成与优化,培养学生:批判性思维:分析AI生成代码的合理性;人机协作能力:结合AI工具提高开发效率;调试与优化:利用AI辅助定位代码缺陷。
(5)理论与实践结合:通过实验课和项目实践,引导学生将OOP理论应用于工程问题,如:小型系统开发(如学生信息管理系统),性能优化实验(如智能指针 vs. 裸指针的内存管理对比);多线程安全设计(如线程安全的单例模式实现);培养其解决实际工程问题的能力。
(6)课程思政融合:在教学过程中自然融入:工程伦理(如内存泄漏的危害、代码规范的重要性),团队协作精神,创新意识(如设计模式的应用与优化),在传授专业知识的同时,培养职业素养和社会责任感。
2.实验教学
实验教学是数据结构课程中重要的实践环节,目的是培养学生通过上机编程实践研究解决计算机中数据存储和处理的基本能力。课程必做实验8个。利用在线判题系统平台,客观统计和了解学生平时上机实验情况。实验成绩以实验结果为准,由系统自动导出程序代码文档作为实验报告。
鼓励学生结合自己的兴趣进行自主实验。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核主要包括课程思政和知识能力目标达成情况。考核形式包括平时实验、平时作业和期末考试三个部分,考核方式:考试。课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标1:掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解类与对象、封装、继承、多态等OOP核心机制,掌握C++与Java在语法特性(如C++的虚函数表与Java的接口)、内存管理(手动管理 vs 垃圾回收)和类型系统(模板 vs 泛型)上的本质差异。能够针对不同需求场景(如高性能计算、企业级应用开发)合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。 |
|
作业 |
10% |
72% |
A1 |
|
实验 |
12% |
75% |
B1 |
期末考试 |
49% |
70% |
C1 |
课程思政目标2:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标2:掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解类与对象、封装、继承、多态等OOP核心机制,掌握C++与Java在语法特性(如C++的虚函数表与Java的接口)、内存管理(手动管理 vs 垃圾回收)和类型系统(模板 vs 泛型)上的本质差异。能够针对不同需求场景(如高性能计算、企业级应用开发)合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。 |
|
作业 |
4% |
28% |
A2 |
|
实验 |
4% |
25% |
B2 |
期末考试 |
21% |
30% |
C2 |
总评成绩(100%)=期末考试(70%)+实验(16%)+作业(14%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
实验:完成8次,共同支撑知识能力目标2,共占总评分16%;作业:完成7次,共同支撑知识能力目标1,共占总评分14%对应目标的评分标准如下:
对应目标 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标1:掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解类与对象、封装、继承、多态等OOP核心机制,掌握C++与Java在语法特性(如C++的虚函数表与Java的接口)、内存管理(手动管理 vs 垃圾回收)和类型系统(模板 vs 泛型)上的本质差异。能够针对不同需求场景(如高性能计算、企业级应用开发)合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标1:掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解类与对象、封装、继承、多态等OOP核心机制,掌握C++与Java在语法特性(如C++的虚函数表与Java的接口)、内存管理(手动管理 vs 垃圾回收)和类型系统(模板 vs 泛型)上的本质差异。能够针对不同需求场景(如高性能计算、企业级应用开发)合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。 |
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育。 知识能力目标2:具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型(线程创建、同步机制、原子操作),理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。 |
考查点 |
基础理论知识掌握情况 |
典型数据结构操作实现 |
实际问题的灵活运用 |
总评分占比 |
32% |
32% |
36% |
评分标准 |
100% 至 90% |
掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在90%以上。 |
掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在90%以上。 |
具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型,理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。在线判题系统实验题目通过率在90%以上。 |
89.9% 至 80% |
掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在80%以上。 |
掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在80%以上。 |
具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型,理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。在线判题系统实验题目通过率在80%以上。 |
79.9 至 70% |
较熟练掌握掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在70%以上。 |
较熟悉掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。。在线判题系统实验题目通过率在70%以上。 |
可以具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型,理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。在线判题系统实验题目通过率在70%以上。 |
69.9% 至 60% |
基本掌握掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在60%以上。 |
基本掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在60%以上。 |
基本具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型,理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。在线判题系统实验题目通过率在60%以上。 |
59.9%至 0 |
未掌握掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在60%以下。 |
未掌握掌握面向对象程序设计的核心思想与跨语言实现能力。深入理解OOP核心机制,掌握C++与Java在语法特性、内存管理和类型系统上的本质差异。能够针对不同需求场景合理选择语言特性,完成从类设计到编码实现的全流程,并具备双语言代码转换与优化能力。在线判题系统实验题目通过率在60%以下。 |
不能具备并发编程与系统级开发的实践能力。掌握C++11/Java的多线程编程模型,理解竞态条件、死锁等典型问题的成因与解决方案,能实现生产者-消费者等经典并发模式。通过C++内存模型与Java内存模型的对比,建立对硬件层并发支持的认知,编写线程安全的高效代码。在线判题系统实验题目通过率在60%以下。 |
五、参考学习资料
(一)推荐教材:《C++ Primer Plus》,[美] 史蒂芬·普拉达著,人民邮电出版社,2020,第6版,ISBN:9787115521644。
(二)推荐教材:《ava 核心技术 卷1》,[美]凯·S·霍斯特曼著,机械工业出版社,2022,第12版,ISBN:9787111706410。
(三)参考资料:程序设计类实验辅助教学平台,https://pintia.cn/。