《Java和Android开发实战详解》——2.1节如何构建应用程序

简介:

本节书摘来自异步社区《Java和Android开发实战详解》一书中的第2章,第2.1节如何构建应用程序,作者 陈会安,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.1 如何构建应用程序
Java和Android开发实战详解
一般来说,我们使用Java程序语言的目的,就是编写程序代码构建应用程序,以期让计算机执行来解决问题。

2.1.1 如何编写程序代码
程序设计(Programming)很困难吗?事实上,如果你可以引导问路人到达目的地、走迷宫或开车到你家,一步一步详细列出活动流程,就表示你一定可以编写程序代码。不过,在列流程时请注意!计算机一点都不聪明,也不会举一反三,所以,我们需要告诉计算机详细的步骤和信息,不能只有模棱两可的内容。

例如,在北京开车从建国门北上到奥林匹克公园,行车路线如下所示。

step02step01从二环出发向北开。

step03进入安定门外大街(安定门桥)。

进入安定路。

step04直行到路口后,右转进入安慧桥,然后直行。

step05左转进入大屯路后直行到终点。

上述步骤告诉我们人类的话,所提供的信息已经足以让我们开车到达目的地,但是如果将这些步骤告诉计算机,计算机一定不知道如何开车到达目的地,因为它还需要更多的信息,如下所示。

从哪里开始开车?二环路上需向北开几千米?
如何分辨十字路口?如何从十字路口下来?
在安定门高架桥开几公里可以到安定路出口?如何下去?
从安慧桥直行几公里可以看到红绿灯?
开多少公里可以看到大屯路?如何左转?接着需要如何开?如何停车?
换句话说,编写程序代码时需要告诉计算机非常详细的步骤,如同教导小孩去做一件他从没有做过的事。所谓程序设计就是在解决问题,你需要将解决问题的详细步骤一一写下来(即算法,第2.1.3小节将介绍),然后将它转换成程序代码即可。

2.1.2 程序设计的基础
如前所述,程序设计是将需要解决的问题转换成程序代码,程序代码不只能够在计算机上正确执行,而且还应可以验证程序执行的正确性。基本上,程序设计的过程主要可以分成5个阶段,如图2-1所示。

1.需求
需求(Requirements)是为了了解问题本身,以便确切获得程序需要输入的数据和预期应产生的结果,如图2-2所示。


749ea9a556959b3f58533ab18872766b28a2f539

在输入数据后,执行程序应可以输出执行结果,这就是程序设计的需求。例如,要计算从1加到100的总和,程序输入数据应是相加求和的数值,范围为1~100,执行程序则可以输出计算结果5050。

2.设计
了解程序设计(Design)的需求后,我们就可以开始找寻解决问题的方法和策略。简单地说,设计实际是在找出解决问题的步骤,如图2-3所示。


679620c8c7e1f75e4873cf0c21000239ab3b34a8

图2-3的数据需要经过处理才能转换成有用的信息,也就是输出结果。例如,为了求1加到100即1+2+3+4+…+100的结果,可以在程序中使用数学运算的加法来解决问题,或第4章的循环来执行计算。

再看一个例子,如果需要将华氏温度转换成摄氏温度,所输入数据当是华氏温度,温度转换则使用一个数学公式,经过运算后,就可以得到摄氏温度,也就是我们所需的信息。

换句话说,为了解决需求,程序需要执行数据的运算或比较等操作,将详细的执行步骤和顺序写下来,这就是设计解决问题的方法,也就是第2.1.3小节的算法。

3.分析
解决需求时是不是只有一种解决方法?未必。例如,有100个数据需要存储,我们既可以定义100个变量保存数据,也可以使用第6章的数组(一种数据结构)来保存。分析(Analysis)阶段是将所有可能解决问题的算法都写下来,然后分析哪一种方法比较好,选择最好的算法来编写程序代码。

如果一时不能分辨出哪一种方法比较好,不妨直接选择一种方法继续下一个阶段,因为在编写程序代码时,如果发现另一种方法比较好,我们可以马上改用另一种方法来编写程序代码。

4.编写程序代码
现在我们就可以使用程序语言来进行编码(Coding)工作,例如本书使用的是Java语言。在实际编写程序时,可能发现另一种方法比较好,因为设计归设计,有时在实际编写程序时才会发现其优劣,如果是一个良好的设计方法,就算改成其他方法也不会太困难。

设计者有时很难下决定,继续此方法,还是改为其他方法而重新开始。此时需视情况而定。不过每次编写程序代码最好只使用一种方法,而不要同时使用多种方法。当发现问题需要重新开始时,已经有了编写一种方法的经验,第2次将会更加容易。

5.验证
验证(Verification)是为了证明程序执行的结果是否符合需求的输出数据,在这个阶段可以再细分成3个子阶段。

证明:执行程序时需要证明它的执行结果是正确的,所输入数据符合既定组合,程序规格说明也都符合算法的需求。
测试:程序需要测试各种可能情况、条件和输入数据,以测试程序执行无误。如果有错误产生,就需要除错来解决问题。
调试:如果程序无法输出正确结果,通过调试来找出错误的地方。我们不但需要找出错误,还需要找出更正错误的方法。
上述5个阶段是设计每一个程序和开发应用程序都需经历的阶段,不论大型应用程序或一个小程序,都可以套用相同流程。首先针对问题定义需求,接着找寻各种解决方法,在编写程序代码的过程中找出最佳的解决方法,最后经过重重验证,就可以构建正确执行的程序。

2.1.3 算法
解决问题的步骤、策略或方法就是“算法”(Algorithm),其基本定义如下:

算法是用于完成目标工作且步骤有限的一组命令。除此之外,算法还必须满足一些条件,如下所示。

输入(Input):数个外界的输入数据。也可以没有。
输出(Output):至少有一个输出结果。
明确性(Definiteness):每一个命令步骤都十分明确,不能模棱两可。
有限性(Finiteness):这组命令一定会结束。
有效性(Effectiveness):每一个步骤都可行,可以追踪其结果。
根据上述算法设计的程序一定会结束,但并非所有程序都满足这项特性。例如,早期的MS-DOS操作系统,除非系统当机,否则它永远执行一个等待循环,等待用户输入命令。

因为算法只是将解决问题的步骤详细写出来,所以并没有固定方式,基本上只要能够描述命令的执行过程即可。常用算法描述方式有如下几种。

一般语言文字:直接使用文字描述来说明执行的步骤。
伪码(Pseudo Code):一种接近程序语言的描述方法,它并没有固定语法,每一行约可转换成一行程序代码,如下所示:
/ 计算1加到10 /

Let counter = 1
Let total = 0
while counter <= 10
   total = total + counter
   Add 1 to counter
Output the total    /* 显示结果 */

流程图(Flow Chart):使用结构化的图表描述执行过程,以各种不同形状的图形表示不同的操作,使用箭头直线标示执行方向。例如,图2-4即为上述伪码的流程图。


fe1b24cef4f84146c6bde5ef837ca7143f6de9e2
相关文章
|
2月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
25天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
18天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
37 4
|
22天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
22天前
|
存储 搜索推荐 Java
打造个性化安卓应用:从设计到实现
【10月更文挑战第30天】在数字化时代,拥有一个个性化的安卓应用不仅能够提升用户体验,还能加强品牌识别度。本文将引导您了解如何从零开始设计和实现一个安卓应用,涵盖用户界面设计、功能开发和性能优化等关键环节。我们将以一个简单的记事本应用为例,展示如何通过Android Studio工具和Java语言实现基本功能,同时确保应用流畅运行。无论您是初学者还是希望提升现有技能的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧。
|
26天前
|
搜索推荐 开发工具 Android开发
打造个性化Android应用:从设计到实现的旅程
【10月更文挑战第26天】在这个数字时代,拥有一个能够脱颖而出的移动应用是成功的关键。本文将引导您了解如何从概念化阶段出发,通过设计、开发直至发布,一步步构建一个既美观又实用的Android应用。我们将探讨用户体验(UX)设计的重要性,介绍Android开发的核心组件,并通过实际案例展示如何克服开发中的挑战。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧,帮助您在竞争激烈的应用市场中脱颖而出。
|
26天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
46 2
|
28天前
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
39 2
|
2月前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
52 5
|
2月前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
下一篇
无影云桌面