在那个桃花怒放的季节,咱们在雨天学习泛型集合

深刻.NET平台和C#编程css

          之化骨绵掌html

假 如 你 的 人 生 有 理 想,那 么 就 一 定 要 去 追,不 管 你 现 在 的 理 想 在 别 人 看 来是 多 么 的 可 笑 , 你 也 不 用 在 乎 , 人 生 蹉 跎 几 十 年 , 如 果 年 轻 的 时 候 计 较 得 失 前 怕 狼 就 后 怕 虎 而 不 去 追 逐, 等 到 了 40, 50 岁 的 时 候 , 你 惟 一 能 作 的 就 是 感 叹 岁 月 的 消 逝 和 无 情…java

 

船舶停靠在港湾是很安全的,但这不是造船的目的程序员

          --北大青鸟五道口校区原玉明老师编写web

                             By:北大青鸟五道口原玉明老师面试

1.学习方法: 3数据库

第一章 深刻.NET框架 5编程

1.NET简单解说 5c#

2.Microsoft .NET框架概述。 7windows

3. NET框架体系结构 9

4.封装体现   李明瑞 14

5..那些年咱们学过的访问修饰符?? 14

6.变量,类和方法的命名法 15

7.new:表明含义: 15

8.字段和属性区别? 15

9.自动属性 15

10.vs2012下写的项目如何在vs2010中打开 16

11.做业环节 16

第二章 深刻C#数据类型 16

CLR via C# 16

1. 封装 16

2. 关于数组的那些事儿 17

3. 值类型(在栈上存储真实的值)和引用类型(堆和栈上都要分配空间) 17

4. 结构体 22

5.构造函数 23

6.装箱和拆箱 24

7. 值传递和引用传递 25

8.经典练习  经理评分 26

第三章 使用集合组织相关数据(终极内存数据容器) 28

1、集合概念引入 30

2、 第一个集合ArrayList的使用 31

1.引子: 31

2.集合扩容原理截图 32

3、集合中元素操做(添加,遍历,删除、常见错误) 34

1.常见属性: 34

2.经常使用方法: 34

3. 常见错误:见PPT 34

4.现场编程 35

4、集合初始化器,对象初始化器 36

5、HashTable 36

1.HashTable注意事项 37

2.HashTable遍历三种方案: 37

6、泛型集合List<T>(理解difficult,写起来easy 40

7、泛型集合Dictionary<K,V> 40

8、 自定义泛型 40

9、.NET集合框架(集合扩展) 41

Queue(队列): 42

Stack(栈): 42

第四章 深刻类的方法 44

1.构造函数 44

2.方法重载(考试必考:23分) 45

3. 对象间的交互 45

第六章 继承 51

1、课程回顾 51

2、预习问题 52

3、本章目标 52

4、课程内容 53

3.继承: 53

第七章 深刻理解多态 60

第一种:虚方法实现多态 63

第二种:抽象方法实现多态 65

第八章 网络电视精灵   // 获取和设置当前目录(该进程从中启动的目录)的彻底限定目录。  System.Environment.CurrentDirectory 69

01.什么是设计模式 72

02.简单工厂图解 73

03.单例模式 75

04.为何学习XML 77

 05.什么是XML? 77

06.xml书写注意点 78

07.解析xml文件 78

08.问题记录 78

09.TreeView控件 78

10.网络电视精灵 79

第九章 文件操做 89

01.文件操做相关 92

02.FileDirectory 93

03.FileInfoDirectoryInfo 93

04.序列化与反序列化 94

第十章 影院售票系统 96

1. Movie开始 97

2. Seat 座位类 100

3放映场次 100

 

 

 

 

 

 

 

寒假做业 (寒假开心快乐!):

01.预习S2 第二本数前4章,提交电子版预习笔记,附带案例作完,而且书写第五章体检套餐管理项目

 

02.KTV系统代码造成BLog文章,而且附有解释,注释!

 

 

03.在全部讲过的S1课程中,书写一篇有技术含量的blog,能够是对象数组,能够是KTV项目的功能点对知识点的运用把控。

 

04.整理S1四本书全部的课堂案例,上机练习,以及课后题目源代码(须要提交),而且造成电子文档。

 

05.新年最大收获心情文章

 

过年的一点点心意,你们别嫌少啊!但愿你们过一个不同的春节

 

1.学习方法:

 01.找一本好书

初始阶段不适合,能够放到第二个阶段,看到知识点时,要进行验证

 

 02.查看帮助文档和搜索引擎的使用

借助网络上的Blog文章

 

 03.不要急功近利

     不要抱着速成的想法,不然必然走弯路
     学习编程不是一蹴而就的事情
     付出的成本高,才能有一个高薪的收入

 

 04.不要浮躁

     不要什么都学,只学有用的

     浮躁的程度和技术水平成反比的
     走本身的路,让别人去浮躁去吧!

     天天问问本身,我是否是开始浮躁了,不能人云亦云.

 

05.学习语言基础很重要

   基础不扎实,开发出的程序就很危险
   将所学的用到开发中去

 

06.何时去看别人的代码?

    揣摩编写代码人的思路,远比本身写软件要可贵多
    初学者不要去看别人的代码

    在纸上把调用关系画出来,抓主线.

 

07.如何提升?

    有主动性。学习的欲望要强。上网找别人的问题,为本身来提升

 

08.培养发现问题、思考问题和解决问题的能力

    出错信息,异常信息
    养成发现问题、思考问题和解决问题的能力

    这种能力受益一生,且不随时间变化

 

09编程的思想

 

  多用心,多动手
  程序运行的原理和机制
  编程的目的,函数的调用,内存模型

 

10.先学脉络,再学枝叶

 

你肉眼可见的网站 ,你均可以仿制出来,达到以假乱真的页面效果

13个段落  做家

 

 

第一章 深刻.NET框架

--有的时候,咱们在开发中,除了须要返回消息自己,还须要发送消息的状态,这个

--时候须要引入out参数。

 

第一章 深刻.NET框架

201632313:39:34

 

1.类和对象的关系?

解析:对象是类的实例,类是对象的抽象。

1.NET简单解说

l 关于类库的解说

      精华:所谓类库,就是微软或者sun公司,定义好了一堆类,方便用户对数据库数据的操做,或者对磁盘文件的操做

新建类库时,命名空间的名称就是类库的名称

 

体现形式:XXX.dll(dynamic link library)或者XXX.exe

包含了一堆类:每一个类中包含了一堆方法

 

l 面向对象提高

OOP(Object Oriented  Programming)面向对象编程  (5k)  8k   12k

AOP:(Aspache  Oriented Programming):面向切面编程

OOD(Object Oriented  Designer)面向对象设计(架构师)   3/month

OOA(Object Oriented  Analysis)面向对象分析  (分析师) 10/month

DBA(Database Administrator,简称DBA)  无价的,你要多少,老板必须给多少!

 

l 泛型集合对对象数组的一个升级(真正的开发中,用的都是泛型集合)

 

l xml解析

   如何将硬盘上的xml文件造成内存中的泛型集合数据

 

l IO操做

  序列化与反序列化(应用很普遍)

 

你们对.NET的认识

 解析:老一辈人也称为DOTNET

 .NET战略:微软的一个梦想:任何一我的,在任何一个地方,使用任何一款终端设备,均可以访问微软提供的服务,eg

广州:google

 Office,Google()

 佛的角度来讲:万物取一个平衡。

 Java  .NET

 联通  移动

 A  B

  .NET是微软的一个庞大的计划(战略)

  Office.NET

 网警浏览器

 IE

 

卡莉·菲奥丽娜 (她是个女的)

hp的前ceo

hp和康柏这两个合并,

 

windows azure

 

.NET 平台

C#,VB.NET,C++

 

须要本身写一个程序开启摄像头

Java效率低

C#

 

C#底层调用的是javajar

C语言

C开发的。

 

System.out.printnln();

Console.WriteLine();

 

MVP

 

关于重装的那些事儿

gril friend

boy friend

桌面

个人文档

网上邻居

打印机共享

组件的注册

 

 

验证码:注册和登录用验证码做用?

解析:机器 模拟 10亿次请求,

 据说这个名字没人用1

 据说这个名字没人用2

 

 

金蝶 KIS

速达3000

用友:

管家婆

ERP(企业资源规划)

OA系统

进销存

 

 

领料单

组装单

Vs版本                        .NET Framework版本

Vs2003                         1.0/1.1   

Vs2005                         2.0

Vs2008                         3.0/3.5

Vs2010                         4.0

Vs2012                         4.5

Vs2013                         4.5

Vs2015                         待测、

 

2.Microsoft .NET框架概述。

 01,Microsoft .NET介绍

 微软的.NET历史

  2000年微软公司向全球宣布其革命性的软件和服务平台:Microsoft .NET

 

02,为何须要.NET框架

 经过以下两个问题说明为何须要.NET框架

001C#程序能够在不一样平台(PDAPC)的环境中运行吗?

002,  使用C#程序能够调用VB.NET开发的程序吗?

答案确定是能够的,这也足以说明.NET框架的强大之处。

03.NET框架概述

.NET框架

.NET战略的基础框架

.NET程序的运行环境

强大的类库

.NET 框架==.NET Framework

 解析:在A机器上开发了一款软件,只要B机器上有框架就好了,不用再B机器上安装开发环境VS

.net core 1.0

 

04,.NET框架的魅力

   001,面向对象编程

      提升软件可复用、可扩展、易维护性、灵活性

   002,强大的动态web支持

   003web服务

   例如:天气预报服务iGoogle和支付宝网上购物商城

  003,数字身份验证的支持

  004,支持构建.NET程序的炫彩外衣(特效制做)

3.NET框架体系结构

   01.NET框架体系结构

 

 

 

ADO.NET概念?

解析:ADO.NET是微软提供的一组类库,能够帮助程序员和数据库交互。他里面有四大对象DataReader,DataAdapter,Command,Connection).

直接提问

 

二年:世界上有两种人:能看懂二进制的人和不能看懂二进制的人

02,公共语言运行时

\

CLR的两个组成部分

CTS:称为通用类型系统

      定义了在IL中的数据类型

CLS:称为公共语言规范

包括几种面向对象的编程语言的通用功能。

     03.NET框架类库

       

 

Scanner

Arrays

 

1.NET平台下的语言

  01.C#  VB J#   F#  C++

2.

  vs2013  4.5

  vs2012对应框架的版本是4.5

  vs2010          4.0

  vs2008/sp1          3.0/3.5

  vs2005              2.0

  vs2003              1.1

 

3..NET FrameWork两大组件是什么?

 解析:.NET 框架类库(FCLFrameWork Class Library)和公共语言运行时(CLR:common language Runtime)

4.CLR包含两部分:

解析:公共语言规范CLS(Common Language Specific) 通用类型系统CTS(Common  Type System)

5.c#语言要编程成能够被CPU解析执行的代码须要两次编译:

第一次编译:将C#语言经过c#编译器编译成MSIL中间代码

第二次编译:将MSIL代码经过即时编译器(JIT)编译成CPU能够解析执行的代码,或者成为(平台专用代码)

6.java程序要想被CPU解析执行也是须要两次编译

一次编译:将后缀名为java的文件经过java编译器编译成后缀名为.class(字节码)文件

第二次编译:将.class文件经过java虚拟机(jvm)编译成CPU能够解析的代码

7.CLR里面至少三部分:

CTS

CLS

JIT

 

类库:能够当作是一个承载了N个类的容器。

类库:System.Data.SqlClient    和数据库交互

      System.Data:            DataSet

      System.WinForms;        Winform应用必须类库

      System.Collections.Generic;   泛型集合

      System.Net;                网络操做,下载等操做

       System.IO;               文件的读写,文件夹的读写。遍历等操做

       System.Drawing;           绘制图形,和验证码

类库和命名空间?

解析:一个类库通常对应一个命名空间,也能够对应多个。

    可执行文件

     dynamic  link  library

 类库

 

 

4.封装体现   李明瑞

第一种:将私有字段封装成公有的属性当作是封装的体现

第二种:一个类能够封装属性和方法

public class Dog

{    

    private string name;

    public string Name

    {

        get{return name;}

set{name=value;}

    }

    public void bark()

    {

 

    }

}

1.面向对象编程三大特性:封装、继承和多态

5..那些年咱们学过的访问修饰符??

public:任何位置,包括跨程序集。

internal:在当前程序集(项目)中均可以访问

private:只能在当前类中访问(当前类的花括号中访问。)

protected:只能在当前类和其子类中使用  (后续讲解)

 

访问修饰符:真正的含义?

 字段  方法

类的访问修饰符:

//public(这个类在任何地方均可以使用)  internal

字段:private,public

方法:private ,public

6.变量,类和方法的命名法

骆驼命名法(camel):第一个单词的首字母小写,后续有含义的单词首字母大写。 变量

帕斯卡命名卡(pascal:每个单词的首字母都大写。类名和方法名

7.new:表明含义:

Student stu=new Student();

01.建立对象

02.开辟空间

03.自动调用构造函数

8.字段和属性区别?

解析:01.属性不能保存数据,真正保存数据的是字段

     02.属性是无关紧要的,字段是必须的。

 03.若是字段只想让类内部访问,那么设置成private,若是想找一个中间者,

  Main方法中访问到Student类中的私有字段,那么属性能够是一种选择。

但愿:推荐你们之后书写类的时候,字段和属性成对出现。

.属性无非就是有getset两个访问器组成

get:取值

set:赋值

9.自动属性

自动属性应用场景:当咱们不须要作逻辑断定的时候能够使用自动属性

定义自动属性在后台会自动帮咱们生成一个对应数据类型的私有字段

 

10.vs2012下写的项目如何在vs2010中打开

步骤一:找到sln文件,用记事本打开,将Format Version 12.00 改成11.00

步骤二:找到csprocj文件 ,用记事本打开,将<TargeFrameworkVersion>4.5</TargeFrameworkVersion>

改成4.0

步骤三:将App.Config文件中的以下节点中的内容换成4.0

<startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

11.做业环节

01.下午你们魔兽写完

02.写一个能够读取全部数据库路径的工具(三节课)

03.第二章预习(不用进班)

   必须多于3

04.下次提问第一章和第二章单词

   001..NET 框架两大组件

     CLR组件

   002.经常使用命名空间

   003.C#程序编译原理图

第二章 深刻C#数据类型

1.讲解第一章 魔兽争霸项目

C#入门经典

C#图解教程

--->c#本质论

--->梅超风:

CLR via C#

2.试着讲解几道笔试题

1.封装

土豪:拆快递。

窗边的小豆豆

C#本质论:

.   封装又称信息隐藏,是指利用抽象数据类型(自定义类UserInfo)将数据和数据的操做结合在一块儿,使其构成一个不可分割的独立实体,尽量的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系。

 

 体现一:把方法和属性封装到类中,当作是一种封装

 体现二:将私有字段封装成 公有的属性

 

封装的优势

第一:code重用;

第二:没必要关心具体的实现; (方法)

第三:面向对象三大特征之一;

第四,具备安全性!

小孩儿

老舍37《四世同堂》 妞子 活活的给饿死

黄磊

2.关于数组的那些事儿

若是咱们定义一个数组,而且赋值了

int[] nums={1,2};

nums当中保存 的是堆中的地址:例如:0x001

nums[0]:访问的是堆中的内容

3.值类型(在栈上存储真实的值)和引用类型(堆和栈上都要分配空间)

值类型:

Short   int  long  

Float

Double

Boolean

Char

Byte

 

S2222 咱们就是很2,牛!!!!你能怎么样!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C# 垃圾回收器回收器

 

Java 垃圾回收器回收器

 

二代

三代

四代

Student stu=new Student();

4.结构体

为何用结构体?由于当一个业务实体中,属性个数比较少的时候,使用类可能引发内存浪费,这个时候出现一种新的数据结构,就是结构体

             /*01.结构体不用new,就能够直接对其属性赋值

             *02.结构体中能够有字段,属性和方法

             *03.结构体是值类型,类是引用类型

             *04.在结构体中不能给字段赋初值,可是类中能够.

             *05.结构体中没有默认构造函数,但类中有默认构造函数

网络地址:

 

 

 

 

 

 

 

 

             */

 

全部数据类型的父亲都是Object

全部的值类型直接的父亲ValueType,爷爷是Object

5.构造函数

    默认若是定义了一个类,系统会自动的生成一个和该类名称相同,而且没有返回值类型,甚至连Void都没有的方法,该方法就称为构造函数!

Student stu=new Student();

注意问题:值类型的直接父类都是ValueType,而ValueType又继承自Object

特殊的值类型:枚举和结构体

特殊的引用类型:数组和接口

 

6.装箱和拆箱

因为装箱和拆箱对系统性能损耗很大,因此在真实的开发中咱们尽可能避免装箱和拆箱的操做。

C#编程指南(c#权威)

Object:是引用类型,而且是全部数据类型(值类型,引用类型)的父类

 

 

 

面试题:

int number=3;   值类型的直接父类:ValueType,ValueType的父亲是Object
Console.WriteLine(number.ToString());

结论:没有装箱

下去本身查!Why ??

 

老师:何时应该装箱,何时应该拆箱?

解析:因为装箱和拆箱过程都要损耗系统的性能,因此在开发中应该尽可能避免装箱和拆箱。

7.值传递引用传递

 

 

方法的参数是值类型和引用类型

 

 

 

 

 

注意:值传递和引用传递断定依据是有没有ref关键字

结论:

 

01.若是方法的参数类型自己就是引用类型,那么对参数值的修改会永久保存

例如:public void TP(SE se)

{

    se.Count++;//真正的修改se对象的Count

}

02.若是方法的参数类型自己是值类型,又没有ref修饰,那么对参数值的修改,不会永久保存()

03.若是方法的参数类型自己是值类型,可是有ref修饰,那么对象参数值的修改,也会永久保存。

 

值类型传递 :不带ref的参数传递   SE se

 

引用类型传递:带ref的参数传递

 

Windows  Live  Writer

 

8.经典练习  经理评分

 

 

思路分析:

 *先准备一个SE

 * 准备一个对象数组,长度为3

 * 写一个方法初始化集合的3

 * 如何将数组中的数据(肉眼看不到的数据)转换成界面上的ListView中的数据(肉眼能见到的数据)

 

 

做业:

1.帮我写一个SSMS工具

 

2016825日做业

1.

 

 

2.Blog文章

剖内存

值类型引用类型

 Heap(堆) 栈(Stack)  队列

 12K

3.面试题:

int number=3;
Console.WriteLine(number.ToString());

结论:没有装箱

下去本身查!

 

四类八种类型

StringBuilderStringBuffer

 

做业环节:

1.看本次课12个知识点

2.数组题

 

 

3.最后SE Voter手动敲一遍

4.计算机编号 ,经理评分

5.课后全部的选择和简答题

6.第三章的预习做业

 

第三章    使用集合组织相关数据

第三章 使用集合组织相关数据(终极内存数据容器)

S2223听写

第一题:List<T>类型泛型

 

 

第一题   Dictionary<K,V>泛型

 

 

 

 

 第三章题  集合初始化器

 

1、集合概念引入

集合:某些指定的对象(SE)集中在一块儿就是集合

以下是一个Hello Kitty的集合

数组:能够存储相同数据类型的一堆数据的容器

 

2、第一个集合ArrayList的使用

 

不管是java仍是C#,引用类型对象都会自动调用它的ToString()

ToString()方法体重写的恰好就是    命名空间.类名

 

public string ToString()

{

  return this.GetType().ToString();

}

1.引子:

ArrayList进行赋值的时候,须要使用Add()

可是对集合中元素的修正能够使用下标,eg.list[0]=1给新值

可是在集合中元素个数为0的状况下,不能用Add()方法以外的其余手段给集合中添加元素

,缘由由于_size是集合的一个属性, 真正存储元素个数为0的时候。_Size也是0.

int[] nums = { 1, 2, 3, 3, 4, 5 };

    我想在23之间插入一个元素100

    数组的局限性:因为给数组中添加元素,删除元素的时候,特别麻烦,因此我想找一个替代数组的工具,来帮咱们实现数组所能实现的功能。集合应运而生

集合的优势:01.自动扩容 02.集合当中不少方法可让咱们更加便捷的来操做集合中数据。(必须掌握)

 

扩展:集合本质的讲解(面试能够聊,加分)

 00.使用ArrayList首先须要引入命名空间,System.Collections

 

 01集合动态扩容原理:若是集合中元素个数为0,并无开辟空间

 

 02.默认若是集合中出现了第一个元素,那么集合的大小4,若是放入第5个元素,那么会扩容成8

 

 03.若是在小括号中首次定义的时候指定了集合的长度,那么之后扩容的方式

 变成初次指定数字大小的2倍;若是没有指定长度,那么遵循01的规范

 

 04.集合内部也是经过两个数组相互copy完成扩容的,可是微软已经对其作了优化,咱们不用关心效率问题

 

 

 

2.集合扩容原理截图

 

 

 

 

小结:

 01.集合的概念

   自动扩容:

   CapcityCount区别?

 02.构造函数

   概念:给类定义一个方法,方法名和类名相同,没有返回值,连void都不能有。

  03.非泛型集合在使用前,必定要先导入命名空间。

04.命名空间

  解析:做用:能使用该命名空间下全部的内容(类,方法)

  保证在不一样的命名空间下能够出现同名类

  

weilengdeyu.Download()

Weiredeyxue.UPLoad()

 

 

201562717:20:58

--删除

  

键盘

3、集合中元素操做(添加,遍历,删除、常见错误)

 

1.常见属性:

Capacity:集合占用空间

Count:集合存储元素个数

2.经常使用方法:

添加:int Add(Object value) //添加一个对象到集合的末尾

遍历:经过foreach遍历

删除:Remove()RemoveAt()Clear()

      *:注意事项:若是删除了集合中的某一个元素,那么集合的索引会自动维护

      Remove():删除内容

      RemoveAt():经过索引删除

      Clear():一次性移除集合中全部的元素

      Contains():是否包含某个元素

3.常见错误:见PPT

写本身的组件:其实就是你在微软已有的组件上进行第二次封装。例如

保证在TextBox中只能输入数字。

好比说,如今TextBox内容你想要按照本身特定的格式打印。本身在TextBox动手脚,而后让他支持对应格式的打印。

 

201562718:20:17 第二次回顾

  --01.ArrayList

     删除方法,包含,

   02.命名空间

     同名类便于区分,加快检索硬盘上某个类的速度

     Using System.Collections

     Using System.Collections.Generic; //泛型命名,默认导入

   03.var :隐式类型推断

      最后一个问题:

     int num=5;

   04.HashTable  

     第一个:删除

        没有RemoveAt()

     第二个:

       三个方案:根据key拿到value  

   只能拿到value

                DictionayEntry     

             Foreach( DictionayEntry item in table)

             {

                 item.Value

                 //命名空间.类名

             }      

     第三个:HashTable是一种无序的双列集合。

     第四个:ContainsKey()

 

4.现场编程

学生类Student已定义,属性为:NameAge

使用ArrayList存储学生集合

添加两个学生(周杰伦,22;杨伊,21

使用forforeach遍历学生信息

 

01.集合对于数组优势:

  001.操做方便(新增,删除,查找方便)

  002.自动扩容(刚开始能够不指定集合初始容量)

02.集合的实现原理

  解析:集合在设计上仍是使用数组实现的,只不过微软对两个相互copy的数组的执行效率进行了优化,所谓的自动扩容,无非是将新数组长度定义成旧数组长度的两倍后,再将新数组的前N项用旧数组的全部项填充而已。

 

4、集合初始化器,对象初始化器

   ArrayList engineers = new ArrayList()

{

        new SE(){Name = "周星星",Age = 26,

                     Gender = Gender.male,ID = "000",Popularity = 10},

        new SE(){Name = "王贱贱",Age = 22,

                     Gender = Gender.female,ID = "111",Popularity = 20},

        new SE(){Name = "周姐姐",Age = 30,

                     Gender = Gender.male,ID = "222",Popularity = 20}

};

5、HashTable

  Hashtable 一般称为哈希表

  根据键(Key)能够查找到相应的值 Value)

  

 ★1.HashTable注意事项

  

      01.HashTable类型的集合只能用foreach循环遍历,由于没有索引

      02.HashTable集合中元素是无序的(不会按照Add的顺序来展现元素内容)

      03.HashTable中的key不能重复

      04HashTabel没有RemoveAt()

 ★2.HashTable遍历三种方案:

     ☆:第一种方式,遍历全部的keys,经过key的值获取value

     ☆:第二种方式:遍历全部的value集合

     ☆:第三种方式,同时遍历keyvalue

       Eg:

    fo

1.学习方法: 1

第一章 深刻.NET框架 3

1.NET简单解说 3

2.Microsoft .NET框架概述。 5

3. NET框架体系结构 7

4.封装体现   李明瑞 12

5..那些年咱们学过的访问修饰符?? 12

6.变量,类和方法的命名法 13

7.new:表明含义: 13

8.字段和属性区别? 13

9.自动属性 13

10.vs2012下写的项目如何在vs2010中打开 14

11.做业环节 14

第二章 深刻C#数据类型 14

CLR via C# 14

1. 封装 14

2. 关于数组的那些事儿 15

3. 值类型(在栈上存储真实的值)和引用类型(堆和栈上都要分配空间) 15

4. 结构体 20

5.构造函数 21

6.装箱和拆箱 22

7. 值传递和引用传递 23

8.经典练习  经理评分 24

第三章 使用集合组织相关数据(终极内存数据容器) 26

1、集合概念引入 28

2、 第一个集合ArrayList的使用 29

1.引子: 29

2.集合扩容原理截图 30

3、集合中元素操做(添加,遍历,删除、常见错误) 32

1.常见属性: 32

2.经常使用方法: 32

3. 常见错误:见PPT 32

4.现场编程 33

4、集合初始化器,对象初始化器 34

5、HashTable 34

1.HashTable注意事项 35

2.HashTable遍历三种方案: 35

6、泛型集合List<T>(理解difficult,写起来easy 38

7、泛型集合Dictionary<K,V> 38

8、 自定义泛型 38

9、.NET集合框架(集合扩展) 39

Queue(队列): 40

Stack(栈): 40

第四章 深刻类的方法 42

1.构造函数 42

2.方法重载(考试必考:23分) 43

3. 对象间的交互 43

第六章 继承 49

1、课程回顾 49

2、预习问题 50

3、本章目标 50

4、课程内容 51

3.继承: 51

第七章 深刻理解多态 58

第一种:虚方法实现多态 61

第二种:抽象方法实现多态 63

第八章 网络电视精灵   // 获取和设置当前目录(该进程从中启动的目录)的彻底限定目录。  System.Environment.CurrentDirectory 67

01.什么是设计模式 70

02.简单工厂图解 71

03.单例模式 73

04.为何学习XML 75

 05.什么是XML? 75

06.xml书写注意点 76

07.解析xml文件 76

08.问题记录 76

09.TreeView控件 76

10.网络电视精灵 77

第九章 文件操做 87

01.文件操做相关 90

02.FileDirectory 91

03.FileInfoDirectoryInfo 91

04.序列化与反序列化 92

第十章 影院售票系统 94

1. Movie开始 95

2. Seat 座位类 98

3放映场次 98

 

reach (DictionaryEntry item in table)

            {

                Console.WriteLine(item.Key + "value==" + item.Value);

           }

 

6、泛型集合List<T>(理解difficult,写起来easy

 泛型:就是为了约束ArrayList中元素类型,而制定的一个新的集合类型,该类型只能加入同一类型的多个元素,标识符<T>,能够当作是一个占位符,泛型是将运行时错误提早到了编译时

员工打卡:下次周一:活动   项目

 

7、泛型集合Dictionary<K,V>

 Dictionary<string,Person> dic=new Dictionary<string, Person>();

8、自定义泛型

 

9、.NET集合框架(集合扩展)

 

 

 

Queue(队列):

Queue与Stack相似,主要区别是Queue类以先进先出(FIFO)的结构建立集合,即,元素进入集合的顺序与弹出顺序相同

队列图:

 

1、void Enqueue(object obj):将元素加入队列

2、object Dequeue():将队首元素从队列中删除

3、bool Contains(object obj):判断是否包含某元素

 

Stack(栈):

 

StackSystem.Collections.Stack类表示对象的简单的后进先出非泛型集合。

栈图:

 

经常使用方法:

 

 

 

泛型方法

//方法定义

static void Swap<T>(ref T lhs, ref T rhs){    T temp;    temp = lhs;    lhs = rhs;    rhs = temp;}

//方法调用

public static void TestSwap(){    int a = 1;    int b = 2;     Swap<int>(ref a, ref b);    System.Console.WriteLine(a + " " + b);}

 

做业:

1.下次课听写泛型和非泛型双列集合3中遍历方式

2.写出全部和集合相关的方法

3.上机练习和课后选择简答

4.第五章体检

5.泛型集合blogs

 

 

第四章 深刻类的方法

 

第四章 深刻类的方法

1.构造函数

   构造:方法名和类名相同,没有返回值

   无参构造函数

   带参构造函数

构造的生成策略:

   注意:在C#中,当咱们定义了一个类后,默认会生成一个与类名

   同名的无参构造,可是若是咱们自定义了任何一个带参构造,那么  

   系统再也不帮助咱们生成无参构造,在真实的开发中,推荐你们定义

   两个构造函数,一个无参,一个带参。

2.方法重载(考试必考:23分)

解析:在同一个类中,若是多个方法方法名称相同,可是参数列表(个数,顺序,类型)不一样)的多个方法能够构成重载,和方法的返回值类型没有半毛钱关系

如下的两个方法能够构成方法重载

      public void Say(string name,int age)
        {
           
        }
        
        public void Say(int age,string name)
        {
           
        }

在面向过程当中。函数

面向对象      方法

 

构造函数也能够重载

 

 

3.对象间的交互

 

 如今这个社会已经再也不是一我的单枪匹马打天下。协同工做。

 

Codeing

Testing

Designing

 

开发文档+Db+coding+测试+实施+培训--维护  (多面手)

面向对象:

京东商城:电子商务网站。

什么架构

后台数据库:SQL Server   10.1  87

分层

和数据库打交道:小组

和业务打交道:小组

华丽的css,展现:第三个小组

无非是将内存中的数据用给一个Table承载出来

 

案例:经过遥控控制电视机的开关和切换频道功能

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cinema:电影院

放映计划

放映厅(50

 

Seat

 

Ticket

放映计划

 Movie

枚举

   时间

 

Movie

 

 

汽车租赁系统

网络电视精灵

体检套餐系统

员工打卡系统

 

上课,是教你全世界都已经证明并且已经知道的事实上课的目的,是要让你学别人花不少时间整理和概括的知识,而让你往后再学习的路上,不须要再走一次,再造一次轮子」

 

 

 

第三方组件

 

S2:6本书    

起步比较晚,不要紧,终点没人知道在哪里

  起步比人晚,那是一百万个不要紧。S1 清明节

  由于没有人知道,终点在哪里,不过我却是看过不少,虽然一开始是跑了一些距离,不过在中途就休息了,时间过了一年半载,后来居上的人不可胜数,惟独本身沾沾自喜的人依然不少,这是一个龟兔赛跑的概念。

不须要埋怨怎么写都很差,怎看都不会,问问本身天天花了多少时间在 coding。当你花了不少时间 coding你认为你真的花了你很是多的时间,你依然学不会,不须要懊恼,转行吧。若是你不懊恼,那就继续

放弃也是一种美丽

没有任何借口:

 

开智:

 

     你怎么说,孩子才会听?

     开心,Happy  50    1.5万天

 

Baby:

势力

 

Person

   GoHome(Bicycle car)

  {

      car.Run()  

   }

 

 

Traffic:

    Car

    Tube

    Bicycle

 

 

智能:

遥控板Control

        Open()

    Close()

    切换频道Change(string channelName)

 

 

TV电视:  oop

    Open()

    Close()

    切换频道Change(string channelName)

 

UMLUnified Modeling Language (UML)又称统一建模语言或标准建模语言

 StarUML  

 Rational Rose  庞大

时序图

 

 

StartUML工具:

Java一门语言  《MyEclipseElipseidea是开发工具》

 

  1、用例图(use case diagram

 

 

 

 

 

 

 

   2、活动图(activity diagram

   3、静态结构图

   4、顺序图(Sequence Diagram:时序图

   5、交互纵览图(Interaction Overview Diagram)

   6、通讯图(Communication Diagram)

   7、时间图(Timing Diagram)

   8、状态机图(State Machine Diagram)

   9、构件图(Component Diagram)

   10、部署图(Deployment Diagram

  11.类图(Class  Diagram

 

 

 

 

UML视频地址

http://www.umlonline.org/school/thread-466-1-1.html

点餐系统:时序图或者是顺序图

//客户:点餐(两个对象,一个是服务员,一个是菜单)

       /*服务员:记录客人点餐

        * 服务员:提交菜单给厨师

        * 厨师:根据菜单作菜

        * 厨师:提醒饭菜制做完毕

        * 服务员:传菜(将作好的菜端给客户)

        * 客户:用餐

        *

        * 中间的关系:经过订单关联在一块儿

        * 订单内容(每张订单都应该有一个全部者,须要具备一个客户对象,还要有一个订单号,还要有订单内容,点餐内容)

        *

        */

菜单类

   属性:该菜单属于哪一个顾客(client)

         该菜单是哪一个餐桌的(id)

         顾客所点的菜(mealList)

顾客类

   方法:点菜

       Public void Order(Waitress waitress,Order  order)

       用餐

       Eat

服务员类

     记录客人点餐

     GetOrder(Order order)

     给厨师提交菜单

     SendOrder(Chef chef)

     传菜

     TransCook()

厨师类

     获取菜单

     GetOrder(Order order)

     厨师作菜

Cook()

提醒饭菜制做完毕

SendAlert(Waitress  waitress)

 

 

 

时序图

 

 

做业:

01.查做业:

第六章 继承

1、课程回顾

1.使用new实例化对象时,调用了什么?

解析:调用了构造函数

2.方法重载有哪些特色?

解析:在同一个类中,方法名相同该,参数里列表不一样,和返回值类型无关

3.如下位于同一类中的两个方法是否属于方法重载?为何?

public string Method1(string name){}

public void Method1(string address){}

解析:不能够,这两个方法就是同一个方法,在同一个类中没法共存。

2、预习问题

1.子类中调用父类成员的关键字是什么?

解析:base

Base():语法:支持的是子类构造后用:base()方式

Base.方法()

Base.父类属性

2.重写父类方法使用什么关键字?

解析:override

3.继承有哪些特性?

解析:单根性

     传递性

3、本章目标

1.理解继承的概念

2.熟练使用继承创建父类和子类

3.理解多态的概念

4.会重写虚方法实现多态

 

 

 

 

4、课程内容

1.当咱们在编辑器中用到了Ctrl+CCtrl+V的时候,就证实咱们的代码已经出现了冗余,这个时候须要考虑对

代码进行优化。

S2220班级问题:父类的哪些成员能够被继承?

解析:私有成员不能被继承,父类的构造

3.继承:C#中,若是一个类后面经过冒号又跟了另一个类,那么咱们就称冒号前面的类

为子类,冒号后面的类为父类。这种书写类的方式放映出来的关系就称为类的继承关系。

子类:派生类

父类:基类或者超类

4.知足什么条件的类能够使用继承??

解析:知足is a关系的两个类能够使用继承。

案例:经理is a a 员工

     程序员  is a 员工

     学生 is  a Person

5.若是new一个子类对象,那么有以下执行流程

   01.先定位到子类对应构造函数,没有执行子类的方法体

   02.转向了父类的无参构造函数,执行父类构造方法体

   03.转向了子类的方法体继续执行。

点题的话:若是在子类构造中,没有使用base显示调用父类的构造,那么系统也会自动调用父类的无参构造

    //01.base表明父类对象,若是base():调用父类的构造函数

    //02.base表明的是方法调用,是不须要参数类型的

6.经过base调用父类构造函数注意点

解析:01.经过base调用父类构造函数只能书写在子类的构造后

     02.经过base调用父类构造函数参数顺序和父类的构造参数一致

7.注意:方式一:new Student("张靓颖",20);

和方式二:new Student

{

   Name="张靓颖"Age=20

}区别?

解析:最终都能实现对类中的属性赋值。

可是赋值的原理不一样,

方式一:直接调用该类的带参构造赋值。

  01.先经过无参构造建立出类的对象

  02.对象名.属性名的方式赋值

8.访问修饰符

  public:在任何位置均可以访问,甚至是跨程序集均可以访问。

  private:只能当前类的花括号中访问。

  protected:只能在当前类,当前类的子类,子类的子类(孙子类)中能够访问。

 

9.继承的传递性

若是一个类B继承自类A,而类C又继承类B,那么类C也能够访问到类A中非私有成员

10.继承的单根性 C#不支持多继承 Java也不支持多继承)

在好久好久之前,有一个叫C++的家伙,他是支持多继承的语言,忽然有一天,10个程序员用多继承,有9个都用错了,后续的JavaC#语言所以再也不支持多继承。

C#中,一个类只能有一个父类C#Java都不支持多继承。要想使用多继承,那么请您使用接口。。

11.遍历窗体上全部的控件,判断是否是文本框

foreach(Control c in this.Controls)

{

    if(c is TextBox)

{

  ((TextBox)c).Text="";

}

}

is a 判断一个对象是不是某个类型。

12.继承的价值

01.模拟现实世界的关系

02.便于重用和扩展已完全测试的代码,且无需修改

03.结构更清晰

13.多态

    不一样的对象对于同一个操做,作出的响应不一样,那么这种状况在面向对象编程中就称为多态

使用多态的目的?

解析:使用多态就是为了统一调用

 

14.实现多态三种方式:

方式一:经过虚方法实现多态

实现多态的步骤

   01.在父类中经过virtual关键字定义一个虚方法

   02.在子类中经过override关键字对父类中的虚方法进行重写

   03.调用的时候,调用的是子类的方法

  目前为止,咱们学两种:

   第一种:虚方法实现多态

经过在普通类Person中用Virtual关键字定义虚方法SayHello(),而后在子类Student中经过override关键字对父类的SayHello()方法进行重写。

以下:

 

Student

 

Teacher

 

Main方法中调用

 

 

 

 

 

王建琦版(更优方案)

 

 

做业:

 

 

 

Base调用父类构造的原理图

 

 

 

第七章 深刻理解多态

 

 

1.里氏替换原则:在一个软件系统中,若是子类出如今父类出现的位置,而整个软件功能又没有影响,那么我们称为里氏替换。

2.

考试题:父类变量指向子类对象!!

3.里氏替换       设计原则的一种

 七种设计原则   ,写成blogs

4.Is as  

Is 作类型断定,  要想进行父类对象    到子类  类型的转换,还得用 as

 

5.模拟员工回家-------->父类做为方法参数

Employee

   --->GoHome(Traffic traffic)

 

Traffic  ---父类

   --->Bicycle  (自行车)  

   --->Car

   --->Tube

    

Program

  --->Main

6.大话设计模式

     简单工厂

     单例

     23种设计模式

 

7.抽象类9大注意点

下次课  手写 抽象类

 

两种方式实现多态:

  普通类+  虚方法

 

 

 抽象类+抽象方法

 

 

市面上全部教程 都会明确指出一个观点 :抽象类不能实例化

潜台词:不能直接使用以下代码实例化

     Animal  animal=new Animal();//编译器报错

     Animal animal=new Dog();

间接的经过子类构造,隐式   调用  父类构造的形态  来变相的在内存中 产生一个你肉眼不可见的对象。可是不幸的是  ,做为程序员的咱们,没法拿到抽象类对象的引用(也就是栈上的变量名)。

 

 

8.接口   -------用接口实现多态

 

 

8.青鸟杯  挑战赛

 

 

面试题

重载和重写的区别?

解析:方法重载在同一个类中,

      方法重写在两个类中,

 

  1. 把今天讲课的内容用Word文档作个总结(能够加入关键代码和注释)。
  2. LSP全称书写
  3. 154页上机练习1
  4. 第六章简答题没写的,写下
  5. 第七章课后做业(所有选择和所有问答题)。

第七章内容总结:

1,实现面向对象的多态性有哪几种方法?

   总共有3种,第一种,虚方法实现多态,  第二种:抽象方法实现多态  第三种:接口实现多态

   目前为止,咱们学两种:

  第一种:虚方法实现多态

经过在普通类Person中用Virtual键字定义虚方法SayHello(),而后在子类Student中经过override关键字对父类的SayHello()方法进行重写。

以下:

 

Student

 

Teacher

 

Main方法中调用

 

  第二种:抽象方法实现多态

经过在抽象类Birds中定义抽象方法Fly(),而后在子类【燕子】中对抽象方法Fly()进行重写实现多态,重写方式和虚方法同样,也是使用override关键字

Birds:

 

燕子类:

 

喜鹊类:

 

Main中调用:

 

2,抽象类能够被继承吗?

  能够,不只能够被普通类继承,也能够被抽象类继承

3,抽象方法能够有方法体吗?

  不能够,连花括号都不能有

4,简述抽象方法和虚方法的区别?

 课本上

课堂笔记:

    //01.定义一个抽象类,abstract 修饰

    //02.抽象方法不能有方法体,甚至连{}都不能有

    //03.抽象方法只能存在于抽象类中,可是抽象类中能够有非抽象方法

    //04.抽象类不能实例化

    //05.抽象类中抽象方法只是用来规定方法的形式(参数,返回值),约束子类方法的形式

    //06.抽象类中的抽象成员必须在子类中所有实现,除非子类也是抽象类

    //07.子类实现抽象方法的快捷键,Ctrl+.(没有输入法状况下 )

    //shift+alt+F10

//08.抽象类不能用static修饰,也不能是密封类(sealed:若是是static,抽象就没法被继承,也就失去了抽象类自己的意义

下次课内容:01.提问9点默写

            02.封装,继承,多态本身扩展

 

深刻理解多态

1.复习

  01.在子类中访问父类成员的关键字是什么?

  base

  注意点:base()只能用在子类构造中

  02.方法重载和方法重写的区别?

  override:在不一样的类中,一个方法用override关键字修饰,那么就对父类当中的同名方法进行了重写

  重写的目的:就是为了实现多态,更进一步来讲,就是为了统一调用

  方法重载:overload:在同一个类中,多个方法名称相同,参数列表不一样就能够构成重载,和返回值类型

  有半毛钱关系

  03.is关键字做用?

  解析:判断类型是否兼容

2.预习检查

  01.定义抽象类的关键字是什么?

  解析:abstract

  02.as关键字的做用是什么?

  解析:as类型转换

  03.抽象类中只能有抽象方法吗?

  解析:能够。抽象方法只能出如今抽象类中。

 

3.本章目标

  01.理解里氏替换原则

  02.会使用父类类型做为参数

  03.理解抽象类和抽象方法

  04.理解虚方法和抽象方法的区别

4.里氏替换原则(7个原则

概念:在一个软件系统中,子类能够替换父类出现的位置,而对软件的功能没有任何影响,就称为里氏替换原则。

5.isas

is作类型断定,而as作类型转换,as进行类型转换和()强转效果是等价的。

6.用虚方法实现多态的步骤

子类重写父类的虚方法

两种方式

建立父类变量,实例化子类对象

把父类类型做为参数类型,该子类及子类对象做为参数传入

运行时,根据实际建立的对象决定执行哪一个方法

7.什么是抽象类?

专业人士解析;若是在一个类前加上了abstract关键字,那么该类就称为抽象类

8.快速在子类中生成全部的抽象方法

方式一:在有输入法的状况下,使用Alt+Shift+F10

方式二;在无任何输入法的状况下,使用Ctrl+.

    注意事项:01.必须无输入法状态

         02.不能点击小键盘的点

9.若是一个类用sealed关键字修饰,那么该类就是密封类

   特性:密封类不能被继承

10.若是以类用static修饰,那么该类就是静态类,在静态类中全部成员(成员变量和成员方法)都必须是静态的额

 public static class SqlHelper

    {

 

        public static string name;

        public static void Say()

        {

        }

    }

注意点:

01.在静态方法中不能直接访问非静态的方法或者变量

若是要在静态方法中,访问非静态成员,那么要经过对象名.方法名访问。

11.面向接口编程

 

 

 

 

个人无奈你永远不懂,由于我是抽象类

 

坦白的说,抽象类存在真的很不容易。在接口没有出生的时候,抽象类还能够大言不惭的说我是规范的制定者,可是背后传来一个声音,你只会比手画脚,发号施令,历来都不干实事(没有方法体啊)。

 

    因而抽象类就这样被埋没了。既然这样,抽象类接着毅然决然的寻找着本身的闪光点。可是一个个日出  换来了日落,今天的抽象类依然是抽象类。依然不能够昂头挺胸,气宇轩昂的向JVM索要空间~由于抽象类永远只能new别人,这或许就是《抽象类的伤心》吧!虽然通过种种假装以后,抽象类能够有所谓的对象.

 

 

      例如,经过静态手段,经过子类等,可是,抽象类内心清楚,若是建立这样的对象,本身宁肯不要。因而,抽象类再次倔强的谢绝了本身成为对象这个事实。然而,抽象类的伤心谁能知道,看到一个一个类都new出了本身的幸福,抽象类依然在默默的寻找着本身的亮点。虽然这是一条披满荆棘的漫漫长路,可是就像他喜欢的一句话:把握如今,珍惜当下,作真实的本身。真的但愿,有一天,抽象类能够拿着麦克风大声说,其实我是一个有用的类。我不仅是别人的嫁衣,别人的衬托。

 

     难道在面向接口编程的今天,我抽象类真的就没有天日可见了吗,就由于我不能多继承吗?我不服。抽象类有本身的构造函数,可是却不能new,这种无奈谁又能懂?难道抽象类的存在只是为了子类吗?

 

 

     然而偏偏抽象类就处于这样一个尴尬的境地

 

 

   向前一步,你就走出竞争的行列,永远在前。

   没有失败,只有暂时中止成功!-----

   不怕牛人牛X,就怕牛逼的人比你更努力!!!

 

 

 

向后一步,你永无出头之日,堕落,被这个社会最底层的人踩在脚下。不服和抱怨都无济于事

这就是现实。

 

Baby::::::

 

****************************************************************************

第八章 网络电视精灵
  // 获取和设置当前目录(该进程从中启动的目录)的彻底限定目录。
 System.Environment.CurrentDirectory

20163513:50:57

1.最基础的xml解析的方式

  Htmlxml全称

  01.html:Hyper Text  Markup Language超文本标记语言)

     XmlExtensible  MarkUp  Language(可扩展标记语言)

  02.htmlxml从存储和展现的角度来讲:

   Xml侧重Data存储

   Html:侧重Data 显示

  03.office 2007使用xml作数据存储

     百度新闻订阅使用的XML技术

     

 

 

 

     

2.关于网络电视精灵架构搭建

网络电视精灵

   技能点支撑:

     -->继承 ,简单工厂 XML文件  泛型集合  IO永久保存数据

 

 

   1.搭建项目架构

     需求分析:

    01.建立一个TvProgram类,和我们files/XXX.xml文件对应

02.在什么地方解析全部频道的xml文件

 

 

//录制3个小时的视频。  1.5 个小时 网络电视精灵

                       三种方式实现多态:虚方法,抽象方法和接口

                       两个设计模式的blogs

                      

 

  下次听写!

 

01.什么是设计模式

* 解析:针对特定问题而提出特定的解决方案

能力:最少写

  简单工厂不算23种设计模式中的一种,

  工厂

  抽象工厂

        * 2.经常使用的设计模式总共有23种,今天的《简单工厂设计模式》和《单例设计模式》

          3.设计模式参考书籍<大话设计模式>  、《设计模式之禅》和 <GOF>

假如我今天过生日,我想订一个Pizza(比萨饼),我想打电话订。我只要有一个生产Pizza的工厂。

奶酪pIzza

培根Pizza

02.简单工厂图解

 

本身的一张图

 

再上一张图

 

 

03.单例模式

S1  KTV

在某些特殊的场合中,咱们须要在内存中只驻留某个类的一个对象,KTV点歌系统,播放窗体只须要有一个。

 

 

 

1.ASP.NETJSP的关系

ASP.NET JSP都是用来开发动态网站的技术,只不过ASP.NET是经过c#语言来操做的,

JSP是经过Java语言来操做的。

04.为何学习XML

  01.跨平台(操做系统),就是在windowns操做系统和Linux操做系统上都可以被解析

  02.跨开发语言

  03.超市管理系统      一家店   Access(文件型数据库)

    天天看一下每一个门市销售业绩         SQL Server数据库      Oralce

先将Access中的数据表导出到Excel文件 

而后将Excel文件中的数据导入到Sql  Server数据库

  04.Java中实现企业级应用缺乏了配置文件,那么灵活性就不复存在。

  05.RSS订阅本质上就是一个XML文件

 05.什么是XML?

解析:XML:Extensible Markup Language(可扩展标记语言)

        HTMLHyperLink Text  Markup Language(超文本标记语言)

  xml文件和html文件的区别?

  解析:01.xml严格区分大小写,html不区分

          02.xml不是编译语言,xmlhtml都是解释型语言

          03.html语言负责显示数据,而Xml文件就是专门用来存储数据

4.GB2312GBK能够当作是等价的,均可以支持中文。

若是咱们在书写xml文件的时候,若是本身用的encoding="utf-8"出现问题,

那么试着切成gb2312

06.xml书写注意点

  1.xml文件严格区分大小写
  2.标签配对出现
  3.xml文档只能有一个根节点
  4.咱们自定义xml文档中的标签

07.解析xml文件

  解析:01.作一个xml文档

          02.copydebug目录下

          03.建立一个XmlDocument对象 Ctrl+.导入命名空间

         04.调用doc.Load(“路径”)

         05.拿到根节点  XmlNode root=doc.DocumentElement;

         06.foreach来获取子节点内容

08.问题记录

 01.Load(string filename):绝对路径:"D:\123\Singer.xml"

 02.item.Name指定的是<内容>  item.InnerText指的是<>内容</>

09.TreeView控件

    01.如何获取选中的节点??

   解析:TreeNode tn=  tvList.SelectedNode;

  02.如何移除某一个选中的节点?

  解析:TreeNode tn=  tvList.SelectedNode;

       tn.Remove();

 03.Tag:属性,之后编程的时候,思路能够向Tag偏移。

Tag:Tag属性是微软提供给编程人员的一个编程接口,经过它能够轻松的实现某些功能。

04.Level深度

 

10.网络电视精灵

  业务需求:市场上有不少网络电视软件:PPSPPTVPPLive,风行,暴风

因此咱们来开发一款本身的网络电视软件!

  所用技术:

   01.C/S架构,数据存储在XML文件中 

    02.简单工厂模式

    03.继承和多态

    04.解析XML文档技术

   05.深刻剖析内存中数据的走向

  06.TreeView控件的使用

核心:经过该项目,你们应该对业务流程有一个总体把控。对继承和多态有深刻的了解

 

这篇文章的目的主要为了后续工做的使用,在这里对S2深刻.NET平台和C#编程中贯穿案例《网络电视精灵》的部分实现代码进行思路剖析。

  1、项目框架的搭建:

   咱们都知道开发一个项目以前,应该对项目的总体框架进行搭建。或者专业一点称为详细设计。解析来咱们就来看下网络电视精灵的大体结构,固然后续的功能可能还须要加入其它类。

 思路分析: 

1.建立对应的类

 

TvProgram:节目类

 

 

该类主要负责定义节目的属性,为后续从xml文件中读取的内容提供存放位置。

ChannelBase:频道基类

 

 

TypeAChannel:A类频道

TypeBChannel:B类频道

 

 

ChannelFactory:工厂类

 

 

 

 

上述四个类主要控制频道信息

 

ChannelManager:频道管理类

 

该类主要做用实质上减轻窗体中的代码量。至关于程序的工具类。

 

2013年8月18日

 

任务;加载全部的频道信息,绑定到界面的TreeView上

 

核心思路:

 

    1.首先在频道管理类ChannelManager中写一个加载全部频道方法LoadAllChannel;

 

       该方法做用读取FullChannels.xml文件,而且将读取到的内容赋值给ChannelBase          对象。关键的问题就转化成了如何建立一个ChannelBase对象。咱们都知道ChannelBase自己是一个抽象类,没法建立实例。由此,咱们想到能够经过其子类来建立对象。因为不一样子类实例化须要屡次new,咱们单独写了一个工厂类(ChannelFafactory),来建立子类实例,可是该子类实例存储在父类变量中。赋值完成后,咱们须要将频道对象添加到字典中。那么

 

LoadAllChannel方法结束后,字典中就有了XML文档中的数据。也就是咱们实现了将

 

本地硬盘上的xml文件中的数据读取到了内存中的一个字典集合中。

 

 

2.将集合中的数据绑定到TreeView中

将字典集合中的数据经过Foreach拆解,每循环一项,都建立一个TreeNode对象。

而且将集合中的属性赋值给节点对应的属性。而后将拼接处的节点添加到TreeView上

。这里须要注意的是,如何找到TreeView控件中的【全部电视台】这个节点,由于

咱们须要在该节点上添加频道名称。代码以下:

 

2013年8月21日

扩展:DGV绑定List<T>

List<T> list=new  List<T>();

dgv.DataSource=new BindingList<T>(list);

 

任务:1.将频道节目单填充到DataGridView中

      2.实现TreeView的右键菜单功能(能添加电台和删除电台)

      3.右键菜单控制

核心思路:

   将频道节目单填充到DataGridView中

     1.在对应的频道子类中书写Fetch方法,解析对应的频道xml文件,而后将xml文件中的数据读取到 public List<TvProgram>  TvList { get; set; }中。

    2.TvList中的数据绑定到DataGridView

 

实现TreeView的右键菜单功能(能添加电台和删除电台)

  核心思路:

     1.添加电台

 

 

其实咱们在作的事情就是先获取全部电台的某一个电台(北京电视台),而后经过

Tag属性拿到该电台对应的属性,将拆解出来的属性赋值给个人电台下的某一个

节点,因为节点不存在,因此咱们要构造出一个节点。而后赋值,赋值完成后,咱们就将构造出来的 节点添加到个人电台下就OK

 

固然,上面的操做仅仅是界面上新增电台的一个假象。程序再次运行时,咱们添加的电台并无保存。因此咱们要将选中的电台添加到个人电台(因为我喜欢的电台可能有多个,因此咱们定义了一个集合。)集合中。由于咱们你们都知道集合中的数据时存储在内存中的,因此咱们要向程序下次运行时,显示出咱们添加的电台,那么就必须将集合中的数据永久保存。固然咱们知道,永久保存数据的方法有不少,在这里咱们采起的是使用txt文件的方式,因此咱们书写了一个方法来帮咱们完成这项工做,sw.WriteLine(“End”)主要为了方便后面对文本文件的读取

归结起来有3点:

  01.TreeView中添加节点

  02.向集合中添加节点

  03.将集合中数据写入文本文件

删除电台思路与这个差很少!就不赘述了。

右键菜单控制

核心思路:经过Visible属性控制右键菜单的显示和隐藏

 

网络电视精灵后续思路

1.点击TreeView上某个电视台节点后,显示该频道下全部的节目单,

将节目单内容填充到DataGridView控件中。

思路分析:既然TypeAChannelChannelBase对应的北京电视台,那么咱们须要找到保存

北京电视台中全部节目的xml文件,而后接续该xml文件,每个<TvProgram>

节点都是一个节目单对象。我只须要将解析出的内容加载到集合中。集合中就存储了

一系列TvProgram对象,我只须要将该集合绑定到DataGridView上就OK了。

 

DgvList.DataSource=list;

 

注意:在调用Fetch方法以前要清空下集合中的数据

//第二节课:完成加载功能

 

2.能够将全部电视台下的某个频道添加到【个人电视台】下

思路分析:

  第一步:将【全部电台】下选中的频道加入到【个人电视台下】(假象:内存中操做,程序退出后,数据不保存)

  第二步:IO操做。将选中的节点添加到【我喜欢的电台】集合中,在ChannelManager类中经过

    SaveToTxt()方法将集合中的数据写入到本地的文本文件中 ,并规定文件每行的保存格式。

     TypeA|北京电视台|files/北京电视台.xml,,其中|只是为了到时候读取文本文件时能够将每一行内容

     由字符串转换成对应的属性值。

  

   第三步:01.将文本文件中内容从新赋值给集合。

             每读取一行,就是一个ChannelBase对象,而后将该ChannelBase对象

             添加到集合中。

           02.集合中有了数据后,再下一次用户打开应用程序的时候,就将集合中的每一项构形成一个TreeNode节点。

           而后将该节点做为【个人电视台】下的子节点存在。

           

 

//建立一个文件

using System.IO;

  FileStream fs=new FileStream("D:\\123.txt",FileMode.Create);

  //买一只钢笔

  StreamWritter sw=new StreamWritter(fs);

  //真正写入内容

  sw.Write("我喜欢C#课程");

  //关闭写入器

  sw.Flush();

  sw.Close();

  

  

  fs.Close();

  

 //判断文件是否存在

 if(!File.Exists("E:\\123.txt"))

 {

    //不存在的时候copy

    File.Copy("D:\\123.txt","E:\\123.txt");

 }

 

 //读取

 

 FileStream fs=new FileStream("E:\\123.txt",FileMode.Open);

 StreamReader sr=new StreamReader(fs,Encoding.Default);

 string str=sr.ReadToEnd();

 Console.WriteLine(str);

 sr.Close();

 fs.Close();

 

 

 

 做业         1. 10章项目总结到  blog文章

              2.下次课程单词:4章 6,7,8,9 (你来判单词)          两个设计模式,今天xml解析方式,带属性的方案

              // 3.引出网络电视精灵架构搭建

 

第九章 文件操做

 

 

 

 

 

 

其余信息: The process cannot access the file 'D:\S2226.txt' because it is being used by another process.

 

 

 

 

 

字节

1K=1024

 

 

 

bool            System.Boolean               

4Byte 32bit布尔型变量  逻辑值,true或者false,默认值为false

byte            System.Byte               

1Byte 8bit无符号整数无符号的字节,所存储的值的范围是0~255,默认值为0

sbyte         System.SByte 1Byte

8bit有符号整数带符号的字节,所存储的值的范围是-128~127,默认值为0

char           System.Char

2Byte 16bit 无符号Unicode字符,默认值为’\0’

decimal      System.Decimal

16Byte 128bit十进制数不遵照四舍五入规则的十进制数,28个有效数字,一般用于财务方面的计算,默认值为0.0m

double       System.Double

8Byte 64bit双精度的浮点类型,默认值为0.0d

float          System.Single

4Byte 32bit单精度的浮点类型,默认值为0.0f

int             System.Int32

4Byte 32bit有符号整数,默认值为0

uint           System.UInt32

4Byte 32bit无符号整数,默认值为0

long          System.Int64

8Byte 64bit有符号整数,默认值为0

ulong        System.UInt64

8Byte 64bit无符号整数,默认值为0

object       System.Object

指向类实例的引用,默认值为null

short        System.Int16

2Byte 16bit有符号整数,默认值为0

ushort       System.UInt16

2Byte 16bit无符号整数,默认值为0

string       System.String

指向字符串对象的引用,默认值为null

 

持久化:

是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(好比内存中的数据,是不能永久保存的)持久化为持久数据(好比持久化至数据库中,可以长久保存)。

 

02.如何将程序中的数据持久化?

解析:我只要将内存中的数据保存成硬盘上的文件。Xml jpg mp3

 

03.一个经典做业?

解析:如何读取大文本文件??优良解决方案

 

04.经过几个类来实现文件的读写

FileStream  fs=new FileStream();//建立出一个文件流

稍微低级类,高级类。让FileStreamStreamReader()

没有读取器的状况下,也能够文件的读取操做

 

 

01.文件操做相关

1.必须引入命名空间

2.FileMode枚举

Create:建立一个新文件,若是文件存在,覆盖原有内容

Open:指定打开现有文件

CreateNew:新建一个文件,若是文件存在,会抛出异常 ,该属性通常不用

Append:打开现有文件追加

 

3.当调用Flush方法的时候才真正的将内存中的数据写入到硬盘中。

4.文件操做5个步骤,务必理解

  01.建立一个文件流,本质:指定要往哪一个文件中写入内容(或者说在硬盘的指定位置建立一个空的文件)     白话:买了一张白纸

  02.建立一个写入(读取)器,并指定写入(读取)哪一个文件,和硬盘上的文件产生关联。

                  白话:买了一支钢笔

  03.开始真正的写入(读取)

                  白话:开始动笔写文章

  04.关闭写入(读取器)

                  白话:中止编写文章,盖上钢笔冒

  05.关闭流:

                  白话:将白纸折叠收藏

 

02.FileDirectory

File常见方法:

 

Directory常见方法:

 

 

03.FileInfoDirectoryInfo 

 

1.IO操做

1.若是咱们须要对硬盘上的目录(文件夹)或者文件进行操做,在C#中须要引入System.IO命名空间。

2.如何对文本文件进行读写???

解析:注意点:若是读取文件出现乱码状况,经过Encoding.Default或者是Encoding.UTF-8来解决,若是咱们想使用GB2312方式能够使用Encoding.GetEncoding(“GB2312”);

3.File (文件)    Directory(文件夹,目录)

File类和Directory类都是静态类,能够直接点出对应的方法。

FileInfo DirectoryInfo 非静态类,须要先建立对象,而后再来使用

何时使用File,何时使用FileInfo???

解析:通常若是对文件的多个属性进行操做的时候,就是用FileInfo,由于其效率高。通常判断硬盘上一个文件是否存在,直接使用File.Exitst()

做业:

1.第11章课后题

2.11章总结

3.看网络电视精灵后续内容

   加载出频道下对应的节目单,包括右键菜单的添加和删除

   以及个人电台:经过Txt保存

4.完善资源管理器,查询如何双击打开对应的文件类型

5.有兴趣的同窗能够书写小说阅读器。

 

4.换算过程

 

1TB=1024GB

1GB=1024MB

1MB=1024KB

1K=1024字节(byte)

1byte=8bit(1111  1111)

 

 

做业:1.趴着

      2本身再把昨天xml解析

      34 java汽车租赁系统

      资源管理器

04.序列化与反序列化

 

对象:UserInfo类型:

      UserName :微冷的雨

      UserAge     18

      UserAddress  北京海淀

 

序列化是将   对象状态     转换为     可保持或可传输格式  的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,能够轻松地存储和传输数据。

 

 

 

 序列化注意事项:

 01.若是自定义类须要被序列化,那么必须打上[Serializable]特性

 02.必须保证可序列化类的全部属性也都可以序列化

 03.必须保证可序列化类的父类也能够序列化

 04,若是只序列化部分属性,不须要序列化的属性上能够打上[NonSerializable]特性

 

 

 

第十章 影院售票系统

类的架构图

技术先导 :动态生成标签 35Label

须要将35Label放入TabControl中。如何Render(渲染)称为了最大的问题

1.在内存中准备一个Label  直接new便可  

2.内存中的Label如何绑定到Form1上。

3.

 

 

 

 

1.Movie开始

枚举和类在同一级别

 

影片属性----->电影名称   海报图片名   导演名  主演名  电影类型  电影订价

 

 

 

 

 

2.Seat 座位类

 

3放映场次

相关文章
相关标签/搜索