摘要:二面向?qū)ο蟾攀雒嫦蜻^程的設(shè)計思想和面向?qū)ο蟮脑O(shè)計思想我要吃魚香肉絲蓋飯面向過程我買菜我洗菜我切菜我放水我點火我做飯我炒菜。。。。
大家好,上次我們講過了樂字節(jié)Java編程之方法、調(diào)用、重載、遞歸,接下來我們將會進入到Java封裝的內(nèi)容。Java編程語言發(fā)展,面向?qū)ο蠛皖悺?/p> 一、編程語言的發(fā)展
機器語言——直接由計算機的指令組成,指令、數(shù)據(jù)、地址都以“0”和“1”組成:可以被計算機直接識別并執(zhí)行。
匯編語言——用容易理解和記憶的符號表示指令、數(shù)據(jù)以及寄存器等,抽象層次很低,程序員需要考慮大量的機器細節(jié)。
高級語言——屏蔽了機器細節(jié),提高了語言的抽象層次接近于人的自然語言,60年代出現(xiàn)的結(jié)構(gòu)化編程語言剔除了結(jié)構(gòu)化數(shù)據(jù)和語句,數(shù)據(jù)和過程抽象等概念。
面向?qū)ο蟮恼Z言——與以往的各種語言的根本不同是,它的設(shè)計出發(fā)點就是為了更能直接地描述問題域中客觀存在的事物。
語言的發(fā)展是朝著人類更容易理解的方向前進。
OOP(Object Oritented Programming)面向?qū)ο缶幊蹋瑢儆诰幊痰囊环N通用的思想。OOP使我們的開發(fā)變得不再那么復(fù)雜,并大大增加了程序的靈活性和擴展性。如果你尚未使用OOP思想來完善你的程序設(shè)計,那你真的OUT了。
代碼世界中與現(xiàn)實生活中一樣,社會需要分工,我們不必描述所有一切事物的制作過程,因為有時,我們只想要這個東西,并不關(guān)心它的過程。
二、面向?qū)ο蟾攀?/b> 2.1 面向過程的設(shè)計思想和面向?qū)ο蟮脑O(shè)計思想我要吃魚香肉絲蓋飯
面向過程:我買菜、我洗菜、我切菜、我放水、我點火、我做飯、我炒菜。。。。
面向?qū)ο螅赫壹绎堭^,大吼一聲“我要吃魚香肉絲蓋飯”
至于飯怎么來的我不管
所有的細節(jié)信息都封裝在這個飯館類的內(nèi)部,我不需要關(guān)心里面到底有幾道工序
面向過程就是知道一個很NB的人來完成一件事;面向?qū)ο缶褪侵笇?dǎo)一群人來完成一件很NB的事。
2.2 面向?qū)ο蟮脑O(shè)計思想面向?qū)ο蟮幕舅枷胧牵瑥默F(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)的構(gòu)造中盡可能運用人類的自然思維方式。
面向?qū)ο蟾訌娬{(diào)運用人類中日常的思維邏輯中經(jīng)常采用的思想方法與原則,如抽象、分離、繼承、聚合、多態(tài)等。
三、對象和類的概念對象用計算機語言對問題域中事物的描述,對象通過“屬性(attribute)”和“方法(method)”。
3.1 類
類是用于描述同一類型的對象的一個抽象的概念,類中定義了這一類對象所具有的靜態(tài)屬性和動態(tài)屬性。
類可以看成一類對象的模板,對象可以看成該類的一個具體實例。
類,說白了就是歸類,就是對同種事物進行抽象,抽出“像”的部分,包含有關(guān)事務(wù)(對象)動作方式的信息,包括它的名稱、屬性、方法及所在的場景或聯(lián)系。
例子:
根據(jù)客戶的需要,我們來制作一個蛋糕。首先要有一個制作蛋糕的菜譜(類),里面當(dāng)然要有制作這個蛋糕需要什么原材料(成員屬性),還要告訴我們?nèi)绾稳プ觯ǔ蓡T方法)。
public class Cake{ public String shape; // 蛋糕的形狀 public int cream; //奶油的量 public int eggs; //雞蛋的量 public int water; //水的量 public int bakeTime; // 烤制時間 public String others; // 其他配料 // 制作 public void makeCake(){ System.out.println(“放入” + cream + “的奶油,加入” + eggs+ “雞蛋…”); } }
由此可見:類就是模板,同時是復(fù)雜的數(shù)據(jù)類型
有了上述蛋糕類,還沒有擁有一個實實在在的蛋糕(對象),只有當(dāng)我們照著菜譜上寫的,把原材料準備齊全,照著一步一步去做,方可得到這個蛋糕(對象的實例化)
現(xiàn)在我們的高級面點師來了,他知道如何去做:只要有菜譜和材料
class Baker{ String name; // 名字 public Cake makeCake(){ Cake cake = new Cake(); cake.shape = “麻將型”; cake.cream = 50; cake.water = 500; cake.eggs = 5; cake.bakeTime = 5; cake.others = “黃油、糖、水果、顏料”; return cake; } }3.3 類(對象)之間的關(guān)系
關(guān)聯(lián)關(guān)系
繼承關(guān)系
聚合關(guān)系(整體和部分)
實現(xiàn)關(guān)系
多態(tài)
對象是Java程序的核心,在Java程序中“萬事萬物皆對象”。
類是用來創(chuàng)建同一類型的“模板”,在一個類中定義了該類對象所具有的成員變量以及方法
JDK提供了很多類供編程人員使用,編程人員也可以定義自己的類。
成員變量=屬性 方法=功能
4.1 Java類的定義//用class關(guān)鍵字定義一個類,例如
class Person{
// 成員變量 int id; int age = 20; // 方法定義 int getAge(){return age;} void setAge(int i){age = I;}
}
類的定義主要有兩方面組成——成員變量和方法
聲明成員變量的格式為:
[
例如: int id; private int age = 20;
聲明方法的格式為;
[
[
}
例如:public int getAge(){ return age;}
4.2 成員變量成員變量可以使用Java語言中任何一種數(shù)據(jù)類型(包括基本類型和引用類型)
定義成員變量時可以對其初始化,如果不對其初始化,Java使用默認的值對其初始化。
成員變量的作用范圍為整個類體
4.3 Java面向?qū)ο蠡靖拍?/b>Java語言中除基本類型之外的變量類型都稱為引用類型
Java中的對象是通過引用對其操作的。
例如:
Dog dog;
dog = new Dog();
如何在內(nèi)存中區(qū)分類和對象?
類是靜態(tài)的概念,代碼區(qū)
對象是new出來的,位于堆內(nèi)存,類的每個成員變量在不同的對象中都有不同的值(除了靜態(tài)變量)而方法只有一份,執(zhí)行的時候才占用內(nèi)存。
4.4 對象的創(chuàng)建和使用必須使用 new 關(guān)鍵字創(chuàng)建對象,new做三件事:
①會在堆中為相應(yīng)類型分配空間
②會調(diào)用相應(yīng)的構(gòu)造方法來初始化對象
③將在堆中開辟的空間的地址返回回來
使用對象(引用).成員變量來引用對象的成員變量。
使用對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法。
同一類的每個對象有不同的成員變量存儲空間。
同一類的每個對象共享該類的方法。
樂字節(jié)原創(chuàng),轉(zhuǎn)載請注冊出處。
接下來,小樂會繼續(xù)講述Java構(gòu)造器,引用與內(nèi)存分析,敬請關(guān)注 樂字節(jié)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/75437.html
摘要:但是,很遺憾,消費類電子產(chǎn)品并沒有高速的發(fā)展起來,進入蟄伏期的飛速發(fā)展無心插柳柳成蔭年代中末期,有一個改變世界的大事出現(xiàn)了互聯(lián)網(wǎng)的爆發(fā)式增長。 從這篇文章開始,小樂準備寫一整系列的Java學(xué)習(xí)文章,一步一步帶您進入Java的神奇世界! 這是第一篇:Java語言概述以及Java的發(fā)展前景 1、SUN公司介紹 SUN公司全稱是Stanford University Network. SUN...
摘要:本文承接上一篇樂字節(jié)發(fā)射之二實例化對象接口與父類修飾符和屬性繼續(xù)講述反射之三方法數(shù)組類加載器一方法獲取所有方法包括父類或接口,使用即可。當(dāng)沒有任何引用指向?qū)ο髸r就會被卸載,結(jié)束類的生命周期。 本文承接上一篇:樂字節(jié)Java發(fā)射之二:實例化對象、接口與父類、修飾符和屬性 繼續(xù)講述Java反射之三:方法、數(shù)組、類加載器 一、方法 獲取所有方法(包括父類或接口),使用Method即可。sho...
摘要:保持與和的相似性,以便開發(fā)人員能很快學(xué)會。年,網(wǎng)景公司的布蘭登與公司聯(lián)手開發(fā)一個稱為的腳本語言。當(dāng)時微軟決定進軍瀏覽器,發(fā)布了并搭載了一個的克隆版,叫做。在微軟進入后,有種不同的版本同時存在以及。 一、JavaScript簡介 JavaScript 是一種具有面向?qū)ο竽芰Φ摹⒔忉屝偷某绦蛟O(shè)計語言。更具體一點,它是基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。它的主要目的是,驗證發(fā)...
摘要:使用表達式,使得應(yīng)用變得簡潔而緊湊。很多語言等從設(shè)計之初就支持表達式。表達式的參數(shù)與函數(shù)式接口內(nèi)方法的參數(shù),返回值類型相互對應(yīng)。更多教程和資料請上騰訊課堂樂字節(jié) showImg(https://segmentfault.com/img/bVbtotg?w=935&h=345); Java8 引入Lambda表達式,允許開發(fā)者將函數(shù)當(dāng)成參數(shù)傳遞給某個方法,或者把代碼本身當(dāng)作數(shù)據(jù)進行處理。...
摘要:換句話說,套接字起到通信端點的作用。單個套接字是一個端點,而一對套接字則構(gòu)成一個雙向通信信道,使非關(guān)聯(lián)進程可以在本地或通過網(wǎng)絡(luò)進行數(shù)據(jù)交換。 大家好,我是樂字節(jié)小樂,上次給大家講述了Java中的IO流之輸出流|樂字節(jié),本文將會給大家講述網(wǎng)絡(luò)編程。 主要內(nèi)容如下: 網(wǎng)絡(luò) 網(wǎng)絡(luò)分層 列表項目 IP位置 端口port 網(wǎng)絡(luò)編程 showImg(https://segmentfault.c...
閱讀 3073·2021-11-24 11:14
閱讀 3504·2021-11-22 15:22
閱讀 3204·2021-09-27 13:36
閱讀 715·2021-08-31 14:29
閱讀 1331·2019-08-30 15:55
閱讀 1760·2019-08-29 17:29
閱讀 1148·2019-08-29 16:24
閱讀 2409·2019-08-26 13:48