面向对象以及面向过程编程 --- C++ 实例
2018-03-26 19:45
399 查看
Procedure-Oriented and Object-Oriented Programming— A Tiny Example in c++
Here are two tiny program based on c++ for distinguishing the procedure oriented programming and objected oriented programming. The example problem is a simple Number Determination problem (ND).ND problem : Giving a integer number, determinate it is odd or not.
本文给出两种思路,分别是面向对象和面向过程,来解决一个简单的 判断奇偶 的问题(ND):给定一个整数,判断它是奇数还是偶数。
For procedure-oriented-programming
int main(void) { int num=0; cout<<"Input a interger number: " ; cin>>num; if (num%2 == 0) { cout<<"the number:"<<num<<"is: "<<"even"<<endl; }else { cout<<"the number:"<<num<<"is: "<<"odd"<<endl; } return 0; }
For objected-oriented-programming
// Class Definetion class Number { private: int Num=0; // value bool ISODD=False;//value for determination public: Number(int num) { Num=num; }; void isodd(void) // function for determinatting { if (Num%2 == 0) { ISODD = False; } else { ISODD = Ture; } }; void showisodd(void) { if (ISODD==False) { cout<<"the number:"<<num<<"is: "<<"even"<<endl; }else{ cout<<"the number:"<<num<<"is: "<<"odd"<<endl; }; }; int showval(void){return Num;}; }; // main program int main(void) { int num=0; cout<<"Input a interger number: " ; cin>>num; // create class Number integer(num); // use num to initialize 'integer' interger.isodd(); // determinating whether integer is odd or not interger.showisodd();// show wether the integer is odd or not return 0; }
SUMMERIZATION
通过以上两个例子我们可以看到面向过程(procedure-oriented)和面向对象(objected-oriented)编程的不同思路。同样时解决一个简单的 判断奇偶 的问题,面向过程编程就是用最直接了当的方式来解决问题,直达问题的核心,即,给程序一个整数,程序运行判断条件(是否与2同余),输出结果。而面向对象则是,先把整数这个概念抽象出来,定义一个‘类’,也就是先说明一堆数据具有什么样的‘性质’才能算作一个整数,在这里仅仅做了一个很“简单”的说明,即,当一个 class 具有 value ,以及 value for determination 这两个值,并且拥有对这两组书据进行处理的能力的时候,我们就把这一堆数据称为 Number . 当你给程序一个整数num时,程序先利用num生成一个Number,再调用Number的一段程序(isodd)来判断Number的类型,最后调用Number的输出函数(showisodd)显示结果。流程如下:
面向过程
得到整数;判断奇偶性质;
输出结果;
面向对象
得到整数;创建 Number类型的对象 integer ;
调用 integer的公有函数判断其奇偶性质;
调用 integer的公有函数输出结果;
两种方案都能很好的解决这个问题,然而,当我们继续深入思考下去呢?实际问题总是充满不确定性,对我们的程序的要求也会随着面临不同问题而改变。比如,这时我不仅仅想知道这个数的奇偶性质,还想知道它是否能被5整除,能否被3整除,是不是素数。等等,这时用两种不同解决方案时,程序内容又会发生怎样的变化?又比如,当我需要处理的数据不是一个,而是上万个上亿个数据呢?当我们的问题遍复杂,要求变高,工作量变大时,程序必然会变得冗长,那么怎样使得程序能够很好的适应外部要求不不断改变,怎样使得我们修改(升级)我们的程序更方便以及思路更清晰,就变得尤其重要。
下一次,我将会继续深入探讨这个“简单”的问题,显然我们的小程序能够做的事情还是太少。
[Hubinbin 的博客]https://blog.csdn.net/benzp
欢迎在评论区交流,或者通过邮件 (cquhbb@163.com)
相关文章推荐
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- (Boolan) C++面向对象高级编程(五)
- (GeekBand)C++面向对象高级编程(上)第一周测试
- C++面向对象基础,以及一些常见面试 改错题。
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- Geekband C++面向对象高级编程(上) 第二周笔记 暗影行者
- C++面向对象网络编程之SockServer
- Boolan第一周---C++面向对象高级编程(上)
- java类、对象、对象的引用以及面向过程和面向对象区别
- 设计模式C++学习笔记之二十(完结篇 & 面向对象原则)设计模式C++实例下载
- GeekBand C++ 面向对象高级编程(上) 第二周笔记
- 刨根问底之面向过程编程 、面向对象编程、类、对象
- Java第二课 Java面向对象编程,面向对象编程和面向过程编程的区别,我们如何才能掌握面向对象的编程,类和对象的关系;讲解了Java中的构造、重载、this和super变量、静态变量、Java中的常
- Q:面对对象和面向过程的优缺点,结合实例进行阐述
- 面向对象高级编程——类、实例及其他对象的内建函数
- 面向对象和面向过程的区别以及优缺点
- C++ 中的基本内置类型以及编程过程中对于类型的选择建议
- c/c++网络编程 对象的传输 以及 TCP粘包处理 解析
- 编程思想:面向对象和面向过程
- 编程思想:面向对象和面向过程