C#OOP课程总复习案例Word文件下载.docx
- 文档编号:3056902
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:6
- 大小:20.66KB
C#OOP课程总复习案例Word文件下载.docx
《C#OOP课程总复习案例Word文件下载.docx》由会员分享,可在线阅读,更多相关《C#OOP课程总复习案例Word文件下载.docx(6页珍藏版)》请在冰点文库上搜索。
?
子类中没指名调用父类中的哪一个,父类中必须有一个无参的构造函数,如果指名父类 中有参的,父类中可有无参构造函数 ?
在创建子类对象时,子类一定会调用父类的构造函数 2.显式调用父类构造函数:
publicSE(stringid,stringname,intage,intpopularity):
base(id,name,age) { this.Popularity=popularity;
} 方法重载 定义:
多个构造函数提供了多种实例化一个类的方式,称为方法重载。
特点:
1.方法名称相同 2.参数的类型不一样,个数,顺序不一致3.在同一个类中优点:
1.避免命名的麻烦 2.调用者不必再对参数类型做判断而直接调用作用:
为了初始化属性,与New一起使用注意:
仅仅名字相同,但返回类型不同的方法不是重载方法,不能存在于同一个类中 静态方法 特点:
为一个类的所有实体所共享语法:
class类名{ publicstatic数据类型变量名;
(eg:
publicstaticstringcountry=”China”;
)publicstatic返回值方法名(参数列表) { //方法体;
}} 调用:
类名.变量名;
//访问静态变量类名.方法名;
//调用静态方法静态成员:
适用于一些不会经常变化而又操作频繁的数据 静态方法若直接调用某个方法,那方法只能是静态的 ?
静态方法和变量属于类本身,使用时不用声明类的实例?
实例方法和变量属于类的实例,使用时必须创建类的实例区别 分类static调用静态成员直接访问实例成员直接调用实例方法初始化静态方法需要类名可以直接访问不可以不能调用前实例方法不需要实例对象可以直接访问可以可以~静态方法实例化对象时 对象交互 原理:
对象之间通过属性和方法进行交互,也可认为方法的参数以及方法的返回值都是对象之间相互传递的消息。
示例:
顾客点餐 遥控器 二.第6章~第8章 面向对象特性:
封装、继承、多态 封装:
1.定义:
保证对象自身数据的完整性和安全性2.语法:
Privatestring_name;
PublicstringName{ get{return_name;
}set{_name=value;
}}3.优点:
保证数据的安全性?
提供清晰的对外接口 ?
类内部实现可以任意修改,不影响其他类 继承:
符合is-a的关系 2.作用:
建立类之间的关系,实现代码复用,方便系统的扩展3.包括:
父类(基类)——被继承的类 子类(派生类)——继承其他类的类4.语法:
classPM:
Employee,classSE:
Employee(子类PM,SE继承了父类Employee)5.特性:
传递性:
eg:
卡车继承汽车,微型卡车继承卡车 单根性:
一个类只能有一个父类6.特点:
模拟了现实世界的关系?
实现了代码的重用 ?
使程序结构清晰 7.C#关键字:
this表示当前实例 ?
base用于表示父类,可以用于访问父类的成员 (在子类中可以使用base调用父类的属性) ?
protected允许被其子类访问,而不允许其他非子类访问?
sealed密封类不能被继承的类 1.定义:
相同的方法调用可实现不同的实现方式 2.解决继承的什么问题?
父类的子类很多,方法各不相同,需要用很多的if判断句3.方法的重载也成为方法的多态4.如何实现多态:
虚方法 抽象方法 虚方法 1.实现多态的步骤:
实现方法的重写。
——父类中定义方法,用virtual关键字定义虚方法?
在子类中定义子类自己的方法,用override实现了对父类的重写 ?
创建父类变量,用子类对象实例化这个父类变量 ?
把父类类型作为参数类型,它的子类对象作为参数传入?
定义父类变量,用子类对象初始化父类变量2.示例:
3.虚方法和抽象方法的区别:
抽象类和抽象方法 1.语法:
父类 访问修饰符abstractclass类名//抽象类{ 访问修饰符abstract返回类型方法名();
//抽象方法}子类 publicclass子类名:
父类名{ 访问修饰符override返回类型方法名(){//方法体}} 2.要求注意:
abstract声明一个没有实现的抽象方法,它不包含方法体?
抽象方法必须在其子类中实现,除非它的子类也是抽象类 ?
如果一个类继承了抽象类,而且本身继承了抽象类,子类中可以不写抽象方法,如果子类 不是抽象类,则子类中必写抽象方法。
?
含有抽象方法的类必然是抽象类 ?
抽象类中的方法可以是:
抽象方法--静态方法--实例方法 ?
抽象类不能被实例化,不能是密封的或静态的3.示例:
接口() 1.语法:
接口 访问修饰符interfaceclass类名//{ 访问修饰符返回类型方法名();
无方法体} 实现接口的类 publicclass类名:
接口名{ 访问修饰符返回类型方法名(){//方法体}不须要使用override关键字 } 接口是一组规范,是一种标准,遵循这个规范和标准就能实现某种功能2.要求注意:
interface声明一个接口,接口中的方法是没有方法体的?
接口实现它的类直接实现,不须要重写override?
派生类必须实现接口中的所有方法 ?
IComparable接口中有一个未实现的CompareTo(objectx)方法泛型版本IComparable?
IComparer接口中有一个未实现的Compare(objectx,Objecty)?
方法泛型版本IComparer?
3.示例:
设计模式 1.含义:
长期的软件开发中对一些经验的总结,对某些特定问题经过实践检验的特定的解决办法2.共23种设计模式——如:
简单工厂—设计方法的,返回值类型是父类,方法中可根据选择不同生成子类对象 目的:
实例化对象 原理:
工厂根据产品类型返回产品对象,客户调用无须关注创建产品的具体子类 父类产品客户子类产品A子类产品B子类产品C工厂什么是抽象工厂设计模式 适用场合:
创建的具体对象经常变化 优点:
降低类与类之间耦合,提高软件的复用性、扩展性 单例()—确保一个类只有一个实例,并且提供一个全局访问点。
通常采用私有构 造函数确保类不在类的外部被实例化,通过静态方法返回它的实例。
目的:
创建唯一实例 原理:
Singleton类定义一个GetInstance(),允许客户访问他的唯一实例。
GetInstance()负责创建自己的唯一实例 适用场合:
保证类只有一个实例 抽象工厂—提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 目的:
创建一系列相关对象,而不是一个对象原理:
抽象工厂:
生产抽象产品。
抽象产品:
提供实体产品访问接口实体工厂:
生产实体产品实体产品:
实现自已的功能 抽象工厂 抽象产品A客户实体工厂1实体工厂2实体产品实体产品抽象产品B实体产品适用场合:
设计我们的三层结构优点:
,提高三层结构的可复用性 实体产品三.第10章~第12章TreeView控件() 1.TreeView的重要属性和事件:
属性NodesSelectedNode事件AfterSelect说明TreeView控件中的所有树节点当前TreeView控件中选定的树节点,如果当前没有选中树节点,返回值为null说明选定树节点之后发生2.TreeNode的属性:
属性TextIndexLevelTagNodes说明节点显示的文本节点在所在集合的索引节点在树状菜单中的层级0、1……节点值节点的所有下一级子节点3.用TreeView显示数据:
TreeNodeTN=newTreeNode(“根节点名”) ?
添加根节点 (TN);
添加子节点 (TN);
删除选中的节点 ();
清空 1.选中节点的子节点 ();
2.TreeView控件的所有子节点 ();
4.示例:
XML解析 1.含义:
可扩展标记性语言,不需要二进制转换——using;
2.特点:
节点可以自扩展?
节点区分大小写 ?
每对标记成为节点。
且节点必须成对出现对象的属性方法 对象含义属性和方法说明XmlDocumentXmlNode 4.使用示例:
表示整个XML文档表示一个XML中的节点DocumentElementChildNodesLoad()InnerTextNameChildNodes获取根节点获取所有子节点获取整个XML中的结构当前节点的值当前节点的名字当前节点的所有子节点 读写文件 1.读写一个文件的步骤:
1.创建文件流 2.创建阅读器或者写入器3.执行读写操作 4.关闭阅读器或者写入器5.关闭文件流 2.需要引用的命名空间——using3.语法:
FileStreamfs=newFileStream(\,);
//FileStream(文件路径,打开文件的模式) StreamWritersw=newStreamWriter(fs);
//写入流StreamReadersr=newStreamReader(fs2);
//读取流 (Text);
(());
//读取 ();
读取文件设置的打开模式是 ();
StreamReader(fs2,) 解决乱码问题 4.示例:
文件和文件夹操作 1.文件操作:
File类的常用方法方法Exists(stringpath)Copy(stringSourceFilePathDestinationFilePath)说明用于检查指定文件是否存在,返回一个布尔值,string将指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件
Move(stringsourceFileName,string将指定文件移动到一个新的路径destFileName)Delete(stringpath)删除指定文件,若不存在,则不会引发异常 FileInfo类的属性和方法()——想要多次使用某个文件对象用FileInfo属性ExistsExtensionNameFullName方法CopyTo(String)Delete()MoveTo(String)说明用于检查指定文件是否存在,返回一个布尔值获取表示文件扩展名部分的字符串获取文件名获取目录或文件的完整目录说明将现有文件复制到新文件,不允许覆盖现有文件永久删除文件将指定文件移到新位置(string) Directory&
&
DirectoryInfo()类的常用方法方法Exists(stringpath)说明用于检查指定文件夹在磁盘上是否存在Move(stringsourceDirName,用于将文件或目录及其内容移到新位置stringdestDirName)Delete(string,bool)GetDirectories()GetFiles() 示例:
小型资源管理器 删除指定目录,如果bool=true,则删除子目录中的所有目录内容DirectoryDirectoryInfoDirectoryDirectoryInfo返回值是当前目录的子目录的名称数组返回当前目录的子目录对象数组返回值是指定目录下的文件名数组返回当前目录下文件列表序列化和反序列化 1.命名空间————using;
2.序列化:
含义:
将对象的状态存储到存储介质中的过程?
语法:
——类的头部加[Serializable] publicvoidSave() { //定义文件流——序列化需要通过文件流保存到文件 ?
//\文件的路径BinaryFormatterbf=newBinaryFormatter();
//BinaryFormatter二进制格式化器 //Serialize是BinaryFormatter的方法 ?
} (fs,cust);
注意:
如果需要格式化某个对象,那么它的成员也必须是可序列化的 ?
若可序列化中有不想序列化的属性,在属性上方加[NonSerialized]标记3.反序列化:
从特定介质中将数据重新构建对象的过程?
publicvoidLoad() { ?
} FileStreamfs=newFileStream(\,);
BinaryFormatterbf=newBinaryFormatter();
cust=(Customer)(fs);
//Deserialize()将存储介质的数据文件流转换为Object类型,所以需要类型转换 4.示例:
用户订单 特性() 定义:
如:
[Serializable][Obsolete]本身称为可序列化特性特点:
为目标文件(数据集,模块,类,属性,方法,函数参数)加入附加信息,类似于注释特性本质也是一个类,[Serializable]对应SerializableAttribute类特性命名以Attribute结尾,通常省略 自定义特性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OOP 课程 复习 案例