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 阅读(91) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: