OOP HomeWork

This commit is contained in:
e2hang
2025-08-11 00:01:30 +08:00
commit e8a5ca2363
119 changed files with 3187 additions and 0 deletions

86
oop_hw6/hw5/main.cpp Normal file
View File

@@ -0,0 +1,86 @@
#include <iostream>
using namespace std;
class CallBackObject;
class Server
{
public:
Server(int size) :len(size)
{
data = new int [len];//1
for (int i = 0;i < len;++i)
data[i] = i + 1;
}
~Server() { delete[] data; }//2
int Total(CallBackObject& obj);
private:
int len;
int* data;
};
class CallBackObject
{
public:
virtual ~CallBackObject() {}
virtual int CallBackFunc(int val) = 0;//4
};
class ClientA :public CallBackObject
{
public:
virtual ~ClientA() {}
virtual int CallBackFunc(int val)
{
return val;
}
void RequestA(Server& srv)
{
cout << srv.Total(*this) << endl;//5
}
};
int Server::Total(CallBackObject& obj)
{
int sum = 0;
for (int i = 0; i < len; ++i) {
sum += obj.CallBackFunc(data[i]);//3
}
return sum;
}
class ClientB :public CallBackObject
{
public:
virtual ~ClientB() {}
virtual int CallBackFunc(int val)
{
return val * val;//6
}
void RequestB(Server& srv) {
cout << "ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=" << srv.Total(*this) << endl;//7
}
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
int main()
{
Server srv2(2), srv5(5);
ClientA a;
a.RequestA(srv2); //<2F><><EFBFBD><EFBFBD>3
a.RequestA(srv5); //<2F><><EFBFBD><EFBFBD>15
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
Server ssrv3(3);
ClientB b;
b.RequestB(srv2);
b.RequestB(srv3);
return 0;
}
/*
1)<29><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>1 - 5<><35><EFBFBD><EFBFBD>ȷ<EFBFBD>Ĵ<EFBFBD><C4B4>ʹ<EBA3AC><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3<CEAA><33>15.
2)<29><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>6 - 7<><37><EFBFBD><EFBFBD>ȷ<EFBFBD>Ĵ<EFBFBD><C4B4>ʹ<EBA3AC><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 5
ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 14
3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ClientB<74>е<EFBFBD><D0B5><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
1 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 9
1 2 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 36
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB