python语言程序设计基础笔记(三)计算机思维

计算机思维

计算机思维的本质是抽象和自动化。

计算机思维特征:

  1. 设计
  2. 构造

在程序设计范畴,计算思维主要反映在理解问题的计算特性、将计算特性抽象为计算问题、通过程序设计语言实现问题的自动求解等几个方面。

面向过程POP(protocol-oriented programming)

一、自顶向下

自顶向下:用于解决复杂问题,其基本思想是以一个总问题开始,试图把它表达为很多小问题组成的解决方案。再用同样的技术一次攻破每个小问题,最终问题变得非常小,以至于可以很容易解决。然后只需把所有的碎片组合起来,就可以得到一个程序。以体育竞技为例,如下图所示,具体参考---python语言程序设计基础

二、顶层设计

自顶向下设计中最重要的是顶层设计。我们可以从问题的IPO描述开始,体育竞技分析从用户处得到模拟参数,最后输出结果。顶层设计一般不写出具体代码,仅给出函数定义。接下来的层理念大都相同,即接受输入,通过函数将中间细节封装或隐藏,返回输出。每层的输入以及输出是层设计的核心,其余的细节部分可以被忽略。这类似于抽象的概念,即仅仅关心典型特征,忽略其他细节。

关于抽象,我们使用抽象数据类型来提供数据对象的外观(其状态)及其可以执行的操作(其方法)的逻辑描述。 通过构建实现抽象数据类型的类,程序员可以利用抽象过程,同时提供在程序中实际使用抽象所需的详细信息。 每当我们想要实现抽象数据类型时,我们都会使用新类。

三、面向过程的程序设计 (结构化编程)

面向过程的程序设计是最自然的设计方法,程序执行过程为设计流程。

面向过程的程序设计基本步骤

  • 第一步:分析程序从输入到输出的各步骤
  • 第二步:按照执行过程,从前到后编写程序
  • 第三步:将高耦合部分封装成模块或函数
  • 第四步:输入参数,按照程序执行过程调试

 

 

python中面向对象编程-定义类

Python是一种面向对象的编程语言。面向对象更关注数据,然而它与面向过程并不冲突,甚至可以互相弥补。面向对象编程语言中最强大的功能之一是允许程序员(问题解决者)创建新类,以模拟解决问题所需的数据。

面向对象特点:

  • 封装: 打包数据和操作。对象的实现与使用独立,支持代码复用。
  • 多态: 同一函数名启用不同方法。例如列表包括Circle、Rectangle、Polygon,则使用obj.draw()则画出不同的形状。
  • 继承:一个类(subclass)可以借用另一个类(superclass)的行为。优点,避免操作重复,提升代码复用程度。

 

一、面向对象程序设计的基本步骤

  • 第一步:根据功能,抽象业务对象
  • 第二步:构建独立地业务模块,利用封装、继承、多态等抽象业务需求。
  • 第三步:编写程序
  • 第四步:以对象为输入单位输入参数、开展测试

 

具体参考http://python.jobbole.com/83747/

二、自底向上

自底向上:测试中等程序的最好方法是从结构图最底层开始,而不是从顶部开始,然后逐步上升。即,执行测试每一个基本函数,再测试由基础函数组成的整体函数,这样有助于定位错误。面向对象遵循自底向上。

总结

通过模块化设计可以分解问题使得编写复杂程序成为可能,通过单元测试方法分解问题使运行和调试复杂程序成为可能。自顶向下和自底向上贯穿程序设计和执行的整个过程。两者比较如下

Difference between OOP and POP

 Object Oriented Programming (OOP)Procedure Oriented Programming (POP)
Problem SolvingImportance is given to objects. So to solve a problem, it is divided into smaller parts known as objects. Importance is given to functions or procedures. So to solve a problem it is divided into smaller parts known as functions or procedures. 
ApproachIt follows bottom up approach.It follows top down approach.
Code ReusabilityThe existing code can be reused by the feature called inheritance.There is no such feature.
Data HidingThe data is kept secure in class using access specifiers private and protected.  The data is less secure as this paradigm doesn’t provide any way to hide it.
ModificationModification and addition of new feature is really easier.Modification and addition of new feature is difficult.
Problem SizeIt is suitable for solving big problems.It is not suitable for solving big problems.
ExampleC++, Java and Python are some examples of OOP languages.C, Fortran and Pascal are some examples of POP languages.

拓展:软件开发模型

  软件开发模型是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成软件的主要活动和任务,用来做为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法,使用不同的编程语言,组织不同技能的人员,运用不同的管理方法等。

 

 

 

 

参考

中文https://www.bilibili.com/video/av10681614/?p=47

中文https://github.com/facert/python-data-structure-cn/tree/master/1.%E4%BB%8B%E7%BB%8D

英文https://www.appcoda.com/pop-vs-oop/

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值