版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目4:學生基本信息管理任務4-1定義類任務4-2創(chuàng)建對象面向對象概述程序語言的發(fā)展面向機器(機器語言、匯編語言)可讀性、可維護性、移植性差;效率高面向過程核心:算法+數(shù)據(jù)結構
缺陷:隨應用程序的規(guī)模擴大,操作與數(shù)據(jù)分離所帶來的維護工作量越來越大不適用于GUI界面、事件驅動編程面向對象對象+消息可重用性、可擴展性和可維護性更好能更容易、更好的模擬真實世界面向對象的基本概念
面向對象程序設計思想:從現(xiàn)實世界中客觀存在的事物出發(fā)來構造軟件系統(tǒng),強調運用人類在日常的思維邏輯中經(jīng)常采用的思維方法和原則。面向對象三大特征:封裝、繼承、多態(tài)面向對象的概念-封裝(encapsulation)
封裝是指按照信息屏蔽的原則,把對象的屬性和操作結合在一起,構成一個獨立的對象,并盡可能地隱蔽對象的內部細節(jié),通過有限的接口與外部發(fā)生聯(lián)系。
外部對象不能直接操作對象的屬性,只能使用對象提供的服務,通過該對象所允許的接口與之進行交互。
封裝所提供的將對象的靜態(tài)特征和動態(tài)特征結合在一起、不可分割的機制,是面向對象技術必須提供的一種基本能力。面向對象的概念-封裝(encapsulation)
封裝把對象的所有組成部分組合在一起,封裝定義程序如何引用對象的數(shù)據(jù),封裝實際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對類的修改和訪問數(shù)據(jù)的程度。面向對象的概念-繼承(inheritance)
繼承表達了對象的一般與特殊的關系。特殊類的對象具有一般類的全部屬性和服務。繼承是父類和子類之間共享數(shù)據(jù)和方法的機制
繼承使得子類可以利用父類種定義的方法和變量,就像它們屬于子類本身一樣繼承具有傳遞性作用:使軟件系統(tǒng)具有開放性;更好地進行抽象和分類;實現(xiàn)代碼的復用;提高可維護性。繼承部分個性部分子類父類 共性部分面向對象的概念-多態(tài)(Polymorphism
)多態(tài):不同的對象收到同一個消息可產(chǎn)生完全不同的效果。
多態(tài)的效果:用戶發(fā)送一個通用的消息,而實現(xiàn)的細節(jié)則由接收對象自行決定。
多態(tài)的作用:增強了操作的透明性、可理解性和可擴展性;增強了軟件的靈活性和重用性。面向對象的概念-多態(tài)(Polymorphism
)如一個繪圖系統(tǒng)中類的多態(tài)性:面向對象程序設計的優(yōu)點
開發(fā)時間短,效率高,所開發(fā)的程序更強壯。由于面向對象編程的可重用性,可以在應用程序中大量采用成熟的類庫,從而縮短了開發(fā)時間。
應用程序更易于維護、更新和升級。繼承和封裝使得應用程序的修改帶來的影響更加局部化??芍赜眯浴⒖蓴U展性、可管理性封裝性把對象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,提高安全性封裝性提高了程序的可復用性和可維護性
具有良好的自恰性,即通過自身定義的操作來管理自己;一個對象的操作可以完成兩功能:修改自身狀態(tài),向外發(fā)布信息通過一定的接口和相應的消息機制與外界聯(lián)系繼承性提高了程序開發(fā)效率類與對象對象、類與實體之間的關系經(jīng)過人類的抽象動物用一個叫“動物”的類來概括它們對象面向對象的概念-類和對象對象、類與實體之間的關系對象計算機世界類實體抽象數(shù)據(jù)類概念世界現(xiàn)實世界映射抽象計算機邏輯的實現(xiàn)抽象實例化類和對象類是描述同一類型對象的一個抽象的概念,它定義了一類對象所能擁有的靜態(tài)和動態(tài)特性。如:椅子、學生、書、汽車等。對象是類的一個實例,是一類事物的某個具體的東西。如:這張椅子、某個學生張三等。
一個類實際上就是一個數(shù)據(jù)類型,一旦類被建立,就可以創(chuàng)建類的任意個對象,然后去操作它們。在面向對象的程序設計中,類是程序的基本單元。
類的靜態(tài)特性由屬性來刻畫,動態(tài)特性由方法來體現(xiàn),即方法操作屬性來實現(xiàn)一個具體的功能。對象具有類所描述的所有屬性及方法。類
Java是完全面向對象的語言,所有代碼都由類組織,類是組成Java程序的基本要素。
類封裝了一類對象的屬性和方法,是這一類對象的原型。(前面學過的示例程序都是只含有main()方法的簡單的類,類的主要功能還沒有被用到)類的成員變量與成員方法
類中定義的數(shù)據(jù)稱為成員變量(member
variable)或域變量(field
variable),處理這些數(shù)據(jù)的代碼為成員方法(member
method)或簡稱方法,成員變量和成員方法統(tǒng)稱為類的成員。
將變量和方法封裝在一個類中,可以對成員變量進行隱藏,外部對類成員的訪問都通過方法進行,能夠保護類成員不被非法修改。類的成員變量與成員方法
設計有意義的類應該定義邏輯合理的成員變量和成員方法。例如定義表示學生的類,屬性數(shù)據(jù)可以包括姓名、學號,但不應該包括股市信息、平均降雨量等與學生無關的信息。定義只含成員變量的簡單類
類可以既包含成員變量又包含成員方法,也可以只包含成員變量或只包含成員方法,甚至可以是沒有任何成員變量和成員方法的空類。我們從只含成員變量的簡單類開始學習:定義類使用關鍵字class,定義只含有成員變量的類格式如下:class類名{數(shù)據(jù)類型1變量名1;數(shù)據(jù)類型2變量名2;…
…}
類名必須是合法的標識符,習慣上類名的首字母應大寫,如果類名由多個單詞組成,每個單詞的首字母均要大寫,其余字母為小寫。
數(shù)據(jù)類型規(guī)定每個成員變量是什么類型的數(shù)據(jù),可以是Java的基本數(shù)據(jù)類型,也可以是數(shù)組、字符串或其它類等引用數(shù)據(jù)類型。如果一個類有多個同類型的變量,也可以一起聲明。定義只含成員變量的簡單類--示例public
class
Vehicle1{int
passengers;double
weight;String
color;}上述代碼保存于Vehicle1.java文件中,由于沒有main()方法,無法單獨運行。創(chuàng)建對象
定義類的目的是以類為模板創(chuàng)建對象。對象也叫實例,因此創(chuàng)建對象也稱為類的實例化創(chuàng)建對象必須使用關鍵字new
對象創(chuàng)建成功后,就擁有了類定義中的所有成員變量,系統(tǒng)為新創(chuàng)建的對象分配內存空間,用于存儲對象的成員變量值。創(chuàng)建對象聲明類的引用變量的格式為: 類名引用變量名;
對象聲明語句并沒有創(chuàng)建對象,只有使用關鍵字new創(chuàng)建對象,才為對象分配內存,并把地址引用賦給對象變量。例如:Vehicle1
v;v
=
new
Vehicle1(
)
;上述兩行代碼也可以合成一步寫成: Vehicle1
v=new
Vehicle1();引用變量并不是對象本身,而是對象的首地址創(chuàng)建對象 例如,以下代碼創(chuàng)建了類Vehicle1的2個對象:Vehicle1
o1=
new
Vehicle1(
)
;Vehicle1
o2=
new
Vehicle1(
)
; 如果引用變量不引用任何對象,可以把null賦給它,例如:Vehicle1
o3;O3=null 注意此時對象的各成員變量還沒有初始值,系統(tǒng)會給它們賦予相應類型所對應的默認值。O1ppaasssseennggeerrsswweeiigghhttccoolloorrpassengersweightcolorO2O3null創(chuàng)建對象-示例class
Point{int
x,y;}Public
class
Inst1{Point
p1;
//聲明對象p1=new
Point();//為對象分配內存}對象的內存模型pPoint
p;說明:聲明變量p之后,p的內存中沒數(shù)據(jù),p是一個空對象,不能使用,因為它沒有得到任何“實體”p=new
Point();
為x和y分配內存,即為類的成員變量分配內存空間,若成員變量沒有指定初值,則使用默認值
返回一個引用給變量p,即返回一個地址號(成員變量在內存位置的首地址)p0x12AB00
xy對象的內存模型
Point
p1=new
Point();Point
p2=new
Point();
創(chuàng)建對象p1時,為成員變量x和y分配內存空間,創(chuàng)建對象p2時,為x和y再次分配內存空間,p1和p2有自己獨立的存儲空間p10x12AB00xyp20x1D3B00xy訪問對象
聲明了類的引用變量,并創(chuàng)建了類的對象后,就可以按照如下格式訪問對象的成員變量:引用變量名.成員變量名例如:o1.
passengers
=
5;System.out.println(o1.color);例:創(chuàng)建并訪問對象
另新建一個creatobject.java文件,在其中的main()方法中創(chuàng)建類Vehicle1的對象,并訪問對象public
class
creatobject
{public
static
void
main(String[]
args){//聲明對象//創(chuàng)建對象Vehicle1
v1,v2;v1
=
new
Vehicle1();v2
=
new
Vehicle1();System.out.println("v1的passengers:"+v1.passengers);//輸出成員變量的默認值
System.out.println("v1的weight:"+v1.weight);System.out.println("v1的color:"+v1.color);//對成員變量賦值v2.passengers
=
10;v2.weight
=
55.8;v2.color
=
"RED";System.out.println("v2的passengers:"+v2.passengers);//輸出成員變量當前值
System.out.println("v2的weight:"+v2.weight);System.out.println("v2的color:"+v2.color);
}}成員方法
上例中,類creatobject中的main()方法直接訪問了類Vehicle1對象的成員變量,這是一種不良的程序設計風格
面向對象程序設計要求編寫出高內聚、低偶合的代碼模塊對成員變量的訪問權限通常限制在類的內部。
大多數(shù)情況下,程序是通過成員方法與對象交互的,程序可以通過成員方法給成員變量賦值、獲取成員變量的值。定義成員方法定義成員方法的簡單格式如下:返回值類型方法名(形式參數(shù)列表){//方法體}其中:
返回值類型指定了調用方法后返回的數(shù)據(jù)類型。如果方法不返回任何值,用void代替。
方法名必須是合法的標識符,習慣上方法名用小寫字母,如果方法名由幾個單詞組成,第二個單詞起,每個單詞首字母大寫,其余均為小寫。
形式參數(shù)列表中的每個參數(shù)用數(shù)據(jù)類型和變量名表示,如果有多個參數(shù),每個參數(shù)之間用逗號隔開。如果方法有返回值,方法體的最后一行代碼必須是下列形式的語句: return表達式;//表達式的數(shù)據(jù)類型必須與方法定義中的返回值類型一致形式參數(shù)列表可以是空的,方法體也可以是空的。但返回值類型、方法名、一對()、一對{}是定義成員方法的四要素,缺一不可。例:定義含有成員方法的類定義一個描述汽車的類,除了成員變量passengers、weight、color外,還要定義對這些成員變量賦值并獲取成員變量值的方法。//
Vehicle2.javapublic
class
Vehicle2{int
passengers;double
weight;String
color;void
setPassengers(int
p)//設置成員變量passengers的值{passengers
=
p;}int
getPassengers(){return
passengers;}//返回成員變量passengers的值void
setWeight(double
w)
//設置成員變量weight的值{weight
=
w;}double
getWeight()
//返回成員變量weight的值{return
weight;}void
setColor(String
c/)/設置成員變量color的值{color
=
c;}String
getColor()//返回成員變量color的值{return
color;}void
setVariables(int
p,
double
w,
String
c)//設置所有成員變量的值{passengers
=
p;weight
=
w;color
=
c;}void
outputVariables()//顯示所有成員變量的值{System.out.println("
passengers
value
is:"+passengers);System.out.println("
weight
value
is:"+weight);System.out.println("
color
value
is:"+color);}}上述程序由于沒有main()方法,也不能獨立運行。調用成員方法對象創(chuàng)建后,對象可以調用本類的成員方法。格式為:引用變量名.方法名(實在參數(shù)列表)
實在參數(shù)列表中的參數(shù)個數(shù)、數(shù)據(jù)類型、排列順序必須與方法定義中形參列表中的參數(shù)個數(shù)、數(shù)據(jù)類型、排列順序一致。
每個實參必須是已經(jīng)賦值的變量或字面值,如果有多個實參,參數(shù)之間用逗號分隔。
方法調用格式中的引用變量名、方法名、實在參數(shù)列表是一個不可分割的整體,這個整體代表了方法的返回值,它可以賦給同類型的變量,也可以出現(xiàn)在表達式中參與運算。如果方法沒有返回值,方法調用通常是一行語句。例:調用對象的成員方法創(chuàng)建Vehicle2類的對象,通過其成員方法對成員變量賦值,并通過成員方法輸出成員變量值。//
Example4_4.javapublic
class
Example4_4{public
static
void
main(String[]
args){Vehicle2
v
=
new
Vehicle2();v.setPassengers(5);//實在參數(shù)是字面值,對成員變量賦值v.setWeight(88.9);v.setColor("GREEN");int
i=v.getPassengers(); //先調用方法求出返回值,再輸出返回值System.out.println("passengers="+i);System.out.println("weight="+v.getWeight());//返回值直接輸出System.out.println("color="+v.getColor());
v.setVariables(44,230.88,"W
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生院防疫設備管理制度
- 衛(wèi)生打掃值日制度
- 公司衛(wèi)生間上墻制度
- 衛(wèi)生院公衛(wèi)自查整改制度
- 衛(wèi)生所網(wǎng)絡安全制度
- 衛(wèi)生所登記管理制度
- 鄉(xiāng)村衛(wèi)生保潔制度
- 飲用水生產(chǎn)過程衛(wèi)生制度
- 衛(wèi)生室婦幼保健工作制度
- 衛(wèi)生院統(tǒng)計工作相關制度
- GB/T 3672.1-2025橡膠制品的公差第1部分:尺寸公差
- 2025外研社小學英語三年級下冊單詞表(帶音標)
- 承包檳榔園合同轉讓協(xié)議書
- 鵬城實驗室雙聘管理辦法
- 隧道滲漏檢測技術-洞察及研究
- x探傷安全管理制度
- 財政分局對賬管理制度
- 噴水機車間管理制度
- 云師大附中 2026 屆高三高考適應性月考(一)-地理試卷(含答案)
- 商業(yè)銀行反洗錢風險管理自評估制度研究
- 2025年度法院拍賣合同模板:法院拍賣拍賣保證金退還合同
評論
0/150
提交評論