编程基础,结构(Struct)【20200919】

发表于 2020-09-18
阅读 58

介绍

介绍

前面我们学习了编程的入门课程,了解的编程语言的基本语法,知道编程语言的基本要素。

今天开始福哥开始给大家讲编程的基础知识,这个基础知识是用来提高编程水平的知识,基础知识每种编程语言的差异会比较大,所以福哥在讲解某一种编程语言的某一特性的时候,会标明这种特性针对的是哪一种编程语言,只想学习某一种编程语言的童鞋可以有选择的学习。

第一课是公共知识,所以就没有标明是哪一种编程语言,这一课讲的主题是结构(Struct),这是一个轻松的话题,了解结构可以帮助我们树立一个框架性的概念,对编写各种级别的项目会有一个基本概念。

结构层级

结构层级指的是在编程领域,小到一个函数,大到一个解决方案,它们之间都是存在这一系列层级关系的,从大到小的顺序是:

  • 解决方案(Solution),针对一个大的需求给出的一整套解决方案,它可能是一个或多个项目工程组成

  • 项目工程(Project),针对一个特定的领域的一个独立的程序或库,它可能是一个或多个模块组成

  • 模块(Module),针对一个具体的解决一个特定功能的需求的对象模型,它可能是一个或多个对象组成

  • 对象(Class),针对一个具体的实体对象的定义,它包含这个实体对象的属性组和方法组

  • 函数(Function),针对一个具体的行为的定义,它是实现这个行为得到具体逻辑

数据结构

数据结构指的是包含若干属性的一个 独立的数据模型,在c语言里可以使用struct定义数据结构,在c++语言里可以使用class定义数据结构,在java语言里也是使用class定义数据结构,在php语言里除了可以使用class定义数据结构外,还可以使用php独有的array来定义数据结构。

数据结构和变量

数据结构是一组变量的集合体,数据结构的实例可以作为普通变量传递给函数使用,数据结构比较变量的优势有很多,诸如:

  • 携带更多的变量,传递能力更强大

  • 抽象实体,可以根据实体的属性模拟定义抽象实体,这个是对象(class)的精髓

  • 便于维护,通过一个实例可以将一众变量一起带着走,这种特性使得编写代码变得很优雅

数据结构和对象

数据结构在没有对象的c语言是用struct定义的,在c++和java、php等支持对象的语言里和普通对象的区别就只有一条,就是作为数据结构的对象是没有任何方法定义的,它只作为一组属性的集合体存在。

实体对象

实体对象(Entity)是设计模式里的一个概念,这种设计模式倡导的是所有需要存储的数据都要归类到一个实体对象里,存储数据的只能是实体对象,读取数据也只能从实体对象的属性里获取,这是OOP编程思想的思维,是比较先进的设计思想。

c/c++示例

在c/c++里,大家更加习惯使用struct这种数据结构语法定义实体对象

typedef struct T_TFUser {
    int userId;
    string userName;
};

在c/c++里的struct就是一个类型,我们可以通过这个struct声明变量

17e0a6219b0bf7f6.jpg

java示例

在java里,实体对象会被放入entity包下面,并且使用setter/getter为实体对象增加读写能力

@Data
public class TFUser {
    private Integer userId;
    private String userName;
}

在java里的entity就是一个class,我们可以通过这个class声明变量

79391ae9109402ae.jpg

php示例

在php里,实体对象就是php的数组

$TFUser = array(
    'userId'=>35,
    'userName'=>"福哥"
);

python示例

在python里,实体对象就是dict(字典)

TFUser = {
    "userId":35,
    "userName":"福哥"
}

javascript示例

在javascript里,实体对象就是object对象

var TFUser = {
    userId: 0,
    userName: "福哥"
};

总结

了解了结构层级,就知道一个网站,一个软件背后有多少代码了,就可以大概估算出一个需求的工作量了,培养这个经验对于评估项目复杂度,评估项目周期,是非常有帮助的。

理解数据结构的意义,熟练使用实体对象,有助于帮助我们设计我们的程序代码结构,在功能不断更新迭代当中也不会变得混乱不堪。