一、任务
婚介所
婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
二、类图
三、代码
1、Java代码
1 package tutorial14; 2 3 import java.util.Scanner; 4 5 public class Client { 6 7 public static void main(String[] args) { 8 // TODO 自动生成的方法存根 9 10 AbstractMatchMaking amm=new MatchMakingProxy(); 11 System.out.println("*******欢迎来到婚介所*******"); 12 System.out.println("您可以简单浏览一下我们的嘉宾信息...."); 13 amm.viewInformation(); 14 System.out.println("*******请登记一下您的基本信息*******"); 15 System.out.println("您的年龄:"); 16 Scanner in =new Scanner(System.in); 17 int age=in.nextInt(); 18 amm.improveInformation(age); 19 if(age>=18) { 20 amm.postAnnouncement(); 21 } 22 23 } 24 25 }
1 package tutorial14; 2 3 public interface AbstractMatchMaking { 4 5 public void viewInformation(); 6 public void postAnnouncement(); 7 public void improveInformation(int age); 8 }
1 package tutorial14; 2 3 public class MatchMaking implements AbstractMatchMaking{ 4 5 @Override 6 public void viewInformation() { 7 // TODO 自动生成的方法存根 8 System.out.println("您正在浏览查看婚介对象基本信息"); 9 } 10 11 @Override 12 public void postAnnouncement() { 13 // TODO 自动生成的方法存根 14 System.out.println("您发布了一条征婚启事,请注意查收结果消息"); 15 } 16 17 @Override 18 public void improveInformation(int age) { 19 // TODO 自动生成的方法存根 20 21 } 22 23 }
1 package tutorial14; 2 3 public class MatchMakingProxy implements AbstractMatchMaking{ 4 5 private MatchMaking client=new MatchMaking(); 6 private int age=18; 7 @Override 8 public void viewInformation() { 9 // TODO 自动生成的方法存根 10 System.out.println("您正在浏览查看婚介对象基本信息"); 11 12 } 13 14 @Override 15 public void postAnnouncement() { 16 // TODO 自动生成的方法存根 17 if(age>=18) { 18 System.out.println("发布征婚启事"); 19 }else if(age<18) { 20 System.out.println("对不起,不能早恋!"); 21 } 22 } 23 24 @Override 25 public void improveInformation(int age) { 26 // TODO 自动生成的方法存根 27 28 this.age=age; 29 if(age<18) { 30 System.out.println("对不起,不能早恋!"); 31 }else if(age>=18) { 32 System.out.println("信息登记完成......"); 33 } 34 } 35 36 }
2、C++代码
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Person 6 { 7 public: 8 virtual void findLove() = 0; 9 virtual void result(int age) = 0; 10 }; 11 12 class Customer :public Person { 13 public: 14 void findLove() { 15 cout << "嘉宾1:27周岁 身高178cm 体重65kg 医生" << endl; 16 cout << "嘉宾2:32周岁 身高182cm 体重70kg 律师" << endl; 17 cout << "嘉宾3:26周岁 身高175cm 体重62kg 程序员" << endl; 18 } 19 void result(int age) { 20 if (age < 18) { 21 cout << "对不起,不能早恋!" << endl; 22 cout << "终止业务——————" << endl; 23 } 24 else if (age >= 18) { 25 cout << "已为您登记好信息...." << endl; 26 cout << "请等待匹配结果......" << endl; 27 } 28 } 29 }; 30 31 //Proxy 32 class Intermediary :public Person 33 { 34 public: 35 Intermediary(Person* person) :m_Person(person) {} 36 void findLove() 37 { 38 cout << "*******欢迎来到婚介所*******" << endl; 39 cout << "您可以简单浏览一下我们的嘉宾信息...." << endl; 40 m_Person->findLove(); 41 } 42 void result(int age) { 43 if (age < 18) { 44 cout << "对不起,不能早恋!" << endl; 45 cout << "终止业务——————" << endl; 46 } 47 else if (age >= 18) { 48 cout << "已为您登记好信息...." << endl; 49 cout << "请等待匹配结果......" << endl; 50 } 51 } 52 private: 53 Person* m_Person; 54 }; 55 56 //场景 57 int main() 58 { 59 Person* xiaoM = new Customer; 60 Person* intermediary = new Intermediary(xiaoM); 61 intermediary->findLove(); 62 cout << "*******请登记一下您的基本信息*******" << endl; 63 cout << "您的年龄:" << endl; 64 int age; 65 cin >> age; 66 intermediary->result(age); 67 68 return 0; 69 }
四、结果
1、Java结果截图:
2、C++结果截图: