03_项目三_实现OOP中的构造函数与析构函数.pptx

上传人:春哥&#****71; 文档编号:16940911 上传时间:2022-05-20 格式:PPTX 页数:93 大小:1.45MB
返回 下载 相关 举报
03_项目三_实现OOP中的构造函数与析构函数.pptx_第1页
第1页 / 共93页
03_项目三_实现OOP中的构造函数与析构函数.pptx_第2页
第2页 / 共93页
点击查看更多>>
资源描述

《03_项目三_实现OOP中的构造函数与析构函数.pptx》由会员分享,可在线阅读,更多相关《03_项目三_实现OOP中的构造函数与析构函数.pptx(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、03_项目三_实现OOP中的构造函数与析构函数项目三 实现OOP中的构造函数与析构函数人工智能时代下跨语言编程项目实战中等职业教育“十三五”规划课程改革创新教材中高职贯通计算机网络技术专业系列教材中国铁道出版社 编著:刘编著:刘 丹丹 任务任务一一 实现实现C+C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务

2、四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析构函数析构函数4 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用C+语言中的构造函数和析构函数输入输出学生的信息登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉C+语言中的构造函数与析构函数,并将学生信息登记表用C+语言中的构造函数与析构函数的源代码编写出来,小张按照经理的要求

3、开始做以下的任务分析。5 二、任务分析1、在类中用构造函数封装输入功能。2、表名:学生信息登记表(用类名Student表示)。3、列名:no,name,age(用数据成员表示,并声明相应的数据类型)。4、行:(用构造函数和析构函数表示)。5、列:(用数据成员表示)。6、包含系统头文件。7、用类来实现表格的架构。8、在类中前向声明构造函数、析构函数、一般函数。9、在类外初始化静态变量为0。10、类外定义构造函数输入每一行信息。11、类外定义析构函数来释放对象并输出每一行信息。12、在主函数中通过为类新建对象,并自动调用构造函数输入,析构函数输出。13、学生信息登记表如项目一中任务一里的表1-1所

4、示。6 三、任务实施第一步:打开Visual Studio。第二步:文件新建C+项目文件源文件名为: chap03_Construct_01_Cplusplus.cpp第三步:在该文件中输入以下内容:7 / chap03_Construct_01_Cplusplus.cpp : 定义控制台应用程序的入口点。#include stdafx.h#include iostreamusing namespace std;/1、用类来实现学生表格的架构:class Studentprivate:char sid10;/学号用数组来存放char sname20;/姓名用数组来存放int sage;stat

5、ic int i;/在类中前向声明静态变量ipublic:5/20/20228 /2、在类中前向声明构造函数、及析构函数与一般函数:Student();Student();void puthead();/3、在类外为静态变量初始化为0int Student:i=0;/4、类外定义构造函数输入每一行信息:Student:Student()cout 请输入第 i+1 个学生的信息: endl;cout sid;cout sname;cout sage;cout endl;i+;/每自动调用构造函数一次,i的值在原来基础上加5/20/20229 /5、类外定义输出函数输出表头及每一行信息void S

6、tudent:puthead()cout 以下对象是后构造的先析构,先构造的后析构 endl;cout - endl;cout sid t sname t sage n;cout - endl;/6、类外定义析构函数来释放对象并输出每一行信息Student:Student()cout sid t sname t sage n;cout - endl;/7、在主函数中通过为类新建对象,并自动调用构造函数输入,析构函数输出:int _tmain(int argc, _TCHAR* argv)Student *s=new Student2;/新建一个对象数组,用来存放两个对象s0和s1s0.puth

7、ead();/调用输出表头的函数delete s;/删除对象数组所占用的空间,自动调用析构函数,注意析构函数也可手动调用return 0;5/20/202210 第四步:保存后,运行该项目进行测试,结果如图3-1所示:5/20/2022图3-1 实现C+语言中的构造函数和析构函数111 第五步:重新运行该项目并进行测试,结果如图3-2所示:5/20/2022图3-2 实现C+语言中的构造函数和析构函数212 第六步:将类中声明的static变量删除,将类外定义并初始化的代码也删除,修改构造函数如下:Student:Student()int i=0;cout 请输入第 i+1 个学生的信息: e

8、ndl;cout sid;cout sname;cout sage;cout endl;i+;5/20/202213 第七步:保存后,运行该项目 ,结果如任务二中的图3-2所示:5/20/2022图3-3 实现C+语言中的构造函数和析构函数314 四、任务小结1、类中封装的构造方法与析构方法在C+中称为构造函数与析构函数。2、构造函数名称与类名相同,如Student(),析构函数名称也与类名相同,但前面要加 ,如Student()。3、构造函数与析构函数都无返回值。所以构造和析构函数前不能出现数据类型,包括void。15 四、任务小结4、构造函数可以不带参数,这称为默认构造函数,也可带参数,析

9、构函数不能带参数。5、构造函数只能在为类新建对象时自动调用,不可手动调用,析构函数既可在删除对象时或对象无用时自动调用,也可根据自己的需要手动调用。6、构造函数可以重载,析构函数不可重载。7、对于构造函数来说可以使用new运算符,对于析构函数来说可以使用delete运算符。16 五、相关知识与技能1、C+中的构造函数2、构造函数的种类3、C+中的析构函数17 六、任务拓展1、请说出C+语言中构造函数的特点 。2、请说出C+语言static的特点。3、请说出C+语言在新建对象数组上的特点。4、请说出C+语言在释放无用对象所占空间时的特点。任务任务一一 实现实现C+C+语言中的构造函数与析构函数语

10、言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析

11、构函数析构函数19 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用VB.NET语言中的构造函数输入输出学生的信息登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉VB.NET语言中的构造函数与析构函数,并将学生信息登记表用VB.NET语言中的构造函数与析构函数的源代码编写出来,小张按照经理的要求开始做以下的任务分析。20 二、任务分析1、导入系统命名空间。2、用类来实现表格的架构。3、在类中定义构造过程,初始化数据。4、在类中定义一般过程,输出表头信息。5、在类中定义析构过程来实现无用对象的释放,并输出前面输入的信息。6、学生信息登记表如项目一中任务一里的表1-1所示

12、。21 三、任务实施第一步:打开Visual Studio。第二步:文件新建VB.NET项目输入的源文件名为: chap03_Example02_VBNet2005Module.vb第三步:在该文件中输入以下内容:chap03_Construct_02_VBNet2005Module.vb1、导入系统命名空间Imports SystemImports System.IO22 三、任务实施2、用类来实现表格的架构:Public Class Student Private sid As String Private sname As String Private sage As Integer 3

13、、在类中定义构造过程,初始化数据: Public Sub New() Console.Write(请输入学号:) sid = Console.ReadLine() Console.Write(请输入姓名:) sname = Console.ReadLine() Console.Write(请输入年龄:) sage = CInt(Console.ReadLine() Console.WriteLine() End Sub 4、在类中定义一般过程,输出表头信息: Public Sub PutHead() Console.WriteLine(-) Console.WriteLine(sid + Sp

14、ace(8) + sname + Space(8) + sage) Console.WriteLine(-) End Sub23 三、任务实施 5、在类中定义析构过程来实现无用对象的释放,并输出前面输入的信息 Protected Overrides Sub Finalize() Console.WriteLine(sid + Space(8) + sname + Space(8) + CStr(sage) Console.WriteLine(-) End SubEnd ClassModule chap03_Construct_02_VBNet2005Module 6、在主过程中通过为类新建对象

15、,并用对象调用输入函数输入,输出函数输出: Sub Main() Dim s(1) As Student 新建一个对象数组,用来存放两个对象s0和s1 Dim i As Integer For i = 0 To 1 Step 1 Console.WriteLine(请输入第 + CStr(i + 1) + 个学生的信息:) s(i) = New Student() 每循环一次,新建一个对象,并分配内存,再自动调构造 Next i s(0).PutHead() 调用一般过程,输出表头 当对象无用时,自动调用析构过程Finalize(),从而实现内容的输出 End SubEnd Module24

16、三、任务实施第四步:编译运行VB.NET项目,屏幕上显示结果如任务一中的图3-2所示。25 四、任务小结1、类中封装的构造函数与析构函数在VB.NET中称为构造过程与析构过程2、构造过程统一的名称是Publlic Sub New().End Sub。3、析构过程统一的名称是Public Sub Finalize() End Sub。4、构造过程与析构过程都无返回值。所以构造和析构过程后不能写返回类型。26 四、任务小结5、构造过程可以不带参数,这称为默认构造过程,也可带参数,析构过程不能带参数。6、构造过程只能在为类新建对象时自动调用,不可手动调用,析构过程既可在删除对象时或对象无用时自动调用

17、,也可根据自己的需要手动调用。7、构造过程可以重载,析构过程不能重载。27 五、相关知识与技能1、VB.NET中的构造过程在类新建对象时自动调用,书写格式是Public Sub New()End Sub。 2、VB.NET中的析构过程在删除对象时自动调用,书写格式如下: Protected Overrides Sub Finalize() End Sub28 六、任务拓展1、请说出VB.NET语言中构造过程的特点 。2、请说出VB.NET语言static的特点。3、请说出VB.NET语言在新建对象数组上的特点。4、请说出VB.NET语言在释放无用对象所占空间时的特点。任务任务一一 实现实现C+

18、C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭

19、管理系统中的构造函数函数 与与析构函数析构函数30 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用JAVA语言中的构造函数输入输出学生的信息登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉JAVA语言中的构造函数与析构函数,并将学生信息登记表用JAVA语言中的构造函数与析构函数的源代码编写出来,小张按照经理的要求开始做以下的任务分析。31 二、任务分析1、用工程名作为包名,将生成的类文件放入此包中。2、导入JAVA的基本语言包和输入输出包。3、用Student类来实现表格的架构。4、在类中封装属性。5、将键盘输入放入输入流阅读器对象,再将输入流阅读器对象放入缓冲流阅

20、读器对象。6、类内定义构造方法实现输入每一行信息。7、类内定义输出方法输出表头及每一行信息。8、类内定义析构方法实现数据的输出及无用对象的回收9、在主函数中通过为类新建对象自动调用构造方法输入,自动调用析构方法输出。10、学生信息登记表如项目一中任务一里的表1-1所示。32 三、任务实施第一步:打开Eclipse。第二步:文件新建JAVA项目源文件名: Student.java第三步:在该文件中输入以下内容:/ Student.javal/1、用工程名作为包名,将生成的类文件放入此包中package chap03_Construct_03_Java;/2、导入JAVA的基本语言包和输入输出包/

21、import java.lang.*;import java.io.*;33 三、任务实施/3、用Student类来实现表格的架构:public class Student/3.1 在类中封装属性private String sid;private String sname;private int sage;/3.2 将键盘输入放入输入流阅读器对象,再将输入流阅读器对象放入缓冲流阅读器对象BufferedReader br = new BufferedReader(new InputStreamReader(System.in);/3.3、类内定义构造方法实现输入每一行信息:public St

22、udent() throws IOException /此方法可以抛出输入输出异常System.out.print(请输入学号:); sid = br.readLine();System.out.print(请输入姓名:); sname = br.readLine();System.out.print(请输入年龄:);sage = Integer.parseInt(br.readLine();System.out.println();34 三、任务实施/3.4、类内定义输出方法输出表头及每一行信息public void putHead()System.out.println(以下对象是后构造的

23、先析构,先构造的后析构);System.out.println(-);System.out.println(sid + t + sname + t + sage);System.out.println(-);/3.5、类内定义析构方法实现数据的输出及无用对象的回收protected void finalize()System.out.println(sid + t + sname + t + sage);System.out.println(-);35 三、任务实施/3.6、在主函数中通过为类新建对象自动调用构造方法输入,自动调用析构方法输出:public static void main(S

24、tring args) throws IOExceptionStudent s=new Student2;/新建一个对象数组,用来存放两个引用s0和s1for(int i=0;i2;i+)System.out.println(请输入第 + (i + 1) + 个学生的信息:); si = new Student(); /为两个引用s0和s1实例化s0.putHead();36 三、任务实施第四步:编译运行JAVA项目,屏幕上显示结果如任务一中的图3-2所示。37 四、任务小结1、类中封装的构造方法与析构方法在JAVA中就称为构造方法与析构方法。2、构造函数名称与类名相同,如Student(),

25、析构函数名称统一为protect void finalize()。3、构造函数与析构函数都无返回值。所以构造和析构函数前不能出现数据类型,包括void。4、构造函数可以不带参数,这称为默认构造函数,也可带参数,析构函数不能带参数。38 四、任务小结5、构造函数只能在为类新建对象时自动调用,不可手动调用,析构函数在删除对象时或对象无用时自动调用(这在JAVA中称为自动垃圾回收),也可根据自己的需要手动调用(设对象名=null,再用System.gc()手动调用析构,最后用While(true);不断执行程序)。6、构造函数可以重载,析构函数不可重载。39 五、相关知识与技能1、Java构造方法2

26、、Java析构方法40 六、任务拓展1、请说出JAVA语言中构造方法的特点 。2、请说出JAVA语言static的特点。3、请说出JAVA语言在新建对象数组上的特点。4、请说出JAVA语言在释放无用对象所占空间时的特点。任务任务一一 实现实现C+C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务四四 实现实现C

27、#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析构函数析构函数42 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用C#语言中的构造函数输入输出学生的信息登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉C#语言中的构造函数与析构函数,并将学生信息登记表用C#语言中的构造函数与析构函数的源代码编写出来,小张按照经理的要求开始做以下的任务分析。4

28、3 二、任务分析1、导入系统命名空间。2、用项目名新建一个命名空间,并在其中新建一个类Student。3、用Student类来实现表格的架构。4、在类中封装属性。5、类内定义构造函数输入每一行信息。6、类内定义输出函数输出表头及每一行信息。7、类内定义析构函数(前面不要加修饰符)输出表中的内容。8、在主函数中通过为类新建对象自动调用构造函数输入,对象无用时自动调用析构函数输出.9、学生信息登记表如项目一中任务一里的表1-1所示。44 三、任务实施第一步:打开Visual Studio。第二步:文件新建C#项目源文件名: chap03_Example04_Student.cs第三步:在该文件中输

29、入以下内容:/ chap03_Example04_Student.cs/1、导入系统命名空间using System;using System.Collections.Generic;using System.Text;using System.IO;45 /2、用项目名新建一个命名空间,并在其中新建一个类Studentnamespace chap03_Construct_04_CSharp2005 /3、用Student类来实现表格的架构: public class Student /3.1 在类中封装属性 private string sid; private string sname;

30、private int sage;46 /2、用项目名新建一个命名空间,并在其中新建一个类Studentnamespace chap03_Construct_04_CSharp2005 /3、用Student类来实现表格的架构: public class Student /3.1 在类中封装属性 private string sid; private string sname; private int sage;47 三、任务实施/3.2、类内定义构造函数输入每一行信息: public Student() Console.Write(请输入学号:); sid = Console.ReadLin

31、e(); Console.Write(请输入姓名:); sname = Console.ReadLine(); Console.Write(请输入年龄:); sage = Int32.Parse(Console.ReadLine();/将键盘输入的字符串转换为整型 Console.WriteLine(); 48 三、任务实施/3.3、类内定义输出函数输出表头及每一行信息 public void putHead() Console.WriteLine(以下对象是后构造的先析构,先构造的后析构); Console.WriteLine(-); Console.WriteLine(sid + t +

32、sname + t + sage); Console.WriteLine(-); /3.4、类内定义析构函数(前面不要加修饰符)输出表中的内容 Student() Console.WriteLine(sid + t + sname + t + sage); Console.WriteLine(-); 49 三、任务实施/3.5、在主函数中通过为类新建对象自动调用构造函数输入,对象无用时自动调用析构函数输出: public static void Main(string args) Student s=new Student2;/新建一个对象数组,用来存放两个引用s0和s1 for(int i=

33、0;i2;i+) Console.WriteLine(请输入第 + (i + 1) + 个学生的信息:); si = new Student(); /为两个引用s0和s1实例化 s0.putHead(); /对象无用时在此自动调用析构函数输出 50 三、任务实施第四步:编译运行C#项目,屏幕上显示结果如任务一中的图3-2所示。51 四、任务小结1、类中封装的构造方法与析构方法在C#中就称为构造函数与析构函数。2、构造函数名称与类名相同,如Student(),析构函数名称也与类名相同,但前面要加 ,如Student()。3、构造函数与析构函数都无返回值。所以构造和析构函数前不能出现数据类型,包括

34、void。4、构造函数可以不带参数,这称为默认构造函数,也可带参数,析构函数不能带参数。52 四、任务小结5、构造函数只能在为类新建对象时自动调用,不可手动调用,析构函数既可在删除对象时或对象无用时自动调用,也可根据自己的需要手动调用。6、构造函数可以重载,析构函数不可重载。53 五、相关知识与技能1、C#中的构造函数和析构函数2、构造函数的特点: 3、析构函数的特点:54 六、任务拓展1、请说出C#语言中构造函数的特点 。2、请说出C#语言static的特点。3、请说出C#语言在新建对象数组上的特点。4、请说出C#语言是如何释放无用对象的。4、请说出C#语言在释放无用对象所占空间时的特点。任

35、务任务一一 实现实现C+C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务二任务二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现

36、家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析构函数析构函数56 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用Python语言中的构造函数输入输出学生的信息登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Python语言中的构造函数与析构函数,并将学生信息登记表用Python语言中的构造函数与析构函数的源代码编写出来,小张按照经理的要求开始做以下的任务分析。57 二、任务分析1、用Student类来实现表格的架构。2、类内定义构造函数输入每一行信息。3、类内定义输出函数输出表头。4、类内定义析构函数输出表中的内容。5、在主函数中通过为类新建对象自动调用构

37、造函数输入,手动调用析构函数输出6、学生信息登记表如项目一中任务一里的表1-1所示。58 三、任务实施第一步:打开Python。第二步:文件新建文件:chap03_lx.py第三步:在该文件中输入以下内容:#!/usr/bin/env python#-*-coding:UTF-8-*-import stringclass Student(object): def _init_(self) : self.sid =input(请输入学号:) print 请输入姓名: self.sname=raw_input() self.sage =int(input(请输入年龄:)59 def putHead

38、(self): print(-) print(tsidtsnametsage) print(-) def _del_(self): print t,self.sid,t,self.sname,t,self.sage print(-) u1=Student()u2=Student()u1.putHead()del u1del u2#Chap03_lx.py60 三、任务实施第四步:编译运行Python项目,屏幕上显示结果如任务一中的图3-2所示。61 四、任务小结1、“_init_”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.2、“_del_”就是一个析构函数,当使

39、用del 删除对象时,会调用他本身的析构函数62 五、相关知识与技能1、python中的特殊方法,其中有两个,构造函数和析构函数。2、比说“_init_”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。63 五、相关知识与技能3、 以上的“_del_”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。4、Python中的析构函数举例。64 五、相关知识与技能5、Python中,构造函数(const

40、ructor)和析构函数(destructor)同为类中默认存在的无初始内容函数(可写入内容),且都在会在对对象执行操作时调用。6、调用次序,创建一个类并初始化构造函数_init_和析构函数_del_的内容,并且将析构函数放在最前定义,构造函数放在最后定义。65 五、相关知识与技能7、构造函数的作用:构造函数默认无初始内容,在Python的类中默认存在且无需用户调用,它的最大作用是在创建对象时进行初始化工作。8、注意:构造函数可以利用参数列表进行初始化对象属性,但是析构函数只能有一个默认的self参数,不能自定义其他参数。构造函数和析构函数是自动调用的,但是也可以主动调用:使用classNam

41、e._init_()。析构函数一般无需写入内容,因为Python有垃圾回收机制,不需要手动释放。66 六、任务拓展1、请说出Python语言中构造函数的特点 。2、请说出Python语言中析构函数的特点。3、请说出Python语言在新建对象数组上的特点。4、请说出Python语言在释放无用对象时所占空间时的特点。任务任务一一 实现实现C+C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、任务

42、描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务任务四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现PythonPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析构函数析构函数68 本项目所介绍的用构造函数与析构函数来实现OOP中类的相应功能,它们之间的区别如下表所示:各种语言使用构造的特点C+VB.NET2005JAVAC#2005Python构 造名称与类名相同P u b l i c

43、 S u b New()End Sub与类名相同与类名相同_init_()有 无返回值 无 无 无 无 无可 否带参数可带可不带 可带可不带 可带可不带 可带可不带 可带可不带69 可 否重载 可以 可以 可以 可以 可以调用自动调用在为类新建对象时自动调用,如:S t u d e n t * s = n e w Student2 自动调用如:Dim s(1) As Student Dim i As IntegerFor i = 0 To 1 Step 1 s(i) = New Student()Next i自动调用如:Student s=new Student2; for(int i=0;i

44、2;i+) si = new Student(); 自动调用如:Student s=new Student2; for(int i=0;i2;i+) si = new Student(); 自动调用在为类新建对象时自动调用如:s1=Student()70 析 构名称与类名相同,类名前加P r o t e c t e d Overrides Sub Finalize()End Subprotected void finalize()与类名相同,类名前加_del_()有无返回值无无无无无可否带参数不可不可不可不可不可可否重载不可不可不可不可不可调用在 对 象 无用时自动调用,如delete s;也

45、 可 手 动调自动调用也可手动调用自动调用,也可手动调用System.gc();自动调用,也可手动调用 手动调用对象名.del任务任务一一 实现实现C+C+语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务二二 实现实现VB.NETVB.NET语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务三三 实现实现JAVAJAVA语言中的构造函数与析构函数语言中的构造函数与析构函数内容导航一、项目描述二、项目分析三、项目实施四、项目小结五、项目实训评价表六、评价等级说明表任务任务四四 实现实现C#C#语言中的构造函数与析构函数语言中的构造函数与析构函数任务任务五五 实现实现Pyth

46、onPython语言中的构造函数与析构函数语言中的构造函数与析构函数项目项目三三综合综合比较表比较表项目综合实项目综合实训训 实现实现家庭管理系统中的构造家庭管理系统中的构造函数函数 与与析构函数析构函数72 一、项目描述上海御恒信息科技公司接到一个订单,需要用C+、VB.net、Java、C#、Python这5种不同的语言分别封装一个家庭管理系统中的用户登录表(FamilyUser)。并使用OOP中的构造函数与析构函数,程序员小张根据以上要求进行相关封装的设计后,按照项目经理的要求开始做以下的任务分析。73 二、项目分析1、根据要求,分析存储的主要数据如项目一的表1-3所示。2、设计数据库中

47、表的实体关系图(ERD)如项目一的图1-4所示。3、设计类的结构如项目一的表1-4所示:4. 键盘输入后显示的结果如项目二中的图2-2所示:74 三、项目实施第一步:根据要求,书写C+代码如下。/ chap03_oop中的构造与析构_lx1_Cplusplus_Answer.cpp : 定义控制台应用程序的入口点。#include stdafx.h#include iostreamusing namespace std;/1、用类来实现学生表格的架构:class FamilyUserprivate:char u_id10;/学号用数组来存放char u_name20;/姓名用数组来存放char

48、 u_pwd10;static int i;/在类中前向声明静态变量ipublic:75 三、项目实施/2、在类中前向声明构造函数、及析构函数与一般函数:FamilyUser();FamilyUser();void puthead();/3、在类外为静态变量初始化为int FamilyUser:i=0;/4、类外定义构造函数输入每一行信息:FamilyUser:FamilyUser()cout 请输入第 i+1 个用户的信息: endl;cout u_id;cout u_name;cout u_pwd;cout endl;i+;/每自动调用构造函数一次,i的值在原来基础上加76 /5、类外定义

49、输出函数输出表头及每一行信息void FamilyUser:puthead()cout 以下对象是后构造的先析构,先构造的后析构 endl;cout - endl;cout u_id t u_name t u_pwd n;cout - endl;/6、类外定义析构函数来释放对象并输出每一行信息FamilyUser:FamilyUser()cout u_id t u_name t u_pwd n;cout - endl;/7、在主函数中通过为类新建对象,并自动调用构造函数输入,析构函数输出:int _tmain(int argc, _TCHAR* argv)FamilyUser *fu=new

50、FamilyUser2;/新建一个对象数组,用来存放两个对象fu0和fu1fu0.puthead();/调用输出表头的函数delete fu;/删除对象数组所占用的空间,自动调用析构函数,注意析构函数也可手动调用return 0;77 三、项目实施第二步:根据要求,书写VBNET代码如下。chap03_oop中的构造与析构_VB2005_lx1.vb1、导入系统命名空间Imports SystemImports System.IO2、用类来实现表格的架构:Public Class FamilyUser Private u_id As String Private u_name As Strin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁