1,Qt 是一套跨平台的程序设计库,这套程序设计库主要用于 GUI 方面的程序设计开发,所以本系列博文主要是利用C++介绍 GUI 程序设计技术;

2,命令行应用程序:

1,命令行应用程序的特点(Command Line Interface):

1,是一种基于顺序执行结构的可执行程序;

1,有一个固定的开始、固定的结束;

2,程序执行过程中不需要与用户产生交互;

1,为什么叫做命令行应用程序,因为它体现出给人的感觉就是一 个一个的命令,比如 ls;

2,ls 这条命令其实对应着一个程序,这是一个命令行应用程序;

3,ls 一旦开始执行,就执行单一的列出文件或文件夹任务,列完后主动退出;

3,程序执行后给出最终的运行结果;

1,gcc a.c b.c c.c;

1,利用 gcc 这个命令行应用程序完成编译这三个 C 程序的任务,在编译器编译过程中不产生用户交互,编译结束后或者生成可执行程序或者给出错误信息或警告信息;

2,命令行应用程序的运行模式:

1,非常简单,就是从 main() 函数开始调用各种函数,调用完之后,我们的任务就完成了,程序运行结束;

2,特点:

1,程序的运行有固定的开始(敲回车运行某个命令的时候开始) 和固定的结束(命令行完成命令后结束);

3,命令行应用程序蕴含的软件设计方法:

1,一种面向过程的程序设计方法,将一个大的问题分解为各种小 的问题,然后将小的问题逐个解决,整个大的问题也就解决了,对应到这里就是 main() 函数要完成一个大任务,首先 function1()  完成一个小任务,然后 function2() 完成一个小任务,最后通过 function4() 完成一个任务,这样大任务就完成了;

3,命令行应用程序适用于:

1,单任务场合;

2,无交互或简单交互场合;

3,服务器应用场合:

1,自身运行所占用的资源很少;

4,命令行应用程序是早期计算机系统中的主要程序类型:

1,早期计算机系统主要用来进行科学计算,科学计算需要科学家输入数据,运行后给出结果,所以说对于科学计算来说必然有一个规定的开始、一个固     定的结束,计算机进行计算过程中,是不需要和我们当时的科学家进行交互的,科学家只需要知道一个结果;

2,命令行应用程序的诞生是有历史原因的,早期的计算机系统中就只需要命令行应用程序就可以了;

3,图形界面应用程序:

1,图形界面应用程序的诞生:

1,随着计算机技术的发展,计算机走进日常生过;

2,计算机程序开始需要处理各个领域中的问题;

1,处理大量非科学问题;

3,计算机用户已经不再是专业的计算机工作者;

2,问题:

1,如何让计算机程序更好的适应普通用户并走进日常生活?

1,用图形界面应用程序;

3,图形界面应用程序的特点(Graphic User Interface):

1,是一种基于消息驱动模型的可执行程序;

2,程序的执行依赖于用户的交互过程;

1,因为要和用户进行更好的交互;

3,程序执行过程中实时响应用户操作;

4,一般情况下程序执行后不会主动退出;

1,被动的、多任务程序;

2,和命令行应用程序最大的本质不同;

4,图形界面应用程序的运行模式:

1,设计图形用户界面是什么样子,这种设计最后会体现在我们的程序当中;

2,图形界面应用程序运行模式有一定的规律可循,一般而言会从main() 开始,显示有个性的图形界面需要首先定义主窗口,其次创建主窗口(对    于一个操作系统而言,它的主窗口样式一般都是一样的)、然后创建主窗口中的元素(按钮、菜单、工具栏)、之后显示主窗口,最后进入消息循环(等用户操作,为了让这个程序不能往下执行,则程序执行死循环), 这个循环等待着操作系统来给这个应用程序发消息;到

5,图形界面应用程序的消息处理模型:

1,本图是用户如何使用计算机的原理图;

2,普通的用户无法使用计算机,因为此时计算机只是一堆硬件,普通用户如果要使用计算机,需要借助操作系统的支持,当操作系统安装到计算机后,用户就可以使用计算机了;

3,用户的操作主要分为两类:鼠标操作,键盘操作;

4,用户对计算机操作后,操作系统内核就能够检测到用户操作,如果发现用户是点了鼠标,系统内核会根据当前操作点鼠标生成一个系统消息;

5,系统消息被系统内核发送到有焦点的应用程序;

6,图形界面应用程序中都有一个消息队列,系统消息是被放到有焦点的 应用程序中的消息队列中;

7,消息循环就会从这个队列中将系统消息取出来,然后调用消息处理函数;

8,图形界面应用程序必须编写消息处理函数用于处理对应的消息;

(9),图形用户界面应用程序多数时候就是编写消息处理函数处理消息。

6,图形界面任务程序适用于:

1,多任务场合:

1,功能比较强大;

2,编写文字、编程、画图;

2,强用户交互场合;

3,非专业计算机用户:

1,办公室职员;

2,图形界面应用程序是当代计算机中的主要程序类型;

4,图形界面程序 VS 命令行程序:

1,当代大型软件产品架构模型:

1,图形界面应用程序和命令行应用程序是互补的关系,不是竞争关系, 命令行程序由于单任务特性,一般用来开发后台应用程序,图形界面应用程序交互性比较好,用于用户界面交互层;

2,图形界面交互层用的技术有 Qt、MFC、.Net 等;

3,架构分成出网路更新模块、数据库管理模块、虚拟机引擎模块(为了扩展性、可修改可维护性)等的命令行程序,一般在安装软件下呈现为 .exe文件;

4,合理的应用图形界面应用程序和命令行应用程序往往会给我们的软件质量带来提高,这也是一个架构师的艺术,如何在某个领域选择更好的技术,要看到某种技术的优势在哪里,不要只看到新技术忽略旧技术;

5,小结:

GUI程序原理分析的更多相关文章

  1. 第1课 GUI程序原理分析

    1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式——程序运行 ...

  2. 第2课 GUI程序实例分析

    1. GUI程序开发概述 (1)现代操作系统提供原生SDK支持GUI程序开发 (2)GUI程序开发是现代操作系统上的主流技术 (3)不同操作系统上的GUI开发原理相同 (4)不同操作系统上的GUI S ...

  3. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...

  4. GUI程序分析实例

    GUI程序开发概述 GUI程序开发原理 GetMessage(&msg)将消息队列中的消息取出来,在循环中进行处理. GUI程序开发的本质

  5. Handler系列之原理分析

    上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...

  6. 转载:AbstractQueuedSynchronizer的介绍和原理分析

    简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过 ...

  7. NOR Flash擦写和原理分析

    NOR Flash擦写和原理分析 1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直 ...

  8. 客户端GUI程序开发漫谈

    这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水  去年夏天的时候,我用QT做了一个小工具 后来还用QT做了流程设计器 我把程序分享给飞扬青云之后,他甚至搞出来一套QT的皮肤来 说 ...

  9. 使用AsyncTask异步更新UI界面及原理分析

    概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...

随机推荐

  1. vue-router中$route 和 $router

    1.1 $route 表示(当前路由信息对象) 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的 route records(路由记录).路由信息对象:即$ro ...

  2. AOP前世与今生,aspect

    AOP前世与今生 -------------------------------- 1.代码编写重复,(简单重构) 2.改善 3.静态代理(不改变原代码,继乘原来接口),代理类, aop 最原始出发点 ...

  3. html aside标签 语法

    html aside标签 语法 aside是什么意思? aside为语义化标签,通常用来描述与文档主体内容不相关的内容,其aside标签的内容应该与附近的内容相关. 作用:定义其所处内容之外的内容.直 ...

  4. Luogu P2678 跳石头

    题目链接:Click here Solution: 最小值最大,显然二分,二分出mid后贪心去除石头,判断m次内是否可行即可 Code: #include<bits/stdc++.h> # ...

  5. 【bzoj2763】[JLOI2011]飞行路线

    *题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...

  6. Spotlight_on_mysql 安装和监控

    一.下载 1.下载并安装 mysql-connector-3.51.30 2.下载并安装 Quest_Spotlight-on-MySQL_80.exe 二.填写注册码 Authorization K ...

  7. spring cloud:HystrixDashboard

    hystrix-dashboard-server 1. File-->new spring starter project 2.add dependency <parent> < ...

  8. Oracle JET mobile 入门使用

    Oracle JET 框架能开发 window, Android, ios 的 WebApp .主要使用 Codova 来进行开发. 简单使用 Oracle JET 开发 Android webapp ...

  9. 旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)

    题目地址 : 旋转数组. 网上好多不是根本就是错的,就是空间复杂度不是真正为1 下面总结一下 方法1 普通方法(空间复杂度不满足要求,但是题目并不会判错,说明他们没用对空间进行校验) ··· publ ...

  10. Selenium IDE安装及环境搭建教程

    摘自https://blog.csdn.net/ywyxb/article/details/59103683 Selenium IDE环境部署- Firefox浏览器Firefox-ESR版本下载(推 ...