下面是小编为大家整理的面向对象程序设计实验报告心得(范文推荐),供大家参考。希望对大家写作有帮助!
面向对象程序设计实验报告心得5篇
面向对象程序设计实验报告心得篇1
浙江大学城市学院实验报告
课程名称 面向对象程序设计
实验项目名称 集合框架与泛型
学生姓名 专业班级 学号
一. 实验目的和要求
1. 了解Java集合框架的接口和实现类
2. 理解泛型类、泛型接口、泛型方法的特点
3. 掌握List接口及其实现类LinkedList、List
4. 了解Set接口及其实现类HashSet、TreeSet
5. 了解Map及其实现类HashMap、TreeMap
二. 实验内容
1. 分析Java集合框架的接口和实现类的组成
2. 分析泛型类、泛型接口、泛型方法的特点
3. 编程实现:设计学生管理类StudentManager(用List集合管理学生对象)
4. 选作-编程实现:设计学生管理类StudentManager(用Set集合管理学生对象)
5. 选作-编程实现:设计学生管理类StudentManager(用Map管理学生对象)
三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)
1. 分析Java集合框架的接口和实现类的组成
请查阅书籍和Java帮助文档,说明Java集合框架的接口组成以及它们的继承关系,并针对每个接口给出具体的实现类。
答:collection 的子接口有list(linkedlist and rrarlist) set(treeset and hashset and linkedhashset)queue(linkedlist and queue)
Map的子接口有sortedmap (hashmap and treemap and linkedhashmap)
Iterator接口的作用是集合元素的遍历,collection接口定义的iterator方法会返回iterator类型的对象,这意味着所有集合都可利用iterator对象进行元素的遍历。
Listiterator接口从iterator接口拓展,并加入了与list集合相关的方法,list接口的listiterator方法会返回listiterator类型对象。
2. 分析泛型类、泛型接口、泛型方法的特点
请查阅书籍和Java帮助文档,举例说明泛型类、泛型接口、泛型方法的特点。
答:泛型接口:
interface testGenerics{ T getT(T t); String assume(T t); }
泛型类:
public class GenericsFoo { private T x;
public GenericsFoo(T x) { this.x = x; }
public T getX() { return x; }
public void setX(T x) { this.x = x; } }
使用来声明一个类型持有者名称,然后就可以把T当作一个类型代表来声明成员、参数和返回值类型。
当然T仅仅是个名字,这个名字可以自行定义。
泛型方法:
是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。如:
public class ExampleA {
public void f(T x) {
System.out.println(x.getClass().getName()); } }
使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
3. 编程实现:设计学生管理类StudentManager(用List集合管理学生对象)。StudentManager类的功能包括添加学生、查询学生、删除学生、统计学生成绩等。需要设计表示学生对象的Student类,并用LinkedList或List集合来管理可被数量的学生对象。另外还需要设计测试类Test来验证StudentManager的功能。
import java.util.*;
class StudentManager{
private String id ,name;
private int score;
public StudentManager(String id,String name,int score){
this.id=id;this.name=name;
this.score=score;
}
public String toString(){
return "\nid=" +id+" name=" +name+" score=" +score;
}
public int getscore(){
return score;
}
}
class Student extends StudentManager{
public Student(String id, String name, int score) {
super(id, name, score);
// TODO Auto-generated constructor stub
}
}
public class example {
public static void main(String[] args){
Student student1=new Student("001","张三",83);
Student student2=new Student("002","李四",64);
Student student3=new Student("003","王五",95);
Student student4=new Student("004","赵六",76);
Student student5=new Student("005","钱七",77);
Listlist1=new LinkedList();
list1.add(student1);
list1.add(student2);
list1.add(student3);
list1.add(student4);
list1.add(student5);
printList(list1);
Scanner scanner=new Scanner(System.in);
System.out.print("请输入要添加学生的学号:\n");
String a=scanner.nextLine();
System.out.print("请输入要添加学生的姓名:\n");
String b=scanner.nextLine();
System.out.print("请输入要添加学生的分数:\n");
int c=scanner.nextInt();
Student student6=new Student(a,b,c);
list1.add(student6);
printList(list1);
System.out.print("删除id为002的学生:\n");
for(int i=0;i
面向对象程序设计实验报告心得篇2
实验2 数组、指针和结构体(2学时)
1.一、实验目的
2.掌握一维数组和二维数组的定义和使用方法。
3.掌握指针变量的定义和使用方法。
4.掌握结构体类型的定义和结构体变量的使用方法。
5.学习使用VC++编程环境提供的程序的单步调试功能。
1.二、实验任务
6.编写程序,创建一个包含10个元素的整型数组,在程序运行时由用户从键盘输入数组元素的值。然后使用选择排序法对数组元素按从小到大的顺序进行排序。选择排序法的算法思路是:对包含n个元素的数组进行排序时,首先通过比较,选择出数组中最大的元素,将它和数组末尾的元素(如果数组元素下标从0开始,则是第n-1个元素;
如果数组元素下标从1开始,则是第n个元素)相交换,也就是说,要把最大的元素选择出来并放到整个数组的末尾;
然后重复上述的选择过程,从前n-1个元素中找出最大的元素,并把它放到前n-1个元素的末尾;
这样的选择过程重复进行应n-1次,每次选择都找出一个最大的元素放到未排序列的末尾。这样数组就成为了一个按从小到达顺序排列的有序数组。要求分两行输出排序前和排序后的数组。
7.编写程序,创建一个4行4列的二维整型数组,按行序优先将1到16的整数值存放在该数组中。按矩阵的形式在屏幕上输出该数组。计算并输出数组主对角线元素的和;
然后将该矩阵转置,并将转置后的矩阵存放在原来的二维数组中。所谓转置就是将由主对角线分割的上三角矩阵中的元素与下三角矩阵中的相应元素互换。
8.编写程序,定义2个整型指针,并使它们指向2个整形变量,利用指针分别输出两个变量的值和它们的内存地址;
使用指针交换两个变量的值,再次输出变量的值和它们的内存地址;
交换两个指针的值,观察程序的运行结果
9.编写程序,动态创建一个字符数组,从键盘输入一个字符串并把它保存到字符数组中。找出字符串中所有的小写字母字符,将它们转换成相应的大写字母字符,输出转换后的字符串。要求使用字符指针操作字符数组。
10.编写程序,定义一个表示学生考试成绩信息的结构数据类型,在程序运行过程中,根据用户输入的学生数目,动态创建一个这种结构数据类型的变量数组,并从键盘输入每个学生的相关信息,然后根据某门课程的成绩,按从大到小的顺序对该数组中的元素进行排序。分别输出排序前的数组内容和排序后的数组内容。
11.学习VC++IDE提供的程序单步调试技术。
1.三、实验步骤
12.设计VC++控制台应用程序exp2_1,按照任务1的要求创建一个包含10个元素的整型数组,并从键盘输入10个整数:
int array[10];
for(int k=0; k>array[k];
1.下面的二重循环对数组进行选择排序:
for(int i=9; i>0; i--)
{
int max=array[i];
int maxindex=i;
for(int j=i-1; j>=0;j--)
{
if(max
面向对象程序设计实验报告心得篇3
实验1编辑与调试环境的熟悉1、实验目的
熟悉VC编程环境,学会独立使用VC++。
了解如何利用VC++编辑、编译、链接和运行一个C++程序。
通过运行简单的C++程序,初步了解C++源程序的调试手段及其方法。加深认识C++对C的扩充语法的正确书写格式。
2、实验要求
熟悉VC++6.0编辑环境,了解各大菜单项及其工具栏中各工具按钮的功能。创建一个源文件,在该源文件中完成第3章习题30的编程。
借助编译器进行语法检查,检验源程序是否合法。在此程序编制的基础上掌
握常用的调试程序的方法、手段,了解调试中常用的快捷键的区别。练习使用常用的调试程序的方法和手段,善于使用快捷键。掌握F5,F10,
F11,F9等调试常用键,watch窗口的作用及区别。掌握如何设置断点、跟踪程序的执行情况等等。
3、内容
教材第3.30题:下面是一个计算器类定义,请完成该类成员函数的实现。
classcounter
{
public:
counter(intnumber;
voidincrement(;//给原值加1voiddecrement(;//给原值减1
intgetvalue(;//取得计算器的值
intprint(;//显示计数private:
intvalue;};
实验2有关类和对象类的实验
1、实验目的
掌握声明类的方法,类和类的成员的概念
掌握定义类和对象的基本用法掌握对象成员的三种访问方式理解类的封装性和信息隐蔽
2、实验要求
构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元
素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。显示每个对象的qu*price的值。选做题目:实现如下类:
classDate{
public:
voidprintDate(;//显示日期voidsetDay(intd;//设置日的值voidsetMonth(intm;//设置月的值voidsetYear(inty;//设置年的值
private:
intday,month,year;
};
根据注释语句的提示,实现类Date的成员函数。
在主程序中通过实例化对象的形式调用各成员函数,了解对象成员的三种访问方式。
在主程序中完成设置日期的显示。
面向对象程序设计实验报告心得篇4
实验面向对象程序设计一、实验目的
1掌握类的定义和使用
2掌握对象的声明和不同访问属性的成员方问方式3掌握构造方法的使用和执行过程4掌握类继承与派生的定义和使用5熟悉继承的访问控制机制
二、实验内容与步骤
1实验预习
2选用任何一种面向对象程序设计语言,根据下面的要求编程实现复数类ComplexNumber(可以根据选用的程序设计语言特性做适当调整)
(1)复数类ComplexNumber的属性
m_dRealPart:实部,代表复数的实数部分m_dImaginPart:虚部,代表复数的虚数部分
(2)复数类ComplexNumber的方法
ComplexNumber(构造函数,将实部,虚部都置为0
ComplexNumber(doubler,doubleI构造函数,创建复数对象的同时
完成复数的实部,虚部的初始化
GetRealPart(获取实部GetImaginaryPart(获取虚部SetRealPart(doubled设置实部SetImaginaryPart(doubled设置虚部ComplexAdd(ComplexNumberc复数相加ComplexAdd(doublec复数相加
ComplexMinus(ComplexNumberc复数相减ComplexMinus(doublec复数相减
ComplexMulti(ComplexNumberc复数相乘
1
ComplexMulti(doublec复数相乘
toString(把当前复数对象的实部,虚部组合成a+bi的字符串形式
(3)写一个类测试你编写的复数类的方法3根据要求编程完成以下程序:
(1)定义抽象类Shape或者接口Shape,至少包括draw(),move()两个方法。
(2)继承Shape类或者实现Shape接口,生成Circle,Triangle,Square类。(3)编写一个类测试你的类层次体系,完成一下数组的绘制和移动操作:(Java语言示例)
Shape[]myshape={newCircle(,newTriangle(,newCircle(,newSquare(}
三、实验要求
1整理阅读程序和上机的结果以及体会,总结Java开发调试和UML建模经验。
(1)实验中遇到那些困难和问题?(工具查找,安装,使用,程序的编辑,调试,运行)
(2)你是如何解决这些问题的?从中可以得到什么启示,有什么收获,教训?
2
面向对象程序设计实验报告心得篇5
课程实验报告
课程名称:面向对象程序设计实验名称:面向过程的整型栈编程
院系:计算机科学与技术
专业班级:CS1203学号:U201214884姓名:肖双指导教师:马光志
2015年1月6日
面向对象程序设计实验报告
一、需求分析
1.题目要求
整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程,然后写一个main函数对栈的所有操作函数进行测试。
structSTACK{
int*elems;//申请内存用于存放栈的元素intmax;intpos;};
voidinitSTACK(STACK*constp,intm;//初始化p指向的栈:最多m个元素voidinitSTACK(STACK*constp,constSTACK&s;//用栈s初始化p指向的栈inthowMany(constSTACK*constp;//返回p指向的栈的实际元素个数posSTACK*constpush(STACK*constp,inte;
//将e入栈,并返回p
STACK*constpop(STACK*constp,int&e;//出栈到e,并返回p
STACK*constassign(STACK*constp,constSTACK&s;//赋s给p指的栈,并返回pvoidprint(constSTACK*constp;
//打印p指向的栈//销毁p指向的栈
voiddestroySTACK(STACK*constp;
//栈能存放的最大元素个数
//栈实际已有元素个数,栈空时pos=0;
2.需求分析
按题目要求定义一个栈,并完成对栈的各种操作。
二、系统设计
1.概要设计
1)定义一个整型栈2)完成下列函数:
voidinitSTACK(STACK*constp,intm;//初始化p指向的栈:最多m个元素voidinitSTACK(STACK*constp,constSTACK&s;//用栈s初始化p指向的栈inthowMany(constSTACK*constp;//返回p指向的栈的实际元素个数posSTACK*constpush(STACK*constp,inte;
//将e入栈,并返回p
STACK*constpop(STACK*constp,int&e;//出栈到e,并返回p
STACK*constassign(STACK*constp,constSTACK&s;//赋s给p指的栈,并返回pvoidprint(constSTACK*constp;
//打印p指向的栈
-1-
面向对象程序设计实验报告
voiddestroySTACK(STACK*constp;//销毁p指向的栈
3)创建主函数,测试上述函数。
2.详细设计
2.1初始化模块:
1)voidinitSTACK(STACK*constp,intm;
功能:初始化p指向的栈:最多m个元素
流程:创建一个内存为m的栈,定义一个指向栈m的指针p.入口参数:p,m出口参数:空
2voidinitSTACK(STACK*constp,constSTACK&s;
功能:用栈s初始化p指向的栈
流程:开辟内存,分别将栈s栈能存放的最大元素个数和栈中元素赋给p指向的栈入口参数:p,s出口参数:空
3)STACK*constassign(STACK*constp,constSTACK&s;
功能:赋s给p指的栈,并返回p
流程:分别将栈s栈能存放的最大元素个数和栈中元素赋给p指向的栈,返回p入口参数:p,s出口参数:p2.2调用栈的成员模块:
1)inthowMany(constSTACK*constp;
功能:返回p指向的栈的实际元素个数pos
流程:调用栈的实际元素个数pos入口参数:p出口参数:pos2.3入栈、出栈模块:
1)STACK*constpush(STACK*constp,inte;
功能:将e入栈,并返回p
流程:栈中元素加1,栈的实际元素个数加1,返回p.入口参数:p,e出口参数:p
2STACK*constpop(STACK*constp,inte;
功能:出栈到e,并返回p
流程:栈中元素减1,栈的实际元素个数减1,返回p
-2-
面向对象程序设计实验报告
入口参数:p,e出口参数:p
2.4打印、销毁模块:
1)voidprint(constSTACK*constp;
功能:打印p指向的栈
流程:按后进先出顺序输出.栈中的元素入口参数:p出口参数:空
2voiddestroySTACK(STACK*constp;
功能:销毁p指向的栈
流程:销毁内存,栈的成员max、pos赋0.入口参数:p出口参数:空
三、软件开发
使用的软件为codebrocks.四、软件测试
测试栈的初始化、入栈、出栈、打印栈等函数
1、初始化p和s指向的最大元素为10的栈;
2、将1、2、3、4、5按先后顺序入s指向的栈,并打印s指向的栈。3、对s指向的栈执行2次出栈操作,输出出栈的元素,并打印s指向的栈4、输出s指向的栈的实际元素个数5、赋s指向的栈给p指向的栈6、打印p指向的栈7、销毁p和s指向的栈
-3-
面向对象程序设计实验报告
五、特点与不足
1.技术特点
程序比较简洁易懂,一目了然。2.不足和改进的建议
测试时需要修改main程序,没有人机交互界面,测试不方便。改进的建议是设计一个人机交互界面,使用户操作起来更方便。
六、过程和体会
1.遇到的主要问题和解决方法
主要问题:遗忘了关于栈的操作的具体内容,写起来比较生涩解决方法:认真复习了一下栈的操作。
2.课程设计的体会
学过的知识要时常拿出来复习,才能真正掌握它们。做实验时要认真思考,学会灵活运用已掌握的知识,争取举一反三。
七、源码和说明
1.文件清单及其功能说明
实验1的工程、源文件main.c、可执行程序.exe文件。
2.用户使用说明书
打开实验1中的c工程,运行就可看到结果。
3.源代码
#include
-4-
面向对象程序设计实验报告
#include#include#include
#defineINIT_SIZE5//初始大小
#defineINCREASE_SIZE5//每次增加大小
usingnamespacestd;typedefstructSTACK{
int*elems;//申请内存用于存放栈的元素intmax;//栈能存放的最大元素个数
intpos;//栈实际已有元素个数,栈空时pos=0;}STACK;
voidinitSTACK(STACK*constp,intm;//初始化p指向的栈:最多m个元素voidinitSTACK(STACK*constp,constSTACK&s;//用栈s初始化p指向的栈inthowMany(constSTACK*constp;//返回p指向的栈的实际元素个数posSTACK*constpush(STACK*constp,inte;//将e入栈,并返回pSTACK*constpop(STACK*constp,int&e;//出栈到e,并返回p
STACK*constassign(STACK*constp,constSTACK&s;//赋s给p指的栈,并返回pvoidprint(constSTACK*constp;//打印p指向的栈voiddestroySTACK(STACK*constp;
//销毁p指向的栈
intmain({inte;STACKp,s;
initSTACK(&p,10;//初始化最大元素个数为10的栈initSTACK(&s,10;
push(&s,1;//将1入栈spush(&s,2;push(&s,3;push(&s,4;push(&s,5;
print(&s;//打印栈spop(&s,e;//出栈pop(&s,e;
-5-
面向对象程序设计实验报告
print(&s;//assign(&p,s;//print(&p;return0;}
voidinitSTACK(STACK*constp,intm{STACKs={(int*malloc(m*sizeof(int,m,0};
*p=s;
}
voidinitSTACK(STACK*constp,constSTACK&s{
p->elems=(int*malloc(INIT_SIZE*sizeof(int;p->max=s.max;for(inti=0;ielems[i]=s.elems[i];}}
inthowMany(constSTACK*constp{
if(p->elems!=NULL//若栈存在returnp->pos;elsereturn0;}
STACK*constpush(STACK*constp,inte{
if(p->elems!=NULL{
inti=p->pos;p->elems[i]=e;
-6-
面向对象程序设计实验报告
p->pos++;returnp;
}}
STACK*constpop(STACK*constp,int&e{
if(p->elems!=NULL{
e=*(p->elems+p->pos-1;printf("%d\n",e;p->pos--;returnp;}}
STACK*constassign(STACK*constp,constSTACK&s{
if(p->elems!=NULL{
p->max=s.max;for(inti=0;ielems[i]=s.elems[i];printf("%d\n",p->elems[i];p->pos++;}}}
voidprint(constSTACK*constp{
if(p->elems!=NULL{
for(inti=0;ipos;i++coutpos=0;deletep->elems;}}
打印源码清单。源码关键位置要有注释。
-8-
推荐访问:程序设计 面向对象 心得 面向对象程序设计实验报告心得 面向对象程序设计实验报告心得 面向对象程序设计实验报告心得体会