《软件设计》 原型模式

news/2024/11/21 0:12:19/文章来源:https://www.cnblogs.com/dmx-03/p/18559706

原型模式---向量的原型的实验

下面是代码部分和要求部分:

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

用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;

}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-10-18《软件设计》抽象工厂模式

今天做了抽象工厂模式--人与肤色的实验,最终成功运行成功人与肤色的代码; 下面是操作流程和步骤: [实验任务一]:人与肤色 使用抽象工厂模式,完成下述产品等级结构: 实验要求: 1. 画出对应的类图;2.提交源代码;Java: public class BlackFactory implements MWFactory {…

Alpha冲刺(7/14)——2024.11.17

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余时间施靖杰 查…

一款绘制3D架构图的在线神器:iCraft Editor

在软件开发的世界里,架构图是系统设计的蓝图,它们不仅帮助团队理解系统的整体结构,还能提升沟通效率,确保项目的顺利推进。然而,绘制一张清晰、直观的架构图,往往需要大量时间和专业工具。面对繁琐的操作和复杂的学习曲线,不少程序员感到力不从心。 之前DD有给大家推荐过…

敏捷开发:Scrum 中的 Product Backlog 介绍

Product Backlog 产品待办列表 在计划开发产品功能时,都希望产品功能上线后,用户能够喜欢并经常使用。 因此在开发产品新功能时,就要衡量哪些产品需求是对用户最有价值,这是最应该思考的问题。 然后把这些有价值的需求集合放在一起。当然,也有与需求实现相关的其它工作项。…

自我理解的洋葱模型

前言 简单说自己理解的洋葱模型。 正文 先来看一个洋葱模型:这个是ddd的洋葱模型。 我们看到最里面的是domain model。 为什么里面是domain model呢? 领域模型 domain model 是做什么的,是实现我们业务逻辑模型的,这个重中之重。 然后看domain services 是什么呢? 当涉及到…

B.XOR = 平均值

题目 给你一个整数 n 。找出一个由 n 个整数 a1, a2, ..., an 组成的序列,使得所有 i 和 i<= ai<=10^9 都是i<=ai<=10^9 。其中⊕表示 bitwise XOR。 可以证明存在满足上述所有条件的整数序列。 输入 第一行输入包含 t ( i <= t <= 10^4 ) - 测试用例数。 每…

攻防世界-easyupload

打开环境有一个文件上传的界面 结合题目名字,这是一道木马上传的题目 直接上传木马图片 给出回显“Your file looks wicked”,这说明了此处的文件上传存在过滤首先尝试修改一句话木马的构造<?php @eval($_POST[1]);?><?=eval($_POST[1]);?>利用直接利用短标签…

yolo --- 官方提供的预训练模型

下载路径:https://github.com/ultralytics/ultralytics官方提供了不同规格的模型,其含义分别如下:规格含义示例YOLOv8 Nano 非常小 YOLOv8nYOLOv8 Small 小 YOLOv8sYOLOv8 Medium 中 YOLOv8mYOLOv8 Large 大 YOLOv8lYOLOv8 X(Extra Large) 非常大 YOLOv8x

关于远程连接虚拟机Network error: Connection timed out的问题

今日在使用MobaXterm远程连接虚拟机的时候报错Network error: Connection timed out。令我感到诧异,昨天都能连上,今天突然不行了。经过查看发现我所使用的NAT模式的ip并没有发生改变可以看到我这里虚拟机使用的是VMnet8解决方式为:1.在控制面版中搜索“网络”,点击查看网络…

基于木舟平台浅谈surging 的热点KEY的解决方法

一、概述上篇文章介绍了基于surging的木舟平台如何构建起微服务 ,那么此篇文章将介绍基于木舟平台浅谈surging 的热点KEY的解决方法木舟 (Kayak) 是什么?木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编…

单变量微积分学习笔记:线性和二阶近似(16)【3】

线性近似 公式 \(x \to x_0\),\(f(x) \approx f(x_0) + f(x_0)(x-x_0)\)【切线】推导: \(f(x_0) = \lim_{x \to x_0}\frac{f(x)-f(x_0)}{x-x_0}\)【导数的定义】推论 前提:\(x \approx 0\), \[\sin(x) \approx x \]\[\cos(x) \approx 1 \]\[e^x \approx 1 + x \]\[ln(x+1) …

Spring之OCP开闭原则和DIP依赖倒置原则

通过如下代码,来分析几个开发原则(OCP开闭原则和DIP依赖倒置原则) 代码结构1.Test类 package com.xu.spring6.client;import com.xu.spring6.web.UserAction;public class Test {public static void main(String[] args) {UserAction userAction = new UserAction();userAct…