學號 2018-2019-20175212 童皓楨《Java程序設計》第5周學習總結

學號 2018-2019-20175212 《Java程序設計》第5周學習總結

教材學習內容總結

接口

  1. 聲明接口: interface 名字
  2. 接口體:接口體中只有常量無變量,只有抽象方法沒有普通方法;全部常量的訪問權限都爲public,且都是static常量(容許省略publicfinalstatic、修飾符),抽象方法的訪問權限也都是public。如
interface Printable {
  int MAX = 100;
  void add();
  float sum(float x ,float y);
}

實現接口

1.類實現接口:使用 implements聲明該類實現接口,如:
class A implements Printable,Addable;html

2.重寫接口中的方法:要非抽象類實現某個接口,那麼此類必須重寫接口中的全部方法。其中要去掉abstract修飾符、給出方法體,且方法的訪問權限要明顯的用public來修飾。
如果一個類實現一個接口,但沒有重寫接口中的全部方法,則此類必須是抽象類。如:java

interface Computable{
final int MAX = 100;
void speak(String s);
int f(int x);
float g(float x, float y);
}
Abstract class A implements Computable{
public int f(int x) {
int sum = 0;
for(int i=1;i<=x;i++){
sum = sum +I;
}
return sum;
}
}

3.若是一個接口不加public修飾,就稱做友好接口,能夠被與該接口在同一包中的類實現。
若父類實現了某個接口,那麼子類就天然實現了該接口,沒必要再聲明。
import語句能夠引入包中的接口,如 import java.io.*;git

接口回調

接口回調指的是:能夠把實現某一接口的類建立的對象的引用賦值給該接口聲明的接口變量,那麼該接口變量就能夠調用被類實現的接口方法。(爲以後複習此重點概念,下爲引用書上示例程序)編程

interface  ShowMessage {
   void 顯示商標(String s);
}
class TV implements ShowMessage {
   public void 顯示商標(String s) {
      System.out.println(s);
   }
}
class PC implements ShowMessage {
   public void 顯示商標(String s) { 
     System.out.println(s);
   }
}
public class Example6_2 {
   public static void main(String args[]) {
      ShowMessage sm;                  //聲明接口變量
      sm=new TV();                     //接口變量中存放對象的引用
      sm.顯示商標("長城牌電視機");      //接口回調。
      sm=new PC();                     //接口變量中存放對象的引用
      sm.顯示商標("聯想奔月5008PC機"); //接口回調
   } 
}

理解接口

  1. 接口能夠抽象出重要的行爲標準,該行爲標準用抽象方法來表示。
  2. 能夠把實現接口的類的對象的引用賦值給接口變量,該接口變量能夠調用被該類實現的接口方法,即體現該類根據接口裏的行爲標準給出的具體行爲。
  3. 核心思想就在於它能夠要求某些類有相同名稱的方法,但方法的具體內容(方法體的內容)能夠不一樣。

接口與多態

接口產生的多態是指不一樣的類在實現同一個接口時可能具備不一樣的實現方式,那麼接口變量在回調接口方式時就可能具備多種形態。markdown

接口參數

若是一個方法的參數是接口類型,咱們就能夠將任何實現該接口的類的實例的引用傳遞給該接口參數,那麼接口參數就能夠回調類實現的接口方法。函數

教材學習中的問題和解決過程

  • 問題1:由於接口體只有抽象方法而沒有普通方法,那麼不由思考接口體中是否能夠本身定義構造方法?
  • 問題1解決方案:此問題是在學習教材6.2時提出,在學到後邊的範例程序自我意識到, 接口體在使用上 並不一樣普通的類須要構造方法,而是使用implements指令在類的聲明時使用。
  • 問題2:在P153的Example6_4中,爲算開方運算,有一段代碼是:Math.sqrt(a*b); ,然而整個程序的代碼中沒有引入過Math類或是帶Math的包。
  • 問題2解決方案:通過上網查找發現,java.lang.Math包是創建java工程時自動導入的。學習

  • 問題3:在P153的Example6_4中,最後的輸出函數一律往日的println而使用了printf,雖不會有編譯運行上的錯誤,但因不換行致使以下圖很不美觀,不知爲什麼??
    輸入圖片說明
  • 問題3解決方案:並無獲得什麼硬核解答,所以問題對編程影響不大,故猜想此程序爲另外一位具備不一樣愛好的編者所寫。設計

代碼調試中的問題和解決過程

  • 問題1:教材P160中的編程題,在編寫程序編譯時出現下圖錯誤而不理解。
    輸入圖片說明
  • 問題1解決方案:接口參數章節沒有徹底理解,此題中參數應填new Dog()和new Cat ,表示符合以前定義的數據類型的一個新對象。

代碼託管

  • 在此說明:因本地倉庫不知爲什麼損壞,所以從新克隆了一個倉庫,於是本週代碼量與總代碼量相同 輸入圖片說明

上週考試錯題總結

結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺乏「教材學習中的問題和解決過程」的不加分
    • 缺乏「代碼調試中的問題和解決過程」的不加分
    • 代碼託管不能打開的不加分
    • 缺乏「結對及互評」的不能打開的不加分
    • 缺乏「上週考試錯題總結」的不能加分
    • 缺乏「進度條」的不能加分
    • 缺乏「參考資料」的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分調試

  4. 代碼調試中的問題和解決過程, 一個問題加1分code

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分
    • 遲交做業的扣至0分

      點評模板:

  • 博客中值得學習的或問題:
    • 在使用markdown語句時能夠多使用「代碼格式」以方便查閱瀏覽
    • 教材學習內容比較精煉,有本身的思考
  • 代碼中值得學習的或問題:
  • 基於評分標準,我給本博客打分:5分。得分狀況以下:

1.正確使用Markdown語法(加1分):

2.模板中的要素齊全(加1分)

3.代碼調試中的問題和解決過程, 一個問題加1分

4.本週有效代碼超過300分行的(加2分)

點評過的同窗博客和代碼

  • 本週結對學習狀況
  • 結對學習內容
    • 第六章代碼學習、調試

    • 四則運算器的構想

  • 上週博客互評狀況(只要連接,具體點評放相應博客下)

其餘(感悟、思考等,可選)

1.接口做爲一種用來提早聲明的特殊的類,因爲簡潔直觀,能夠普遍使用。

2.第一次java實驗練習讓我意識到寫一個符合功能需求的程序是一個比較複雜的過程,如今的基礎知識必定要紮實牢靠地進行學習。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 6/6 1/1 20/20
第二週 245/251 1/2 18/38
第三週 633/884 3/7 22/60
第四周 305/1189 1/4 30/90
第五週 410/1599 3/7 30/120

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料

相關文章
相關標籤/搜索