Java學習筆記--關於物件導向的思考,java學習筆記

來源:互聯網
上載者:User

Java學習筆記--關於物件導向的思考,java學習筆記

1.不可改變的類產生對象以及變數的範圍

2. 關鍵詞this的使用

3.用類抽象的思想製作軟體

4.通過關聯式模式建立類

5.使用物件導向的範例來設計程式,遵循類設計指導。

已經學習了:怎麼定義類已經建立對象,還有就是通過Java API 來使用類。

 

1.不可變的類和對象

  正常來說,我們使用類的時候都是為了產生一個對象,允許在以後更改對象的內容,但是有時候會要求不能改變他的內容。比如我們記錄學生檔案的時候,又或者是個人簡曆的時候,有些檔案比如出生日期,一旦是確定的不會去更改,但是學曆,工作經驗會隨著個人的成長而改變。Java中也有一些類是不會變的,前面提到String類,裡面的內容一般是會變的,改變的時候參考這個值的String 變數所指向的字串。只需要將資料區私人,然後在公用的方法上不能夠更改這些資訊,就實現了我們的目標。在類裡面資料區的變數只能聲明一次,但是在方法中的不同程式塊變數可以聲明很多次。

  例子

public class circle{ private int x = 0; private int y = 0; public circle(){}    public void p(){    int x = 1;    system.out.println("x = " +x);    system.out.println("y = " +y);  } }

此時對比x和y的輸出的值,可以發現在p方法中的x的值已經改變,但是y的值沒有改變,也就是後來在方法中 定義的x ,他的範圍就在方法p中。為了避免混淆犯錯,不要在方法裡面使用本地變數或者是靜態變數,除了是用方法來傳遞參數的位置。

2. 關鍵詞this的使用

  關鍵詞this的使用,this是一個參考的名稱,它指向的是喚醒這個對象的它本身,最直接的就是用來參考類本身的隱藏資料區。

  

public class Circle{  int x = 10;  static double k = 11;   void setX(int x){      this.x = x;   }   static void setK(double k){      Circle.k= k;   }}

  通過關鍵詞this可以得到對象,然後喚起執行個體,this.x = x就是要讓參數的x賦值到喚起的對象的資料區,如果說將this的用法改成 this(abc),也就可以理解為這個類的構造方法。

3.用類抽象的思想製作軟體

     類的抽象和封裝。類的抽象就是使用類,並且實作類別之中的一部分內容,建立這個類必須要讓使用者知道它是如何使用的,方法和資料可以從外部和類中的到。類的實現的思想,對於客戶機而言,類就像一個黑盒,使用的時候將這些抽象出來,然後得到方法和內容的簽名。用戶端通過抽象類別來使用。生活中將電腦細分為很多部分,CPU,記憶體,硬碟,主板。每個部分都是一個對象,每個部分都有屬性和方法,為了整合起一整台電腦,我們必須要知道每個部分是怎麼使用的,以及它們之間是如何互動,內部的東西已經封裝起來了,我們不必去瞭解每個觸發器,鎖存器是怎麼工作的,只需瞭解整體的模組功能。

  也就是說 1 開發類和使用類是兩種獨立的任務

       2 可以跳過複雜的類來,然後學習整個工程

        3 通過使用類可以更好地知道怎麼來實現

  物件導向的思想:

      public static double gerBMI(double weight, double height)

     這個方法,可以計算我們身體的BMI值,然後還是很有限,因為的到這些資訊以後,我們日常使用時,作為某個人身體情況的衡量指標,這些資訊就要和這個人的其他資訊串連起來,此時可以按照以下的例子建立類:

  

String name;int age;double weight;double height;BMI(name: String , age: int ,weight:double, height: double)getBMI       

   對象也可以包含另外一個對象,就像上面一個BMI的例子中寫的一樣,在BMI中就有關於String類產生的字串,類之間的關係也有很多種,比如以下三個類

  學生類,姓名類,家庭地址類。一個學生對應一個名字,但是可能會有兩個學生的地址是一樣的,這個地址由這兩個學生共用,也就是通過關係的模型來建立類。

public class Name{    ...}public class Student{   private Name name;      private Address address;  }public class Address{  ...   }
4.通過關聯式模式建立類

  例子:設計一個課程Course 類

  資料區: courseName: String、 students[]: String 、 numberOfStudent: int

  方法區: 構造方法Course(courseName: String) ,getCourseName():String, addStudent(student:String): void, dropStudent(student: String):void、 getStudents():String[] ,getNumberOfStudents(): int 

     在這個Course類中可以看到資料結構的影子,一組資料,以及在這組資料上的關係的集合,有點像線性表。

  Student.java

  

public class student {    private String Name;    public student(String na){        this.Name = na;    }    public String getName()    {        return Name;    }}

  Course.java

public class Course {    private String CourseName;    private student[] stu;    private int numberOfStudent;        public Course(String courseNa){        CourseName = courseNa;        numberOfStudent = 0;        stu= new student[20];    }        public String getCourseName(){        return CourseName;    }    public void addStudent(student s){        int i = numberOfStudent;        i++;        stu[i] = s;            numberOfStudent++;    }    public void DropStudent(student s){        numberOfStudent --;    }    public String GetStudent(int i){        return stu[i].getName();    }    public int  getNumberOfStudent(){        return numberOfStudent;    }}

main.java

public class Main {    public static void main(String[] args){                Course cou = new Course("math");        student stu1 = new student("xiao ming");        student stu2 = new student("Da ming");        cou.addStudent(stu1);        cou.addStudent(stu2);        System.out.println("The Course Name is "+ cou.getCourseName());        System.out.println("The number of student is "+ cou.getNumberOfStudent());        System.out.println("The List :\n"+cou.GetStudent(1));        System.out.println(cou.GetStudent(2));    }    }

 

5.使用物件導向的範例來設計程式,遵循類設計指導。

  一個對象應該是描述單一整體,類的操作應該在邏輯上有連貫性的目的。例如你可你將學生加入一個班級,但是不要將員工和學生都加到同一個班級裡去,之前學習的String,StringBuilder,StringBuffer,都是用來解決字串的問題,String用來處理不變的字串,StringBuilder用來建立可變的字串,StringBuffer可StringBuilder相似,但是可以StringBuffer包含了synchronized的方法用來更新字串。

  高內聚低耦合,前後一致連貫。

摘自百科:

  耦合性:也稱塊間聯絡。指軟體系統結構中各模組間相互聯絡緊密程度的一種度量。模組之間聯絡越緊密,其耦合性就越強,模組的獨立性則越差。模組間耦合高低取決於模組間介面的複雜性、調用的方式及傳遞的資訊

      內聚性:又稱塊內聯絡。指模組的功能強度的度量,即一個模組內部各個元素彼此結合的緊密程度的度量。若一個模組內各元素(語名之間、程式段之間)聯絡的越緊密,則它的內聚性就越高。      所謂高內聚是指一個軟體模組是由相關性很強的程式碼群組成,只負責一項任務,也就是常說的單一責任原則。      耦合:一個軟體結構內不同模組之間互連程度的度量。      對於低耦合,粗淺的理解是:一個完整的系統,模組與模組之間,儘可能的使其獨立存在。也就是說,讓每個模組,儘可能的獨立完成某個特定的子功能。模組與   模組之間的介面,盡量的少而簡單。如果某兩個模組間的關係比較複雜的話,最好首先考慮進一步的模組劃分。這樣有利於修改和組合。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.