第八章:应用框架内容摘要:

以 , 执行时输出: Customer: Linda。 三、应用框架的特点 ☆ 指针可以当做函数的自变量。 例如 , include include // class Person and Customer void Set( Person* p ) { pSetName( Amy )。 } void main() { Customer cust。 ( Linda )。 Set( amp。 cust )。 ()。 } 此时 p 指向 cust对象 , 是正确的。 此程序输出: Customer: Amy。 三、应用框架的特点 ☆ 函数可以回传抽象类的指针。 例如 , include // class Person and Customer Person* sub() { Customer* pc = new Customer()。 pcSetName( Tom )。 return (Person*)pc。 } void main() { sub()Display()。 delete sub()。 } 此程序输出: Customer: Tom。 return指令将 pc 值转为 Person*类型的指针 , 然后传回来 , 于是 sub() 值为 Person类的指针 , 正指向 new 所产生的对象。 三、应用框架的特点 一、框架概述 二、应用框架应用 三、应用框架的特点 四、应用框架设计方法 五、实际应用 基于 UML描述的应用框架模型 ☆ 能声明抽象类的引用 (Reference)。 由于引用与指针是一体的两面 , 引用的本质是指针 , 所以 C++ 允许: ◎ 声明抽象类的引用。 ◎ 抽象类的引用可以做为函数的自变量。 ◎ 函数可以传回抽象类的引用值。 include // class Person and Customer Personamp。 sub( Personamp。 x ) { ( John )。 return x。 } void main() { Customer cust。 sub(cust).Display()。 } 此程序输出: Customer: John。 其中 , sub() ≡ x ≡ cust。 所以 sub(cust).Display() 指令相当于 ── ()。 四、应用框架的特点 双向通信 ( 正向通信 ) 传统的链接库 (Function Library)及类库 (Class Library) 只提供单向通信 , 而应用框架则提供双向通信。 应用框架也提供了正向通信方法。 例如 , 假设前面所谈过的 Person及 Customer两类已存于应用框架中 ,则可写程序如下: class VIP : public Customer { char tel[15]。 public: VIP( char* na, char* t ) { SetName( na )。 strcpy( tel, t )。 } virtual void Display() { Customer::Display()。 cout TEL: tel endl。 } }。 void main() { VIP v( “Zhengwei, “13060408095 )。 ()。 } 执行时输出: Customer: Zhengwei TEL: 13060408095 四、应用框架的设计方法 双向通信 ( 反向通信 ) 前辈调用晚辈。 这种情形称为反向通信。 例如 , 假设框架中增加了Product服务类如下: class Product { protected: int pno。 Customer* pc。 public: Product( int no ) { pno = no。 } void SoldTo( Customeramp。 c ) { pc = amp。 c。 } void Inquire() { Print()。 cout sold to ... endl。 pcDisplay()。 } virtual void Print()=0。 }。 四、应用框架的设计方法 VIP程序如下: include // class Person and Customer class Product class VIP : public Customer { char tel[15]。 public: VIP( char* na, char* t ) { SetName( na )。 strcpy( tel, t )。 } virtual void Display() { Customer::Display()。 cout TEL: tel endl。 } }。 class TV : public Product { double price。 public: TV( int no, double pr ) : Product( no ) { price = pr。 } virtual void Print() { cout TV No: pno endl。 cout Price: price endl。 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。