- Java面向對象軟件開發
- 姚駿屏 汪衛星主編
- 1634字
- 2018-12-29 19:04:12
1.1.2 如何創建類
1.抽象出類
要用Java來描述一個類,首先得將該類的屬性和方法在頭腦中清楚地抽象出來。如我們定義一個人類,以圖1-1進行說明。

圖1-1 人類類圖
【思考】請畫出蘋果類的類圖、貓的類圖。
是不是感覺到在軟件開發中,你就是一個個類的創造者,是你創造了一個個的規則進行了分類,在內存中的世界里你就是造物主。
2.用Java語法構建出類
Java中類定義語句的形式為:
class 類名 { // 類頭的定義 /* 類體的定義*/ 成員變量聲明; 成員方法定義; }
其中,class是Java語言中定義類時必須使用的關鍵字,以告訴Java這是一個類。“類名”是為這個類取的名,應書寫為Java語言合法的標識符。大括號{}中是定義類體的地方,其中包含該類中的數據成員和成員方法。在Java語言中也允許定義沒有任何成員的空類或只有屬性或方法二者存一的類。
前面分析出了一個“人”類,下面借用“人”類的例子來說明在Java語言中如何定義一個人類,其描述形式為:
class 人類 {// 定義一個人類 /*人類的屬性*/ 眼睛; 鼻子; 手; 名字; …… /*人類的成員方法定義*/ 吃飯( ); 走路( ); 說話( ); …… }
【例1-1】 定義一個名為Round的圓形類,其有半徑屬性、有求周長的方法。
解:
(1)定義類頭
class Round{ }
編碼規范提示:
按照類名的書寫規范,類名不允許用中文,其首字母應大寫,若類名由多個單詞組成,則每個單詞的首字母均要大寫。如:class TestDemo{…}
(2)定義成員變量
在類中定義的方法和變量統稱為類的成員。定義在類中但在類方法之外的變量稱為成員變量。Java中成員變量的聲明形式如下:
[修飾符] 成員變量數據類型 成員變量名 [= 初值];
上面定義了類頭,類體是空的,就需要添加類的成員屬性表示圓形的狀態。代碼如下:
class Round{ // 定義成員屬性 double radius; // 半徑 }
從這個例子可以看到,在類中進行成員變量的聲明與一般變量的聲明形式完全相同。成員變量的類型可以是基本數據類型,也可以是自定義類型,比如為某個類的對象。
編碼規范提示:
成員變量名,第一個單詞的第一個字母小寫,其后的單詞第一個字母大寫,而且單詞之間沒有任何分隔符。單詞的選用要求能體現該屬性的特定含義,成員變量名在一個類中還要保證唯一性。
(3)定義成員方法
定義在類中的方法稱為成員方法。Java中成員方法的定義形式如下:
[修飾符] 返回類型 方法名([形式參數列表]){
// 方法體
}
class Round { // 定義成員屬性 double radius; // 半徑 // 定義成員方法 double perimeter(){ // 求圓形的周長 return 2*3.14*radius; } }
工作分解-操作方案
1.從功能需求中分析并抽象出類,作出類圖;
2.按照類圖將對應的類的結構構建出來;
3.實現出類中的方法。
工作實施
1.分析抽象出類
類的內部包括屬性和方法兩種成員。按照屬性是名詞,而方法是動詞的原則,我們不難從本任務中分析抽象出有一個矩形類Rectangle,它包含兩個表示長方形屬性的成員變量:長length和寬width,以及兩個表示長方形行為的成員方法:perimeter()和area()方法分別用于計算長方形的周長和面積。
類圖(Class Diagram)是用來描述類內在結構的圖,是面向對象系統建模中最常用的圖。在UML中,類用矩形來表示,并且該矩形被劃分為3個部分:名稱部分、屬性部分和方法部分。其中,名稱部分存放類的名稱,中間的部分存放類的屬性名、屬性的類型及值信息,底部的部分存放類的操作、操作的參數表和返回類型信息,如圖1-2所示。

圖1-2 矩形類圖
名詞解釋:
UML(Unified Modeling Language),即統一建模語言,它是國際對象管理組織OMG制定的一個通用的、可視化建模語言標準,用圖表的方式將要設計的軟件問題建模,將問題分解化,適合于其他開發者閱讀。類圖是UML中應用最廣泛的一種圖,描述擬建系統各個層面的靜態結構,主要用于表述類、接口和子系統之間的關系。
2.按照類圖編制出類框架
class Rectangle{ // 定義成員變量 double length; // 長 double width; // 寬 // 定義成員方法 double perimeter(){ // 求長方形的周長 } double area(){ // 求長方形的面積 } }
3.實現類中的方法
double perimeter(){ // 求長方形的周長 return 2*(length + width); } double area(){ // 求長方形的面積 return length*width; }
4.完整源代碼如下
class Rectangle{ // 定義成員變量 double length; // 長 double width; // 寬 // 定義成員方法 double perimeter(){ // 求長方形的周長 return 2*(length + width); } double area(){ // 求長方形的面積 return length*width; } }
【思考】試分析“學生”這個類,然后用Java語言來定義一個學生類Student,其有姓名、年齡、性別、身高、專業等屬性,以及有回答提問、考試等行為。
- 數據科學實戰手冊(R+Python)
- Flask Web全棧開發實戰
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- Learning Scala Programming
- 兩周自制腳本語言
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- Java Web基礎與實例教程(第2版·微課版)
- Java高手真經(高級編程卷):Java Web高級開發技術
- 嚴密系統設計:方法、趨勢與挑戰
- 用戶體驗可視化指南
- Julia for Data Science
- PHP編程基礎與實踐教程
- Spring MVC+MyBatis開發從入門到項目實踐(超值版)
- C++編程兵書
- SQL Server 入門很輕松(微課超值版)