java對象設計
Ⅰ java 人為對象如何設計屬性及方法
舉個例子:
class People{
private int id; //身份證
private String name; //姓名
private String address; //地址
private int age; //年齡
private String birthday; //出生日期(可用Date類型)
private String favor; //愛好
private String telNumber; //電話號碼
private String qq; //QQ號
private String email; //e_mail
public People(int id, String name, String address, int age, String birthday, String favor, String telNumber, String qq, String email) {
this.id = id;
this.name = name;
this.address = address;
this.age = age;
this.birthday = birthday;
this.favor = favor;
this.telNumber = telNumber;
this.qq = qq;
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFavor() {
return favor;
}
public void setFavor(String favor) {
this.favor = favor;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getTelNumber() {
return telNumber;
}
public void setTelNumber(String telNumber) {
this.telNumber = telNumber;
}
}
Ⅱ JAVA面向對象設計有哪些原則
甚至還有經驗豐富的Java程序員沒有聽說過OOPS和SOLID設計原則,他們根本不知道設計原則的好處,也不知道如何依照這些原則來進行編程。 眾所周知,Java編程最基本的原則就是要追求高內聚和低耦合的解決方案和代碼模塊設計。查看Apache和Sun的開放源代碼能幫助你發現其他Java設計原則在這些代碼中的實際運用。Java DevelopmentKit則遵循以下模式:BorderFactory類中的工廠模式、Runtime類中的單件模式。 原則1:DRY(Don'trepeatyourself) 即不要寫重復的代碼,而是用"abstraction"類來抽象公有的東西。如果你需要多次用到一個硬編碼值,那麼可以設為公共常量;如果你要在兩個以上的地方使用一個代碼塊,那麼可以將它設為一個獨立的方法。SOLID設計原則的優點是易於維護,但要注意,不要濫用,plicate不是針對代碼,而是針對功能。這意味著,即使用公共代碼來驗證OrderID和SSN,二者也不會是相同的。使用公共代碼來實現兩個不同的功能,其實就是近似地把這兩個功能永遠捆綁到了一起,如果OrderID改變了其格式,SSN驗證代碼也會中斷。因此要慎用這種組合,不要隨意捆綁類似但不相關的功能。 原則2:封裝變化 在軟體領域中唯一不變的就是"Change",因此封裝你認為或猜測未來將發生變化的代碼。OOPS設計模式的優點在於易於測試和維護封裝的代碼。如果你使用Java編碼,可以默認私有化變數和方法,並逐步增加訪問許可權,比如從private到protected和notpublic.有幾種Java設計模式也使用封裝,比如Factory設計模式是封裝"對象創建",其靈活性使得之後引進新代碼不會對現有的代碼造成影響。 原則3:開閉原則 即對擴展開放,對修改關閉。這是另一種非常棒的設計原則,可以防止其他人更改已經測試好的代碼。理論上,可以在不修改原有的模塊的基礎上,擴展功能。這也是開閉原則的宗旨。 原則4:單一職責原則 類被修改的幾率很大,因此應該專注於單一的功能。如果你把多個功能放在同一個類中,功能之間就形成了關聯,改變其中一個功能,有可能中止另一個功能,這時就需要新一輪的測試來避免可能出現的問題。 原則5:依賴注入或倒置原則 這個設計原則的亮點在於任何被DI框架注入的類很容易用mock對象進行測試和維護,因為對象創建代碼集中在框架中,客戶端代碼也不混亂。有很多方式可以實現依賴倒置,比如像AspectJ等的AOP(AspectOrientedprogramming)框架使用的位元組碼技術,或Spring框架使用的代理等。 原則6:優先利用組合而非繼承 如果可能的話,優先利用組合而不是繼承。一些人可能會質疑,但我發現,組合比繼承靈活得多。組合允許在運行期間通過設置類的屬性來改變類的行為,也可以通過使用介面來組合一個類,它提供了更高的靈活性,並可以隨時實現。《EffectiveJava》也推薦此原則。 原則7:里氏代換原則(LSP) 根據該原則,子類必須能夠替換掉它們的基類,也就是說使用基類的方法或函數能夠順利地引用子類對象。LSP原則與單一職責原則和介面分離原則密切相關,如果一個類比子類具備更多功能,很有可能某些功能會失效,這就違反了LSP原則。為了遵循該設計原則,派生類或子類必須增強功能。 原則8:介面分離原則 採用多個與特定客戶類有關的介面比採用一個通用的涵蓋多個業務方法的介面要好。設計介面很棘手,因為一旦釋放介面,你就無法在不中斷執行的情況下改變它。在Java中,該原則的另一個優勢在於,在任何類使用介面之前,介面不利於實現所有的方法,所以單一的功能意味著更少的實現方法。 原則9:針對介面編程,而不是針對實現編程 該原則可以使代碼更加靈活,以便可以在任何介面實現中使用。因此,在Java中最好使用變數介面類型、方法返回類型、方法參數類型等。《EffectiveJava》和《headfirstdesignpattern》書中也有提到。 原則10:委託原則 該原則最典型的例子是Java中的equals()和hashCode()方法。為了平等地比較兩個對象,我們用類本身而不是客戶端類來做比較。這個設計原則的好處是沒有重復的代碼,而且很容易對其進行修改。 總之,希望這些面向對象的設計原則能幫助你寫出更靈活更好的代碼。理論是第一步,更重要的是需要開發者在實踐中去運用和體會。
Ⅲ JAVA中什麼叫基於對象的設計程序
面向對象是把所有東西看成一個對象去操作,利於理解,擴展,維護等,也就是它的特性:封裝、繼承、多態帶來的一些好處
相關的還有面向過程、面向切面等
為什麼java叫面向對象,是因為早些時候很多語言都面向過程的吧,像c
和一些腳本語言
bat
等
總的來說,面向過程就是一行行執行,可以有跳轉到其它函數繼續一行行執行
而java是可以通過調用其它對象的方法去執行,並且可以繼承,介面多實現等,所以是面向對象的編程,也就是你說的基於對象的程序設計
Ⅳ 面向程序對象設計就是java
面向對象程序設計中的概念主要包括:對象、類、數據抽象、繼承、動態綁定、數據封裝、多態性、消息傳遞。通過這些概念面向對象的思想得到了具體的體現。
面向對象語言包括Object-C,C++,Self,Eiffl,smalltalk,java等等。
java只是面向對象語言中的一種語言。
Ⅳ Java面向對象編程類的設計問題
英雄類
{
私有
名字
私有
氣血
私有
經驗
私有
等級
set氣血(氣血)//用來修改氣血
{
}
set經驗(傳某種怪物)
{
假如怪物的氣血等於0
經驗++多少;
if(經驗==?)
{
升級
}
}
get氣血(氣血)//用來查看氣血
{
}
}
怪物類
{
向英雄一樣有自己的屬性方法
}
某種怪物類
繼承怪物類
{
有自己的屬性方法
}
Ⅵ java設計一個對象類,該類具有下列服務:
/**
* 文字列が半形英數字のみかをチェックする
*
* @param txt
* チェック文字列
* @return boolean 空文字列の場合は、trueを返し、<br>
* 文字列はShift_JISのエンコードに変換失敗の場合、falseを返す<br>
*
*/
public static final boolean isHalfENGNum(String txt) {
StringBuffer checkText = null;
if (txt == null) {
return true;
}
checkText = new StringBuffer(txt);
for (int i = 0; i < checkText.length(); i++) {
String subcheckText = checkText.substring(i, i + 1);
if ((matches(subcheckText, "([a-zA-Z]+)") == false) && (matches(subcheckText, "([0-9]+)") == false)) {
return false;
}
}
return true;
}
/**
* 文字列が半形數字のみかをチェックする
*
* @param txt
* チェック文字列
* @return boolean 空文字列の場合は、trueを返し、<br>
* <br>
*
*/
public static final boolean isHalfNum(String txt) {
if (txt == null) {
return true;
}
if (matches(txt, "([0-9]+)")) {
return true;
}
return false;
}
對日期校驗只用寫一個正則表達式
^[1-9]\d{3}[-](0[1-9]|1[012])[-]([0][1-9]|[12]\d|3[01])$
然後把你傳進來的字元串與這個正則表達式比較!
身份證同樣
^[1-9]\d{17}$這是對18位的身份證進行校驗
Ⅶ java設計一個人的類
importjava.util.Random;
publicclassPerson{
//姓名
privateStringname;
//性別
privateStringsex;
//年齡
privateintage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
//方法一
publicvoidfirstfunction(){
this.setName("風吹激動單達產");
this.setSex("人妖");
System.out.println("睡覺:"+this.getName()+"正在睡覺。");
System.out.println("跳舞:一個"+this.getSex()+"人正在跳舞,左三圈右三圈...");
}
//方法二
publicStringsecondfunction(){
this.setName("風吹激動單達產");
Stringhua="";
Randomra=newRandom();
intaa=(int)(0+Math.random()*(2+1));
if(aa==0){
hua="玫瑰花";
}elseif(aa==1){
hua="百合花";
}elseif(aa==2){
hua="月季花";
}else{
hua="菊花";
}
returnthis.getName()+"送給潘金蓮一束"+hua;
}
//方法三
@SuppressWarnings("unused")
publicvoidthirdfunction(intmoney,Stringname){
this.setName("風吹激動單達產");
if(name!=null||name!=""){
System.out.println(name+"正在打"+this.getName());
}else{
if(money<=0){
System.out.println("你是小氣鬼。");
}elseif(money>0&&money<=50){
System.out.println("謝謝你!");
}elseif(money>50&&money<=10000){
System.out.println("你是個好人!");
}else{
System.out.println("你是我的救星啊!我代表八輩祖宗感謝你!做鬼都不會放過你的!");
}
}
}
//方法四
(intmoney){
Stringyan="";
switch(money){
case0:
yan="無煙";
break;
case1:
yan="無煙";
break;
case2:
yan="新石家莊煙";
break;
case5:
yan="七匹狼煙";
break;
case6:
yan="紅石二代煙";
break;
case7:
yan="紅塔山煙";
break;
case10:
yan="玫瑰鑽煙";
break;
case15:
yan="金石煙";
break;
case23:
yan="玉溪煙";
break;
case65:
yan="中華煙";
break;
default:
yan="無煙";
break;
}
returnyan;
}
publicintfourthfunctionoushu(intoushu){
intstart=0;
if(oushu>1){
for(inti=1;i<oushu;i++){
if(i%2==0){
start++;
}
}
}
returnstart;
}
publicintfourthfunctiondanshu(intone,inttwo){
intsum=0;
if(one<two){
for(inti=one;i<two;i++){
sum=sum+i;
}
sum=sum-one;
}elseif(one>two){
for(inti=two;i<one;i++){
sum=sum+i;
}
sum=sum-two;
}else{
sum=0;
}
returnsum;
}
publicstaticvoidmain(String[]args){
Personss=newPerson();
System.out.println(ss.fourthfunctionmoney(5));
}
}
Ⅷ java面向對象設計
不知復道你想設計成什麼樣子。制。。最簡單的話可以:
public class BaseDoor{
public void openDoor(){...}
public void closeDoor(){...}
}
然後其他的門繼承這個類。
不過更合理的設計是使用策略模式~不是很好寫。。。你可以上網查一下資料。希望你點贊~