计算两数之和深度理解面向对象

简介: 计算两数之和深度理解面向对象

首先大家先来看第一版代码的样子。


fcfa35f056ea45f5b2d779eb3b807241.png


其次是第二版:


0049be901cdc4105b9480b06419823ca.png


从表面上看,这第二版代码无非也就是定义了两个变量,运行结果一摸一样呀,这完全没咋变呀。


可是真的是这样吗?


首先第一点:从版本一到版本二实现了一个有限到无限的扩展,什么是有限什么是无限呢,哪里表示有限了,哪里又表示无限了呢?版本一中:有限表示是5+6这里,print5+6,它的结果永远智能是11,所以是有限的,版本二中:定义了两个变量a、b,这里的a可以是任意数,b也可以是任意数,再思想上移一点就是从有限的两个数相加到无限个数相加,这里的无限个数相加怎么理解呢?话不多说直接看代码:


60b201e3960947ac861070bac39e6b52.png


这里因为a可以是任意数,所以我把5+1赋值给了a,这样再打印出a+b的结果的话就成了三个数相加,一个是5、一个是1、一个是6,也就是说这里可以是2个数相加,3个数相加,那么无限个数呢?也是可以有的。


那么再来说第二点:这里的a+b实现了一个对算法的封装,从而实现了在这里面具体的对加法的复用。那我这怎么就实现对算法封装了呢?怎么就实现对加法复用了呢?

首先是对算法的封装,算法也包括了很多种,其中也包括了运算方法,我们给他统称为算法,这里的 System.out.println(a+b); 这行代码相当于是对运算方法加法的封装,它也是算法的一种么,所以我们在这里又思想上移了一下,对算法的封装,除了加法我也还可以是减法、除法、乘法。上代码:


62c8355474904d468a634c6dbb3c6189.png


那么复用呢则是体现在,我们只需要去修改a和b的值就可以实现任意数进行相加了。


最后一句:我们做软件开发的需要有想象力和创造力,同样的代码,不同的人看到的却是不同的思想,不同的发展与未来。


目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能
容斥原理的概念和应用介绍
容斥原理的概念和应用介绍
31 0
|
算法 索引
算法提炼--位运算(1)(12.4)
算法提炼--位运算(1)(12.4)
算法提炼--位运算(2)
算法提炼--位运算(2)
算法提炼-位运算(3)
算法提炼-位运算(3)
|
算法
数据结构上机实践第十周项目2 - 用二叉树求解代数表达式
数据结构上机实践第十周项目2 - 用二叉树求解代数表达式
数据结构上机实践第十周项目2 - 用二叉树求解代数表达式
|
存储 Rust 自然语言处理
【算法】2. 两数相加(多语言实现)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
【算法】2. 两数相加(多语言实现)
|
机器学习/深度学习 算法 测试技术
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(下)
本文主要介绍了数据结构与算法的基本概念,包括算法评价指标、复杂度、对数器、二分法和异或运算。
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(下)
|
算法 搜索推荐
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)
本文主要介绍了数据结构与算法的基本概念,包括算法评价指标、复杂度、对数器、二分法和异或运算。
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)
|
Go 开发者
位运算深度讲解|学习笔记
快速学习位运算深度讲解。
77 0
|
存储 SQL 算法
两数之和算法讨论
两数之和算法讨论
两数之和算法讨论