UML类图详解_泛化关系
生活随笔
收集整理的這篇文章主要介紹了
UML类图详解_泛化关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
泛化其實就是繼承關系,還是比較簡單的,那么我們就把之前有些問題的博客UML類圖重新來實現一次。
依舊是這個圖
下面我們來看一個例子
Account.h
1 #include <cstdlib> 2 #include <vector> 3 #include "Bid.h" 4 using namespace std; 5 6 class Account 7 { 8 public: 9 void setBid(Bid*); 10 int calcAsset(); 11 private: 12 vector<Bid*> bidObj; 13 };Account.cpp
1 #include "Account.h" 2 3 void Account::setBid(Bid *theBid) 4 { 5 bidObj.push_back(theBid); 6 } 7 8 int Account::calcAsset() 9 { 10 int size,theAsset=0; 11 size=bidObj.size(); 12 for(int i=0;i<size;i++) 13 theAsset=theAsset+bidObj[i]->calcAsset(); 14 return theAsset; 15 }Bid.h
1 #include "Fund.h" 2 3 class Bid 4 { 5 public: 6 void setFund(Fund*); 7 virtual int calcAsset()=0; 8 virtual float getUnit()=0; 9 protected: 10 Fund *fundObj; 11 };Bid.cpp
1 #include "Bid.h" 2 3 void Bid::setFund(Fund *theFund) 4 { 5 fundObj=theFund; 6 }Fund.h
1 class Fund 2 { 3 public: 4 Fund(float); 5 float getPrice(); 6 private: 7 float price; 8 };Fund.cpp
1 #include "Fund.h" 2 3 Fund::Fund(float thePrice) 4 { 5 price=thePrice; 6 } 7 8 float Fund::getPrice() 9 { 10 return price; 11 }SingleBid.h
1 class SingleBid : public Bid 2 { 3 public: 4 SingleBid(float); 5 int calcAsset(); 6 float getUnit(); 7 private: 8 float unit; 9 };SingleBid.cpp
1 #include "SingleBid.h" 2 3 SingleBid::SingleBid(float theUnit) 4 { 5 unit=theUnit; 6 } 7 8 int SingleBid::calcAsset() 9 { 10 return unit*fundObj->getPrice(); 11 } 12 13 float SingleBid::getUnit() 14 { 15 return unit; 16 }RegularBid.h
1 #include <cstdlib> 2 #include <vector> 3 #include "BidItem.h" 4 #include "Bid.h" 5 using namespace std; 6 7 class RegularBid : public Bid 8 { 9 public: 10 RegularBid(); 11 int calcAsset(); 12 float getUnit(); 13 14 private: 15 vector<BidItem*> itemObj; 16 };RegularBid.cpp
1 #include "RegularBid.h" 2 3 RegularBid::RegularBid() 4 { 5 BidItem *myItem; 6 myItem=new BidItem(59.53); 7 itemObj.push_back(myItem); 8 myItem=new BidItem(89.85); 9 itemObj.push_back(myItem); 10 myItem=new BidItem(91.45); 11 itemObj.push_back(myItem); 12 } 13 14 float RegularBid::getUnit() 15 { 16 int size; 17 float theUnit=0; 18 size=itemObj.size(); 19 for(int i=0;i<size;i++) 20 theUnit=theUnit+itemObj[i]->getUnit(); 21 return theUnit; 22 } 23 24 int RegularBid::calcAsset() 25 { 26 return getUnit()*fundObj->getPrice(); 27 }BidItem.h
1 class BidItem 2 { 3 public: 4 BidItem(float); 5 float getUnit(); 6 private: 7 float unit; 8 };BidItem.cpp
1 #include "BidItem.h" 2 3 BidItem::BidItem(float theUnit) 4 { 5 unit=theUnit; 6 } 7 8 float BidItem::getUnit() 9 { 10 return unit; 11 }main.cpp
1 // main.cpp 2 // 3 4 #include <cstdlib> 5 #include <iostream> 6 #include "SingleBid.h" 7 #include "RegularBid.h" 8 #include "Account.h" 9 #include "Fund.h" 10 using namespace std; 11 12 int main(int argc, char *argv[]) 13 { 14 Fund *myFund; 15 SingleBid *mySingleBid; 16 RegularBid *myRegularBid; 17 Account myAccount; 18 19 myFund=new Fund(19.84); 20 mySingleBid=new SingleBid(935.76); 21 mySingleBid->setFund(myFund); 22 myAccount.setBid(mySingleBid); 23 cout << "大華大華基金單位及凈值: " 24 << "(" << mySingleBid->getUnit() << ")" 25 << "(" << myFund->getPrice() << ")" << endl; 26 27 myFund=new Fund(37.83); 28 mySingleBid=new SingleBid(721.45); 29 mySingleBid->setFund(myFund); 30 myAccount.setBid(mySingleBid); 31 cout << "日盛上選基金單位及凈值: " 32 << "(" << mySingleBid->getUnit() << ")" 33 << "(" << myFund->getPrice() << ")" << endl; 34 35 myFund=new Fund(49.61); 36 myRegularBid=new RegularBid(); 37 myRegularBid->setFund(myFund); 38 myAccount.setBid(myRegularBid); 39 cout << "富邦長虹基金單位及凈值: " 40 << "(" << myRegularBid->getUnit() << ")" 41 << "(" << myFund->getPrice() << ")" << endl << endl; 42 43 cout << "總資產為: " 44 << myAccount.calcAsset() << endl << endl; 45 46 system("PAUSE"); 47 return EXIT_SUCCESS; 48 }下面我們來畫一下UML圖,并且用UML自動生成C++代碼來做一個比較
生成代碼對比?
Account.h
達到預期
Bid.h
達到預期
Fund.h
達到預期
SingleBid.h
達到預期
RegularBid.h?
達到預期
BidItem.h?
達到預期
?
轉載于:https://www.cnblogs.com/abc-begin/p/7750506.html
總結
以上是生活随笔為你收集整理的UML类图详解_泛化关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 基础,登录前端验证
- 下一篇: CSS 画一个八卦