在那個桃花怒放的季節,咱們在雨天學習泛型集合

深刻.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放映場次

相關文章
相關標籤/搜索