第5讲 抽象类与模板
- 格式:pdf
- 大小:996.58 KB
- 文档页数:11
《面向对象程序设计(C++)》课程教学大纲课程代码:110242204课程英文名称:Object-Oriented Programming(C++)课程总学时:32 讲课:32 实验:0 上机:0适用专业:信息对抗技术专业大纲编写(修订)时间:2017年5月一、大纲使用说明(一)课程的地位及教学目标本课程是信息对抗技术专业的一门专业课。
本课程主要介绍C++语言的基本概念、基本语法和编程方法,面向对象的程序设计方法,以及Visual C++ 6集成开发环境。
通过本课程的学习学生应该熟悉和掌握Visual C++语言的面向对象的重要特征:如类、对象、继承、封装和多态性。
本课程的教学任务是使学生掌握一门高级程序设计语言,使学生最终能够阅读、分析、编写C++程序。
掌握面向对象程序设计的基本概念与方法,进而学会利用C++语言解决一般应用问题,为以后的学习和工作打下坚实的基础。
(二)知识、能力及技能方面的基本要求通过对本课程的学习,应使学生达到下列基本要求:1.了解C++语言的基本概念、基本语法和编程方法,同时重点介绍面向对象的特征;2.掌握类、对象、继承、封装和多态性;3.理解C++语言对C语言的扩充以及类和对象、友元、继承与派生、多态性和虚函数、C++语言的输入输出流库、异常处理、Windows编程基础和MFC编程基础、对话框和控件、菜单和文档/视图结构、图形设备接口。
(三)实施说明1.教学方法:面向对象程序设计主要采用讲授与实验相结合的方式进行,教师结合多媒体课件等教具边讲边教,有助于理解和记忆。
2.教学手段:本课程属于专业课,在教学中应与实际控制系统应用相结合,提高学生的学习兴趣。
由于学时的限制,课程实验由学生在课外完成。
(四)对先修课的要求本课程主要的先修课程是C语言程序设计。
(五)对习题课、实践环节的要求1.每部分内容均安排习题及思考题。
通过作业使学生能够对学习的内容真正了解掌握,使学生具有编程的能力。
英语抽象类作文模板Abstract Class Essay Template。
Introduction。
An abstract class is a concept in object-oriented programming that serves as a blueprint for other classes. It cannot be instantiated on its own and often contains abstract methods that must be implemented by its subclasses. In this essay, we will explore the features and uses of abstract classes, as well as their advantages and disadvantages.Definition and Purpose。
An abstract class is a class that cannot be instantiated, meaning you cannot create an object of that class. It is designed to be a base class for other classes to inherit from. The main purpose of an abstract class is to provide a common interface for its subclasses. It can contain both abstract and non-abstract methods, and it may also have member variables.Features of Abstract Classes。
抽象类的模板⽅法设计模式⼀、前⾔:抽象类体现的就是⼀种模板模式的设计,抽象类作为多个⼦类的通⽤模板,⼦类在抽象类的基础上进⾏扩展、改造,但⼦类总体上会保留抽象类的⾏为⽅式。
⼆、模板⽅法能解决的问题:1、当功能内部⼀部分实现是确定的,⼀部分实现是不确定的。
这时可以把不确定的部分暴露出去,让⼦类去实现。
2、编写⼀个抽象⽗类,⽗类提供了多个⼦类的通⽤⽅法,并把⼀个或多个⽅法留给⼦类实现,就是⼀种模板模式。
三、代码实例://抽象类public abstract class Template {abstract void code();//要么就声明为实体⽅法,提供⽅法;要么就加上abstract关键字,声明为抽象⽅法public void spendTime(){long start=System.currentTimeMillis();this.code();//调⽤抽象⽅法long end=System.currentTimeMillis();System.out.println("程序运⾏的时间为:"+(end-start));}}//列出1-10000之间的素数class SubTemplate extends Template{public void code(){boolean flag=false;//⽤于判断是否为素数(只有1和本⾝)for(int i=2;i<=10000;i++){for(int j=2;j<=Math.sqrt(i);j++){if(i%j==0){//能够将2除尽,不是⼀个素数flag=true;break;}}if(!flag){//是⼀个素数,将其进⾏输出System.out.println(i);}flag=false;}}}class Test{public static void main(String[] args) {new SubTemplate().spendTime();//⼦类并没有对SubTemplate()进⾏重写,所以spendTime()仍为⽗类的⽅法}}。
抽象类的定义及使用1、课程名称:抽象类的定义及使用2、知识点2.1、上次课程的主要知识点对象多态性总结如下:·向上转型(90%):为了实现参数类型的统一,但是向上转型一定要与方法覆写产生关联;·向下转型(1%):为了调用子类特殊的方法实现,但是向下转型前必须要首先发生向上转型,会存在操作的安全·不转型(9%):为了方便操作直接使用系统类或者是一些功能类,例如:String、简单Java类。
隐患,可以使用instanceof进行判断,但是不推荐这样使用;2.2、本次预计讲解的知识点1、抽象类的基本定义;2、抽象类的使用原则。
3、具体内容(★★★★★★★★★★★)不会抽象类与接口,Java = 没学。
第(1)页共(9)页3.1、抽象类的基本概念如果说现在在一个类之中需要定义一个没有方法体的方法,那么可以利用abstract关键字来进行抽象方法的定义,而类的核心组成:属性、方法,但是在学习完继承操作之后,会发现子类存在有一种覆写父类方法的机制,而且这一包含有抽象方法的类就可以使用abstract来定义成为抽象类。
机制直接与对象的多态性有关。
于是这样就会出现一个问题:假设现在使用的是普通类,并且在这个类里面有一个print()方法print()。
class A { } 但是这个A类在设计之初有一个要求,希望继承它的子类一定要覆写这个print()方法。
但事实上,这个时候的子类完全可以灵活的选择是否需要覆写方法。
但是由于只是一个普通方法,所以对于子类是否覆写没有任何的要求,于是这样就会出现一个漏洞,父类无法强制要求子类覆写方法。
如果只依靠普通类的继承,那么根本就不能够对子类产生限制,所以就可以利用抽象类和抽象方法来解决此类问题。
abstract class A { }抽象方法的特点:一个是使用了abstract关键字定义,另外一个是方法的后面没有“{}”,表示没有方法体。