程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java學習筆記--關於面向對象的考慮

Java學習筆記--關於面向對象的考慮

編輯:關於JAVA

Java學習筆記--關於面向對象的考慮。本站提示廣大學習愛好者:(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的辦法用來更新字符串。

  高內聚低耦合,前後分歧連接。

摘自百科:

  耦合性:也稱塊間聯絡。指軟件零碎構造中各模塊間互相聯絡嚴密水平的一種度量。模塊之間聯絡越嚴密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合上下取決於模塊直接口的復雜性、調用的方式及傳遞的信息

      內聚性:又稱塊內聯絡。指模塊的功用強度的度量,即一個模塊外部各個元素彼此結合的嚴密水平的度量。若一個模塊內各元素(語名之間、順序段之間)聯絡的越嚴密,則它的內聚性就越高。       所謂高內聚是指一個軟件模塊是由相關性很強的代碼組成,只擔任一項義務,也就是常說的單一責任准繩。       耦合:一個軟件構造內不同模塊之間互連水平的度量。       關於低耦合,深刻的了解是:一個完好的零碎,模塊與模塊之間,盡能夠的使其獨立存在。也就是說,讓每個模塊,盡能夠的獨立完成某個特定的子功用。模塊與   模塊之間的接口,盡量的少而復雜。假如某兩個模塊間的關系比擬復雜的話,最好首先思索進一步的模塊劃分。這樣有利於修正和組合。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved