应用软件设计01

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

应用软件设计第1讲:C++知识介绍信息技术(InformationTechnology)信息技术是指有关信息的收集、识别、提取、变换、存贮、传递、处理、检索、检测、分析和利用等的技术。凡涉及到这些过程和技术的工作部门都可称作信息部门。信息技术能够延长或扩展人的信息功能。信息技术可能是机械的,也可能是激光的;可能是电子的,也可能是生物的。信息技术主要包括三大技术:传感技术,通信技术,计算机技术等。计算机技术是“大脑”,通信技术是“神经系统”,传感技术是“感觉器官”。软件的分类硬件(Hardware)组成计算机的部件软件(Software)固件(Firmware)固化在只读存储芯片中的程序应用软件(Application)面向用户使用的软件。中间件(Middleware)在操作系统之上,支持应用系统开发和运行的系统软件。系统软件(System)操作系统、管理系统、控制系统等。•操作系统(OperatorSystem)负责控制和管理计算机资源的系统软件。软件开发的三个层次1.程序语言低级语言:面向硬件系统的语言如各种汇编语言MCS-51/Intel8086高级语言:面向程序员的语言面向过程的语言:Basic/Fortran/Pascal/C面向对象的语言:C++/Java/C#标记语言:html/xml软件开发的三个层次2.数据结构1.线性表(List)2.栈(Stack)和队列(Queue)3.树(Tree)4.图(Graph)5.查找(Search)6.排序(Sort)软件开发的三个层次3.软件工程1.软件的生成周期2.系统分析/可行性研究/软件计划3.需求分析4.概要设计5.详细设计6.界面/数据库/编码§程序语言的发展20世纪80年代中期后出现C++等多种面向对象语言Algol60BCPLCPascalSimula67SmalltalkFortranFortran77Fortran66AlgolC++JavaC#NextGenerationInternetWebsiteWebsiteWebsiteBackendAppMegaServiceBackendAppMegaServiceLoosely-coupled,servicesconnectedbyXML-basedmessagesandcontracts,writteninmanylanguagesServiceDeviceXML-msgsServiceServiceServiceThe.NETFrameworkBaseClassLibraryCommonLanguageSpecificationCommonLanguageRuntimeADO.NET:DataandXMLVBC++C#VisualStudio.NETASP.NET:WebServicesandWebFormsJScript…WindowsFormsWindowsFormsCLR:ExecutionModelVBSourcecodeCompilerC++C#CompilerCompilerAssemblyILCodeAssemblyILCodeAssemblyILCodeOperatingSystemServicesCommonLanguageRuntimeJITCompilerNativeCodeManagedcodeUnmanagedComponent软件开发岗位分类及要求岗位名称岗位要求网页设计师HTML,CSS,ASP/JSP+JScrip网络开发工程师Java,网页设计技术,数据库开发技术软件测试工程师VC++,Java,软件测试技术软件界面工程师VC++,Java,Delphi,界面开发技术多媒体开发工程师VC++,Java,多媒体开发技术(DirectX、JMF)游戏开发工程师VC++,Java,Flash,动画开发技术(OpenGL、Direct3D)软件算法工程师数学,某领域的算法实现技术(C/C++、Java等)系统分析师、系统架构师、项目管理师软件工程、IT技术2010年9月北美地区计算机语言排行榜(TOIBESoftware)本课程主要参考书《应用软件设计教程》,徐品、李绍彬、蓝善祯,中国广播电视出版社,2009C++与数据结构的推荐参考书《C++程序设计教程》,H.M.Deitel,机械工业出版社,2000.6《数据结构实用教程(C/C++描述)》,徐孝凯,清华大学出版社,1999.12本课讲授计划1.前面两周复习C++和数据结构,10月12号做一次课堂测验。计20分。2.以矢量绘图为例讲“软件设计”的实用知识。并介绍MFC(VC++6.0)的编程方法。3.指导大家做三个应用软件,从软件开发实例中学习软件设计的方法。第一个软件为20分;后面两个各30分。类的构造函数例1-1结构PERSON的定义structPERSON{intage;//成员变量为public};例1-2类CPerson的定义classCPerson{intAge;//缺省成员变量为privatepublic:intGetAge(){returnAge;}voidSetAge(intage){Age=(age0)?0:age;}};类的构造函数例1-3具有构造函数的类CPersonclassCPerson{public:CPerson(){Age=0;}intGetAge(){returnAge;}voidSetAge(intage){Age=(age0)?0:age;}private:intAge;};类的构造函数例1-4具有多种构造函数的类CPersonclassCPerson{public:CPerson(){Age=0;}CPerson(CPerson&person)//拷贝构造函数{Age=person.age;}intGetAge(){returnAge;}voidSetAge(intage){Age=(age0)?0:age;}private:intAge;};拷贝构造函数被调用的场合(1)拷贝构造函数被调用的第一个场合是用已有对象构造新的对象,如:main(){CPersonperson1(18);CPersonperson2(person1);//调用拷贝构造函数coutperson2.Ageendl;}拷贝构造函数被调用的场合(2)拷贝构造函数的第2个调用场合是作为函数的参数调用时,如:voidFunction(CPersonperson){//参数person的传递过程实际就是重//新构造新的对象的过程。intage=person.Age;coutageendl;}拷贝构造函数被调用的场合(3)还有一个拷贝构造函数的调用场合就是在函数返回的时候。见下面代码:CPersonFunction(){CPersonperson(18);returnperson;}//函数返回一个类的对象,实际也是重//新构造新的对象的过程。带有指针变量的类例1-5析构造函数在对象结束时释放空间classCPerson{public:CPerson(intage=0)//带默认形参的构造函数{Age=age;pPortrait=newchar[64000];}~CPerson(){delete[]pPortrait;}intGetAge(){returnAge;}voidSetAge(intage){Age=(age0)?0:age;}private:intAge;char*pPortrait;};带有指针变量的类指针指向同一块内存!main(){CPersonperson1(18);CPersonperson2(person1);//调用拷贝构造函数deleteperson1;//释放第一个对象的空间}关于类的继承问题例1-6类的继承中的构造和析构函数classBase{public:Base::Base(){coutBaseconstructor\n;}Base::~Base(){coutBasedestructor\n;}voidPrint(){cout“Baseprint\n”;}};关于类的继承问题例1-6类的继承中的构造和析构函数classDerived:publicBase{public:Derived::Derived(){coutDerivedconstructor\n}Derived::~Derived(){coutDeriveddestructor\n}voidPrint(){cout“Derivedprint\n”;}};关于类的继承问题例1-6类的继承中的构造和析构函数main(){Derivedd;d.Print();}可以得到输出结果:BaseconstructorDerivedconstructorDerivedprintDeriveddestructorBasedestructor从这个结果可以得到如下结论:(1)C++具有将基类功能“隐藏”起来的功能。我们一般在程序中看到的是程序中的派生类,而基类却看不到。(2)构造函数的执行顺序是先基类,后派生类;析构时先派生类后基类。为了实现这个机制必须引进虚函数方法。(3)一般函数在执行时会屏蔽基类的同名函数。以类Derived为例,只要将Print()函数改成:voidPrint(){Base::Print();}就行了。静态变量:例1-7关于static变量的例子voidfunction(){staticintcounter=0;//静态变量必须初始化counter++;//每次运算结果会保留下来coutcounter““;}main(){for(inti=0;i10;i++)function();}输出结果:0123456789静态变量:例1-10函数的三种参数调用的例子classTraffic{staticintcarnum;//静态变量必须初始化public:Traffic(){carnum++;}//每次运算结果会保留下来~Traffic(){carnum--;}};intTraffic::carnum=0;//静态变量初始化main(){Traffic*tf[10];for(inti=0;i10;i++)tf[i]=newTraffic;//carnum加1for(i=0;i10;i++)deletetf[i];//carnum减1}三种传值方式:#includeiostream.hvoidfunction1(intvalue)//传值调用{value+=10;coutvalueendl;}voidfunction2(int*pvalue)//传指针调用{*pvalue+=10;cout*pvalueendl;}voidfunction3(int&rvalue)//传引用调用{rvalue+=10;coutrvalueendl;}三种传值方式:main(){intdata=10;function1(data);coutdataendl;//datais10function2(&data);coutdataendl;//datais20function3(data);coutdataendl;//datais30}const的用法:structrecord{charname[10];intage;charcomment[50];};voidfunction1(constrecord*psomeone){psomeone-age+=10;//错误!只读参数不能被修改!}voidfunction2(constrecord&rsomeone){rsomeone.age+=10;//错误!只读参数不能被修改!}运算符重载例1-12一个带有Add函数的Complex类classComplex{public:Complex(floatreal=0,floatimag=0){m_real=real;

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功