C++与面向对象技术-实验4-讲解

合集下载

C#实验四类与对象

C#实验四类与对象

实训五、在C#中实现面向对象编程一、实训目的:通过本章的学习,主要把握以下内容:•理解C# 的类和对象•使用C# 构造函数和析构函数•使用C# 访问修饰符•使用方法•在C#中使用方法的重写•理解属性及其不同的类型、实现•理解和使用索引器三、实验目的与要求(1)加深理解面向对象编程的概念,如类、对象、实例化等;(2)熟悉掌握类的声明格式,特别是类的成员定义、构造函数、初始化对象等。

(3)数量掌握方法的声明,理解并学会使用方法的参数传递,方法的重载等。

四、实训内容:(1)定义一个描述学生基本情况的类,数据成员包括姓名,学号,C#、英语和数学成绩。

成员函数包括输出数据、置姓名和学号、置三门课的成绩,求出总成绩和平均成绩。

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ClassStudent{class Program{class Student{public string Sname;public string Sno;public int Csharp;public int English;public int Math;public void display(){Console.WriteLine("大䨮家¨°好?!ê?我¨°是º? {0}分¤? ,ê?学¡ì号?是º? {1} ,ê?我¨°的Ì?C#成¨¦绩¡§ {2}分¤? 我¨°的Ì?英®¡é语®?成¨¦绩¡§ {3}分¤? 我¨°的Ì?数ºy学¡ì成¨¦绩¡§ {4}分¤? ", this.Sname, this.Sno, this.Csharp, this.English, this.Math);//this.我¨°自Á?己o的Ì?****}public void GiveSname(string name){this.Sname = name;}public void GiveSno(string Sno){this.Sno = Sno;}public void GiveCsharp(int Csharp){this.Csharp = Csharp;}public void GiveEnglish(int English){this.English = English;}public void GiveMath(int Math){this.Math = Math;}public double Avg(int c, int e, int m){double avg = (c + e + m) / 3.0;return avg;}public double Count(int c, int e, int m){double con = (c + e + m);return con;}}static void Main(string[] args){double a, c;Student s = new Student();Console.WriteLine("姓?名?:êo");String Sname = Console.ReadLine();s.GiveSname(Sname);Console.WriteLine("学¡ì号?:êo");String Sno = Console.ReadLine();s.GiveSno(Sno);Console.WriteLine("C#成¨¦绩¡§:êo");int Csharp = Convert.ToInt16(Console.ReadLine());s.GiveCsharp(Csharp);Console.WriteLine("英®¡é语®?成¨¦绩¡§:êo");int English = Convert.ToInt16(Console.ReadLine());s.GiveEnglish(English);Console.WriteLine("数ºy学¡ì成¨¦绩¡§:êo");int Math = Convert.ToInt16(Console.ReadLine());s.GiveMath(Math);s.display();Console.WriteLine("我¨°的Ì?平?均¨´分¤?是º? {0}分¤? ,ê?我¨°的Ì?总Á¨¹分¤?是º? {1}分¤? ", a = s.Avg(Csharp, English, Math), c = s.Count(Csharp, English, Math));}}}(2)定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入输出的成员函数。

C++语言程序设计实验4(类和对象)

C++语言程序设计实验4(类和对象)

是:用初始对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。
构造函数和拷贝构造函数的声明格式如下:
class 类名
{
public: 类名(形参); 类名(类名 &对象名);
//构造函数 //拷贝构造函数
... ...
}; 类名::类名()
//构造函数的实现
{ 函数体;
} 类名::类名(类名 &对象名)
6. 本章小结
本章主要介绍了面向对象的基本概念、类和对象的声明、构造函数、析构函数、内联成 员函数、拷贝构造函数、类的组合。
类是面向对象程序设计中最重要、最基本的概念,也是学习面向对象方法时遇到的第 1 个难点。类是对逻辑上相关的函数和数据的封装,是对问题的抽象描述。
要理解类与对象,必须要结合实例来学习,读者可以思考:除了书中列出的例子,现实 世 界 中 还 有 哪 些 有 形 或 无 形 的 事 务 可 以 被 抽 象 为 程 序 中 的 类 ,每 个 类 又 存 在 哪 些 对 象( 实 体 )。 这样可以对类的概念了解的快一些。
本章开始的每章的最后有一个实例——人员信息管理程序,这个例子贯穿后续各章,利 用每章介绍的只是不断丰富程序的功能,建议课后仔细阅读、体会,并尝试修改、补充程序 的功能。
另外,本章中还介绍了利用 UML 语言表示类与对象的方法,以后各章还将进一步介绍 用 UML 语言表示类之间的关系,但这远不是 UML 语言的全部,这方面的内容也不是初学者 学习的重点,读者可以不必深究,了解一下就可以了。如果有需要,可以另外学习软件工程 的课程。
面向对象的程序设计目的是:实现软件设计的产业化。主要观点是认为自然界是由实体 (对象)所组成。程序设计的出发点是:使用面向对象的观点来描述模仿并处理现实问题。 他要求:高度概括、分类、抽象。

《C 面向对象程序设计项目教程》教学课件 项目四

《C 面向对象程序设计项目教程》教学课件 项目四

派生类需继承基类的所有成员,也就是说不可以只选择一局 部成员,而舍弃另一局部。继承自基类的成员根据继承方式的不 同,其访问属性也有所不同,相关内容将在后面详细介绍。
派生类可以在基类原有成员的根底上添加新的成员,也可以 更改原有成员属性。假设在派生类中声明一个与基类成员同名的 新成员,该新成员就会覆盖原有的成员;假设声明同名函数,要 保证函数的参数也完全相同。
【例4-2】 私有继承中成员访问应用例如。将【例4-1】中的公有继承 方式改为私有继承方式,基类Book不变,如下所示:
class Book1:private Book
//定义派生类Book1
主函数如下:
void main()
{ Book1 b1;
//创立对象
b1.no=100021; //错误,派生类对象不能直接访问私有继承方式下基类的公有成员
//调用派生类的公有成员函数
}
结合以上程序可以得出,在公有继承方式下,成员的访问权限如下图。
2.私有继承
当派生类的继承方式是私有继承〔private〕时,基类的public 成员和protected成员被继承到派生类中成为private成员,它们只 能被派生类的成员函数直接访问,而不能被派生类对象直接访问。 基类的private成员被继承到派生类中仍为private成员,故不能被派 生类的成员函数直接访问。
一、继承与派生的概念
所谓继承,就是在一个已有类的根底上建立一个新类,已有的类称 为“基类〞或“父类〞,新建立的类称为“派生类〞或“子类〞。
基类与派生类是相对而言的,一个基类可以派生出多个派生类,每 个派生类还可以作为基类再派生出新的派生类。如果一个派生类只从一 个基类派生,这种方式称为单继承;如果一个派生类从多个基类派生, 这种方式称为多重继承,如下图。

C面向对象程序设计---实验讲义

C面向对象程序设计---实验讲义

实验八:构造函数和析构函数
❖ 实验目的:掌握C++语言中构造函数和析构函数的用法及其 功能.
❖ 实验内容: 1) P276面,自测题11.2(定义构造函数的规则);P285面,自测题 11.3(多种构造函数的用法). 2、P295面,自测题11.4(析构函数) . 3) 编程实现File类(参考p286面).
组实现排序); 三、P167面,自测题7.5(结构). 实验要求 : 1)要求有输入提示和输出提示 2)为你的程序加上注释,使得其清晰可读 实验过程: 实验体会:
实验五:指针和引用
实验目的:掌握C++语言中指针的功能和应用技巧. 实验内容:
一、 p179面,自测题8.3(指针的基本使用方法);P189面,自测题 8.6(动态内存分配);
二、 p193面,自测题8.7(指针数组和二维数组的区别) 三、补充例8.2(P197),完成链表删除、反转,使之构成一
个完整的链表结构 实验要求 :
1)要求有输入提示和输出提示 2)为你的程序加上注释,使得其清晰可读 实验过程: 实验体会:
实验六:类与对象(基础)
实验目的:掌握C++面向对象程序设计的基本方法. 实验内容:
C++面向对象程序设计 ---实验讲义
实验一:熟悉C++开发工具的使用
实验目的: 掌握使用Visual C++ 6.0编写和调试C++程序的 基本步骤.
实验内容: (1) 编写程序hello.cpp,在屏幕上显示”Hello ,I’m ***”; (2)在VC环境下编写C语言程序,验证C++和C的兼容性. (3)熟悉VC环境下编写\调试\运行C++程序的步骤.

《C++面向对象程序设计》_计算机科学与技术_实验四_模板和文件_实验任务书

《C++面向对象程序设计》_计算机科学与技术_实验四_模板和文件_实验任务书

《C++面向对象程序设计》实验任务书实验四模板和文件By shejz 2016/4/23(一)实验目的1.掌握模板的定义和使用方法;2.理解函数模板、类模板的抽象特性;3.能够根据要求正确定义模板;4.深入理解C++的输入输出的含义及其实现方法;5.掌握标准输入输出流的应用,包括格式输入输出;6.掌握对文件的输入输出操作。

(二)实验内容事先编写好程序,上机调试和运行程序,分析结果。

2.1 类模板将《C++面向对象程序设计(第2版)》第3章例3.14的程序改写为由类声明及类实现的“*.h”头文件和类的使用文件“*.cpp”两个部分组成的程序。

2.2输入输出流输入三角形的三边边长a,b,c,计算三角形的面积的公式是area= s s−a s−b s−c ,s=a+b+c2形成三角形的条件是:a+b>c,b+c>a,c+a>b编写程序,输入三角形的三边边长a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。

本题是《C++面向对象程序设计(第2版)》第7章习题第1题。

2.3文件操作建立两个磁盘文件file1.dat和file2.dat,编程序实现以下工作:(1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);(2)从file1.dat读入10个数,然后存放到file2.dat文件原有数据的后面;(3)从file2.dat读入20个数,将它们按照从大到小的顺序输出到屏幕并存放到f2.dat(不保留原来的数据)。

本题是参考《C++面向对象程序设计(第2版)》第7章习题第4题改编的。

(三)预习内容《C++面向对象程序设计(第2版)》第3、7章。

(四)实验报告说明本次实验报告试行提交电子版,要求文件名命名规则为:CPP_4_学号_姓名.PDF(转换为PDF格式)。

发送电子邮件到609360949@邮箱。

如:1523023114 张三示例:CPP_4_1523023114_张三.pdf。

C++实验4

C++实验4

《C++面向对象程序设计》实验报告
第 1 页 共 1 页 实验4 运算符重载
班级_____________ 学号_______________ 姓名_______________
[实验目的]
1、了解运算符重载的概念和使用方法。

2、掌握几种常用的运算符重载的方法。

[实验要求]
给出以下各实验内容的源程序代码,并把编译、运行过程中出现的问题以及解决方法填入实验报告中,按时上交。

[实验学时] 2学时。

[实验内容]
1、有两个2×3矩阵a 和b ,元素均为整型数。

重载运算符“+”,使之能用于
矩阵相加。

如: c=a+b 。

2、定义一个复数类Complex ,重载运算符“++”, 能够使复数的实部增1。

试分别实现复数的前置自增和后置自增。

要求:将前置自增函数重载为Complex 类的成员函数;后置自增函数重载为Complex 类的友元函数。

请编程序实现上述要求并测试程序。

3、定义长方体Rectangle 类,重载输入运算符“>>”和输出运算符“<<”,用
来实现Rectangle 对象信息的输入以及相关信息的输出。

[实验总结]
给出对本次实验的总结。

C++面向对象程序设计 实验四 类与对象之二

C++面向对象程序设计 实验四 类与对象之二

C++面向对象程序设计实验四类与对象之二一、实验目的1、掌握C++类的概念和基本组成;2、学会设计类,掌握类对象的声明和使用方法;3、熟悉各种成员函数包括构造函数、析构函数的定义与使用;4、掌握类相关理论,完成实际问题类的定义与实现。

5、掌握复制构造函数和CONST的使用方法。

二、实验内容1、找出下列程序的错误,改正或添加相应语句,并说明原因。

class MyClass{private:int n; // 数据成员public:MyClass(int m): n(m) {} // 构造函数void Print() { cout << "const:n=" << n << " "; }};int main() // 主函数main(){const MyClass obj1(10); // 常对象MyClass obj2(20); // 非常对象obj1.Print(); // 输出信息obj2.Print(); // 输出信息cout << endl; // 换行return 0; // 返回值0, 返回操作系统}2、下面为一个有关Test类的说明,请编写主程序,使用类中定义的三个构造函数定义三个对象,要求带参构造函数和复制构造函数的输出结果为1209,先在纸上写出输出结果,再运行程序核对笔算结果。

class Test{private:int a; // 数据成员public:Test() { cout << "无参构造函数" << endl; }Test(int a) { cout << a << endl; }Test(const Test &copy): a(copy.a){ cout << a << endl; }~Test() { cout << "析构函数" << endl; }};本题存在问题,使用复制构造函数的对象不能输出指定的数据“1209”,类定义改正为:class Test{private:int a; // 数据成员public:Test() { cout << "无参构造函数" << endl; }Test(int a) { this->a=a;cout << a << endl; }Test(const Test &copy): a(copy.a){ cout << a << endl; }~Test() { cout << "析构函数" << endl; }};没有过讲this前,采用下面定义:class Test{private:int a; // 数据成员public:Test() { cout << "无参构造函数" << endl; }Test(int b):a(b) {cout << a << endl; }Test(const Test &copy): a(copy.a){ cout << a << endl; }~Test() { cout << "析构函数" << endl; }};3、编写设计一个People(人)类。

面向对象c 实验报告

面向对象c 实验报告

面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。

二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。

- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。

- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。

2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。

3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。

4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。

5. 运行程序:编译并运行C程序,观察程序的输出结果。

三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。

通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。

四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。

尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。

C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。

通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。

此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。

当然,C语言中实现面向对象编程也存在一些限制和不足。

相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。

此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。

实验四C#面向对象程序基础

实验四C#面向对象程序基础

实验四C#面向对象程序基础(一)一、实验目的1.理解C#语言是如何体现面向对象编程基本思想。

2.掌握类对象的定义。

3.了解类的封装方法,以及如何创建类和对象。

4.了解成员变量和成员方法的特性。

5.掌握静态成员的用法。

6.加深理解面向对象编程的概念,如类、对象、实例化等;二、实验要求1. 分析程序,上机验证结果。

2. 写出程序,并调试程序,要给出测试数据和实验结果。

3. 整理上机步骤,总结经验和体会。

4. 完成实验日志和上交程序。

三、作业提交1. 建立以自己名字命名的文件夹,文件夹中包含两个文件夹,名字各为:实验成果,实验流程。

2. 实验成果文件夹中保存实验过程中的解决方案、项目等文件。

3.实验流程中存放撰写实验流程的word文档。

四、实验内容题目一:定义一个圆类,计算圆的面积和周长,并应用该类。

题目二:求n!的值,用递归的方法求n!(n>=0)。

】实验步骤:1)定义递归方法fac,计算整数n的阶乘,方法中需要递归调用自身。

2)在Main方法中读入整数n的值。

3)在Main方法中调用fac方法,求出整数n的阶乘。

4)Main方法中输出计算结果。

题目三:给三个整数排序并求其和及平均值定义一个方法,给三个整数按从小到大的顺序排序并求其和及平均值。

其中,三个待求整数及排序后的结果由引用参数传递;其和由输出参数传递;平均值由返回值返回。

在Main()方法中实现三个待求整数的输入及结果的输出。

实验步骤:1)定义方法Sort,给三个整数按从小到大的顺序排序并求其和及平均值。

其中,三个待求整数及排序后的结果由引用参数传递,其和由输出参数传递,平均值由返回值返回。

2)在Main方法中读入待求的三个正整数。

3)在Main方法中调用方法Sort给三个整数排序并求其总和及平均值。

4)在Main方法中输出结果。

题目四:程序阅读假设某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。

C 与面向对象技术 实验4 讲解

C  与面向对象技术 实验4 讲解

程序1:编写程序,利用循环语句找出100到1000之间所有含有7的数(例如,107、174等),将结果显示在屏幕上,并且每行最多显示10个数。

#include<iostream>using namespace std;int main(){int g,s,b,cnt=0;for(int i=100;i<1000;i++){g=i%10;b=i/100;s=i/10%10;if(g==7||b==7||s==7){cnt++;cout<<i<<"";if(cnt==10){cout<<endl;cnt=0;}}}return0;}程序2:实现下述程序。

你刚开始在一家商店从事销售工作,你的年收入包括基本工资和提成,基本工资是5000元。

下表用于确定提成率:销售额提成率¥0.01~¥50008%¥5000.01~¥1000010%¥10000.01以上12%你目标是年薪30000元。

试编写一个程序,求出挣得30000元必须完成的最小销售量。

#include<iostream>#include<iomanip>using namespace std;double GetMinSalesAmount(double target,double salary){double commission=0.0;double salesamount=0;do{salesamount+=0.01;if(salesamount>=10000.01)commission=5000*0.08+5000*0.10+(salesamount-10000)*0.12;else if(salesamount>=5000.01)commission=5000*0.08+(salesamount-5000)*0.10;elsecommission=salesamount*0.08;}while(commission<target-salary);return salesamount;}int main(){const double TARGET=30000;const double SALARY=5000;double salesamount=GetMinSalesAmount(TARGET,SALARY);cout<<"销售额达到";cout<<setiosflags(ios::fixed)<<setprecision(2)<<salesamount<<"时,你一年才能挣到";cout<<setprecision(2)<<TARGET<<endl;}程序3:程序提示用户输入年和月(假设可输入的最早的年份是1800年,1800年1月1日是星期三),然后在控制台上显示该月的日历如图所示。

《C--面向对象程序设计》实验指导书(彭成)

《C--面向对象程序设计》实验指导书(彭成)

《C++面向对象程序设计》实验指导书主讲:彭成湖南工业大学计算机学院2016-9-20目录实验一 DEV C++开发环境及C++程序的上机过程一、实验目的1、了解和使用C++集成开发环境;2、熟悉C++环境的基本命令和功能键;3、熟悉常用的功能菜单命令;4、学习使用C++环境的帮助;5、学习完整的C++程序开发过程;6、理解简单的C++程序结构二、实验内容使用Visual C++ 6.0集成环境来编辑、编译并运行下面简单C++程序:1.#include <iostream>using namespace std;int main(){cout<<"This is a C++ program.\n";}2.#include <iostream>using namespace std;int max(int,int); //声明自定义函数int main() //主函数{int a,b,c;cout<<"input two number:\n";cin>>a>>b;c=max(a,b); //调用max函数,将得到的值赋给Ccout<<"max="<<c<<endl;}int max(int x,int y) //定义max函数,函数值为整型,形式参数x,y为整型{int z; //max函数中的声明部分,定义本函数中用到的变量z为整型if(x>y) z=x;else z=y;return(z); //将z的值返回,通过max带回调用处}三、实验步骤Dev-C++是一个Windows环境下C/C++的集成开发环境(IDE),它是一款自由软件,遵守GPL许可协议分发源代码。

使用起来非常方便。

对于初学者而言还是有些迷茫。

首先来看看如何建立一个项目。

精品课件-Visual C++程序设计及实践-第4章 C++面向对象

精品课件-Visual C++程序设计及实践-第4章  C++面向对象

// sAtcactoiucntf.lcopapt文件GetInterestRate()
flo{at CAccount::m_nInterestRate=0.022;
return m_fInterestRate;
}
private:
char率,静态成员,多个所有账户实例都要共享同一
➢ 继承允许创建分等级层次的类。
➢ 运用继承,能够创建一个通用类,通过继承增加、修改或替 换给定类中的方法对这个类进行扩充,以适应不同的要求。 //定义派生类的一般格式如下: class class_name: access parent_name { ......//省略 };
13
类继承—派生类对象的构造
//创建堆对象的方法如下: //类定义没有提供构造函数,或者要调用缺省构造函数 class_name* pobj= new class_name; //调用类的带参数的构造函数 class_name* pobj= new class_name(argu_list);
-7
类与对象—析构函数
➢析构函数也是类中的特殊成员函数,要在前面加上一个波浪号 “~”。 ➢一个类中只能有一个析构函数。 ➢析/c构/l类a函s的s数定c执l义a行s文s与_件n构a中m造e,函析数构相函反数的声操明作的,格通式常如用下于:释放分配给对 象的{存储空间。
<return_type> methodName([<argu_list>]); }; //.cpp <return_type> class_name::methodName([<argu_list>]) {
...... // 具体实现 }
-9
类与对象—内联成员函数

《C面向对象技术程序设计》全套实验教案x-2024鲜版

《C面向对象技术程序设计》全套实验教案x-2024鲜版

22
06
多线程编程实验
2024/3/27
23
线程创建与管理
2024/3/27
线程创建
使用C中的thread类创建线程,通过构造函数传递线程函数及参 数。
线程管理
使用join()方法等待线程结束,使用detach()方法将线程分离为 后台线程。
线程属性设置
设置线程属性,如优先级、栈大小等,以满足特定需求。
24
同步与互斥机制实现
2024/3/27
互斥锁
使用C中的mutex类实现互斥锁,保证临界资源的访问安全性。
条件变量
使用condition_variable类实现条件变量,实现线程间的同步与通 信。
信号量
使用semaphore类实现信号量,控制同时访问共享资源的线程数 量。
25
多线程应用场景分析
2024/3/27
Sort算法 掌握STL库中的Sort算法,理解其实现原理,能够运用 Sort算法对容器中的元素进行排序。
Find算法 熟悉STL库中的Find算法,理解其实现原理,能够运用 Find算法在容器中查找指定元素。
其他常用算法 了解STL库中其他常用算法,如Binary_search(二分查 找)、Merge(合并)等,理解其实现原理并能够灵活运 用。
掌握如何自定义异常类,并在程序中抛出和捕获自定 义异常。
2024/3/27
14
04
STL库应用实验
2024/3/27
15
容器(Vector、List、Map等)
Vector容器
掌握Vector容器的创建、初始化、 元素访问、遍历等基本操作,理 解Vector容器的动态数组特性及 其内存管理方式。

面向对象第四次实习

面向对象第四次实习
CGeoSymbolLib
geoSymbols
public
属性
保存每个图层绘制信息数组
CArray<CGeoSymbol*,CGeoSymbol*>geoSymbols
ol
Public
方法
Void addSymbol(CGeoSymbol symbol)
getSymbol
Public
方法
setRect
Public
方法
Void setRect(CRect rect)/void setRect(int x1,int y1,int width,int height)=0
setType
Public
方法
Void setType(int type)=0
getRect
Public
方法
CRect getRect()
CGeoSymbol getSymbol(CString layerName)
3、调整CGeoMap(或者CGeoLayer)对应绘制函数,对原有的绘图环境调整,绘制不同色彩图形;
4、对涉及的函数与方法,调整其访问权限与实现方法,使图形尽可能效果最佳;
5、进一步理解重载、虚函数、多态的含义。
面向对象第四次实习:(多态性与虚函数)
1、重新定义基类CGeoObject中某些方法,将其改为虚函数(纯虚函数);
类名称
类成员
性质
类别
说明
CGeoObject
Name
Private
属性
目标名称
Id
Private
属性
目标id
Type
Protected
属性
目标类型,1,2,3,4可以分别表示点、线、面、文字等

C++与面向对象技术-实验4

C++与面向对象技术-实验4

C++与面向对象技术实验报告类型:基础型实验一、实验目的1.掌握类的定义方法;2.掌握对象的创建方法以及类成员的访问方法。

二、实验内容程序1:编写一个名为Rectangle的类表示矩形,这个类包括以下成员:(1)两个double型的数据成员表示width和height表示宽和高(2)字符串数据成员color表示矩形的颜色(3)读取各个数据成员的成员函数(需要分别定义3个)double getWidth()double getLength()string getColor()(4)修改各个数据成员的成员函数(需要分别定义3个)void setWidth(double myWidth)void setLength(double myLength)void setColor(string myColor)(5)成员函数getArea()返回该矩形的面积(6)成员函数getPerimeter()返回该矩形的周长编写测试程序,创建两个Rectangle对象,将第一个对象设置为宽3,高40,颜色为blue;将第二个对象设置为宽3.1,高5.6,颜色为red。

通过显示每个对象的信息,以及他们的面积和周长。

程序2:设计一个名为Fan的类用于模拟电风扇,这个类包括以下成员:(1)int型的数据成员speed表示风扇的速度(只能取值为1,2,3)(2)bool型的数据成员on 表示风扇是否开启(取值范围true,false)(3)double型的数据成员radius表示风扇的半径(取值范围5~10)(4)字符串数据成员color表示风扇的颜色(5)读取各个数据成员的成员函数(需要分别定义四个)(6)修改各个数据成员的成员函数(需要分别定义四个)(7)ShowInfo()成员函数,在控制台上显示风扇的信息,如果风扇打开,只显示风扇的转速、颜色和半径否则,在显示“the fan is off”之后,再显示风扇的颜色和半径编写测试程序,创建两个Fan对象,将第一个对象设置为转速3,半径为10,颜色为yellow,打开状态;将第二个对象设置为转速1,半径为5,颜色为blue,关闭状态。

实验四 面向对象程序设计

实验四 面向对象程序设计
Web程序设计
实验报告
实验名称:面向对象程序设计
实验地点:11教407
专业班级:信管102
学生姓名:方庆德
学生学号:2010094058
指导教师:王铁
成 绩:
2014年04月22日
一、实验目的
1、掌握面向对象的基本理论
2、掌握面向对象中实现类的封闭源自继承的方法3、掌握面向对象中多态的基本概念
二、实验准备
2、对上步实验中Person类进行扩充,添加人的出生日期(birthday)属性,并添加计算人的年龄(getAge)方法,根据出生日期与身份证号间的关系,添加二者是否一致的检测方法,并进行测试。
3、编写Student类,对Person类进行继承,在Person类中添加学号、学制、班级等属性,对类中的属性进行封装。
1、Windows 2000或Windows XP操作系统
2、2010编辑器
1、类的基本构造
向网站中添加一个类Person,并将类放到App_Code文件夹中
打开一个网页文件,对此类进行测试,对由Person类生成的对象进行初始化,身份证号为自己的号码,输入自己的姓名和性别,写出输出结果。
4、编写一个类,完成至少两个数的复杂运算,如加、减、乘、除、开方、乘方等。写出类的源代码,并给出类测试的效果图,配以文字说明。
四、实验总结
1、类是如何进行封装的。
答:类中对属性字段申明为private,并对属性进行set和get方法,外部就可以通过属性的set和get方法获得属性值,这样既可以保护数据的安全性又可以访问.
2、父类和子类的关系及实现的方法。
答:子类继承父类,关系模式为子类:父类实现继承,子类可以具有父类的非私有化属性跟方法,同事子类也可以添加新的属性,新的方法,及父类方法的重写和重载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序1:编写程序,利用循环语句找出100到1000之间所有含有7的数(例如,107、174等),将结果显示在屏幕上,并且每行最多显示10个数。

#include<iostream>
using namespace std;
int main()
{
int g,s,b,cnt = 0;
for(int i=100;i<1000;i++)
{
g = i % 10;
b = i / 100;
s = i / 10 % 10 ;
if(g==7||b==7||s==7)
{
cnt++;
cout<<i<<" ";
if(cnt==10)
{
cout<<endl;
cnt = 0;
}
}
}
return 0;
}
程序2:实现下述程序。

你刚开始在一家商店从事销售工作,你的年收入包括基本工资
你目标是年薪30000元。

试编写一个程序,求出挣得30000元必须完成的最小销售量。

#include <iostream>
#include <iomanip>
using namespace std;
double GetMinSalesAmount(double target,double salary)
{
double commission = 0.0;
double salesamount = 0;
do
{
salesamount += 0.01;
if(salesamount>=10000.01)
commission = 5000*0.08 + 5000 * 0.10 + (salesamount - 10000) * 0.12;
else if(salesamount>=5000.01)
commission = 5000*0.08 + (salesamount - 5000) * 0.10;
else
commission = salesamount * 0.08;
}
while(commission<target-salary);
return salesamount;
}
int main()
{
const double TARGET = 30000;
const double SALARY = 5000;
double salesamount = GetMinSalesAmount(TARGET,SALARY);
cout<<"销售额达到";
cout<<setiosflags(ios::fixed)<<setprecision(2)<<salesamount<<"时,你一年才能挣到";
cout<<setprecision(2)<<TARGET<<endl;
}
程序3:程序提示用户输入年和月(假设可输入的最早的年份是1800年,1800年1月1日是星期三),然后在控制台上显示该月的日历如图所示。

请尝试使用自顶向下的程序设计方法。

#include <iostream>
using namespace std;
int isLeapYear(int year)
{
return (year%400==0 || year%4==0 && year%100!=0);
}
int getNumberOfDaysInMonth(int year,int month)
{
if(month==1 || month==3 || month==5 ||month==7|| month==8 || month==10 || month==12) return 31;
if(month==4 ||month==6||month==9 ||month==11)
return 30;
if(isLeapYear(year))
return 29;
else
return 28;
}
int getTotalNumberOfDays(int year,int month)
{
int total = 0,i;
for(i = 1800;i<year;i++)
{
if(isLeapYear(i))
total +=366;
else
total +=365;
}
for( i = 1;i<month;i++)
{
total +=getNumberOfDaysInMonth(year,i);
}
return total;
}
int getStartDay(int year,int month)
{
int startDay1800 = 3;
int totalNumberOfDays = getTotalNumberOfDays(year,month);
return (getTotalNumberOfDays(year,month) + startDay1800)%7; }
void printMonthBody(int year,int month)
{
int startDay=getStartDay(year,month),i;
for(i = 0;i<startDay;i++)
cout<<" ";
for(i = 0;i<getNumberOfDaysInMonth(year,month);i++)
{
if(i<9)
cout<<" "<<(i+1);
else
cout<<" "<<(i+1);
if((i+startDay+1)%7==0)
cout<<endl;
}
}
void printMonthName(int month)
{
switch(month)
{
case 1: cout<<"January";break;
case 2: cout<<"Febuary";break;
case 3: cout<<"March";break;
case 4: cout<<"April";break;
case 5: cout<<"May";break;
case 6: cout<<"June";break;
case 7: cout<<"July";break;
case 8: cout<<"August";break;
case 9: cout<<"September";break;
case 10: cout<<"October";break;
case 11: cout<<"November";break;
case 12: cout<<"December";break;
}
}
void printMonthTitle(int year,int month)
{
cout<<"-----------------------------"<<endl;
cout<<" ";
printMonthName(month);
cout<<" "<<year<<endl;
cout<<"-----------------------------"<<endl;
cout<<" SUN MON TUE WED THU FRI SAT"<<endl; }
void printMonth(int year,int month)
{
printMonthTitle(year,month);
printMonthBody(year,month);
}
int main()
{
int year,month;
cout<<"input year:";
cin>>year;
cout<<"input month in number between 1 and 12:";
cin>>month;
printMonth(year,month);
cout<<endl;
return 0;
}。

相关文档
最新文档