基于net与sql20xx的网络记事本的设计与实现内容摘要:

等的管理 第 2 章 项目关键技术介绍 3 第 2 章 项目关键 技术介绍 C 面向对象技术 泛型 1)泛型的定义 泛型指的是该类型在父类中定义后,继承该类的子类可以将父类的泛型转换成自己的类型,从而在继承父类的方法或属性时能够将其中的泛型类型,转换成子类的类型来使用,极大的减少了代码的重复度,属于在继承中相当灵活的方法。 2)泛型的作用 巧妙有效的使用泛型,配合反射可以编写非常优雅和高效的实体类。 这种类可以在原先没有泛型时更体现出面向对象的威力,并且提供更有效的约束和封装。 抽象类 1)抽象类简介 抽象类的用途是提供多个派生类可共享的基类的公共定义,并使用 abstract关键字定义。 使用 abstract 关键字不仅可以创建仅用于继承用途的类,也可以定义类成员,即定义派生的非抽象类的功能。 2)抽象类的使用 我们写的基类就是定义为抽象类。 在实现接口时,我们也常写一个抽象类,来实现接口中的某些子类所需的通用方法 ,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。 接口 1)接口的简介 从面向对象的观点来看,接口就是对象的外观,而对象实际的工作方式就是实现。 和类一样,接口也可以定义属性、方法和事件。 与类不同的是,接口并不提供实现。 现在的接口,是由类来实现的,并从类中被定义为单独的实体。 我们第 2 章 项目关键技术介绍 4 可以这样来理解,接口表示的是一种约定。 实现接口的类必须严格按其定义来实现接口的每个方面。 有了接口,就可以将功能定义为一些紧密相关成员的小组。 可以在不危害现有代码的情况下,开发接口的增强型 实现,从而使兼容性问题最小化。 也可以在任何时候通过开发附加接口和实现来添加新的功能。 虽然接口实现可以进化,但接口本身一旦被发布就不能再更改。 对已发布的接口进行更改会破坏现有的代码。 若把接口视为约定,很明显约定双方都各有其承担的义务。 接口的发布者同意不再更改该接口,接口的实现者则同意严格按设计来实现接口。 接口的实现可以是类,也可以是结构。 接口的定义用的是 Interface 关键字。 通过接口,我们可以定义下某种对象的基本外观,然后可以自由地进行实现与扩展,却不涉及对原型的直接修改。 我们在定义数据提供者的方法时就使 用到了接口的方法。 2)接口的使用 在封装 ,书写数据提供者时,我们就用到了接口,在此处使用接口的目的是在使用不同数据库时,如果不调用来访问数据提供者时,如果数据库更换的话,调用数据库的代码也需要改变,不满足软件开发中低耦合的要求,如果使用接口的话,可以让不同的数据库实现该接口,使用访问数据库的代码不需要做更改,体现了低耦合的要求。 动态反射 1)反射的定义 程序集包含模块,而模块包含类型,类型又包含成员。 反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型的实例, 将类型绑定到现有对象,或从现有对象中获取类型。 然后,可以调用类型的方法或访问其字段和属性。 2)反射的作用 Assembly 定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例。 Module 了解如下的类似信息:包含模块的程序集以及模块中的类等。 您还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 ConstructorInfo 了解如下的类似信息:构造函数的名称、参数、访问修饰符(如 public 或 private)和 实现详细信息(如 abstract 或 virtual)等。 Type 的 GetConstructors 或 GetConstructor 方法来调用特定的构造函数。 第 2 章 项目关键技术介绍 5 MethodInfo 来了解如下的类似信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。 使用 Type 的 GetMethods 或 GetMethod 方法来调用特定的方法。 FieldInfo 来了解如下的类 似信息:字段的名称、访问修饰符(如 public 或 private)和实现详细信息(如 static)等;并获取或设置字段值。 EventInfo 来了解如下的类似信息:事件的名称、事件处理程序数据类型、 自定义 属性、声明类型和反射类型等;并添加或移除事件处理程序。 PropertyInfo 来了解如下的类似信息:属性的名称、数据类型、声明类型、反射类 型和只读或可写状态等;并获取或设置属性值。 ParameterInfo 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。 方法重载 1)什么是重载 所谓函数重载是指同一个函数名可以对应着多个函数的实现。 函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。 确定函数实现时,要求从函数参数的个数和类型上来区分。 这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。 否则,将无法实现重 载。 2)为什么要重载 重载函数的目的很简单,就是要满足调用时不同的需求,使函数可以满足各种参数类型,而 不需要对参数进行类型转换,大大方便了函数使用者。 在我们的项目中 大量的使用了方法重载。 技术 母板的使用 1)母板的定义 母板( MotherBoard)就是一种可以被重复利用的页面格式。 它是一种特殊的节点形式,它形成的页面格式可以被其它的节点套用,甚至是被其它的母板节点套用。 一个母板中,应该有且只有一个替代因子。 有效的替代因子节点可以是母板节点下任意层次的子节点。 第 2 章 项目关键技术介绍 6 设计过 程中你会发现,其实母板设计就是将引用该母板的那些页面的固定的页面组件制作出来,页面内容变化的位置由替代因子取代。 母板是 WebTea 最具活力的特色之一,它使网站的开发效率大大提高。 因为页面形式需要变化时,只需要修改母板,而数据是不需要重新编辑的。 一个母板发生变化,使用该母板的所有节点的形式都将随之发生相应变化。 2)母板的使用 设计页面必须要有大局观,一般先预设计所有页面的功能,然后将整个系统结合起来观察,检查有哪些部分的结构是所有(或部分)页面的共性元素。 在这个层面上可以从面向对象的角度来思考,页面从具有 共性元素的页面继承扩展。 LISTVIEW 的使用 1) ListView 控件的定义 ListView 是 Microsoft Visual Studio 2020 新提供的数据控件,该控件结合了以往控件的各不足,即提供了内置的编辑、添加、删除、选择和分页数据控制功能,也提供了用户完全自定义的格式控制。 可以以您使用模板定义的格式来显示来自数据源的数据。 该模板包含有用于设置数据布局的格式、控件和绑定表达式。 2)模板的灵活性和结构化 每一层模板的存在都有其意义,虽然在某一时刻部分模板不呈现在界面上,用户不清 楚该模板是否存在,因为用户不需要知道该模板的存在,当用户需要执行某些功能时该功能的模板便会体现。 模板的交替使用使界面更具动感,满足客户对界面功能的需求,方便业务的控制,是业务能够有条不紊的进行。 ListView充分体现了模板的灵活性和结构化,灵活性体现在 ListView 模板的显示灵活多变,在适当的时间显示适当的模板,满足客户在理解业务上的需求。 结构化体现在 ListView 对插入,更新,删除都提供了不同的模板,把页面的结构分离的很彻底。 满足了结构的需求。 建模 一个模型代表了当前系统的某个方面。 由于系 统很复杂,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同细节上表现系统。 建立模型的过程能帮助软件开发人员澄清和改良设计。 它能描述信息系统的复杂性,便于对系统的交流,同时还能作为维护和升级系统的文档。 面向对象需求建模 第 2 章 项目关键技术介绍 7 面向对象方法中有一整套的图表集合,一起用来记录用户的需要和系统的需求,这些需求可以用以下的模型来说明: : 在定义系统需求的时,开发人员仅仅关注问题域类,问题域类是以后设计软件类的基石,同时也驱动了所有其他类的定义。 定义这些系统需求而建立起来的类成 为域模型类图,因为它显示的类是永恒问题域中的一部分。 使用问题域类有两个重要的目的。 第一,它描述了必须由面向对象的编程方法运行的泪的基本结构。 第二,它被当做一种概念上的数据模型,描述用于数据库定义的类。 : 一种可以显示不同的用户角色和这些用户角色如何使用系统的图。 用例图 目的是识别系统的用例,换句话说,就是识别如何使用系统,用户记录系统必须支持的所有功能的一种简便方法。 : 每个用例必须详细描述。 一种方法是详细记录下用户和系统共同完成用例 的步骤。 另一方面,也可以用来描述包括手动和 自动系统活动的过程,所有活动图可以用来定义用例。 : 提供了用例处理需求的更详细的说明,记录了系统的输入和输出,每个系统顺序图的应用范围通常是一个用例或者用例的一个场景,系统顺序图有参与者和系统两部分组成,系统被看成是一个黑盒子,因为它无需记录内部处理。 面向对象设计建模 面向对象设计主要关注三个面向对象模型,既设计类图,交互图和包图。 设计是用例来驱动,也就是说设计师在用例的基础上完成的。 在设计过程中,两个主要模型是设计类图和顺序图。 通过添加属性类型,可见性信息以及方法特征,域模型 类图被转化成设计图。 顺序图是系统顺序图的扩展,通过驱动执行用例所需的内部进程来创建。 顺序图具体化了相互协作的类,以及他们协作的方式,具体化了他们之间为了完成用例进程互相传递的信息。 在分层设计中,包图是用来将设计类图分割成相关的功能。 数据库建模 数据建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。 将经过系统分析后抽象出来第 2 章 项目关键技术介绍 8 的概念模型转化为物理模型后 ,在 Visio 或 Erwin 等工具建立数据库实体以及各实体之间关系的过程。 应用程序和数据建模是 为应用程序确定、记录和实现数据和进程要求的过程。 这包括查看现有的数据模型和进程,以确定它们是否可被重复使用,并创建新数据模型和进程,以满足应用程序的独特要求。 建模过程中的主要活动包括: (如实地销售人员需要查看在线产品目录并提交新客户订单)。 (如数据类型、大小和默认值)。 (使用业务规则和验证检查)。 (如安全检查和备份)。 (如关系、分层或索引存储技术)。 一定要知道建模通常会以意想不到的方式涉及公 司的管理。 例如,当对哪些数据元素应由哪些组织来维护有新的见解时,数据所有权(以及数据维护、准确性和及时性的隐含责任)通常会遭到质疑。 数据设计常常促使公司认识到企业数据系统是如何相互依存的,并且鼓励公司抓住协调后的数据规划所带来的效率提高、成本节约和战略性机遇。 在结束建模时,您已经完全定义了应用程序的要求,确定了可能被其他企业级应用程序重复使用的数据和服务,并为将来扩展奠定了强有力的基础。 设计模式 工厂模式 在我们实例化对象时,我们就要考虑到使用工厂模式,工厂模式是通过定义一个类,在该 类中定义一个静态的供外部调用的方法,该方法返回所需实例化的对象,于是当我们要实例化对象是只需调用该方法就可以了,当所需调用的对象发生变化时外部的代码就不需要修改。 在项目的实体层的基类中的提供创建实例方法时,我们就用到了工厂设计模式,在每次创建实例时,我们都要工厂化一个对象,于是我们把实例化对象放到方法中去完成。 当对象包含有参数的构造函数时,外部也不需要添加,可以在工厂内部将参数赋给构造函数,返回该对象,而外部只需要调用该工厂的方法,满足了开闭原则。 工厂模式的另一个特点是可以通过条件判断来约束是否返回对象实 例,如果不满足条件则返回空值。 大大提高了安全性和对对象的控制能力。 第 2 章 项目关键技术介绍 9 生成器模式模式 当接受一连串复杂的字符串时,我们就会考虑将该字符串进行分离,在我们的项目中,数据提供者将要接受一条数据库连接字符串,该字符串比较复杂,包括了服务器名,数据库名,以及是否设置安全保护的功能,于是我们就将该字符串进行分离,将变化的和不变的分离出来,服务器名和数据库名是变化的,于是我们就将其分离出来,生成器模式的使用大大方便了使用者,也体现了低耦合的需要,更大大减小了程序出错的几率。 适配器模式 将一个类的 接口转换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 在我们的项目中在数据库类型和 C类型转换是就使用到了适配器模式,该模式的使用使我们在数据提供者中进行类型匹配时,可以让其自动匹配,而不用担心类型无法匹配的问题。 外观模式 外观模式的使用是为了让外部通过调用一个类来完成所有所需的方法,得到所需的字段,所有需要的内容都通过一个类来访问。 这种方法也是一种高内聚的体现,把所有的类都内聚到一个外观类中,因为外部调用的是同一个类,所以在用户的需求。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。