Net理论常识.doc
《Net理论常识.doc》由会员分享,可在线阅读,更多相关《Net理论常识.doc(14页珍藏版)》请在咨信网上搜索。
1、目录面向对象:2什么是封装2什么是继承2什么是多态3什么是耦合度3基本定义4泛型4抽象类、接口、基类、派生类、继承4访问类型的差异5枚举6结构和类7函数、方法9重构、重写、重载9事件和委托9简单的工厂模式开发10三层基本结构11值类型和引用类型11附表12重新理解面向对象,进行新模式的思索和加深。蒋玉龙 2008年4月 进行基础知识的重温QQ 66840199 Email:Loving-面向对象:三大特性是封装、继承和多态,而不再是简单的函数、方法个人理解:面向对象是一种思想,如何成功的将业务逻辑和界面逻辑分离,尽可能大的在维护、修改的时候改动尽可能少的代码(独立出来单独的功能块而不需要改一而
2、动全身),降低程序的耦合度。最基础的核心,应该就是抽象,如何利用掌握的知识,将事物的数学模型归纳好,这是一种思想,而不是一种简单的方式方法。面向对象还是过程,很重要么?不重要么?呵呵程序并不是实现了功能、界面美观就是好程序,同样,也不是使用了封装、继承和多态的就是面向对象。程序员应该比操作员追求更高的一个目标什么是封装封装 (encapsulation) 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别.封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目
3、的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。封装的大致原则1把尽可能多的东西藏起来.对外提供简捷的接口.2把所有的属性藏起来.例如,在抽象的基础上,我们可以将时钟的数据和功能封装起来,构成一个时钟类。按c+的语法,时钟类的声明如下:class Clockpublic: /共有成员,外部接口 void SetTime(int NewH,int NewM,int NewS);void ShowTime();private: /私有成员,外部无法访问int Hour,Minute,Second;可以看到通过封装使一部分成员充当类与外
4、部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。什么是继承 “继承”是面向对象软件技术当中的一个概念,例如在java语言中,java语言中不支持多重继承,是通过接口实现多重继承的功能。如果一个类A继承自另一个类B,就把这个A称为B的子类,而把B称为A的父类。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。 继承是指一个对象直接使用另一对象的属性和方法。事实
5、上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的父亲,而这些子实体则是汽车的孩子。 同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。什么是多态多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和
6、方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例): public interface Parent() public void simpleCall(); public class Child_A implements Parent public void simpleCall() /具体的实现细节; public class Child_B implements Parent public void simpleCall() /具体的实现细节; /当然还可以有其他的实现 然后,我们就可以看到多态所展示的特性了: Parent pa = new Child_A(); pa.
7、simpleCall()则显然是调用Child_A的方法; Parent pa = new Child_B(); pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制。什么是耦合度蒋:实际上不能也不必追求到完美的最低耦合度,在一定范围内降低,就足矣。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 耦合度是指
8、模块之间联系的紧密程度。耦合这个概念大家都很清楚,它的强弱直接影响软件的维护和升级。耦合的强弱叫做耦合度。我们的软件工程里面一个基本原则是高内聚,低耦合。但是没有耦合的系统是不存在的。因为各个模块要互相辅助才能完成一个真正的系统,所以现在好多说法是降低耦合,而没有那种说取消耦合的说法了。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。 两个模块之间的耦合方式通常可分为7种,按其耦合度从低到高的次序依此为
9、:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。 内聚度是指内部各元素之间联系的紧密程度,模块的内聚种类通常可分为7种,按其内聚度从低到高的次序依此为:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通信内聚、顺序内聚、功能内聚。基本定义泛型泛型使您可以按照泛型操作的精确的数据类型定制方法、类、结构或接口。例如,您可以使用 Dictionary 泛型类并指定允许的键类型和允许的值类型,而不使用允许任何键类型和值类型的 Hashtable 类。泛型的优点包括提高的代码可重用性和类型安全性。(例程见附表)抽象类、接口、基类、派生类、继承首先抽象类中有抽象成员和非抽象成员(和普通类
10、成员一样),而接口的所有成员都必须在实现接口的代码类中实现。抽象类可以有自己的字段,但是接口不能有自己的字段,构造函数,析造函数,静态成员或常量。从用途上来说,抽象类主要是提供为对象系列的基类,共享一些主要特性,使继承于一个抽象类的对象都具有一个共同的目的或者结构。(所以我们可以把抽象类看成是对对象的一个特性)。接口主要是为一批类提供一些相同,而有必须实现的任务。实现同一个接口的一批类,就会强制的实现一些必须实现的接口成员,使编写更规范。(所以我们可以把接口看成是对类的一个特性)。举一个例子来看:膝上电脑和台式电脑都可以由一个抽象类来派生,这个抽象类具有电脑的某些特性,比如内存的型号,大小,电
11、源要求等。这些特性是和具体的对象有关,我们需要从电脑来派生出我们自己的膝上电脑和台式电脑类。但是无论是什么电脑他们都会有些相同的目的,比如编写程序,拽写文档,打游戏等。我们可以为这些派生的类指定一个接口,以便他们都能实现这些相同目的的功能,例如游戏功能IgameInterface.A、 抽象类 用MustInherit编写,不能被实例化 Public MustInherit Class WashingMachineSub New() Code to instantiate the class goes here. End sub Public MustOverride Sub Wash Pub
12、lic MustOverride Sub Rinse (loadSize as Integer)Public MustOverride Function Spin (speed as Integer) as LongEnd Class使用的时候,采用单继承模式,而接口可以同时多个共存;B、 接口接口是其他类型为确保它们支持某些操作而实现的引用类型。接口从不直接创建而且没有实际的表示形式,其他类型必须转换为接口类型。一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。.下面的示例显示一个包含默认属性、事件 E、方法 F 和属性 P 的接口:Int
13、erface IExample Default Property Item(index As Integer) As String Event E() Sub F(ByVal Value As Integer) Property P() As StringEnd Interface 接口可以使用多重继承。C、D、 抽象类和接口的区别1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类 接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。”抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 2.接口基本上
14、不具备继承的任何具体特点,它仅仅承诺了能够调用的方法; 3.一个类一次可以实现若干个接口,但是只能扩展一个父类 4.接口可以用于支持回调,而继承并不具备这个特点. 5.抽象类不能被密封。 6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非 虚的,当然您也可以声明为虚的。 7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上。 8抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。9.好的接口定义应该是具有专一功能性的,而不是
15、多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。 10.尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知. 11.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。如果要设计大的
16、功能单元,则使用抽象类。 如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。访问类型的差异Public:可从以下位置访问元素:同一项目中任意位置的代码,引用该项目的其他项目,以及由该项目生成的任何程序集Friend:可以从同一程序集内部访问元素,而不能从程序集外部访问声明上下文中的所有代码均可以访问其元素。编译到同一程序集的其他类、结构和模块中的代码可以访问该程序集中的所有 Friend 元素Protected:可以从同一个类内部或从该类派生的类中访问元素Protected Friend:派生类或同一程序集内Private: 仅可以从同一模块、类或结构内访问元素A、 Override
17、s 重写旧的方法获得原有方法只能用它Overridable/virtual指定属性或过程重写从基类继承的名称相同的属性或过程。B、 Overloads 增加新的方法,会有多个同名方法产生指定属性或过程使用相同的名称重新声明一个或多个现有的属性或过程。C、 Shadows 隐藏原有的方法指定已声明的编程元素重新声明并隐藏基类中的同名元素或重载元素集。枚举 Enum枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型。如果没有显式声明基础类型,则使用 Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。 提供比较此类的实例的方法、将实例的值转换为其字符串表示形
18、式的方法、将数字的字符串表示形式转换为此类的实例的方法和创建指定枚举和值的实例的方法。也可以将枚举视为位域。有关更多信息,请参见 FlagsAttribute。此类从 ValueType 继承,并实现 IComparable、IFormattable 和 IConvertible 接口。使用 Convert 类来进行转换,而不使用此类的 IConvertible 的显式接口成员实现。用于 FlagsAttribute 和 Enum 的准则 只有要对数值执行按位运算(AND、OR、XOR)时才对枚举使用 FlagsAttribute 自定义属性。 用 2 的幂(即 1、2、4、8 等)定义枚举常
19、量。这意味着组合的枚举常量中的各个标志都不重叠。 请考虑为常用标志组合创建一个枚举常量。例如,如果有一个用于文件 I/O 操作的枚举包含枚举常量 Read = 1 和 Write = 2,请考虑创建枚举常量 ReadWrite = Read OR Write,该枚举常量将 Read 和 Write 标志组合在一起。此外,在某些情况下,可能会将用于组合标志的按位 OR 运算视为一种高级概念,在简单任务中不需要执行此操作。 将负数定义为标志枚举常量时应谨慎,因为很多标志位置都可能设置为 1,这可能使您的代码产生混淆并易于发生代码错误。 测试数值中是否已设置标志的一种简便方法为:在数值和标志枚举常量
20、之间执行按位“与”操作,这种方法会将数值中与标志不对应的所有位都设置为零,然后测试该操作的结果是否等于该标志枚举常量。 将 None 用作值为零的标志枚举常量的名称。在按位 AND 运算中,不能使用 None 枚举常量测试标志,因为所得的结果始终为零。但是,您可以在数值与 None 枚举常量之间执行逻辑(不是按位)比较,以确定数值中是否已设置任何位。 如果创建的是值枚举而不是标志枚举,创建 None 枚举常量仍十分有用。原因是在默认情况下,公共语言运行库会将用于枚举的内存初始化为零。因此,如果不定义值为零的常量,则枚举在创建时将包含非法值。 如果明显存在应用程序需要表示的默认情况,请考虑使用值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Net 理论 常识
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xiaol****an189】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xiaol****an189】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。