调用返回风格(面向对象与主程序子程序)
来源:互联网 发布:停车场画线软件 编辑:程序博客网 时间:2024/05/21 21:38
调用返回风格
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);
- 调用返回风格(面向对象与主程序子程序)
- KWIC:基于主程序/子程序风格的实现
- 主程序与子程序参数传递
- PERL语言入门:第四章:子程序(函数) :调用子程序与子程序返回值
- 第二章 面向对象的编程风格(调用函数)
- CMD 调用子程序&从子程序返回
- 第三篇 子程序调用与返回的一点小问题
- 汇编语言的主程序与子程序之间的参数传递方式
- 中断调用与子程序调用
- Qt设计师与主程序调用方法
- 《汇编语言》读书笔记(6)——解决子程序与主程序使用的寄存器的冲突
- 面向对象之类的封装与调用
- 08面向对象编程风格
- 中断调用与子程序设计实验
- 调用子程序
- 面向对象编程风格 VS 基于对象编程风格(boost::bind/function)
- 面向对象编程风格 VS 基于对象编程风格(boost::bind/function)
- muduo2 面向对象编程风格 VS 基于对象编程风格(boost::bind/function)
- MySQL主从复制(Master-Slave)
- IOS学习笔记-OC初体验
- 将一些文档(.zip,.txt,.pdf)进行流处理,存储到mysql中blob字段中
- HEAD FIRST HTML&CSS 读书笔记(2)
- VS2012 使用BUG
- 调用返回风格(面向对象与主程序子程序)
- Labview软件的特点
- 【MySQL】(2)数据类型与操作数据表
- Codeforces 558A Lala Land and Apple Trees(Sort快排)
- oracle怎么把系统时间与某个时间的差值与另一个数值进行比较
- uva 1366(dp)
- Android - 交换控件位置:基于LayoutParams的瞬间交换与基于ObjectAnimator动画效果交换
- iOS中runtime运行机制解析
- hdu 1181 变形课