日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021哈工大软件构造Lab3

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021哈工大软件构造Lab3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2021年春季學期
計算學部《軟件構造》課程

Lab 3實驗報告

實驗源碼:https://github.com/1190200817/SC_Lab3

目錄

1 實驗目標概述··· 1

2 實驗環境配置··· 1

3 實驗過程··· 1

3.1 待開發的三個應用場景··· 1

3.2 面向可復用性和可維護性的設計:IntervalSet<L>· 2

3.2.1 IntervalSet<L>的共性操作··· 2

3.2.2 局部共性特征的設計方案··· 3

3.2.3 面向各應用的IntervalSet子類型設計(個性化特征的設計方案)··· 4

3.3 面向可復用性和可維護性的設計:MultiIntervalSet<L>· 7

3.3.1 MultiIntervalSet<L>的共性操作··· 7

3.3.2 局部共性特征的設計方案··· 7

3.3.3 面向各應用的MultiIntervalSet子類型設計(個性化特征的設計方案)··· 9

3.4 面向復用的設計:L· 11

3.5 可復用API設計··· 13

3.5.1 計算相似度··· 13

3.5.2 計算時間沖突比例··· 14

3.5.3 計算空閑時間比例··· 15

3.6 應用設計與開發··· 15

3.6.1 排班管理系統··· 15

3.6.2 操作系統的進程調度管理系統··· 17

3.6.3 課表管理系統··· 18

3.7 基于語法的數據讀入··· 18

3.8 應對面臨的新變化··· 20

3.8.1 變化1· 20

3.8.2 變化2· 21

3.9 Git倉庫結構··· 21

4 實驗進度記錄··· 22

5 實驗過程中遇到的困難與解決途徑··· 23

6 實驗過程中收獲的經驗、教訓、感想··· 24

6.1 實驗過程中收獲的經驗和教訓··· 24

6.2 針對以下方面的感受··· 24

  • 實驗目標概述
  • 本次實驗覆蓋課程第 2、3 章的內容,目標是編寫具有可復用性和可維護性的軟件,主要使用以下軟件構造技術:

  • 子類型、泛型、多態、重寫、重載
  • 繼承、代理、組合
  • 語法驅動的編程、正則表達式
  • API 設計、API 復用
  • 本次實驗給定了三個具體應用(值班表管理、操作系統進程調度管理、大學課表管理),學生不是直接針對每個應用分別編程實現,而是通過 ADT 和泛型等抽象技術,開發一套可復用的 ADT 及其實現,充分考慮這些應用之間的相似性和差異性,使 ADT 有更大程度的復用(可復用性)和更容易面向各種變化(可維護性)。

  • 實驗環境配置
  • Eclipse和Git在上一次實驗中已經配置好了。本次實驗無需額外配置環境。

    在這里給出你的GitHub Lab3倉庫的URL地址(Lab3-學號)。

    https://github.com/ComputerScienceHIT/HIT-Lab3-1190200817

  • 實驗過程
  • 請仔細對照實驗手冊,針對每一項任務,在下面各節中記錄你的實驗過程、闡述你的設計思路和問題求解思路,可輔之以示意圖或關鍵源代碼加以說明(但千萬不要把你的源代碼全部粘貼過來!)。

  • 待開發的三個應用場景
  • 簡要介紹三個應用:

    ①值班表管理,一個單位有 n 個員工,在某個時間段內安排值班。每天只能安排一個員工且不能出現無人值班的情況;每個員工需要安排在連續的幾天內。值班表內需要記錄員工的名字、職位、手機號碼,以便于外界聯系值班員。

    ②操作系統進程調度管理,進程被調度在 CPU 上執行,操作系統決定在各個時段內執行哪個進程。操作系統可掛起某個正在執行的進程,在后續時刻可以恢復執行被掛起的進程。每個時間只能有一個進程在執行,其他進程處于休眠狀態;一個進程的執行被分為多個時間段;在特定時刻,CPU 可以“閑置”;調度無規律,可看作是隨機調度。

    ③大學課表管理:課程需要特定的教室和特定的教師。假設各周的課表都是完全一樣的,同樣的課程安排將以“周”為單位進行周期性的重復,直到學期結束;一門課程每周可以出現 1 次,也可以安排多次,且由同一位教師承擔并在同樣的教室進行;允許課表中有空白時間段;同一個時間段內可以安排不同的課程;一位教師也可以承擔課表中的多門課程。

    相同之處:都包含了具有不同特征的“時間段集合”對象。每個時間段對應一個對象標簽。

    不同之處:有三個維度上的差異。①是否允許時間軸上有空白。在應用1中,不允許有空白;在應用2和應用3中,允許有空白。②是否允許不同的 interval 之間有重疊。在應用1和應用2中,不允許有重疊;在應用3中,允許有重疊。③是否包含周期性的時間段。應用 3 中以“一周”為單位重復某個課程,但應用1和應用2中不存在這種情況。

  • 面向可復用性和可維護性的設計:IntervalSet<L>
  • 該節是本實驗的核心部分。

  • IntervalSet<L>的共性操作
  • 這個ADT描述了一組在時間軸上分布的“時間段”,每個時間段附著一個特定的標簽,且標簽不重復。因此共性的方法包括:

  • 靜態工廠方法empty():創建一個空對象。
  • void insert(long start, long end, L label):在當前對象中插入新的時間段和標簽。
  • Set<L> labels():獲得當前對象中的標簽集合。
  • boolean remove(L label):從當前對象中移除某個標簽所關聯的時間段。
  • long start (L label):返回某個標簽對應的時間段的開始時間。
  • long end (L label):返回某個標簽對應的時間段的結束時間。
  • IntervalSet<L> copy():返回這個對象的副本。
  • 局部共性特征的設計方案
  • 由于IntervalSet是一對一的結構,即一個標簽對應一個時間段,因此可以使用Map作為內部的數據結構,定義為:

    private final Map<L, time> intervalMap = new HashMap<>();

    由于時間段是兩個long型的整數構成的,因此可以定義一個輔助類time表示一個時間段。其中start是時間段的開始,end是時間段的結束,同時要求start一定大于0且start一定比end小。這里time實現了Comparable接口是為了滿足下面MultiIntervalSet中的一些功能。

    對于empty()方法,直接返回一個具體實現類。

    對于insert()方法,首先判斷非法條件(start<0和start>=end),然后判斷Map中是否包含標簽,若包含該標簽,那只有在重復設置相同時間段時才合法,否則會拋出IntervalConflictException;若不包含該標簽,就直接插入時間段。(注意,這里是允許不同標簽之間存在Overlap的)

    對于labels()方法,直接返回Map中所有的鍵構成的集合即可。

    對于remove()方法,判斷Map的鍵中是否存在該標簽,若不存在,直接返回false;若存在,就在Map中刪除該標簽,并返回true。

    對于start()方法,判斷Map的鍵中是否存在該標簽,若不存在,直接返回-1,否則可以得到標簽對應的時間段time,調用time的getStart()方法就可以得到時間段的開始時間并返回。

    對于end()方法,同上,但要調用time的getEnd()方法得到時間段的結束時間并返回。

    對于copy()方法,先新建一個空白的IntervalSet副本,然后遍歷Map。將遍歷得到的所有時間段和標簽通過insert()方法插入到新的副本中,最后返回該副本。

    ?????? 此外,還需要重寫toString方法提供容易閱讀的信息。

  • 面向各應用的IntervalSet子類型設計(個性化特征的設計方案)
  • 一、使用decorator裝飾器的方法進行是否允許不同的 interval 之間有重疊以及周期性的維度的個性特征的設計。向裝飾器中傳入待裝飾的IntervalSet,并在繼承該裝飾器的具體子類中實現相應的個性化功能。如下圖,在裝飾器IntervalSetDecorator中有屬性intervalSet,是一個待裝飾的IntervalSet類,而IntervalSetDecorator中的所有方法都調用intervalSet的相應方法。

    ①不允許重疊的IntervalSet實現如下:

    首先NoOverlapIntervalSet繼承裝飾器IntervalSetDecorator,并實現IntervalSet接口。在NoOverlapIntervalSet中添加一個屬性intervalMap記錄添加的所有時間段。

    在重寫的insert()方法中,首先判斷新添加的時間段是否與已添加的時間段發生重疊,如果有,直接拋出異常;否則就調用未重寫的父類的insert()方法進行插入。

    ?????? ②周期性的IntervalSet實現如下:

    首先PeriodicIntervalSet繼承裝飾器IntervalSetDecorator,并實現IntervalSet接口。在PeriodicIntervalSet中添加一個屬性period記錄時間周期。

    在重寫的insert()方法中,將開始時間和結束時間對周期取模后再調用未重寫的父類的insert()方法進行插入。

    ?????? 二、使用代理的方式進行是否允許時間軸上有空白這個維度的個性特征的設計。由于不允許空白相當于添加了新的方法,因此將這個特性抽象為一個接口NoBlankIntervalSet:

    接口中包含三個方法:blankIntervals()返回所有的空白時間段集合;getStart-Time()返回總的開始時間;getEndTime()返回總的結束時間。

    ?????? 一個具體的不允許時間軸上有空白的IntervalSet只需要實現NoBlank-IntervalSet接口。具體實現類CommonNoBlankIntervalSet的實現如下:

    屬性startTime是總的開始時間,endTime是總的結束時間。blankIntervals()的實現如圖,首先將空白時間段設置為整個時間段,然后遍歷所有的時間段,將這些時間段從空白時間段中去除,最后得到的就是所有的空白時間段。

  • 面向可復用性和可維護性的設計:MultiIntervalSet<L>
  • MultiIntervalSet<L>的共性操作
  • 靜態工廠方法empty():創建一個空對象。
  • MultiIntervalSet(IntervalSet<L> initial):利用initial中包含的數據創建非空對象。
  • void insert(long start, long end, L label):在當前對象中插入新的時間段和標簽。
  • Set<L> labels():獲得當前對象中的標簽集合。
  • boolean remove(L label):從當前對象中移除某個標簽所關聯的所有時間段。
  • IntervalSet<Integer> intervals(L label):從當前對象中獲取與某個標簽所關聯的所有時間段。
  • 局部共性特征的設計方案
  • 由于要求必須使用 IntervalSet<L>作為其 rep 的一部分,因此選擇IntervalSet<L>組成的List作為rep。一個IntervalSet中只存儲某個標簽對應的一個時間段,如果一個標簽對應多個時間段,需要分散在不同的IntervalSet中。

    對于empty()方法,直接返回一個具體實現類。

    對于initial初始化方法,直接將傳入的IntervalSet的副本作為rep的一個元素。

    對于insert()方法,首先判斷非法情況。之后遍歷IntervalSet列表得到標簽對應的所有時間段,判斷已存在的時間段和要增加的時間段是否存在重疊,如果重疊則拋出異常;若不重疊,就尋找某個不存在該標簽的IntervalSet,將這個時間段插入該IntervalSet,如果列表中所有的IntervalSet都包含該標簽,就需要新建一個空白的IntervaSet加入列表,再進行插入。

    對于labels()方法,可以直接返回第一個IntervalSet中的所有標簽組成的集合。(因為插入時都是從頭開始遍歷的,因此不會存在某個標簽出現在后面的IntervalSet而不在第一個IntervalSet中的情況)

    對于remove()方法,直接對每個IntervalSet調用remove()方法即可。

    對于intervals()方法,遍歷IntervalSet列表得到標簽對應的所有時間段,將時間段從小到大進行排序(前面time的實現中進行了說明)。然后將每個時間段以它的順序作為標簽插入到一個IntervalSet中并返回。

    此外,還需要重寫toString方法提供容易閱讀的信息。

  • 面向各應用的MultiIntervalSet子類型設計(個性化特征的設計方案)
  • 與3.2.3同理,使用decorator裝飾器的方法進行是否允許不同的interval之間有重疊以及周期性的維度的個性特征的設計。向裝飾器中傳入待裝飾的MultiIntervalSet,并在繼承該裝飾器的具體子類中實現相應的個性化功能。如下圖,在裝飾器MultiIntervalSetDecorator中有屬性multiIntervalSet,是一個待裝飾的MultiIntervalSet類,而MultiIntervalSetDecorator中的所有方法都調用multiIntervalSet的相應方法。

    ①不允許重疊的MultiIntervalSet實現如下:

    首先NoOverlapMultiIntervalSet繼承裝飾器MultiIntervalSetDecorator,并實現MultiIntervalSet接口。

    在重寫的insert()方法中,首先判斷新添加的時間段是否與已添加的時間段發生重疊,如果有,直接拋出異常;否則就調用未重寫的父類的insert()方法進行插入。

    ②周期性的MultiIntervalSet實現如下:

    首先PeriodicMultiIntervalSet繼承裝飾器MultiIntervalSetDecorator,并實現MultiIntervalSet接口。在PeriodicMultiIntervalSet中添加一個屬性period記錄時間周期。

    在重寫的insert()方法中,將開始時間和結束時間對周期取模后再調用未重寫的父類的insert()方法進行插入。

  • 面向復用的設計:L
  • 設計三個應用的不同標簽,分別為“員工”(Employee)、“進程”(Process)、

    “課程”(Course)。并且它們都是immutable類。

    ①對于Employee,具有的屬性為:姓名、職務、手機號碼。

    除了相應的get方法之外,還需要重寫equals()、hashCode()和toString()方法。equals()的判斷依據是:只有三個屬性均相同時才認為是相同的。

    ②對于Course,具有的屬性為:課程 ID、課程名稱、教師名字、地點。

    除了相應的get方法之外,還需要重寫equals()、hashCode()和toString()方法。equals()的判斷依據是:只有四個屬性均相同時才認為是相同的。

    此外,Course類實現了Comparable接口,這是為了APP中顯示課程順序的合理性。

    ③對于Process,具有的屬性為:進程 ID、進程名稱、最短執行時間、最長執行時間。

    除了相應的get方法之外,還需要重寫equals()、hashCode()和toString()方法。equals()的判斷依據是:進程ID相同時認為是相同的。

  • 可復用API設計
  • 計算相似度
  • 對于兩個MultiIntervalSet:s1和s2,遍歷s1中的標簽,查看s2中是否存在相同的標簽,如果不存在,則對相似度沒有貢獻;如果存在,那么這個標簽在s1和s2中各有一個時間段的集合,計算這兩個時間段集合的重合長度,將所有的重合長度加在一起除以MultiIntervalSet的時間跨度就是兩個MultiIntervalSet的相似度。

  • 計算時間沖突比例
  • 對于IntervalSet來說,由于它是一個特殊的MultiIntervalSet,因此可以把它轉換成MultiIntervalSet后再調用針對MultiIntervalSet的計算時間沖突比例的函數。

    對于MultiIntervalSet,維護一個沖突時間段的集合conflictTime,初始時為空。遍歷set中的標簽,判斷該標簽和其他標簽的時間段是否存在重合,如果存在,就將沖突的時間段加入conflictTime。向conflictTime加入時間段也需要考慮重合的問題,集合中不能有重合的時間段,因此向conflictTime加入時間段時需要進行適當的合并。最后conflictTime中的時間長度除以總的時間跨度就是時間沖突比例。

  • 計算空閑時間比例
  • 對于IntervalSet來說,由于它是一個特殊的MultiIntervalSet,因此可以把它轉換成MultiIntervalSet后再調用針對MultiIntervalSet的計算空閑時間比例的函數。

    對于MultiIntervalSet,原理類似于3.2.3中的blankIntervals()方法。維護一個空閑時間段的集合freeTime,初始時為整個時間段。遍歷set中的所有時間段,并將其從freeTime中刪去。最后freeTime中的時間長度除以總的時間跨度就是空閑比例。

  • 應用設計與開發
  • 利用上述設計和實現的ADT,實現手冊里要求的各項功能。

  • 排班管理系統
  • 使用DutyIntervalSet作為數據結構,同時維護一個Employee的集合可以存儲未被安排的員工。剛進入時APP,會提示初始化一些信息,包括:排班開始日期、結束日期以及一組員工信息。初始化結束后,打印一個菜單,告訴用戶提供的一些功能。

    根據用戶選擇的功能采取相應的操作。其中選項1,2涉及對Employee集合的增刪;3對應DutyIntervalSet的insert操作;4對應DutyIntervalSet的remove操作;5對應DutyIntervalSet的blankIntervals操作;7對應DutyIntervalSet的blankIntervals操作以及DutyIntervalSet的labels、start、end操作;8的操作見3.7節。由于這些操作都是簡單地使用一些函數,因此不再詳細敘述。這里只介紹“6:自動編排”的實現方法:首先調用DutyIntervalSet的blankIntervals操作得到未被安排的時間段,然后遍歷Employee集合,找出未被安排的員工,將這些未被安排的時間段和員工一對一匹配起來,并調用insert方法插入到DutyIntervalSet中。

    此外,APP還擁有很好的健壯性,能面對用戶各種非法的、不符合格式的輸入。舉例來說,針對添加員工的操作,存在各種非法的輸入情況,在APP中都得到了相應的解決,并提示給用戶。

  • 操作系統的進程調度管理系統
  • 使用ProcessIntervalSet作為數據結構,同時維護一個的Map存儲進程和已執行時間的映射關系。進入APP后,會打印一個菜單,告訴用戶提供的一些功能。

    根據用戶選擇的功能采取相應的操作。其中選項1,2涉及對Map的增刪;5,6對應ProcessIntervalSet的intervals操作。由于這些操作都是簡單地使用一些函數,因此不再詳細敘述。這里介紹3,4的實現方法,選項3:從時間點0開始進入一個循環,當所有的進程都被執行完成后退出循環。在循環中,首先使用隨機數(random.nextBoolean)決定是否調度進程,如果決定不調度進程,則閑置一段隨機的時間(random.nextInt);如果決定調度進程,則隨機選擇一個未完成的進程(使用隨機數選擇進程的序號)并執行一段隨機的時間(random.nextInt),執行結束后,如果該進程的總執行時間已經落到最短執行時間和最長執行時間的區間內,則該進程被執行完成,然后從這個時間點開始進行下一輪的循環。選項4:和選項3唯一的不同在于進程的選擇不是隨機的,而是選擇距離其最大執行時間差距最小的進程。

    同樣地,APP擁有很好的健壯性,能面對用戶各種非法的、不符合格式的輸入。

  • 課表管理系統
  • 使用CourseIntervalSet作為數據結構,同時維護一個Course的Map存儲未被安排的課程以及對應的剩余學時數。剛進入時APP,會提示初始化一些信息,包括:學期開始日期、總周數、以及一組課程信息。初始化結束后,打印一個菜單,告訴用戶提供的一些功能。

    根據用戶選擇的功能采取相應的操作。其中選項1,2涉及對Course映射的增刪;3對應CourseIntervalSet的insert操作;4對應CourseIntervalSet的remove操作;5對應對Course映射的遍歷以及顯示;6,7對應API中操作的使用;8對應CourseIntervalSet的intervals操作。由于這些操作都是簡單地使用一些函數,因此不再詳細敘述。

    同樣地,APP擁有很好的健壯性,能面對用戶各種非法的、不符合格式的輸入。

  • 基于語法的數據讀入
  • 首先對文件的格式進行分析,文件總共包括三個部分,分別是Employee、Period和Roster,每個部分有自己獨特的格式。在假設沒有空格、縮進和空行的情況下,可以分別設計識別每個部分的正則表達式。

    Employee部分的正則表達式:

    Period部分的正則表達式:

    Roster部分的正則表達式:

    對于整個文件,由于三個部分出現的順序是不定的,即共有六種情況,因此識別整個文件的正則表達式為:

    首先利用這個正則表達式判斷文件的格式是否正確,如果正確就抽取出每個部分。

    利用Employee內部的格式抽取出員工信息:

    利用Period的格式抽取出時間段信息:

    利用Roster內部的格式抽取出排班信息:

    根據抽取出的信息,就可以構造出一個排班表了,在構造的同時判斷一些錯誤,如:員工信息重復、員工未定義、時間重疊等。

    在APP中,讀入用戶指定的文件,并去除所有的空格、縮進、空行,之后調用Parser解析信息,在出現錯誤時提示給用戶相應錯誤信息。

  • 應對面臨的新變化
  • 變化1
  • 修改之前的DutyIntervalSet實現的是IntervalSet接口,但是本次變化要求每個標簽可以對應多個時間段,因此要求DutyIntervalSet實現MulitIntervalSet接口,同時還要保持不允許重疊的特征。因此只需要修改DutyIntervalSet繼承的裝飾器類型以及實現的接口類型即可。具體修改如圖:

    修改前的代碼:

    修改后的代碼:

    由于DutyIntervalSet從實現IntervalSet接口變為實現MulitIntervalSet接口,因此一些方法會發生變化,例如不再支持start()和end()方法,同時新增加了intervals()方法。因此,在DutyRosterApp需要修改相應的實現方法。舉例來說,對于APP中的可視化排班信息的功能,需要遍歷DutyIntervalSet中的信息,之前的遍歷方式直接使用labels()方法:

    但是,修改之后需要使用intervals()方法:

    在其他地方也涉及這種變化,就不一一列舉了。同時,需要修改測試代碼保持測試的正確性。

    除修改測試代碼的變化,一共修改大約50行代碼,花費時間較短,說明之前的設計較為合理,應對變化的能力比較強,可維護性很好。測試代碼的修改大約也在50行左右。

  • 變化2
  • 由于使用了裝飾器,只需要將原來傳入裝飾器的MultiIntervalSet改為不能重疊的NonOverlapMultiIntervalSet即可。如果不考慮測試代碼的話,真正修改的代碼只有一行!說明之前的設計較為合理,應對變化的能力比較強,可維護性很好。具體修改如圖:

    修改前的代碼(傳入可重疊的MultiIntervalSet):

    修改后的代碼(傳入不可重疊的NoOverlapMultiIntervalSet):

    為了使得測試仍然保持正確,需要修改原來的測試代碼,總共修改的代碼量大約為50行,花費時間較短。

  • Git倉庫結構
  • 請在完成全部實驗要求之后,利用Git log指令或Git圖形化客戶端或GitHub上項目倉庫的Insight頁面,給出你的倉庫到目前為止的Object Graph,尤其是區分清楚change分支和master分支所指向的位置。

    使用git log指令, 得到如下結果:

    可以看出,Git倉庫到目前為止的Object Graph有如下形式:

  • 實驗進度記錄
  • 請使用表格方式記錄你的進度情況,以超過半小時的連續編程時間為一行。

    每次結束編程時,請向該表格中增加一行。不要事后胡亂填寫。

    不要嫌煩,該表格可幫助你匯總你在每個任務上付出的時間和精力,發現自己不擅長的任務,后續有意識的彌補。

    日期

    時間段

    計劃任務

    實際完成情況

    2021.6.28

    12:30-14:30

    設計IntervalSet接口并完成一個具體的實現類CommonIntervalSet,編寫測試

    完成

    2021.6.28

    14:30-17:00

    設計MultiIntervalSet接口并完成具體的實現類CommonMultiIntervalSet,編寫測試

    完成

    2021.6.28

    17:30-18:30

    設計IntervalSet和Common-MultiIntervalSet的裝飾器

    完成

    2021.6.28

    18:30-19:30

    在有無空白的維度上,設計NoBlankIntervalSet接口并完成具體實現類CommonNoBlankIntervalSet,編寫測試

    完成

    2021.6.28

    19:30-21:00

    在是否允許重疊的維度上,設計實現不允許重疊的裝飾類NoOverlapIntervalSet和NoOverlap-MultiIntervalSet,編寫測試

    完成

    2021.6.28

    21:30-22:30

    在周期性的維度上,設計實現周期性的裝飾類PeriodicIntervalSet和PeriodicMultiIntervalSet,編寫測試

    完成

    2021.6.29

    9:00-10:00

    實現Employee、Process、Course類,編寫測試

    完成

    2021.6.29

    10:00-12:30

    設計實現API,編寫測試

    完成

    2021.6.29

    13:30-14:00

    實現DutyIntervalSet、Process-IntervalSet和CourseIntervalSet,編寫測試

    完成

    2021.6.29

    14:00-17:30

    實現DutyRosterApp

    測試健壯性時發現很多不足,延期一小時完成

    2021.6.29

    19:00-22:00

    實現CourseScheduleApp

    測試健壯性時發現很多不足,延期半小時完成

    2021.6.30

    9:00-12:00

    實現ProcessScheduleApp

    完成

    2021.6.30

    16:30-17:30

    學習正則表達式

    完成

    2021.6.30

    18:30-20:30

    設計實現解析器Parser,編寫測試

    由于對正則表達式不太熟悉,延期半小時完成

    2021.6.30

    21:00-22:30

    向DutyRosterApp中加入解析文件功能

    完成

    2021.7.1

    9:00-10:00

    完善整個項目的注釋(spec、AF、RI、safe from exposure、test strategy)

    完成

    2021.7.1

    10:30-11:30

    修改代碼以面對新的變化

    完成

  • 實驗過程中遇到的困難與解決途徑
  • 遇到的難點

    解決途徑

    對裝飾器不夠熟悉,不知如何編寫正確的裝飾器以實現功能。

    在網上查看其它應用使用裝飾器的方法并加以總結,逐漸熟悉裝飾器的使用。

    編寫APP時遇到很多的健壯性問題。

    仔細分析每個步驟中用戶可能的所有輸入,針對任何非法情況都作出提示。雖然很耗費時間,但效果很好。

    不知如何設計正則表達式來抽取大量的文件信息。

    在學習正則表達式語法的同時進行一些小的測試,從小的正則表達式開始,逐漸累積成復雜的正則表達式,最終實現對文件的解析。

  • 實驗過程中收獲的經驗、教訓、感想
  • 實驗過程中收獲的經驗和教訓
  • 設計ADT時一定要考慮得全面且清楚,在最終決定實現方案后再編寫代碼,否則在后面的應用實現中發現問題時只能再重新設計。同時,在編寫APP時,一定要事先考慮健壯性的問題,不然,在編寫完代碼之后進行測試時會遇到很多的健壯性問題,這時再去修改就會使得代碼很臃腫,可讀性變差,出錯的可能性更高。

  • 針對以下方面的感受
  • 重新思考Lab2中的問題:面向ADT的編程和直接面向應用場景編程,你體會到二者有何差異?本實驗設計的ADT在五個不同的應用場景下使用,你是否體會到復用的好處?
  • 面向ADT的編程需要從實際中進行抽象,并進行合理的設計,有很好的可擴展性和可復用性;而直接面向應用場景編程只針對特定應用,每次更換應用場景時都要重新編程,擴展性很差,只適合簡單的應用場景。本實驗中設計一個ADT就可以應用到三個不同的場景,大大縮短了開發時間。

  • 重新思考Lab2中的問題:為ADT撰寫復雜的specification, invariants, RI, AF,時刻注意ADT是否有rep exposure,這些工作的意義是什么?你是否愿意在以后的編程中堅持這么做?
  • 這些工作使得客戶端了解各方法的功能但無法得知內部具體實現,可以防止內部變量被客戶端惡意修改,時刻檢查表示不變量,保證安全性。雖然這些工作有些麻煩,但卻是好的軟件必須具備的,因此我愿意在以后編程中堅持這么做。同時,在復雜的軟件開發過程中,好的注釋可以節省大量閱讀代碼的時間,使得開發時間大大降低。

  • 之前你將別人提供的API用于自己的程序開發中,本次實驗你嘗試著開發給別人使用的API,是否能夠體會到其中的難處和樂趣?
  • 由于API面向的場景是廣泛的,因此開發難度很大,但是一旦開發一個好的API,就可以在大量場合中應用,大大提高代碼的復用性。

  • 你之前在使用其他軟件時,應該體會過輸入各種命令向系統發出指令。本次實驗你開發了一個解析器,使用語法和正則表達式去解析輸入文件并據此構造對象。你對語法驅動編程有何感受?
  • 語法驅動編程為實際應用提供了很大的便利,用戶無需繁瑣地一行一行地輸入信息,而只需提供一個文件以及一定的語法規則即可。而對于應用的開發者,只需根據語法規則編寫代碼,即使改變語法規則也可以很快地修改實現代碼,有很好的可維護性。

  • Lab1和Lab2的大部分工作都不是從0開始,而是基于他人給出的設計方案和初始代碼。本次實驗是你完全從0開始進行ADT的設計并用OOP實現,經過五周之后,你感覺“設計ADT”的難度主要體現在哪些地方?你是如何克服的?
  • ADT的難度主要體現在抽象上。一個好的ADT既不能過于具體,也不能過于抽象。需要從大量應用場景中尋找共性,抽象的程度也很難把握。對于這種情況,只能反復的推敲,比較不同設計方案的差異并選擇最好的ADT設計方案。

  • “抽象”是計算機科學的核心概念之一,也是ADT和OOP的精髓所在。本實驗的五個應用既不能完全抽象為同一個ADT,也不是完全個性化,如何利用“接口、抽象類、類”三層體系以及接口的組合、類的繼承、設計模式等技術完成最大程度的抽象和復用,你有什么經驗教訓?
  • 接口、抽象類、類的抽象程度一定是逐漸降低的,將所有應用的共性抽象為接口,然后在抽象類以及類中添加新的特性。通過接口的組合可以形成新的接口,并可以具備不同接口中的抽象。類的繼承也可以增加更具體的新的特性。同時,使用正確的設計模式可以使得代碼的可復用性和可維護性最大化。

  • 關于本實驗的工作量、難度、deadline。
  • 難度適中,可以接受,但是工作量很大,尤其是APP的編寫要花費很長時間。雖然給了三周時間,但是和其他課的實驗、大作業、考試有重疊,總體上時間還是很緊。希望各課程的老師可以相互協調一下實驗安排。

  • 到目前為止你對《軟件構造》課程的評價。
  • 逐漸理解了軟件構造過程中獨有的思路和方法,也逐漸適應了與之前完全不同的編程過程。通過Lab3大量的代碼訓練,自己的編程水平也有了極大的提高。

    總結

    以上是生活随笔為你收集整理的2021哈工大软件构造Lab3的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久草网站在线 | 久久国产精品免费看 | 免费网站在线观看成人 | 久久在线精品 | 久久伦理网 | 99色国产| 91视频 - v11av | 黄色免费观看网址 | 国产91精品看黄网站在线观看动漫 | 亚洲午夜电影网 | 最新国产中文字幕 | 久久精品99国产精品 | 91麻豆精品国产自产 | 中文字幕av在线免费 | 亚洲成人av一区二区 | 日韩视频1 | 亚洲 精品在线视频 | 国产中文字幕亚洲 | 国产小视频免费观看 | 少妇高潮冒白浆 | 人人澡人人干 | 999久久国产精品免费观看网站 | 97国产一区 | 国产美女视频一区 | 久久成人一区二区 | 91精品国产99久久久久 | 毛片网站免费 | 日本精品va在线观看 | 99激情网| 亚洲少妇久久 | 久久国产香蕉视频 | 在线观看久久 | 成人av久久 | 日韩手机在线 | 97色在线视频 | 国产99久| 奇米影视777四色米奇影院 | 六月婷色 | 欧美性受极品xxxx喷水 | 最新中文字幕在线观看视频 | 在线视频 国产 日韩 | 亚洲精品在线观看的 | 狠狠干夜夜操 | 久久国产精品一区二区三区四区 | 91看片看淫黄大片 | 美女网站视频免费黄 | 日日爽日日操 | 日韩精品一区二区免费 | 亚洲国产精品日韩 | 久久久久久综合 | 91精品无人成人www | 国产视频欧美视频 | 91亚洲精品久久久中文字幕 | 午夜久久久精品 | 一区中文字幕电影 | 国产精品日韩久久久久 | 91精品小视频 | 色婷婷亚洲精品 | 又黄又色又爽 | 日韩精品视频免费看 | 精品国产一区二区三区久久久 | 狠狠色狠狠色综合日日小说 | 亚洲丁香久久久 | 欧美色图视频一区 | 国产黄色精品网站 | 日韩视频在线不卡 | 99久久精品无免国产免费 | 人成免费网站 | 日韩在线观看电影 | 亚洲免费一级 | 天天天天天天操 | 四虎最新入口 | 久久在线观看视频 | 日韩精品久久久久久久电影99爱 | 日韩在线免费观看视频 | 亚洲综合色激情五月 | 国产亚洲精品女人久久久久久 | 精品久久一区二区三区 | 国产成人精品999在线观看 | 中文超碰字幕 | 亚洲久草网 | 久久久免费电影 | 成年人电影毛片 | 亚洲最大在线视频 | 亚洲精品中文字幕在线 | 狠狠操操操 | 亚在线播放中文视频 | 午夜精品一区二区三区在线 | 91一区二区三区久久久久国产乱 | 99精品视频观看 | 久久er99热精品一区二区三区 | 五月香视频在线观看 | 色久综合 | 青草视频在线看 | 丁香网五月天 | 欧美日韩高清免费 | 黄色三级av| 亚洲伦理中文字幕 | 成年人免费电影在线观看 | 色婷婷亚洲婷婷 | 国产精品精品久久久 | 视频成人永久免费视频 | 精品欧美一区二区精品久久 | 成人国产精品久久久久久亚洲 | 国产色视频一区 | 国产二区视频在线观看 | 亚洲免费在线播放视频 | 特级毛片网站 | 久久人人看 | 91在线免费播放 | 999久久a精品合区久久久 | 天天干夜夜擦 | 中文字幕在线观看你懂的 | 69精品 | 丁香九月婷婷 | 久久综合加勒比 | 久久都是精品 | 日韩欧美在线视频一区二区三区 | 狠狠干天天射 | 91最新网址 | a色视频| 国内久久 | 五月婷婷开心 | 天天射天天操天天干 | 西西4444www大胆艺术 | 欧美精品久久久久久久久久久 | 国产成人精品av久久 | 97在线视 | 深爱五月激情五月 | 中文字幕在线播放视频 | 欧美日本中文字幕 | 午夜视频免费播放 | 久久成年视频 | 欧美日韩高清免费 | 天堂av在线免费观看 | 伊人电影天堂 | av电影免费观看 | 久草视频2 | 探花视频免费在线观看 | 日韩综合在线观看 | 中文字幕一区二区三区四区久久 | 天天搞天天干天天色 | 99人久久精品视频最新地址 | 九九九热视频 | 草免费视频| 91桃色免费视频 | 最近乱久中文字幕 | 久久精品免费 | 欧美日韩xxx | 96在线| 西西444www大胆高清视频 | 亚洲国产精品久久久久 | 久久影视一区 | 亚洲区另类春色综合小说 | 婷婷久久一区 | 麻豆一精品传二传媒短视频 | 国产对白av| 久久av一区二区三区亚洲 | 免费成人短视频 | 麻豆视频观看 | 精品久久久久一区二区国产 | 亚洲欧洲国产日韩精品 | 天天操天天操天天操天天操天天操天天操 | 奇米网8888 | 国产在线中文字幕 | 国产午夜一区 | 国产高清在线永久 | 亚洲精品一区二区三区新线路 | 日韩精品免费专区 | 欧美精品免费一区二区 | 国产精品免费一区二区三区在线观看 | 国产小视频在线免费观看视频 | 97操操操 | 久久久国产精品免费 | 亚洲欧洲久久久 | 九九热精品视频在线播放 | 亚洲影视九九影院在线观看 | 超碰免费公开 | 亚洲视频1 | 久久久在线 | 日日干夜夜草 | 国产69精品久久久久久 | 97在线免费视频 | 五月婷色 | 欧美精品一区二区在线播放 | 久久免费的视频 | 在线精品观看国产 | av免费在线观看网站 | 免费观看国产精品视频 | 国产视频在线播放 | 亚洲精欧美一区二区精品 | 日韩视频一区二区三区 | 中文字幕资源在线 | 免费麻豆视频 | 开心丁香婷婷深爱五月 | 人人草在线视频 | 在线观看色网 | 99精品视频免费看 | 国产精品久久二区 | 在线综合 亚洲 欧美在线视频 | 在线观看不卡视频 | 成人国产精品久久久久久亚洲 | 在线中文字幕av观看 | 国产精品18久久久久久久网站 | av高清一区二区三区 | 国产在线观看你懂的 | 国内精品在线观看视频 | 午夜精品福利一区二区 | 免费在线观看成人av | 久久成人国产精品免费软件 | 日韩精品免费一区二区在线观看 | 免费观看性生活大片3 | 日韩av黄 | 国产三级久久久 | 久久成人综合 | 国产人免费人成免费视频 | 激情欧美国产 | 色福利网 | 亚洲午夜久久久久久久久 | 欧美一区二区三区免费观看 | 成人av影视观看 | 日韩精品中文字幕av | 激情电影影院 | 深爱婷婷网| 奇米网777| 国产资源站| 成人av一区二区在线观看 | 中文字幕在线观看完整版 | 欧美日韩免费在线观看视频 | 天堂网一区二区三区 | 韩国视频一区二区三区 | 亚洲精品国产精品久久99 | 深夜国产福利 | 日韩精品久久久久久 | 亚洲国产黄色 | www.91国产 | 成人在线网站观看 | 婷婷av网 | 激情av五月婷婷 | 91免费版成人 | 男女男视频 | 精品久久久久久久久久岛国gif | 成人国产精品 | 人人爱在线视频 | 亚洲日本欧美 | 国产精品18久久久久久久久久久久 | 久久激情网站 | 这里只有精彩视频 | 91在线视频免费播放 | 综合网中文字幕 | 一区二区三区中文字幕在线 | 97看片| 中文av影院 | 成年人电影毛片 | 伊人日日干| 精品国产精品久久一区免费式 | 国产精品国产三级国产aⅴ9色 | 国产剧在线观看片 | 免费开视频| 久久久久国产精品视频 | 国产在线一线 | 视频一区二区三区视频 | 国产福利中文字幕 | 蜜臀av网站 | 免费看一级一片 | 久久av中文字幕片 | 一区二区三区在线免费观看 | 黄网站污 | 亚洲综合导航 | 久草免费在线视频观看 | 国产福利91精品一区二区三区 | 国产亚洲精品久久久久久无几年桃 | 国产成人精品亚洲a | 天天操天天射天天插 | 色婷婷久久久 | 久久精品男人的天堂 | 国产91免费看 | 97视频在线免费播放 | 亚洲日本韩国一区二区 | 色婷婷激情综合 | 国产精品久久婷婷六月丁香 | 国产精品 国产精品 | 亚洲第一中文字幕 | 夜夜视频资源 | 免费性网站 | 国产小视频在线免费观看视频 | 天天干天天干天天干 | 中文字幕免| 狠狠干天天 | 日本精品视频免费 | 久久99视频精品 | 久久这里只有精品视频99 | 久久精品久久久精品美女 | 操高跟美女 | 成人在线免费小视频 | www.xxxx欧美 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 91 中文字幕| 国产精品久久久久久久久久久久午 | 97在线视频网站 | 少妇搡bbbb搡bbb搡69 | 日韩黄色免费看 | 中文字幕超清在线免费 | 91免费视频黄 | 中文字幕在线观看视频网站 | 欧美日韩一区二区三区不卡 | 视频91| 公与妇乱理三级xxx 在线观看视频在线观看 | 国产人免费人成免费视频 | 久久狠狠婷婷 | 91完整视频 | 国产精品久久久久久妇 | 欧美精品中文在线免费观看 | 在线观看精品一区 | 亚洲欧美日韩国产一区二区 | 久久国产精品99国产 | 久久人人97超碰国产公开结果 | 欧美九九九 | 四虎免费在线观看视频 | 一区二区不卡高清 | 国产黄色资源 | 日批视频国产 | 日韩精品高清视频 | 久久国产麻豆 | 日本激情视频中文字幕 | 国产麻豆精品一区 | 国产精品久久久久久久久久久久久 | 一区免费观看 | 午夜国产福利视频 | 五月婷婷影院 | 国产精成人品免费观看 | 91视频专区| 黄色91在线 | 久久黄色a级片 | 高清有码中文字幕 | 黄色成人在线观看 | 8x成人免费视频 | 久久国产系列 | 欧美国产日韩一区二区 | 色婷婷播放 | 超黄视频网站 | 日本中文字幕免费观看 | 国产 欧美 日产久久 | 久久久久久高潮国产精品视 | 欧美a级成人淫片免费看 | 久久不射电影院 | 国产一级不卡毛片 | 国产一级电影在线 | 国产精品精 | 日韩中文字幕a | 免费久久99精品国产 | 国产精品久久久视频 | 久久久www | 伊人六月| 国产成人亚洲精品自产在线 | 综合亚洲视频 | 性色av香蕉一区二区 | 成人永久视频 | 免费在线日韩 | 欧美一级片免费播放 | 天天夜夜狠狠操 | 久久久久国产精品免费 | 1024手机基地在线观看 | 久久免费视频一区 | 亚洲精品视频在线免费 | 中文字幕第 | 狠狠干天天干 | 嫩嫩影院理论片 | 99久久精品国产一区二区三区 | 亚洲精品777 | 日韩视频欧美视频 | 久99热| 爱爱av网站| 日韩在线观看电影 | 99在线视频免费观看 | 韩国精品一区二区三区六区色诱 | www.一区二区三区 | 国产精品视频内 | 久99热| 国产精品一区二区免费在线观看 | 亚洲最新精品 | 国产视频一区在线 | 欧美a免费| 亚洲精品欧洲精品 | 欧美专区日韩专区 | 日韩精品一区二区三区丰满 | 欧美aa在线 | 国产精品久久久久毛片大屁完整版 | av成人免费在线 | 免费黄在线看 | 激情大尺度视频 | 国产精品一区二区av麻豆 | 丰满少妇在线 | 中文字幕av最新更新 | 一区二区三区四区精品视频 | 黄色影院在线免费观看 | 久久97超碰 | 国产精品二区在线观看 | 亚洲精品资源 | 欧美亚洲一级片 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产成人91 | 日韩mv欧美mv国产精品 | 国产三级国产精品国产专区50 | 日日夜夜噜 | av在线之家电影网站 | 激情久久伊人 | 色诱亚洲精品久久久久久 | 日日婷婷夜日日天干 | 久久开心激情 | 免费看的国产视频网站 | 亚洲国产激情 | 亚洲精品自在在线观看 | 激情婷婷在线 | 日韩欧美一区二区三区黑寡妇 | 欧美成人a在线 | 久久久久久网 | 中文字幕视频播放 | av青草| 狠狠躁夜夜躁人人爽视频 | 808电影免费观看三年 | 国产精品女视频 | 亚洲mv大片欧洲mv大片免费 | 国产婷婷vvvv激情久 | 亚洲国内精品 | 国产五十路毛片 | 国内丰满少妇猛烈精品播 | 亚洲综合成人在线 | 国产黄色精品在线观看 | 亚洲黄色片 | 亚州av一区 | 十八岁免进欧美 | 亚洲精品66 | 天天操天天综合网 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 男女拍拍免费视频 | 中文字幕在线播放第一页 | 国产资源网 | 狠狠色狠狠色合久久伊人 | 波多野结衣久久精品 | 日本黄色免费大片 | 婷婷国产v亚洲v欧美久久 | 在线观看视频在线 | 精品国产免费人成在线观看 | 国产日韩在线视频 | 日本韩国精品一区二区在线观看 | 黄色国产区 | 狠狠躁天天躁综合网 | 久久久久亚洲精品中文字幕 | 国产一区在线观看视频 | 国产91九色蝌蚪 | 黄网站色视频 | 欧美一区二视频在线免费观看 | 丁香综合五月 | 国内精品久久久久 | 午夜成人免费电影 | 91久久黄色 | 精品国产一区二区三区四区vr | 在线观看久 | 国内精自线一二区永久 | av 在线观看 | 日本精品一区二区三区在线播放视频 | 天天操天天草 | 狂野欧美激情性xxxx欧美 | 欧洲精品视频一区二区 | 午夜av免费看 | aⅴ视频在线| 天天干天天在线 | 97人人添人澡人人爽超碰动图 | 国产精彩在线视频 | 国产精品久久久久久久久久ktv | 久久久91精品国产一区二区精品 | 国产一区免费在线 | 欧美日韩电影在线播放 | 国产高清福利在线 | 久久久免费观看完整版 | 亚洲成人免费在线观看 | 少妇bbw揉bbb欧美 | 草久在线视频 | 黄色一级免费 | 日韩精品在线观看视频 | 美女视频是黄的免费观看 | 色婷婷综合久久久中文字幕 | 久久久久久久久久久精 | 国产天天综合 | 国产麻豆视频免费观看 | 亚洲开心激情 | 国产最顶级的黄色片在线免费观看 | 91丨九色丨蝌蚪丨老版 | 亚洲男人天堂a | 涩av在线| 国产精品精品 | 91在线成人 | 中文字幕免费播放 | 久久久久久福利 | 视频99爱| 中文字幕视频网站 | 香蕉影院在线播放 | 久久综合激情 | 国产精品成人一区二区 | 中文字幕在线观看不卡 | 久久九九免费视频 | 亚洲影院国产 | 在线视频观看亚洲 | 狠狠干夜夜操天天爽 | 国产一区国产二区在线观看 | 在线观看成人小视频 | 国产精品欧美一区二区 | 99免费在线播放99久久免费 | 伊人影院99| 国产一区 在线播放 | 在线有码中文字幕 | 欧美午夜性生活 | 欧美日韩亚洲在线观看 | 久久在线电影 | 亚洲 精品在线视频 | 国产精品中文 | 久久久精品国产一区二区三区 | 亚洲成人网在线 | 日本韩国欧美在线观看 | 欧美性天天 | 欧美成人黄色片 | 五月天欧美精品 | 免费看片网址 | 9草在线| 丝袜美腿av | 成 人 黄 色 免费播放 | 久久久久久久久久福利 | 92精品国产成人观看免费 | 在线小视频国产 | 久久国产精品成人免费浪潮 | 日本aa在线 | 国产99中文字幕 | 精品国产黄色片 | 日韩视频1 | 日本一区二区高清不卡 | 欧洲亚洲国产视频 | 中文字幕在线播放一区二区 | 99久久99久久精品国产片 | 天堂中文在线视频 | 国产99久久久精品视频 | 欧美国产亚洲精品久久久8v | 亚洲 欧美日韩 国产 中文 | 亚洲精品视频在线观看网站 | 91视频观看免费 | 成人a视频 | 国产h片在线观看 | 国产精品久久久久一区二区三区共 | 亚洲一区二区精品在线 | 国产日韩欧美自拍 | 97人人超碰在线 | 久久免费片 | 欧美a级在线 | 高潮久久久 | 91九色老| 国产免费中文字幕 | 在线观看成人 | 麻豆国产视频 | 精品国产人成亚洲区 | 中文字幕人成不卡一区 | 精品久久久久久国产偷窥 | 97超碰站 | 欧美激情一区不卡 | 亚洲闷骚少妇在线观看网站 | 在线观看成人网 | 深爱五月激情网 | 少妇bbb搡bbbb搡bbbb | 亚洲精品在线观看网站 | 天天爱天天操天天射 | 一区二区日韩av | 亚洲综合国产精品 | 日韩av片免费在线观看 | 免费合欢视频成人app | 99久久精品费精品 | 亚洲黄色区 | 少妇精品久久久一区二区免费 | 亚洲日本在线视频观看 | av中文字幕在线免费观看 | 亚洲成熟女人毛片在线 | 麻豆国产精品一区二区三区 | 免费一级特黄录像 | 日韩午夜大片 | 精品国产色 | 看v片 | 麻豆视频免费网站 | 久久成人毛片 | 日韩大陆欧美高清视频区 | 全黄色一级片 | 免费在线一区二区 | 日本性生活一级片 | 久久99精品国产99久久6尤 | 日韩精品一区在线观看 | 亚州av一区 | 黄色一级免费 | 成人在线一区二区三区 | 久久在草| 九九视频免费观看视频精品 | 91福利视频免费观看 | 久久精品九色 | 日本精品一区二区三区在线观看 | 日日夜夜人人精品 | 国产福利精品在线观看 | 国产精华国产精品 | 国产亚洲精品综合一区91 | 福利片免费看 | 亚洲视频,欧洲视频 | 亚洲国产成人久久综合 | 久久99国产精品久久99 | 丁香婷婷综合色啪 | 黄色亚洲片 | 国产在线观看h | 日韩一级片观看 | 久久爱导航| 亚洲电影免费 | 成年免费在线视频 | 日韩视频一区二区三区在线播放免费观看 | 亚洲专区欧美专区 | 99视频播放 | 一级黄色视屏 | 亚洲美女精品视频 | 久精品在线 | 欧美色精品天天在线观看视频 | 超碰在线97免费 | 全黄网站 | 国产乱码精品一区二区蜜臀 | 国产人免费人成免费视频 | 精品一区二区久久久久久久网站 | 国产一线二线三线性视频 | 日韩免费观看一区二区 | 国产精品1区2区3区在线观看 | 欧美国产精品久久久久久免费 | 在线精品亚洲一区二区 | 一本到视频在线观看 | 一区二区丝袜 | 一区二区三区视频网站 | 日韩中文在线电影 | 99热国内精品 | 人人爽人人澡人人添人人人人 | 免费成人在线观看视频 | 在线导航av | 国产精品2020| 欧美日韩国产一区 | 91在线视频精品 | av天天澡天天爽天天av | 丁香六月av | 国产在线色站 | 99精品视频中文字幕 | 天天综合入口 | 亚洲最新视频在线播放 | 97色婷婷 | 久久免费国产精品1 | 欧美日韩不卡一区 | 国产日韩欧美在线 | 精品不卡av | 欧美国产在线看 | av在线播放网址 | 激情五月激情综合网 | 久久久久久国产一区二区三区 | 国产91勾搭技师精品 | 91在线永久 | 在线国产福利 | 91| 国产日韩中文字幕 | 亚洲综合婷婷 | 爱干视频| 中文av免费 | 欧美日韩调教 | 国产婷婷久久 | 99国产在线观看 | 午夜精品久久 | 亚洲精品国久久99热 | 亚洲视频一 | 天堂黄色片 | 久久,天天综合 | 日本三级不卡 | 在线不卡中文字幕播放 | 丁香一区二区 | 五月天激情电影 | 热久久这里只有精品 | 91在线在线观看 | 中文视频一区二区 | 日韩a在线 | 人人澡人人舔 | 日本精品一区二区在线观看 | h视频在线看 | 国产色道| 亚洲国产美女精品久久久久∴ | 久久久久成人免费 | 91网免费看| 97超碰成人 | 4438全国亚洲精品在线观看视频 | 精品久久久久久久久久久久久久久久久久 | 天天射天天射天天 | 天天操狠狠操 | 91在线观| 在线观看久草 | 日本三级不卡 | 九九视频在线观看视频6 | 久久久久免费电影 | 在线综合 亚洲 欧美在线视频 | 亚洲精品视频在线看 | 国产va饥渴难耐女保洁员在线观看 | 成人av一区二区三区 | 婷婷色五| 五月婷婷激情综合 | 久久婷婷精品 | 久久久久 | 久久成人毛片 | 狠狠色2019综合网 | 色午夜| 五月视频 | 天天天操操操 | 天堂黄色片 | 狠狠狠干狠狠 | 一级片视频免费观看 | 热re99久久精品国产99热 | 蜜臀aⅴ国产精品久久久国产 | 天天干人人 | 欧美一级片在线观看视频 | 亚洲成人一区 | 国产一区二区免费看 | 色网站免费在线看 | 99精品在线免费观看 | 日韩av黄 | 日韩av快播电影网 | 在线免费观看国产精品 | 色之综合网 | 欧美午夜精品久久久久 | 99久久网站| 久草视频在线免费 | 亚洲一区二区三区在线看 | 亚洲欧美精品一区 | 亚洲精品黄网站 | 欧美成人黄色 | 中国精品一区二区 | 91成人网页版 | 亚洲视频第一页 | 日韩综合色 | 天天搞天天干天天色 | 久久综合五月天 | 久久这里只有精品视频99 | 在线视频福利 | 国产精品99久久久精品 | 色偷偷88欧美精品久久久 | 国产无限资源在线观看 | 久久伊人国产精品 | 91大神电影 | 久久蜜臀一区二区三区av | 久久伊人五月天 | 看片的网址 | 精品国产理论片 | 日本中文字幕在线播放 | av一级网站 | 91丨九色丨高潮丰满 | 在线免费观看黄网站 | 中文字幕在线播放一区 | 亚洲毛片久久 | 亚洲精品视频 | 国产精品国产三级国产 | 久久尤物电影视频在线观看 | 亚洲激情婷婷 | 91视频成人免费 | 2019中文| 国产精品大尺度 | 亚洲黄色成人网 | 69人人| 狠狠狠色丁香综合久久天下网 | 毛片久久久 | 波多野结衣电影久久 | 99免费观看视频 | 天天摸天天干天天操天天射 | 亚洲精品美女 | 日本韩国精品一区二区在线观看 | 精品福利国产 | 超碰97久久 | 国产成人精品电影久久久 | 国产精品专区在线观看 | 黄色一级大片在线免费看国产一 | 久久婷婷国产色一区二区三区 | 中文在线a∨在线 | 婷婷日韩 | 日韩一级电影在线 | 亚洲欧洲一级 | 日韩高清精品一区二区 | 人人干人人干人人干 | 丁香色婷 | 免费视频一区二区 | 国产精品综合av一区二区国产馆 | 国产精品永久在线 | 国产伦理精品一区二区 | 黄色在线视频网址 | 91一区啪爱嗯打偷拍欧美 | 欧洲色吧 | 亚洲黄色软件 | 色综合久久88色综合天天人守婷 | 久久精品国产亚洲aⅴ | 日韩精品视频在线免费观看 | 五月婷婷激情五月 | 日韩视频在线观看免费 | 波多野结衣在线观看一区二区三区 | 亚洲伊人av | 精品久久久影院 | 亚洲区精品 | 黄色网在线免费观看 | 国产一区二区久久久 | 亚洲成a人片在线观看网站口工 | 丁香婷婷久久 | 国产精品免费在线 | 激情欧美一区二区三区免费看 | 久久久精品网站 | 午夜精品电影 | 国产日韩在线播放 | av3级在线 | 色婷婷骚婷婷 | 久久艹综合| 美女免费黄视频网站 | 亚洲视频网站在线观看 | 成人禁用看黄a在线 | 国产黄影院色大全免费 | 伊人五月天| 亚洲国产精彩中文乱码av | 久久成人亚洲欧美电影 | 久久精品国产一区 | 91九色最新地址 | 国精产品满18岁在线 | 日本一区二区不卡高清 | 欧美日韩首页 | 免费国产在线视频 | 成人午夜免费福利 | 一区二区三区电影在线播 | 国产免费午夜 | 久久久国产在线视频 | 国精产品999国精产品视频 | 成av在线| 亚州精品天堂中文字幕 | 日韩午夜电影院 | 久久人人爽人人爽人人片av软件 | 在线观看免费视频 | 在线观看黄色 | 日韩av手机在线观看 | 懂色av一区二区在线播放 | 98久久| 亚洲精品在线免费播放 | 大胆欧美gogo免费视频一二区 | 最近日本韩国中文字幕 | 欧美日韩不卡一区二区 | www.av小说 | 国产精品99精品 | 久久久久久高潮国产精品视 | 在线观看国产 | 欧美日韩xx | 成人在线视频观看 | a级成人毛片 | 久久成人在线 | 亚洲va韩国va欧美va精四季 | 四虎视频 | 欧美日韩视频在线一区 | 日韩av片免费在线观看 | 麻豆久久久久 | 在线观看一区二区视频 | 免费a级毛片在线看 | 国产精品色 | 人人射人人射 | 美女露久久 | av高清网站在线观看 | 蜜臀久久99精品久久久无需会员 | 中文字幕国产精品 | 超级碰视频 | 亚洲天天草 | 久艹在线免费观看 | 色婷婷丁香 | 国产伦精品一区二区三区四区视频 | 国产精品免费观看在线 | 成人国产精品入口 | 婷婷视频在线播放 | 国产高清视频在线免费观看 | 五月婷婷另类国产 | 一本一道久久a久久精品蜜桃 | 久久综合影视 | 久久九九久久 | 日韩精品aaa | 中文字幕欲求不满 | 中文字幕国产视频 | 久久精品电影网 | 草久在线观看 | 韩国一区二区三区视频 | 国产日韩在线视频 | 色婷婷88av视频一二三区 | 另类老妇性bbwbbw高清 | 久久免费国产视频 | 永久免费av在线播放 | 久久久国产一区二区三区四区小说 | 日韩免费一级a毛片在线播放一级 | 国产精品永久久久久久久www | 操操操干干干 | 免费在线观看av网站 | 人人干人人草 | 国内久久看 | 一区二区欧美激情 | 亚洲精品欧洲精品 | 日韩女同av | 国产99自拍 | 超碰午夜 | 精品免费视频123区 午夜久久成人 | 国产一区二区不卡视频 | 免费a v网站 | 黄色美女免费网站 | 在线 高清 中文字幕 | 深爱五月激情五月 | 精品久久久久久一区二区里番 | 丁香色天天| 成人片在线播放 | 99re亚洲国产精品 | 国产精品二区三区 | 999国产在线 | av资源在线看 | 91麻豆免费版 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 天天操天天操天天操天天操 | 天天玩夜夜操 | 国产成人精品一区二区在线 | 黄色片网站av | 婷婷丁香狠狠爱 | 91久久久久久久 | 91视频高清完整版 | 亚洲视频免费在线观看 | 麻豆91精品 | 97夜夜澡人人双人人人喊 | www.天天干.com | 天天爽夜夜爽人人爽曰av | 精品久久1 | 香蕉视频在线免费 | 色婷婷综合久久久中文字幕 | 色婷婷97| 天天曰天天曰 | 97精品超碰一区二区三区 | 精品免费久久久久久 | 国产成人一区在线 | 日本精品在线看 | 国产精品久久久久9999 | 日韩系列在线 | 欧洲精品码一区二区三区免费看 | 久久久久国产一区二区 | 正在播放久久 | 中文字幕免费观看全部电影 | 福利片视频区 | www.狠狠操.com| 91pony九色丨交换 | 日本精品免费看 | 一区视频在线 | 国产日韩欧美在线影视 | 天天色综合三 | 91在线色 | 美女黄频在线观看 | 国产亚洲精品美女久久 | 亚洲黄色成人av | 日本女人的性生活视频 | 天天综合网在线观看 | 日韩动漫免费观看高清完整版在线观看 | 激情综合狠狠 | 51久久成人国产精品麻豆 | 久草在线高清 | 国产成人三级三级三级97 | 成人免费观看视频网站 | 黄网站色视频免费观看 | 日日精品| 国产永久网站 | 久久国产精品99精国产 | 国产视频精品在线 | 丁香六月久久综合狠狠色 | 国产精品毛片久久久久久久久久99999999 | 色婷婷免费| 免费久久99精品国产婷婷六月 | www.成人精品 | 亚洲激情精品 | 国产精品一区二区三区久久久 | 亚洲h视频在线 | 超碰公开在线 | 国产精品久久久久婷婷 | 精品99在线观看 | 青春草免费在线视频 | 日韩精品欧美一区 | 国产精品a久久 | 亚洲精品欧美精品 | 狠狠的干狠狠的操 | 久久国产精品久久精品 | 亚洲精品国产精品乱码在线观看 | 欧美日韩精品在线一区二区 | 特级西西444www大胆高清无视频 | 欧美地下肉体性派对 | 黄色成人小视频 | 国内精品久久久精品电影院 | 欧美另类tv | 91国内在线| 毛片a级片 | 久久人人精品 | 伊人婷婷 | 亚洲成成品网站 |