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的辦法用來更新字符串。
高內聚低耦合,前後分歧連接。
摘自百科:
耦合性:也稱塊間聯絡。指軟件零碎構造中各模塊間互相聯絡嚴密水平的一種度量。模塊之間聯絡越嚴密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合上下取決於模塊直接口的復雜性、調用的方式及傳遞的信息
內聚性:又稱塊內聯絡。指模塊的功用強度的度量,即一個模塊外部各個元素彼此結合的嚴密水平的度量。若一個模塊內各元素(語名之間、順序段之間)聯絡的越嚴密,則它的內聚性就越高。 所謂高內聚是指一個軟件模塊是由相關性很強的代碼組成,只擔任一項義務,也就是常說的單一責任准繩。 耦合:一個軟件構造內不同模塊之間互連水平的度量。 關於低耦合,深刻的了解是:一個完好的零碎,模塊與模塊之間,盡能夠的使其獨立存在。也就是說,讓每個模塊,盡能夠的獨立完成某個特定的子功用。模塊與 模塊之間的接口,盡量的少而復雜。假如某兩個模塊間的關系比擬復雜的話,最好首先思索進一步的模塊劃分。這樣有利於修正和組合。