調用返回風格
1、 主程序-子程序風格
2、 面向對象風格
主程序-子程序:
組件–主程序、子程序
連接件–調用-返回機制
拓撲結構–層次化結構
主程序-子過程風格的優點與缺點
§優點:
–有效地將一個較複雜的程序系統設計任務分解成許多易於控制和處理的子任務,便於開發和維護–已被證明是成功的設計方法,可以被用於較大程序
缺點:
–規模:程序超過10萬行,表現不好;程序太大,開發太慢,測試越來越困難
–可重用性差、數據安全性差,難以開發大型軟件和圖形界面的應用軟件
–把數據和處理數據的過程分離爲相互獨立的實體,當數據結構改變時,所有相關的處理過程都要進行相應的修改
–圖形用戶界面的應用程序,很難用過程來描述和實現,開發和維護也都很困難。
程序:int main()
{
int m=0,n=0;
cin>>m;
cin>>n;
cout<<Sum(m,n)<<endl;
cout << "Hello world!"<< endl;
return 0;
}
int Sum(int i1,inti2)
{
return(i1+i2);
}
組件:main函數與Sum函數。連接件:Sum(m,n);
面向對象風格:
組件是:類和對象
連接件:對象之間通過功能與函數調用實現交互。
OO風格優點
§複用和維護:利用封裝和聚合提高生產力
–因爲對象對其它對象隱藏它的表示,所以可以改變一個對象的表示,而不影響其它的對象。
–某一組件的算法與數據結構的修改不會影響其他組件
–組件之間依賴性降低,提高了複用度
§反映現實世界
§容易分解一個系統
–設計者可將一些數據存取操作的問題分解成一些交互的代理程序的集合
OO風格缺點
§管理大量的對象:怎樣確立大量對象的結構
§繼承引起複雜度,關鍵系統中慎用
§必須知道對象的身份
–爲了使一個對象和另一個對象通過過程調用等進行交互,必須知道對象的標識。只要一個對象的標識改變了,就必須修改所有其他明確顯式調用它的對象,並消除由此帶來的一些副作用(例如,如果A使用了對象B,C也使用了對象B,那麼,C對B的使用所造成的對A的影響可能是料想不到的)
–對比:在管道-過濾器系統中,一個過濾器無需知道其他過濾器的任何信息
§不是特別適合功能的擴展。爲了增加新功能,要麼修改已有的模塊,要麼就加入新的模塊,從而影響性能
程序:class Person
{
private:
string Name;
int Age;
public:
Person(string name,int age)
{
Name=name;
Age=age;
}
string getName()
{
return Name;
}
int getAge()
{
return Age;
}
};
class student
{
public:
bool set(Person p,double score)
{
cout<<"姓名:"<<p.getName()<<endl;
cout<<"年齡:"<<p.getAge()<<endl;
cout<<"成績:"<<score<<endl;
return true;
}
};
int main()
{
Person p("張三",20);
student s;
s.set(p,98.9);
return 0;
}
組件:Person類與student類還有主程序。連接件:Person p("張三",20); s.set(p,98.9);