2.3抽象类和抽象方法
1. 语法:
父类
访问修饰符 abstract class 类名 //抽象类 {
访问修饰符 abstract 返回类型 方法名(); //抽象方法 } 子类
public class 子类名 : 父类名 {
访问修饰符 override 返回类型 方法名() { //方法体 } }
2. 要求注意:
? abstract 声明一个没有实现的抽象方法,它不包含方法体 ? 抽象方法必须在其子类中实现,除非它的子类也是抽象类
? 如果一个类继承了抽象类,而且本身继承了抽象类,子类中可以不写抽象方法,如果子类
不是抽象类,则子类中必写抽象方法。 ? 含有抽象方法的类必然是抽象类
? 抽象类中的方法可以是:抽象方法--静态方法--实例方法
? 抽象类不能被实例化,不能是密封的(sealed)或静态的(static) 3. 示例:(动物喂养)
2.4接口(ACCP5.0)
1. 语法:
接口
访问修饰符 interface class 类名 // {
访问修饰符 返回类型 方法名(); 无方法体 }
实现接口的类
public class 类名 : 接口名 {
访问修饰符 返回类型 方法名() { //方法体 } 不须要使用override关键字
}
接口是一组规范,是一种标准,遵循这个规范和标准就能实现某种功能 2. 要求注意:
? interface 声明一个接口,接口中的方法是没有方法体的 ? 接口由实现它的类直接实现,不须要重写override ? 派生类必须实现接口中的所有方法
? IComparable接口中有一个未实现的CompareTo(object x)方法 泛型版本IComparable
2.4设计模式
1. 含义:
长期的软件开发中对一些经验的总结,对某些特定问题经过实践检验的特定的解决办法 2. 共23种设计模式——如:
简单工厂—设计方法的,返回值类型是父类,方法中可根据选择不同生成子类对象
目的:实例化对象
原理:工厂根据产品类型返回产品对象,客户调用无须关注创建产品的具体子类
父类产品 客户 子类产品A 子类产品B 子类产品C 工厂 什么是抽象工厂设计模式
适用场合:创建的具体对象经常变化
优点:降低类与类之间耦合,提高软件的复用性、扩展性
单例(ACCP6.0) —确保一个类只有一个实例,并且提供一个全局访问点 。 通常采用私有构
造函数确保类不在类的外部被实例化,通过静态方法返回它的实例。
目的:创建唯一实例
原理:Singleton类定义一个GetInstance(),允许客户访问他的唯一实例。 GetInstance()负责创建自己的唯一实例
适用场合:保证类只有一个实例
抽象工厂—提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
目的:创建一系列相关对象,而不是一个对象 原理:抽象工厂:生产抽象产品。
抽象产品:提供实体产品访问接口 实体工厂:生产实体产品 实体产品:实现自已的功能
抽象工厂 抽象产品A 客户 实体工厂1 实体工厂2 实体产品实体产品抽象产品B 实体产品 适用场合:设计我们的三层结构 优点:,提高三层结构的可复用性
实体产品 三.第10章~第12章 3.1 TreeView 控件(ACCP6.0)
1. TreeView的重要属性和事件:
属性 Nodes SelectedNode 事件 AfterSelect 说明 TreeView控件中的所有树节点 当前TreeView控件中选定的树节点,如果当前没有选中树节点,返回值为null 说明 选定树节点之后发生 2. TreeNode的属性: 属性 Text Index Level Tag Nodes 说明 节点显示的文本 节点在所在集合的索引 节点在树状菜单中的层级0、1…… 节点值 节点的所有下一级子节点 3. 用TreeView显示数据:
TreeNode TN = new TreeNode ( “根节点名” )
? 添加根节点
this.tv.Nodes.Add ( TN ) ;
? 添加子节点
this.tv.SelectedNode.Nodes.Add ( TN ) ;
? 删除选中的节点
this.tv.SelectedNode.Remove () ;
? 清空
1. 选中节点的子节点
this.tv.SelectedNode.Nodes.Clear ( ) ; 2. TreeView控件的所有子节点
this.tv.Nodes.Clear ( ) ; 4. 示例:
3.2 XML解析
1.含义:可扩展标记性语言,不需要二进制转换 —— using System.Xml; 2.特点:
? 节点可以自由扩展 ? 节点区分大小写
? 每对标记成为节点。且节点必须成对出现 3.XML对象的属性方法
对象 含义 属性和方法 说明 XmlDocument XmlNode
4. 使用示例:
表示整个XML文档 表示一个XML中的节点 DocumentElement ChildNodes Load() InnerText Name ChildNodes 获取根节点 获取所有子节点 获取整个XML中的结构 当前节点的值 当前节点的名字 当前节点的所有子节点
3.3读写文本文件
1. 读写一个文件的步骤:
1. 创建文件流
2. 创建阅读器或者写入器 3. 执行读写操作
4. 关闭阅读器或者写入器 5. 关闭文件流
2. 需要引用的命名空间 —— using System.IO 3.语法:
FileStream fs = new FileStream(\, FileMode.Create); // FileStream(文件路径,打开文件的模式) StreamWriter sw=new StreamWriter(fs); // 写入流 StreamReader sr = new StreamReader(fs2); //读取流 sw.Write(Text); Console.WriteLine(sr.ReadToEnd()); // 读取 sw.Close(); 读取文件设置的打开模式是 FileMode.Open fs.Close(); StreamReader(fs2,Encoding.Default) 解决乱码问题
4. 示例:
3.4文件和文件夹操作
1.文件操作:
File类的常用方法 方法 Exists ( string path ) Copy(string SourceFilePath DestinationFilePath) 说明 用于检查指定文件是否存在,返回一个布尔值 ,string 将指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件