MATLAB:面向过程和面向对象程序设计的区别

您所在的位置:网站首页 c++面向过程还是面向对象 MATLAB:面向过程和面向对象程序设计的区别

MATLAB:面向过程和面向对象程序设计的区别

2024-02-09 23:12| 来源: 网络整理| 查看: 265

MATLAB:面向过程和面向对象程序设计的区别 1 概述1.1 面向过程的程序设计方法概述1.2 面向对象的程序设计方法概述 2 案例2.1 面向过程2.2 面向对象2.3 总结 参考

1 概述 1.1 面向过程的程序设计方法概述

“面向过程的程序设计(ProcedureOriented Programming)”的编程思想以过程为中心。该方法从分析解决问题所需的步骤着手,然后用模块依次实现这些步骤,使用时再顺序调用那些模块。 面向过程是人们解决问题的种直观思考方式。当程序规模不很大时,面向过程的设计方法很具优势:程序流程清晰,模块组织结构简明,特别适合于时序性的单任负回题的解决。 面向过程的程序设计方法,首先关心的是功能,强调以模块(过程)为中心,采用模块化、自顶向下、逐步求精的设计过程。系统是实现模块功能的函数和过程的集合,结构清晰、设计简单、可读性好。然而,用户需求的更改和软硬件技术的不断发展,会引发模块间流动数据的改变轻则局部修改作为系统基本组成部分的功能模块,重则需完全重建系统,进而导致软件维护和升级的困难。因此.采用面向过程方法设计的系统,前期开发人手快、后期不得不频繁改动的案例,在实际应用中屡见不鲜。

1.2 面向对象的程序设计方法概述

“面向对象的程序设计(Objeet Oriented Programming)”的编程思想以对象为中心。该设计方法以类和继承为构造机制,通过类对象的构造、组合、互动来认识、理解和刻画客观世界。现实生活中很多事物都可以理解为由单个或多个对象组合而成。例如几个人组合成一个家庭,多个家庭组合成社区,多个社区组合成城市等等。这里,每个人可以看成一个对象,都有身高、体重之类的属性以及代表人行为能力的对象方法。 面向对象的程序设计方法,首先把对象的各种属性和行为进行抽象,进而形成类。类的设计以数据(类属性)为中心,并为这些数据的操作提供各种接口(类方法)。类的属性作为类的核心数据,一般不对外开放,外部只能通过类的接口来访问这些数据。这样的设计有三大优点。

类使用的方便:用户只需要了解类的对外公共接口函数,而不需要过多了解类内部的详细设计。类属性的相对稳定:用户不能直接对类属性进行修改,有的属性甚至不能访问,从而避免了用户的误操作所引起的系统错误。类及系统的维护,升级方便。

类、对象、继承、组合等概念的引人使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径,特别是在具有界面的人机交互操作系统和软件出现之后,面向对象的程序设计方法得到了极快的发展。

2 案例

例:要求编写出的程序有以下功能:在MATLAB环境中,数据的赋值、保存、运算保持在“双精度水平”,由此产生的复数,不以直角坐标形式的x+jy显示,而以极坐标形式的A∠θ°显示;极坐标表示法中的θ应以度数为单位,而不是弧度单位;加法运算应采用通常习惯的“+”符号进行,而不采用调用M函数的方式进行。

2.1 面向过程

MATLAB代码如下:

function [cp,m,a]=Aexm010101PopPolar(cv) % 本函数可把double类的复数显示成“辐角以度数为单位的极坐标形式” % 输入量cv,可采用MATLAB允许的以任何形式输入的复数值 % 输出量cp,字符串 % m,复数的模(Modulus),双精度正值 % a,复数的辐角(Angle),以度数为单位的双精度值 m=abs(cv); % 计算复数模 a=angle(cv)*180/pi; % 计算以度数为单位的复数辐角 cp=sprintf('%.2f%s%.2f%s',m,char(8736),a,char(176)); % 产生极坐标表达字符串 2.2 面向对象

MATLAB代码如下:

% Aexm010101OopPolar.m (类定义函数) classdef Aexm010101OopPolar < handle properties m % 复数的模(Modulus),双精度正值 a % 复数的辐角(Angle),以度数为单位的双精度值 end methods function obj=Aexm010101OopPolar(cv) % 极坐标类构造函数 % cv 以任何形式输入的复数值 obj.m=abs(cv); % 计算模 obj.a=angle(cv)*180/pi; % 计算以读书为单位的辐角 end function disp(obj) % 采用极坐标记述法显示“极坐标对象”obj fprintf('%.2f%s%.2f%s\n', obj.m, char(8736), obj.a, char(176)) end function obj3=plus(obj1,obj2) % 此函数执行obj3=obj1+obj2的运算 % obj1,obj2为极坐标对象 z=obj1.m*exp(1j*obj1.a*pi/180)+obj2.m*exp(1j*obj2.a*pi/180); obj3=Aexm010101OopPolar(z); end end end 2.3 总结 参考

1.书籍-《MATLAB面向对象和CC++编程-凌云、张志涌》 书中示例程序源代码可从网盘中下载。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3