首页 > 其他分享 >软件设计6

软件设计6

时间:2023-11-26 19:35:40浏览次数:32  
标签:begin end cout 软件设计 double len vector

[实验任务一]:向量的原型

用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。

实验要求:

1. 画出对应的类图;

 

 

 

2. 提交源代码(用C+

 

 

完成);

#include "stdafx.h"

 

using namespace std;

 

 

 

class AbstractVector

 

{

 

public:

 

 

 

virtual AbstractVector* Clone() const = 0;

 

virtual void showData() = 0;

 

 

 

public:

 

double* len;//向量长度'

 

double begin;

 

double end;

 

 

 

 

 

};

 

 

 

 

 

class vector:public AbstractVector{

 

 

 

 

 

public: vector(double beg, double en){

 

begin = beg;

 

end = en;

 

len = new double;

 

if (end >= begin)

 

*len = end - begin;

 

else

 

*len = begin - end;

 

}

 

vector(const vector& cp){

 

int cho=0;

 

begin = cp.begin;

 

end = cp.end;

 

cout << "深克隆输入1,浅克隆选择2" << endl;

 

cin >> cho;

 

if (cho == 1){

 

len = new double;

 

*len = *(cp.len);

 

}

 

else

 

len = cp.len;

 

 

 

}

 

void showData(){

 

cout << "向量的长度为" << *len<<endl;

 

 

 

}

 

AbstractVector* Clone() const{

 

return new vector(*this);

 

}

 

~vector(){

 

delete len;

 

}

 

 

 

};

 

 

 

int _tmain(int argc, _TCHAR* argv[])

 

{

 

AbstractVector* p = new vector(0,10);

 

AbstractVector* p1 = p->Clone();

 

cout << "p的长度为"; p->showData();

 

cout << "p1的长度为"; p1->showData();

 

if (p->len == p1->len){

 

cout << "这是浅克隆" << endl;

 

cout << "p->len的地址为" << p->len << endl;

 

cout << "p1->len的地址为" << p1->len << endl;

 

 

 

}

 

else{

 

cout << "这是深克隆" << endl;

 

cout << "p->len的地址为" << p->len << endl;

 

cout << "p1->len的地址为" << p1->len << endl;

 

}

 

system("pause");

 

return 0;

 

}

3.注意编程规范

标签:begin,end,cout,软件设计,double,len,vector
From: https://www.cnblogs.com/renliqin/p/17857751.html

相关文章

  • 面向对象软件设计中常见的问题 - 为什么要定义类的私有方法
    "为什么要定义私有方法?"这是一个在面向对象软件设计中常见的问题,涉及到封装性、安全性和设计灵活性等方面的考虑。首先,让我们来看看为什么要使用私有方法。封装性(Encapsulation):面向对象编程的一个基本原则是封装,即将对象的内部细节隐藏起来,只暴露必要的接口给外部。私有方法是......
  • 番外-软件设计(15)
    在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得超过100个字符。3.新的具体会员类可以发送图片信息和文本信息。4.新的具体会员类在发送文本信息时,可以......
  • 番外-软件设计(16)
    改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。实验要求:1. 提交源代码;packageMemorandum_mode; publicclassCaretaker{    privateMemento[]array=null;    privateintindex;    ......
  • 2024年面向Java程序员的20个系统和软件设计面试题
    0前言系统设计问题是编程面试的重要组成部分,如果你想取得好成绩,就必须准备。在我的网站,分享了八股面试题时,也分享了一些系统设计问题,但粉丝们一直在要求更多问题,因为这个主题的确很难掌握,需要更多练习。我自己也收集了一些从朋友和同事那里获得的面试题,但为了这篇文章和自己的准......
  • 软件设计5
    实验5:建造者模式 [实验任务一]:计算机组装 使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。 实验要求: 1. 画出对应的类图;     2. 提交源代码; 1.Builde......
  • 软件设计模式学习每日总结-第九天
    第九天组合模式:组合多个对象形成树形结构,使得叶子和容器的使用具有一致性。透明组合模式:声明了对象的所有的方法。安全组合模式:不声明对象的方法。 ......
  • 什么是计算机软件设计领域的 Edge Case
    在软件设计领域,EdgeCase(边缘情况)是一个重要的概念。简单来说,EdgeCase是指在系统的输入、操作或使用环境达到一些极限或者特殊情况时的场景。这些场景通常在正常使用条件下不太可能出现,但是如果发生,可能会导致系统行为异常,比如性能下降、功能失效,甚至系统崩溃。因此,在设计和测试......
  • 11.20软件设计实验二
    实验18:迭代器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解迭代器模式的动机,掌握该模式的结构;2、能够利用迭代器模式解决实际问题。 [实验任务一]:JAVA和C++常见数据结构迭代器的使用信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA......
  • 软件设计模式学习每日总结-第七天
    第七天学习结构型模式:描述如何将对象或类组合成更大的结构。类结构型模式:类的组合对象结构模式:类与对象的组合适配器模式:使接口不兼容的类可以一起工作。  ......
  • 番外-软件设计(12)
    某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。实验要求:1. 提交类图;......