Java類和對象
***************************第六章 類和對象*********************************
***************************面向過程和面向對象的區別**************************
一.面向過程
c語言
關心是how 怎麽做 即具體的實現步驟、實現細節
需求: 把大象裝冰箱.....
第一步 把冰箱門打開
第二步: 把大象裝冰箱
第三步: 把冰箱門關上
二.面向對象
關心的是 what 做什麽 使用者只需要關心做什麽即可
至於怎麽做封裝到方法中,由類的設計者關心,方法本身是面向過程的..
1. 先設計一個類 Person 人
行為(方法):把大象裝冰箱
2.創建對象
Person p = new Person();
3. 調用對象的方法
p.把大象裝冰箱();
面向對象語言的好處:
可讀性強、可維護性強,能夠應對大型軟件的需要 解決軟件危機問題
軟件危機: 隨著項目的不斷壯大,使用面向過程語言開發的程序,越來越臃腫、越來越
難維護,造成工期一拖再拖、甚至根本無法完成的情況叫做軟件危機...
***************************面向對象的設計思想**************************
模擬現實世界 這樣的好處是讓編程更加容易、更好理解
面向對象貼近於人的思維...
面向過程更貼近於計算機的思維
一個程序就是一個世界!
***************************類和對象的概念**************************
現實世界 編程世界
具體的樹 Tree的對象
具體的車 Car的對象
具體的小狗 Dog的對象
具體的學生
對象: 用來模擬現實世界中的事物....
1.屬性
學生對象的屬性 學號、姓名、性別、專業.....
2.行為
吃飯、學習、考試.....
類: 相同屬性和相同操作的對象的集合.....Student類
一個類可以創建多個對象,創建對象也叫做實例化一個對象
類是對象的(抽象)、是對象的(模板),對象是類的(實例)
**********************UML圖***********************************
UML 統一建模語言 方便程序員交流
一.類圖
UML中使用矩形來表示類圖,分為上中下三部分
上: 類名
中間: 屬性
下面: 行為
對象圖和類圖有什麽區別???
二.對象圖
包含兩部分
1. 上面
對象名: 類名
名稱下面有一個下劃線
2.下面:
屬性=值
註意: 對象圖沒有行為
*********************面向對象的好處(活字印刷 曹操的故事)***************************
面向過程:雕版印刷
面向對象:活字印刷
面向過程------------->面向對象
雕版印刷------------->活字印刷
1.曹操(客戶)
2.大臣(項目經理)
3.工匠(程序猿)
需求1:喝酒唱歌,人生真爽!
需求2: 對酒當歌,人生真爽!!
需求3: 對酒當歌,人生幾何...
面向對象的優點:
一.可復用
類: 每一個活字(喝)
對象: 具體的印到書上的文字..
一個類可以創建多個對象
代碼是可以重復使用的...
類的代碼是可復用的,可以使用這個類創建多個對象...
如果沒有類, 創建多個對象,每個對象的代碼還都要從新寫一遍....
方法也體現了可復用....
二.可維護
容易維護、改動比較少
活字印刷只需要改幾個字就可以了,而雕版印刷需要整個重新制版
三.可擴展
活字印刷可以隨意加字
四.靈活性強
橫著排---->豎著排 雕版印刷還需要重新制版 而活字印刷只需要調整文字的位置就可以了
可讀性強...
**********************使用系統提供的現有類創建對象************************************
類名 對象名 = new 類名();
1. String s = new String("aaa");
2. Integer integerI = new Integer(10);
3. Object obj = new Object();// Object 所有類的父類
----
4. Person p = new Person();
**********************一.類的定義***********************************
class 類名{
//1.屬性(成員變量)
//2.行為(方法)
}
類名使用大駝峰規範...
演示代碼:
package com.chapter6;
/**
* 作者: zhangzy
* 公司: 藍橋軟件學院
* 時間: 2017年6月30日 上午11:07:24
* 功能: 演示類的定義
*/
public class Student {
//1.屬性
int sno;//學號
String name;//姓名
int age;//年齡
//2.行為
public void study(){
System.out.println("我是" + name + ",我在學習");
}
public void exam(){
System.out.println("考試");
}
}
**********************二.創建對象***********************************
Student s = new Student();
**********************三.訪問對象的屬性和調用對象的方法*****************
一.訪問屬性
對象名.屬性名
二.調用方法
1.靜態方法
類名.方法名();
2.實例方法
(1)
類名 對象名 = new 類名();
對象名.方法名();
演示代碼:
package com.chapter6;
public class TestStudent {
public static void main(String[] args) {
// 2.創建對象
// 類名 對象名 = new 類名();
Student s1 = new Student();
// 訪問屬性
s1.sno = 1;
s1.name = "丁澤鵬";
s1.age = 20;
// 調用方法
s1.study();
// 創建另一個學生對象
Student s2 = new Student();
// 訪問屬性
s2.sno = 2;
s2.name = "王鈺龍";
s2.age = 21;
// 調用方法
s2.study();
}
}
***************************封裝性(面向對象的三大特性之一)*********************************
面向對象的三大特性:
1.封裝
2.多態
3.繼承
一門語言至少需要擁有以上三種特性,才可以稱為面向對象的語言...
封裝:
1. 封裝成類
把屬性和方法 放到 類裏面,叫做封裝成一個類
2. 封裝成方法
把若幹句代碼 放到方法中,封裝成方法
良好的封裝
1.對於屬性而言
需要使用private來修飾屬性,為了保證信息的安全和隱蔽
private 私有的 只有本類可以訪問
如果不加private 別人可以隨意的修改或訪問你的屬性,顯然不安全,比如別人隨意修改你的姓名、年齡、甚至
是性別..
2.對於方法而言
要使用public 來修飾
public 公有的 任何人都可以使用
定義出方法來 一般是讓別人使用的 為了讓別人使用 需要使用public來修飾
************************對象(類)之間的四種關系****************************
對象是用來模擬現實世界中的事物,現實世界中 事物之間有著千絲萬縷的聯系
為了模擬事物之間的關系,對象之間肯定也有關系
一.關聯關系
用來模擬對象之間 最基本的聯系、它是一種可以互相訪問的關系
老師----------學生
*****方向性
1. 單向關聯
老師---------->學生
2. 雙向關聯
老師----------學生
*****多重性
1:1 一對一
人:身份證 學生: 學號 一個人: 老婆
1:M 一對多
學校:學生
公司:職員
老師:學生(藍橋)
M:N 多對多
學生:課程
老師:學生(在學校裏)
************************關聯的兩個特例: 組合和聚合 has a****************************
整體 has a 部分
籃球隊 has a 球員
共同點:
都是整體和部分之間的關系...
區別:
1. 聚合
部分可以屬於多個整體, 部分和整體之間關系不是特別緊密,部分和整體的生命周期不一致
一個人既可以參加籃球隊、又可以參加足球隊....
學生既屬於藍橋這個班級、又屬於自己學校的班級....
空心菱形表示,空心菱形所在位置是整體
2. 組合
部分只能屬於一個整體,部分和整體的關系比較緊密, 部分消失了整體也消失了,它們的生命周期是一致的..
四肢(心臟)和人、 發動機和汽車
實心菱形表示,實心菱形所在位置是整體
************************二.繼承關系 is a***************************
一般和特殊之間的關系
實現+ 空心三角 表示繼承關系
************************三.實現關系 ***************************
實現一組規範....
學生規範
教師規範
廚師規範
實現了這組規範就可以稱為廚師....
UML中 使用 虛線 + 空心三角 表示 實現表示
************************四.依賴關系 ***************************
類A - - - - - - - - >類B
當類B變了,類A也跟著變, 叫做類A依賴於類B
學生- - - - - - - - - >父母
筆記本的工作 - - - - - - - > 屏幕
Java類和對象