posts - 1,  comments - 0,  trackbacks - 0

           

          從這章開始,就是面向對象的程序開發 ,是開發的核心。也是我們重點掌握的內容

          我們解決問題(事情)的時候,可以采用2種思維方式去解決問題

          1種就是面向過程:

                 我們之前學的程序,都是面向過程,也就是說我們寫的一行一行的代碼都是過程化

                 代碼。 關注的是細節。關注的是具體的措施。關注的是具體的語句代碼(比如說到底用循環,還是if等)

             例子:李明去取1000元。目的是生活費

                 按照面向過程的思維方式 應該是:

                 1步:李明把存折或卡拿好

                 2步:到某某銀行

                 3步:排隊

                 4步:取錢,輸入密碼

                 5步:銀行職員 要驗證密碼,正確,然后查看是否有這么多錢

                               if 沒有 就退卡

                               If 有,就給錢,刷卡

                 6步:回去。

                 如果要做一個項目,這個項目有100多個功能。如果采用面向過程

                 面向過程有什么缺點:

                        很繁瑣!考慮的細節很多。注定會丟失大的方向,使軟件不可控制!

                 就好比寫文章,先把段落寫好。然后每個段落湊在一起。這很有可能偏離中心思想!

          2種就是面向對象:

                 面向對象 是我們生活中主要的思維方式,能夠決定我們的事情方向。比如說

                 我們都有計劃,無論是學習計劃,還是創業計劃,計劃都是籠統的。概括的!

                 都不會設計到每個細節。也就是說面向對象,關注的是整體,是對象。關注的是大概方向。

                 然后每個整體,再去考慮細節。

                 就好比

          寫文章。先定 中心思想。然后考慮分為幾段。

          然后每個段落 再去面向過程

          舉例:李明去取錢

                 面向對象的話

                 關注的是 對象 李明

                 按照面向對象的方式

                 就一步:李明 這個對象 有取錢的行為

                 然后,取錢的行為 具體怎么樣 就是面向過程了

                 就可以按照上面的第一步到第6步去做!

          從現實中的例子,或問題 中可以發現,面向對象與面向過程都是不可缺少的。都是緊密聯系在一起的。面向對象 決定方向,面向過程 決定細節。

           

          一:怎么樣才能夠培養面向對象的思維方式(怎樣去在問題找對象,找類)

          1:要從問題中或事情中 找到對象。然后找到對象的特征,無論是靜態特征還是動態特征,都要發現出來。

                 怎么去找對象呢,實際上就是找名詞!

                 比如說李明這個對象 有靜態的特征 比如 身高,體重,年齡,姓名等

                                                     動態特征 比如玩,學習,取錢

                 sql 相比,表名就是對象。屬性(字段名) 就是靜態特征

          2:從對象中 抽象出

             如果有很多相同的對象,比如李明,王五,張三等等這些對象。那么這些有些什么共同的地方呢?就是靜態特征與動態特征的名字都一樣。也就是說屬性名一樣。但是屬性值不同而已 這就可以抽象出類

          所以,抓住2點,1是對象,2是類!

           

           

          對象                                          靜態特征                            動態特征

          轎車                                   顏色名:黑色                            啟動,剎車,跑(玩耍)

                                                    長度:1*1*1

                                                    品牌名:BYD

          卡車                                   顏色名:黃色                            啟動,剎車,跑(載重)

                                                    長度:3*2*4

                                                    品牌名:東風

          公交車                               顏色名:綠色                            啟動,剎車,跑(載人)

                                                    長度:4*2*3

                                                    品牌名:大巴

          3個對象 可以抽象出 因為這3個對象的 屬性名一樣。也就是靜態特征名一樣(顏色名,長度,品牌名)。值不同。動態特征 也一樣,就是里面的細節不一樣

          汽車類                 靜態特征                            動態特征

                                      顏色名,長度,品牌名       啟動,剎車,跑

          上面的例子可以發現 類的靜態特征是沒有值的。對象的靜態特征是有具體的值

          對象(object):萬事萬物都是對象。一般都是可以看到的。感覺到得實體

                 當然也可以是想象的

          對象 靜態特征 和動態特征組成

                        靜態特征:就是描述對象的一些屬性,也就是一些名詞,特征越多,對象越清晰

                     動態特征:就是對象的一些行為。動詞

          類(class):是具有相同屬性名(靜態特征)與(動態特征)行為名的一組對象的集合

          前面講的:就是怎么從問題中找對象,然后找類,一般有對象就有類。無論這個對象是一個還是幾個。

           

          二:怎么把問題中的找到的對象與類寫在java代碼中呢?

          1:先寫類,后去創建對象

          2:類的一般java語法(不是很詳細)怎么寫

                 class 類名{

                        屬性定義;//靜態特征定義 具體就是 變量的定義 String name; int age;

                        方法定義;//動態特征定義 具體就是 方法定義 void print(){}

          }

              //class 表示定義類

          //Student 表示類名為學生類

          //public 表示公共的類,能夠被其他所有類所看到

          publicclass Student {

              //學生類可以認為是學生對象的抽象

              //學生類的靜態特征為姓名,年齡,地址,學號等等

              // 這個特征怎么寫 通過變量定義來完成 可以賦值也可以不賦值

              String xuehao;

              //年齡這個特征

              intage;

              String address;

              String name;

             

              //動態特征 就是方法有哪些 玩,學習

              //玩的方法(函數)怎么寫

              publicvoid wan(){ //void 表示不存在返回值

                 System.out.println(name+"");//

              }

             

              publicvoid xuexi(){

                 System.out.println(name+"學習");

              }

             

              //main 也是一個動態特征因為它也是一個方法

              //是一個跟學生無關的方法,但是必不可少

              publicstaticvoid main(String[] args) {

                 // TODO Auto-generated method stub

              }

          }

          package test;//package 關鍵字,用來定義包的

          //public 關鍵字,表示公共的。意味著其他類都可以訪問這個類

          //class 關鍵字,表示類

          //Student 類名,類名首字母一般大寫,如果類名有多個單詞,每個單詞的首字母大寫

          publicclass Student {

             

              //靜態的特征

              //有姓名,性別,年齡,地址等這些特征去描述學生

              //這些特征通過變量的定義去描述

             

              String name;

              String sex;

              intage;

              String address;

             

              //動態的特征行為有哪些?玩,學習

              publicvoid wan(){

                 System.out.println(name+"");

              }

              publicvoid xuexi(){

                 System.out.println(name+"學習");

              }

             

              //main方法也是一種動態的特征,只不過時特殊的。

              //可以幫助我們進入程序,也就是程序入口

              publicstaticvoid main(String[] args) {

                 // TODO Auto-generated method stub

              }

          }

          publicclass Teacher {

              String name;

              intage;

              String address;

             

              publicvoid jiaoshu(){

                 System.out.println(name+"教書");

              }

             

              publicvoid wan(){

                 System.out.println(name+"");

              }

          }

          package test;

          publicclass Teacher {

              String name;

              String sex;

              intage;

             

              publicvoid wan(){

                 System.out.println(name+"");

              }

              publicvoid jiaoshu(){

                 System.out.println(name+"教書");

              }

          }

          3:創建對象

                 a、對象聲明 :類名 對象名;   //跟以前學的 int a; //聲明就是告訴內存,要預留空間

          b、對象創建(為對象分配內存空間)

                     對象名 = new 類名();

                     //準確表述應為:對象名 = new 構造方法名;

                     以上兩部分可以寫

                     類名 對象名 = new 類名();//意思就是創建關于類的一個對象為對象名

          訪問對象的屬性和方法語法

                      對象名.屬性名;

                      對象名.方法名();

          //產生一個學生類的對象

                 Student stu=new Student();

                 stu.name="張三";

                 stu.age=20;

                 stu.xuehao="t301";

                 stu.address="長沙市";

                

                 stu.wan();

                 stu.xuexi();

                

                 //再產生一個學生

                 Student stu2=new Student();

                 stu2.name="李四";

                 stu2.age=20;

                 stu2.xuehao="t301";

                 stu2.address="長沙市";

                

                 stu2.wan();

          stu2.xuexi();

          說明:對象是類的具體化(實例化) 說白了就是說類的屬性名賦值了!

               比如stu.name=”張三屬性名為name 值為張三

                  是對象的抽象化(模糊化說白了就是類的屬性名沒有賦值沒有賦值

          也就意味著可以為任意值

          類可以創建任意個對象

          一個類可以產生任意個對象。每一個對象都要占用內存,每一個對象都是不同的

          4:以下的例子有個問題:如果想要輸出每個屬性的內容值,有什么方法嗎?

           2種方法

              第一種:在類中添加如下方法

                 publicvoid print(){

                 System.out.println("姓名="+name+",性別="+sex+",年齡="+age+",地址="+address);

              }

                 然后在main方法中添加

                 stu1.print();//輸出stu1對象的信息

              第二種:可以在任意類中添加如下方法(推薦使用)

                 //public String toString() 這是固定寫法

              //toString()方法是屬于Object類。任意類都可以寫這個方法

              //方法的作用就是格式化輸出屬性信息

              public String toString(){

                 return"姓名="+name+",性別="+sex+",年齡="+age+",地址="+address;

              }

                 然后在main方法添加如下代碼

              System.out.println(stu1);

          package test;//package 關鍵字,用來定義包的

          //public 關鍵字,表示公共的。意味著其他類都可以訪問這個類

          //class 關鍵字,表示類

          //Student 類名,類名首字母一般大寫,如果類名有多個單詞,每個單詞的首字母大寫

          publicclass Student {

             

              //靜態的特征

              //有姓名,性別,年齡,地址等這些特征去描述學生

              //這些特征通過變量的定義去描述

             

              String name;

              String sex;

              intage;

              String address;

             

              //動態的特征行為有哪些?玩,學習

              publicvoid wan(){

                 System.out.println(name+"");

              }

              publicvoid xuexi(){

                 System.out.println(name+"學習");

              }

             

              //main方法也是一種動態的特征,只不過時特殊的。

              //可以幫助我們進入程序,也就是程序入口

              publicstaticvoid main(String[] args) {

                 // TODO Auto-generated method stub

                 //產生2個學生,一個是張三,另外一個是李四

                 Student stu1=new Student();

                 //給對象名stu1的每一個屬性賦值

                 stu1.name="張三";

                 stu1.age=20;

                 stu1.address="長沙市";

                 stu1.sex="";

                

                 //對象名stu1 去調用方法

                 stu1.wan();

                 stu1.xuexi();

                

                

                 Student stu2=new Student();

                 //給對象名stu2的每一個屬性賦值

                 stu2.name="李四";

                 stu2.age=20;

                 stu2.address="長沙市";

                 stu2.sex="";

                

                 //對象名stu1 去調用方法

                 stu2.wan();

                 stu2.xuexi();

                

              }

          }

          posted on 2010-06-04 15:11 gjy 閱讀(126) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黔南| 临朐县| 白河县| 军事| 抚州市| 沙坪坝区| 海门市| 荔波县| 兴海县| 重庆市| 乌拉特中旗| 葫芦岛市| 富平县| 视频| 喀什市| 静海县| 贡觉县| 宁南县| 桂东县| 沛县| 清水县| 广元市| 南平市| 广饶县| 调兵山市| 宜川县| 海城市| 威远县| 五指山市| 巴彦淖尔市| 大荔县| 南京市| 平罗县| 衢州市| 江津市| 格尔木市| 巴里| 寿宁县| 福清市| 谷城县| 城固县|