首页 > 其他分享 >番外-软件设计(3)

番外-软件设计(3)

时间:2023-11-05 20:35:44浏览次数: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/zjsdbk/p/17811079.html

相关文章

  • 番外-软件设计(4)
    仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;2.提交源代码;1.Clientpackage Singleton_pattern; public class Client{public static void main(String[] args){StudentIDstu1,stu2;stu1=StudentID.getStudentID();......
  • 软件设计实验7:单例模式
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;  2......
  • 软件设计实验6:原型模式
     实验6:原型模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解原型模式的动机,掌握该模式的结构;2、能够利用原型模式解决实际问题。 [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量......
  • 软件设计实验4:抽象工厂模式
    实验4:抽象工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解抽象工厂模式的动机,掌握该模式的结构;2、能够利用抽象工厂模式解决实际问题。 [实验任务一]:人与肤色使用抽象工厂模式,完成下述产品等级结构: 实验要求:1. 画出对应的类图; 2. 提交源代......
  • 软件设计实验5:建造者模式
    实验5:建造者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解建造者模式的动机,掌握该模式的结构;2、能够利用建造者模式解决实际问题。 [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起......
  • 软件设计实验1:UML与面向对象程序设计原则
    实验1:UML与面向对象程序设计原则本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、掌握面向对象程序设计中类与类之间的关系以及对应的UML类图;2、理解面向对象程序设计原则。 [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关......
  • 软件设计实验2:简单工厂模式
    实验2:简单工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解简单工厂模式的动机,掌握该模式的结构;2、能够利用简单工厂模式解决实际问题。 [实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参......
  • 软件设计实验3:工厂方法模式
    实验3:工厂方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解工厂方法模式的动机,掌握该模式的结构;2、能够利用工厂方法模式解决实际问题。 [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryption......
  • 软件设计-状态模式
    publicclass状态模式{publicstaticvoidmain(String[]args){Contextcontext=newContext();context.Request();context.Request();context.Request();//System.out.println(context.getState());context......
  • 软件设计-装饰器模式
    publicclass装饰器模式{publicstaticvoidmain(String[]args){//第一种写法Personperson=newStudent("张三");person.Operation();System.out.println();person=newDecoratorA(person);person.Oper......