java類結構
㈠ 使用java面向對象的思想設計一個即時戰略游戲的類結構 主要類如下: (1)人口類(Person)
package ;
public class Person {
//生命值
private int lifeValue;
//攻擊力
private int attackPower;
//消耗資源數
private int needResource;
public int attack(String select){
return this.lifeValue;
}
public int getLifeValue() {
return lifeValue;
}
public void setLifeValue(int lifeValue) {
this.lifeValue = lifeValue;
}
public int getAttackPower() {
return attackPower;
}
public void setAttackPower(int attackPower) {
this.attackPower = attackPower;
}
public int getNeedResource() {
return needResource;
}
public void setNeedResource(int needResource) {
this.needResource = needResource;
}
}
package ;
public class Nurse extends Person {
public void cure(){
System.out.println("begin cure!");
}
}
package ;
public class Sapper extends Person {
private int collectRes = 0;
//創造建築createConstruction(),採集資源collectResource()
public void createConstruction(){
System.out.println("begin to createConstruction...");
}
public int collectResource(){
return collectRes;
}
}
package ;
public class Player {
//玩家名稱。玩家資源值,玩家所擁有的人口對象,玩家所擁有的建築對象。
private String player_name;
private int player_res;
private Person player_per;
private Construction player_con;
public String getPlayer_name() {
return player_name;
}
public void setPlayer_name(String player_name) {
this.player_name = player_name;
}
public int getPlayer_res() {
return player_res;
}
public void setPlayer_res(int player_res) {
this.player_res = player_res;
}
public Person getPlayer_per() {
return player_per;
}
public void setPlayer_per(Person player_per) {
this.player_per = player_per;
}
public Construction getPlayer_con() {
return player_con;
}
public void setPlayer_con(Construction player_con) {
this.player_con = player_con;
}
}
package ;
public class Person {
//生命值
private int lifeValue;
//攻擊力
private int attackPower;
//消耗資源數
private int needResource;
public int attack(String select){
return this.lifeValue;
}
public int getLifeValue() {
return lifeValue;
}
public void setLifeValue(int lifeValue) {
this.lifeValue = lifeValue;
}
public int getAttackPower() {
return attackPower;
}
public void setAttackPower(int attackPower) {
this.attackPower = attackPower;
}
public int getNeedResource() {
return needResource;
}
public void setNeedResource(int needResource) {
this.needResource = needResource;
}
}
package ;
import java.util.Scanner;
public class PlayTest {
public static void main(String[] args) {
Player p1 = new Player();
Player p2 = new Player();
//設置第一個玩家的游戲信息
p1.setPlayer_name("player1");
//攻擊力
p1.getPlayer_per().attack("a1");
p1.getPlayer_per().setLifeValue(30);
p1.getPlayer_per().setNeedResource(0);
p1.getPlayer_con().setNeedResource(0);
p1.setPlayer_res(0);
//設置第二個玩家的游戲信息
p2.setPlayer_name("player2");
//攻擊力
p2.getPlayer_per().attack("a2");
p2.getPlayer_per().setLifeValue(30);
p2.getPlayer_per().setNeedResource(0);
p2.getPlayer_con().setNeedResource(0);
p2.setPlayer_res(0);
//開始准備資源
p1.getPlayer_per();
p1.getPlayer_con();
p2.getPlayer_per();
p2.getPlayer_con();
//游戲規則
String key1 = "a1";
String key2 = "Sc1";
String key3 = "Sr1";
String key4 = "Nc1";
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
if(key1.equals(input)){
p1.getPlayer_per().setLifeValue(p1.getPlayer_per().getLifeValue()+1);
p1.getPlayer_per().setNeedResource(p1.getPlayer_per().getNeedResource()+1);
p2.getPlayer_per().setLifeValue(p2.getPlayer_per().getLifeValue()-1);
}else if(key2.equals(input)){
p1.getPlayer_con().setCurrentSum(+1);
p1.setPlayer_con(p1.getPlayer_con());
}else if(key3.equals(input)){
p1.setPlayer_res(p1.getPlayer_res()+1);
}else if(key4.equals(input)){
p1.getPlayer_per().setLifeValue(+1);
p1.setPlayer_per(p1.getPlayer_per());
}
System.out.println("當前玩家1的進攻以及資源");
System.out.println("當前玩家2的進攻以及資源");
}
}
㈡ java開發項目,目錄結構大家一般怎麼劃分
要看採用什麼模式,如果是MVC模式的,就按照模型,視圖,控制器來劃分包名,可以有個工具類的包。學習java推薦選擇千鋒教育。千鋒教育擁有多年IT培訓服務經驗,採用全程面授高品質、高體驗培養模式,
Java培訓出來如何找高薪工作:
1.獲得程序員式思維方式的快速建立知識體系。
2.找到一個合適的方法來實現技術進入,比如注冊一個聲譽良好的培訓機構。
3.閱讀一本書仍然是系統地學習知識的最佳方式,盡管在技術博客或社區論壇上有很多大神。
4.初學者應該積極地提問,依靠別人的經驗並不可恥,關鍵是要用最少的時間來獲得最多的收入。
5.根據大多數受訪者的經驗,閱讀源代碼是最快的增長途徑。
6.HTML5.Python.Java.C.Golang等都是強大而普遍的入門語言,在精通之後再學其他。
想要了解更多關於java的相關信息,推薦咨詢千鋒教育。千鋒教育成立於2011年1月,立足於職業教育培訓領域,公司現有教育培訓、高校服務、企業服務三大業務板塊。教育培訓業務分為大學生技能培訓和職後技能培訓;高校服務業務主要提供校企合作全解決方案與定製服務;企業服務業務主要為企業提供專業化綜合服務。公司總部位於北京,目前已在20個城市成立分公司,現有教研講師團隊300餘人。
㈢ 關於JAVA的問題:什麼是類寫出java中類定義的格式
類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎。類是一種用戶定義的引用數據類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數。類的實例稱為對象。
定義一個類的格式如下圖:
(3)java類結構擴展閱讀:
對象可以訪問類的成員,但並不是所有成員都可以被訪問,能否訪問取決於聲明該成員時所用的關鍵字(public/protected/private)。具體規則如下:
1、類的公有成員可以被該類,其派生類和類實例化的對象訪問。
2、類的保護成員可以被該類及其派生類訪問,不可以被該類的對象訪問。
3、類的私有成員可以被該類訪問,不可以被派生類及其該類的對象訪問。
㈣ JAVA數據結構有哪幾種
JAVA數據結構有以下幾種:
1、List:
List是有序的Collection,使用此介面能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似於數組下 >標)來訪問List中的元素,這類似於Java的數組。
2、Vector:
基於數組(Array)的List,其實就是封裝了數組所不具備的一些功能方便我們使用,所以它難易避免數組的限制,同時性能也不可能超越數組。
另外很重要的一點就是Vector是線程同步的(sychronized)的,這也是Vector和ArrayList 的一個的重要區別。
3、ArrayList:
同Vector一樣是一個基於數組上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector好一些,但是當運行到多線程環境中時,可需要自己在管理線程的同步問題。
4、LinkedList:
LinkedList不同於前面兩種List,它不是基於數組的,所以不受數組性能的限制。 它每一個節點(Node)都包含兩方面的內容:節點本身的數據(data),下一個節點的信息(nextNode)。
所以當對LinkedList做添加,刪除動作的時候就不用像基於數組的ArrayList一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了,這是LinkedList的優勢。
5、HashSet:
雖然Set同List都實現了Collection介面,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。
但是Set則是在 HashMap的基礎上來實現的,這就是Set和List的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項。
6、HashMap:
基於哈希表的 Map 介面的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恆久不變。
7、HashTable:
Hashtable 是一個散列表,它存儲的內容是鍵值對(key-value)映射。Hashtable 繼承於Dictionary,實現了Map、Cloneable、java.io.Serializable介面。
Hashtable 的函數都是同步的,這意味著它是線程安全的。它的key、value都不可以為nul
㈤ java中都有哪些數據結構
數據結構:
①數組 (Array)
在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數
據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組
元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指
針數組、結構數組等各種類別。
②棧 (Stack)
棧是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後
的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
③隊列 (Queue)
一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行
插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
④鏈表 (Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
⑤樹 (Tree)
樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:
(1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)
(2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
⑥堆 (Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指
二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
⑦圖 (Graph)
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,
邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
⑧散列表 (Hash)
若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱
這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。
差不多我就知道這些了~
㈥ java什麼是結構型模式
結構型模式是描述如何將類對象結合在一起,形成一個更大的結構,結構模式描述兩種不同的東西:類與類的實例。故可以分為類結構模式和對象結構模式。
在GoF設計模式中,結構型模式有:
1.適配器模式 Adapter
2.橋接模式 Bridge
3.組合模式 Composite
4.裝飾模式 Decorator
5.外觀模式 Facade
6.享元模式 Flyweight
7.代理模式 Proxy
㈦ java集合類框架中類的組織結構,並說明它們之間的聯系與區別。
結構圖一樓給出來了,
聯系:list是可重復的有順序的;set是不重復的無序的;map中的key是不重復的,value是和key一一對應的。
區別:
1. ArrayList是用動態數組實現的,有數組隨機訪問的優點,但插入和刪除操作過多時效率低;LinkedList是用雙向鏈表實現的,插入和刪除操作效率高,但隨機訪問數據不如ArrayList速度快。
2. HashSet是用散列實現的,TreeSet是用紅黑樹(基於二叉平衡樹的變種)實現的,
TreeSet是有序的(這可能與數學中純粹的集合概念不一致,但似乎這世上本就沒有純粹的東西吧),所以放入TreeSet中的對象必須是可比較的,即實現Compareble介面。
3. HashMap和TreeMap,與HashSet、TreeSet類似。
㈧ 介紹下Java程序的結構
Java語言是面向對象的程序設計語言,Java程序的基本組成單元是類,類體中又可包括屬性與方法兩部分。而每一個應用程序都必須包含一個main()方法,含有main()方法的類稱之為主類。
一: Java程序的主類及其格式
作為一個可以獨立運行的Java程序,在它的眾多類中必須要有一個類作為程序的起始類,為了方便,本書把這個類稱為主類。當需要執行一個程序時,人們在java命令後面輸入的便是這個主類的文件名(也是主類名),因此主類文件是Java運行環境建立起來之後第一個被裝入虛擬機的用戶文件。為了使虛擬機可以找到程序運行的起始入口,主類必須為public類,並含有一個在格式上符合約定的入口方法main(),其格式如下:
public static void main(String[] args){
…
}
其中各參數含義如下。
main:入口方法名稱。
args:命令行參數,這是一個String對象數組。
static:修飾字,說明main()是一個靜態方法(類方法)。
public:修飾字,說明main()具有公有訪問屬性。
於是,主類框架的源代碼如下:
public class 主類名{
…
public static void main(String[] args){
…
}
}
Java程序的主類常常使熟悉C/C++的讀者感到迷惑:main()方法不就相當於C/C++程序中的主函數嗎,為什麼非得把它放到一個類里,難道它有什麼不同嗎?
沒錯,Java類中main()方法就相當於C/C++程序中的主函數,是一個入口函數。之所以把它封裝到一個類里,而不像C/C++那樣單獨作為一個函數來處理,就本書作者的理解,大概Java的設計者們有如下幾個方面的考慮。
1)Java既然把所有事物都看成了對象,那麼就沒有理由不把程序也看成對象,因為程序也是一種事物。既然是對象,那麼它就應該屬於某個類並以程序名來命名。既然程序是一種類,那麼main()就應該是這個類的一個方法,只不過它有些特殊,它是一個入口方法,並且對它有些特殊規定,例如其名稱必須為main(),必須是公有靜態方法,有命令行參數等。
2)如果把程序封裝成了類,那麼包括本程序在內的任何程序就都可以根據需要,隨時創建這個類的對象,並通過該對象使用這個類中的資源,這樣就便於資源共享,從而提高程序的靈活性。
3)Java程序是一種以類為基本單位的模塊化程序,程序被編譯後,每一個類會對應生成一個二進制位元組碼類文件。如果把程序也封裝成類,那麼它的文件就與其他類文件統一起來,而不會產生其他類型的文件,因而便於管理。
4)之所以把入口方法封裝到類中,其根本目的就是要盡可能平等地看待所有的類。因為Java的最終目的是要以類為基本模塊來實現可裝配軟體,如果把main()方法封裝到了一個類中,那麼就意味著main()與類的其他方法沒什麼本質區別,只不過是分工不同而已。下面很快就會看到,Java的所有類都可以含有一個入口方法而成為主類。也就是說,在Java程序中根本就沒有主類、次類之分,這里之所以把帶有main()方法的類稱為主類,是為了表達方便。
二: JAVA源程序在命令行下的運行
classBank{
publicvoidinit(){
System.out.println("Yes,Ican");
}
publicstaticvoidmain(Stringargs[]){
BankAccountba1=newBankAccount(100.00);
System.out.print("Beforetransactions,");
ba1.display();
ba1.deposit(74.35);
ba1.withdraw(20.00);
System.out.print("Aftertransactions,");
ba1.display();
Bankb=newBank();
b.init();
}
}
classBankAccount{
privatedoublebalance;
publicBankAccount(doubleopeningBalance){
balance=openingBalance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoiddisplay(){
System.out.println("balance="+balance);
}
}
三:完整的java源程序應該包括下列部分
package語句;
import語句;
public classDefinition; // 公共的類定義部分,至多隻有一個公共類的定義
// java語言規定該java源程序的文件名必須與該公共類名完全一致
classDefinition; // 類定義部分,可以有0個或多個
interfaceDefinition; // 介面定義部分,可以有0個或多個
package:java編譯器為每個類生成一個位元組碼文件,且文件名與類名相同,這就會帶來一個問題:同名的類會發生沖突。package便可管理類命名空間。
一般地,具有相同功能的類放在一個package中。
一個java源程序至多隻能有一個公共類的定義。
若java源程序有一個公共類的定義,則該源文件名字必須與該公共類的名字完全相同。
若源程序中不包含公共類的定義,則該文件名可以任意取名。
若一個源程序中有多個類定義,則在編譯時將為每個類生成一個。class文件。
三。java編程規范
包名:全小寫的名詞,中間可由點分割,eg:java.awt.event
類名:首字母大寫,多個單詞合成,每個單詞首字母也要大寫,eg: class HelloWorldApp
介面名: 同類名,eg: interface Collection
方法名: 由多個單詞合成,第一個單詞通常為動詞,首字母小寫,中間的每個單詞的首字母都要大寫,eg: balanceAccount, isButtonPressed
變數名: 全小寫,一般為名詞,eg: length
常量名: 基本數據類型的常量名為全大寫,如果由多個單詞構成,可以用下劃線隔開,eg: int YEAR, int WEEK_OF_MONTH
對象類型的常量,則是小寫混合,由大寫字母把單詞隔開
㈨ 請問,什麼是java的類庫結構
ava類庫中有很多包:
以 java.* 開頭的是Java的核心包,所有程序都會使用這些包中的類;
以 javax.* 開頭的是擴展包,x 是extension 的意思,也就是擴展。雖然 javax.* 是對 java.* 的優化和擴展,但是由於 javax.* 使用的越來越多,很多程序都依賴於 javax.*,所以 javax.* 也是核心的一部分了,也隨JDK一起發布。
以 org.* 開頭的是各個機構或組織發布的包,因為這些組織很有影響力,它們的代碼質量很高,所以也將它們開發的部分常用的類隨JDK一起發布。
- 在包的命名方面,為了防止重名,有一個慣例:大家都以自己域名的倒寫形式作為開頭來為自己開發的包命名,例如網路發布的包會以 com..* 開頭,w3c組織發布的包會以 org.w3c.* 開頭,微學苑發布的包會以 net.weixueyuan.* 開頭……
㈩ 什麼是java 中的類,和c中的結構體有什麼區別
C的結構只擁有數據,程序代碼是以函數形式存在的,來操作數據。
Java的類,是將代碼與數據集成在一起,特定代碼專操作特定數據,能減少很多錯誤,並且將模塊設計與系統集成分離,有利於開發大型應用和團隊協作。