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