精华内容
下载资源
问答
  • 一直以来,JavaScript使用数组和对象来定义和存放结构数据, 在这篇文章中,我们将一起深挖另一种对象Map的一切,我们将会去了解它是什么、如何遍历、都包括什么属性和方法以及优缺点是什么。 介绍 JavaScript的...

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
    原文出处:https://www.codeproject.com/Articles/5278387/Understanding-Maps-in-JavaScript

     

    一直以来,JavaScript使用数组和对象来定义和存放结构化数据, 在这篇文章中,我们将一起深挖另一种对象Map的一切,我们将会去了解它是什么、如何遍历、都包括什么属性和方法以及优缺点是什么。

    介绍

    JavaScript的Map对象数据结构类似于例如C#,Java或C ++中的字典,本质是一组包含键值对的集合,如果你了解其他语言的键/值对数据结构的概念的话,那么对您立即掌握Map基本概念是很有帮助的。不过,即便你之前没有接触过任何一种语言,那也不必担心,我们会从基础知识开始讲起的。

    在将Map引入JavaScript语言之前,Object是创建键/值对数据结构的主要方式。而Map与常规对象有什么区别?

    主要有两点不同:

    1. key的类型无限制

    Object无法使用非字符串值作为键名,但Map的键名可以是任意类型,让我们来看一个例子。

    1

    2

    3

    4

    var firstInstance = { id: 1 };

    var secondInstance = { id: 2 };

    console.log(firstInstance["id"]);

    console.log(secondInstance ["id"]);

    输出结果:1 2

    下面我们将通过重新造轮子的形式让你了解Map和上述例子有什么区别  

    1

    2

    3

    4

    5

    6

    7

    var firstInstance = { id: 1 };

    var secondInstance = { id: 2 };

     

    var sqlServer = {};

     

    sqlServer[firstInstance] = "SQLServer1";

    sqlServer[secondInstance] = "SQLServer2";

    firstInstance和secondInstance这两个对象都产生了“[Object Object]”。因此,将这两个对象传入sqlServer中作为其键名,就能使其达到类似Map的效果,以下是输出结果。  

     

    在映射不同数据类型时,这个特性将提供极大的灵活性。

    2. 可直接遍历

    常规对象里,为了遍历keys、values和entries,你必须将它们转换为数组,如使用Object.keys()、Object.values()和Object.entries(),或使用for ... in,另外for ... in循环还有一些限制:它仅仅遍历可枚举属性、非Symbol属性,并且遍历的顺序是任意的。

    但Map可直接遍历,且因为它是键值对集合,所以可直接使用for…of或forEach来遍历。这点不同的优点是为你的程序带来更高的执行效率。

    什么是JavaScript Map?

    从根上讲,Map是键/值对的集合。这些键和值可以是任何数据类型。在ES6语法下, 创建JavaScript map对像非常简单,让我们看看例子

    1

    2

    let myMap = new Map();

    console.log(myMap);

    输出结果:  

     

    如您所见,我们只是创建了一个空的Map对象而已,只需使用new Map(),就可以在JavaScript中直接创建新的Map。

    如何初始化Map?

    如何创建和初始化一个包含数据的map?

    有多种方法可以对其进行初始化。让我们一个接一个地看一看。

    使用Array

    1

    2

    3

    4

    5

    6

    7

    8

    9

    let topProgrammingLanguages = new Map([

        [1, 'JavaScript'],

        [2, 'Python'],

        [3, 'Java'],

        [4, 'C#'],

        [5, 'C']

    ]);

     

    console.log(topProgrammingLanguages);

    输出结果

     

    使用set() 方法

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    let myFavoriteBooks = new Map();

     

    myFavoriteBooks.set(1, 'Rich Dad Poor Dad');

     

    myFavoriteBooks.set(2, 'The Magic of Thinking Big');

     

    myFavoriteBooks.set(3, 'Think and Grow Rich');

     

    myFavoriteBooks.set(4, 'How to Win Friends & Influence People');

     

    myFavoriteBooks.set(5, 'Shoe Dog');

     

      

     

    console.log(myFavoriteBooks);

    输出结果

     

    使用get、has、includes、clear和delete方法

    使用 get() 方法

    该方法返回key对应的value,如果不存在,则返回undefined。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    let sqlServerInstances = new Map();

     

    sqlServerInstances.set('SQL_DEV_Instance''MS_SQLSERVER_1');

    sqlServerInstances.set('SQL_UAT_Instance''MS_SQLSERVER_2');

    sqlServerInstances.set('SQL_PROD_Instance''MS_SQLSERVER_3');

     

    console.log(sqlServerInstances.get("SQL_DEV_Instance"));   //output: MS_SQLSERVER_1

    console.log(sqlServerInstances.get('SQL_UAT_Instance'));   //output: MS_SQLSERVER_2

    console.log(sqlServerInstances.get("SQL_PROD_Instance"));  //output: MS_SQLSERVER_3

    console.log(sqlServerInstances.get("SQL "));  //output: undefined

    使用 has() 方法

    该方法用于检查Map是否有指定key对应的value。  

    1

    2

    3

    4

    5

    6

    7

    8

    let sqlServerInstances = new Map();

     

    sqlServerInstances.set('SQL_DEV_Instance''MS_SQLSERVER_1');

    sqlServerInstances.set('SQL_UAT_Instance''MS_SQLSERVER_2');

    sqlServerInstances.set('SQL_PROD_Instance''MS_SQLSERVER_3');

     

    console.log(sqlServerInstances.has("SQL_PROD_Instance"))   //output: true

    console.log(sqlServerInstances.has("SQL_PROD2_Instance"))  //output: false

    使用 clear() 方法

    该方法用于清空指定map对象中的所有内容。  

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    let products = new Map();

     

    products.set("PRODUCT_001", { name: "Product 1" });

    products.set("PRODUCT_002", { name: "Product 2" });

    products.set("PRODUCT_003", { name: "Product 3" });

     

    //let's get the size of the Map before invoking clear()

    console.log(products.size);  //output: 3

    products.clear();            //clears the Map-products

    console.log(products.size);  //output: 0

    使用 delete() 方法

    该方法用于删除map中指定key对应的一组key-value元素  

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    let sqlServerInstances = new Map();

     

    sqlServerInstances.set('SQL_DEV_Instance''MS_SQLSERVER_1');

    sqlServerInstances.set('SQL_UAT_Instance''MS_SQLSERVER_2');

    sqlServerInstances.set('SQL_PROD_Instance''MS_SQLSERVER_3');

     

    //let's delete the UAT instance

    console.log(sqlServerInstances.get('SQL_UAT_Instance'));    //output: MS_SQLSERVER_2

    console.log(sqlServerInstances.delete('SQL_UAT_Instance')); //deletes the key/value pair

    console.log(sqlServerInstances.has('SQL_UAT_Instance'));    //output: false

    console.log(sqlServerInstances.get('SQL_UAT_Instance'));    //output: undefined

    Map遍历的方式

    在本节中,我们将了解如何遍历Map。但是,在此之前,我们需要了解以下方法:keys、values和entries,这些方法将在我们开始使用for-of循环遍历map对象时很有帮助。

    首先,我们将创建一个map对象作为数据源

    1

    2

    3

    4

    5

    6

    let myFavoriteBooks = new Map();

    myFavoriteBooks.set(1, 'Rich Dad Poor Dad');

    myFavoriteBooks.set(2, 'The Magic of Thinking Big');

    myFavoriteBooks.set(3, 'Think and Grow Rich');

    myFavoriteBooks.set(4, 'How to Win Friends & Influence People');

    myFavoriteBooks.set(5, 'Shoe Dog');

    使用 keys() 方法

    该方法返回Map对象中每个元素的key。尤其是你在只需要遍历Map集合的键时,更是如此。

    1

    2

    const myMap1 = new Map([[1, 'red'], [2, 'blue']]);

    console.log(myMap1.keys());     //output: { 1, 2 }

    遍历key

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    /**

     * Output

     * 1

     * 2

     * 3

     * 4

     * 5

     */

    for (const key of myFavoriteBooks.keys()) {

        console.log(key);

    }

    //end of iteration over the keys

    使用 values() 方法

    和keys方法对应,values方法返回的就是Map对象中的value集合。

    1

    2

    const myMap2 = new Map([['Electronic Gadget''Smart Phone'], ['Input Devices''Mouse']]);

    console.log(myMap2.values());   //output: {"Smart Phone", "Mouse"}

    遍历value  

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    /**

     * Output

     * Rich Dad Poor Dad

     * The Magic of Thinking Big

     * Think and Grow Rich

     * How to Win Friends & Influence People

     * Shoe Dog

     */

    for (const value of myFavoriteBooks.values()) {

        console.log(value);

    }

    //end of iteration over the values

    使用 entry() 方法

    该方法返回Map集合中每个 [key,value] 元素的对象。  

    1

    2

    3

    4

    const myMap3 = new Map([['Samsung''Smart Phone'],

                   ['Colgate''Toothpaste'], ['Coke''Soda']]);

    console.log(myMap3.entries());   //output: {"Samsung" => "Smart Phone",

                                     //"Colgate" => "Toothpaste", "Coke" => "Soda"}

    遍历条目

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    /**

     * Output

     * 1 "Rich Dad Poor Dad"

     * 2 "The Magic of Thinking Big"

     * 3 "Think and Grow Rich"

     * 4 "How to Win Friends & Influence People"

     * 5 "Shoe Dog"

     */

    for (const [key, value] of myFavoriteBooks.entries()) {

        console.log(key, value);

    }

    //end of iteration over the entries

    散布运算符遍历Map

    在文章的最后一部分,我们将了解通过使用散布运算符(...)轻松遍历map对象,下面让我们看一个例子吧!

    1

    2

    3

    4

    5

    let fastFoods = new Map([[1, 'McDO'], [2, 'Burger King'], [3, 'KFC'],

                            [4, 'Wendys'], [5, 'Pizza Hut']]);

     

    console.log(...fastFoods.keys());

    console.log(...fastFoods.values());

    大家可以自行执行一下上面这段程序,看看运行结果是什么。

    总结

    在本文中,我们讨论了JavaScript Map对象集合。相信通过这篇文章,你已经对Map对象有了一定的了解了。在文末,展示了遍历Map的另一种形式for-of和散布运算符(...)来遍历集合。

    如果有什么问题或补充,欢迎通过评论区留言告诉我。

    展开全文
  • 两种主要的方法可以用数字方式代表法律推理:一种是自上而下的方法,在这种方法中,法律专家可以通过其运作部分来分析和设计法律系统,而相反,自下而上的方法是使用机器学习来建立模型的从已决案件中进行法律...
  • 2、信息系统开发方法:结构方法、原型法、面向对象方法等。 (1)结构方法:把整个系统的开发过程分为若干阶段,然后依次进行,前一阶段是后一个阶段的工作依据,按顺序完成。每个阶段和主要步骤明确详尽的...

    1、信息系统生命周期:立项、开发、运维、消亡

    2、信息系统开发方法:结构化方法、原型法、面向对象方法等。

    (1)结构化方法:把整个系统的开发过程分为若干阶段,然后依次进行,前一阶段是后一个阶段的工作依据,按顺序完成。每个阶段和主要步骤有明确详尽的文档编制要求,并对其进行有效控制。

    注重整体性和全局性。缺点是开发周期长,文档设计说明繁琐,工作效率低,开发初期要对系统的需求充分预料可能发生的变化。

    (2)原型法:适用于无法全面准确地提出用户需求的情况下。对用户的需求是动态响应,逐步纳入的。可以分为抛弃型原型和进化型原型。

    (3)面向对象方法:

    3、软件工程

    (1)软件需求分析与定义

    • 软件需求是针对待解决问题的特性的描述。所定义的需求必须可以被验证,在资源有限时,可以通过优先级对需求进行权衡。
    • 通过需求分析,可以检测和解决需求之间的矛盾,发现。系统的边界,并详细描述出系统需求。

    (2)软件设计、测试与维护

    • 软件测试是为了评价和改进产品质量,识别产品的缺陷和问题而进行的活动。软件测试是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为。
    • 测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种可以包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。
    • 软件测试伴随开发和维护过程,分为单元测试,集成测试和系统测试三个阶段。

    (3)软件质量保证及质量评价

    • 软件质量保证:
    • 验证与确认:验证过程试图确保活动的输出产品已经被正确构造,确认过程则试图确保构造了正确的产品。
    • 评审与审计:分为管理评审、技术评审、检查、走查、审计。管理评审的目的是监控进展。技术评审的目的是评价软件产品。软件审计的目的是提供软件产品和过程对于可应用的规则、标准、指南、计划和流程的遵从性的独立评价。

    (4)软件配置管理(默写)

    • 软件配置管理活动包括软件配置管理计划、软件配置标识软件配置、控制软件配置、状态记录、软件配置审计、软件发布、管理与交付等活动。

    (5)软件过程管理

    软件过程管理涉及技术过程和管理过程,通常包括以下几个方面:

    • 项目启动与范围定义
    • 项目规划
    • 项目实施
    • 项目监控与评审
    • 项目收尾与关闭

    (6)软件复用:软件复用的主要思想是将软件看成是由不同功能的组件所组成的有机体,视为通用工具。

    4、面向对象系统分析与设计

    (1)面向对象的基本概念包括对象类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。

    • 对象包含三个基本要素,分别是对象标识、对象状态和对象行为。
    • 类将该实体的属性和操作封装在一起。
    • 对象和类的关系可以理解为对象是类的实例类是对象的模板。
    • 对象是现实世界中某个实体的抽象类,是一组对象的抽象。
    • 多态使得某个属性或操作在不同的时期可以表示不同类的对象特性。

    (2)统一建模语言简称UML。它是一种可视化的建模语言,而不是编程语言。比较适用于迭代式的开发过程。

    客户服务器模式简称c/s。浏览器服务器模式简称b/s。

    5、软件中间件

    中间件是位于硬件、操作系统等平台和应用之间的通用服务,借由中间件解决了分布系统的异构问题。借助中间件屏蔽操作系统和网络协议的差异,为应用系统提供多种通讯机制,满足不同领域的应用需要。

    中间件位于操作系统与程序运用之间,(✔),如果说成中间件位于操作系统之中(❌)。

    中间件可以分为数据库访问中间件、远程过程调用中间件、面向消息中间件、事物中间件、分布式对象中间件等。

    • 数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似代码访问不同的数据库资源。典型技术如windows平台的odbc和Java平台的jdbc的。
    • 远程过程调用中间件简称PPC。是一种分布式应用程序的处理方法。一个应用程序可以使用PPC来远程执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。
    • 面向消息中间件简称MOM,利用高效可靠的消息传递机制进行平台无关的数据传递,可基于数据通信进行分布系统的集成。
    • 分布式对象中间件:
    • 事务中间件也称事务处理控制器简称TPM,它位于客户和服务器之间,完成事务管理与协调负载平衡失效恢复的任务,以提高系统的整体性能。

    6、数据库与数仓技术

    数据仓库是一个面向主题的、集成的、相对稳定的,反映历史变化的数据集合,用于支持管理决策。数据仓库是对多个异构数据源的有效集成,集成后按主题分组,且存放在数据仓库中的数据一般不再修改。 大数据的意义不在于掌握庞大的数据信息,而在于对这些数据进行专业化处理,实现数据的增值。

    大数据分析相比较于传统的数仓应用,具有数据量大,查询分析复杂等特点。从技术上,大数据必须依托云计算的分布式处理,分布式数据库和云存储、虚拟化技术等。

    7、web servicise技术

    Web服务的典型技术包括用于传递信息的简单对象访问协议、用于描述服务的Web服务描述语言、用于Web服务注册的统一描述、发现及集成及数据交换的XML。

    8、javaEE架构

    组件:表示应用逻辑的代码,容器:组件的运行环境。服务:应用服务器提供的各种功能接口,可以同系统资源进行交互。

    9、计算机网络知识

    (1)网络技术标准与协议

    OSI七层协议从下到上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。需要掌握每一层都有什么协议?

    • 物理层:该层连接物理联网媒介,如电缆连线连接器。具体标准有RS232、V.35 、RJ-45、FDDI。
    • 数据链路层:功能是将从网络层收到的数据分割成特定的可被物理层传输的帧。常见的协议有:IEEE802.3/.2、HDLC、PPP 、ATM。
    • 网络层:主要功能是将网络地址(如ip地址)翻译成对应的物理地址(如网卡地址),并决定如何将数据发送方到接收方。具体协议有:IP、ICMP、IGMP、IPX、ARP。
    • 传输层:主要负责确保数据可靠、顺序、无错地从A点传输到B点。在TCP/IPX协议中,具体有TCP、UDP、SPX。
    • 会话层:负责在网络中的 两个节点之间建立和维持通信,以确保提供交互会话的管理功能。常见的协议有RPC、SQL、NFS。
    • 表示层:在表示层,数据将按照网络能理解的方案进行格式化。常见的协议有JPEG、ASCII、GIF、DES、MPEG。
    • 应用层:常见的协议有HTTP、Telnet、FTP、SMTP。

    (2)网络协议和标准:802.11--无线局域网WLAN标准协议

    10、Internet技术与应用

    • TCP/IP技术:TCP/IP的层次模型分为四层,最高层相当于OSI的5~7层,该层包括了所有的高层协议。TCP/IP次高层相当于OSI的传输层,这一层主要定义了两层协议:面向连接的传输控制协议TCP和无连接的用户数据报协议UDP。

    面向连接的和无连接的区别:面向连接可靠但是慢,无连接的快但是无可靠。

    IPV6:16进制 128位。

    Internet上的域名由域名系统DNS统一管理。(域名解析)

    • 网络存储技术

    网络存储结构分为:直连式存储(DAS)(U盘)、网络存储设备(NAS)(网络式连接即插即用 )和存储网络(SAN)(无线扩展功能)

    • 无线网络技术

    无线通讯网络根据应用领域可以分为:无线个域网(wpan)、无线局域网(wlan)、无线城域网(wman)、蜂房移动通讯网(wwan)

    4G包括TD-LTE、FDD-LTE两种制式。

    • 网络安全

    基本要素:机密性、完整性、可用性、可控性、可审查性。

    《计算机信息系统安全保护等级划分准则》将信息系统安全分为五个等级:自主保护级、系统审计保护级、安全标记保护级、结构化保护级、访问验证保护级。(按顺序背)

    11、新兴信息技术

    • 云计算应用:分为共有云、私有云、混合云。
    • 物联网架构与关键技术:

    物联网架构:分为感知层、网络层、应用层。感知层负责信息采集和物物之间的信息传输。信息采集技术包括传感器、条码和二维码、RFID、射频技术、音视频技术等多媒体信息。

    网络层:编码、认证、传输

    应用层:

    物联网关键技术:感知层技术主要包括:产品和传感器自动识别技术(条码、RFID、传感器)、无线传输技术(wlan 、bluetooth、zigbee、uwb)、自组织组网技术和中间件技术。

    • 移动互联网

    接入移动性、时间碎片性、生活相关性、终端多样性。

    • 大数据关键技术

    包括数据采集、数据存储、数据管理、数据分析与挖掘四个环节。数据采集阶段技术为ETL,数据存储阶段主要有结构化数据、分结构化数据和半结构化数据的存储和访问。数据管理使用分布式并行处理技术。数据分析和挖掘是根据业务需要对大数据进行关联、聚类、分析等,并利用图形、表格加以展示。

    展开全文
  • 《Photoshop CS2 宝典(专业版)》是该宝典的专业版,主要介绍了绘画和画笔,仿制、修复和图案,还原和历史记录,蒙版和抽出,图层,混合模式和挖空,形状和样式,校正性滤镜,像素、扭曲和渲染,自定义效果,调整...
  • 第3章 需求分析2016.ppt

    2020-03-12 10:34:44
    调查问卷法以问卷的形式计划的选择对象 访谈法正式或非正式结构或非结构的面谈 观察法用于任务或员工层面的需求评估如时间-动作研究 工作样本法利用工作过程中获得的信息和数据例工作记录或报告缺点是需要专业...
  • (2017新版)(1).docx

    2020-01-26 15:15:18
    对安全性没有C++哪种编译性的高等等,因此很多专业的程序大都会选择C++语言做为编写对象,但是C++除了给我们的编程便利性带来好处外,也带来了学习困难,编写专业要求程度高等缺点,由于金字塔未能将所有内部操作...
  • 工厂模式

    2019-08-12 20:19:25
    在现实生活中社会分工越来越细,越来越专业化。各种产品专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离...

    简介

    在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本节要讨论的问题。
    模式的定义与特点

    定义

    工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。
    我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则”。
    本节介绍的“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。

    工厂方法模式的优缺点

    主要优点有:
    用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;
    在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;
    其缺点是:每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。
    模式的结构与实现

    工厂方法模式由抽象工厂、具体工厂、抽象产品和具体产品等4个要素构成。本节来分析其基本结构和实现方法。

    工厂模式的结构

    工厂方法模式的主要角色如下。
    抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
    具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
    抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
    具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。

    在这里插入图片描述
    图1 工厂方法模式的结构图

    展开全文
  • 代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须系统的其他角色代为创建并传入。       跟MM在网上聊天,一开头总是...
  • C#23种设计模式

    2013-06-02 16:49:43
    代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须系统的其他角色代为创建并传入。 [b:9ceca65206]行为模式[/b:9ceca65206] 13、...
  • 代理模式可以并不知道真 正的被代理对象,而 仅仅持有一个被代理对象的接口, 这时候代理对象不能够创建被代理对象, 被代理对象必须 系统的其他角色代为创建并传入。 行为模式 13、CHAIN OF RESPONSIBLEITY —...
  • 日记-研一的我

    2011-12-16 17:23:00
    今天上午很迷糊的状态复习着软件工程的课件,边写边记。到了10:30,我忍不住的下去看了下考试现场,很快就...老师的一个问题给我的印象很深刻,面向结构的软件开发方法什么缺点?为什么会出现面向对象的结构方法...

    今天上午很迷糊的状态复习着软件工程的课件,边写边记。到了10:30,我忍不住的下去看了下考试现场,很快就到我了,一开始紧张的心理,在看到老师时就稳定下来了,老师的问题很简单,但是我的对老师的课件背的太烂了,一到考场,全忘了。只能用自己的语言来组织了,回答了很多的问题,都答的不是牵强,太口语化,不专业。老师的一个问题给我的印象很深刻,面向结构的软件开发方法有什么缺点?为什么会出现面向对象的结构化方法?这个问题一下子就懵到我了,我只知道有这两种方法,面向对象比面向结构更好,其他的都不知道了。老师给了我的提示是:面向对象的耦合度太强,不利用开发大型的软件,于是问题转为为什么面向对象的方法会比结构化的更好呢?我又懵了。想想C++和java都看过,但是对于他们的优点我都忘了,以前为什么会比C语言更好。这件事让我感觉到学习一门语言一定要知道他的原因,要自己思考这门语言为什么好?好在哪里?跟其他的语言比有什么优缺点?如何改进?等问题,而不是很死板的去接受书上的东西。同理,这种思想也是用在我的学习中,无论是对软件工程开发方法,还是其他的方面。考完了觉得收获比较大,洗脑了啊。变得明白真理一些。中午睡了一觉,醒来去晒了被子,回来发现下午4点半了,在空间逛了半天,看了旧情人的空间,觉得,诶,怎么那么无聊啊,觉得好没意思的。被男朋友训了一顿,确实发现自己有的时候容易迷失方向,受外界的影响。内在美才是真的美啊,外在美只是陪衬的。感情的事情:不要去恨他,因为你们曾相爱过,不要做朋友,因为你们曾经伤害过。今天下午就到了现在了,开通博客了,我也就迈入了新的境界。我这2年就先把技术学好吧。其他的事情以后再说吧~基础最重要。晚上决定去买书,好好看看。

    转载于:https://www.cnblogs.com/liyingw/archive/2011/12/16/2290480.html

    展开全文
  • 主要内容包括:面向对象与设计模式初步,使用接口创建型模式编程,涉及对基类问题的分析,对extends缺点的分析,对get/set方法的剖析等。本书通过两个完整的程序,反映了实际编程中模式应用的技巧,对掌握设计模式...
  • BOOM超级团队成员系统

    2006-02-23 09:05:59
    不使用面向对象编程,所以程序执行效率更高。和《PKY网上家园程序》相比,《PKY网上家园程序》丰富的用户个人功能;而本程序更着重团队功能,团队成员按等级划分,一个用户可以加入多个团队。大家可以根据自己的...
  • JavaScript高级程序设计

    2017-12-31 23:05:07
    , 本书适合一定编程经验的开发人员阅读,也可作为高校相关专业课程的教材。, , 新增DOM概念,如何实现正则表达式进行数据验证和字符串操作,把JavaScript联系到Web用户界面的事件处理方法; 数据验证、表排序和错误...
  • 1.2 制作专业化的应聘简历 1.2.1 简历的组成 1.2.2 一个简历的样本 1.4 掌握应聘的流程--步步为营 1.5 投递简历 1.5.1 招聘网站投递 1.5.2 E-mail投递 1.5.3 如何面对招聘会 1.6 面试+笔试+上机考试 1.6.1 面试 ...
  • ThinkInJava

    2013-05-28 14:36:27
    . 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
  • 写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
  • Java初学者入门教学

    2012-03-14 21:17:15
    1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 ...第1章 对象入门 ...1.2 对象的接口 ...D.4.4 Java专业书籍 D.4.5 一般书籍
  • java 编程入门思考

    2012-03-30 17:50:08
    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
  • JAVA_Thinking in Java

    2011-12-02 17:58:15
    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...第1章 对象入门 ...1.2 对象的接口 ...1.6 多形对象的互换使用 ...D.4.4 Java专业书籍 D.4.5 一般书籍
  • thinkinjava

    2011-11-30 11:47:28
    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
  • 但在某些场合下,对于只有一个基础句柄的对象,我们仍然特别必要了解它的准确类型是什么。拥有这个资料后,通常可以更有效地执行一次特殊情况下的操作。本章将解释RTTI的用途、如何使用以及在适当的时候如何放弃它...
  • ------------------------------------------------- 本教程由yyc,spirit整理 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物 英文版主页 | 中文版主页 | 详细目录 | 关于译者
  • JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
  • 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

对象专业化有缺点