06-面向对象阶段一

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linzhaoliangyan/article/details/88390455

1 面向对象概述    

    * 面向对象是软件开发过程的方法论。

    * 面向对象与面向过程区别

        * 业务场景(报销流程)

        * 可以发现有两个和财务相关的任务,

           如果思考核心在过程,

           那么这两个任务将被分散编写,

           增加了代码的维护难度 ,不符合人类思考方式

       * 面向对象程序设计是:

           * 将数据及对数据的操作封装在一起,成为一个不可分割的整体

           * 同时将具有相同特征的对象抽象成一种新的数据类型---类

       * 通过对象间的消息传递使整个系统运转,通过类的继承实现代码重用。

        

        * 面向对象的方法学,就是使我们分析、设计和实现一个系统的方法

            * OOA:面向对象的分析(Object-Oriented Analysis)

            * OOD:面向对象的设计 (Object-Oriented Design)

            * OOP:  面向对象的编程 (Object Oriendted Programming )

        * 面向对象最重要的三大特征是:

                * 封装

                * 继承    

                * 多态

        * 参考链接

            * https://blog.csdn.net/jerry11112/article/details/79027834

            * https://blog.csdn.net/qsbbl/article/details/63681736?locationNum=6&fps=1    

2 类与对象

    * 对象

        * 万物皆对象 

 

        * 身边的对象

 

        * 对象的特征——属性,方法

            * 属性——对象具有的各种特征

            * 每个对象的每个属性都拥有特定值

                * 例如:小黑和小白的年龄、姓名不一样

            * 方法——对象执行的操作

            * 总结:对象---->用来描述客观事物的一个实体,由一组属性和方法构成

 

    * 类

      * 具有相同属性和方法的一组对象的集合

      * 类是对象的类型

            * 不同于基本数据类型(int):具有方法       

      * 类是抽象的概念,对象是具体实体

            * 例如“人“ 是类,具体有小黑,小白,是对象

 

    * Java程序的类都由class定义

         * Java程序是由类构成的

 

         * 类将现实世界中的概念模拟到计算机程序中

             * public class  类名 {               

                         //定义属性部分               

                         属性1的类型 属性1;               

                         属性2的类型 属性2;                       

                                        …               

                         属性n的类型 属性n;               

                         //定义方法部分               

                                 方法1;               

                                 方法2;                     

                                     …                           

                                方法m; 

                }

        * 业务场景

            * 1 编写学生类,输出学生相关信息

                    * 学生类

                        * 属性

                          

                    * 姓名

                        * 年龄

                        * 班级

                        * 爱好

                   * 方法

                        * 显示学生信息

                   

            

        


​public class Student {
    public String name;//姓名
​
    public int age;//年龄

    public String classNo;//班级

    public String hobby;//爱好

​
    //显示学生信息
    public void showInfo() {
        System.out.println(name+"今年"+age+"岁在"+classNo+",他的爱好是"+hobby);
    }
}
​

            * 使用对象

                

 public static void main(String[] args) {
        Student s1=new Student();
        s1.name="小黑";
        s1.age=20;
        s1.classNo="大圣一班";
        s1.hobby="游泳";
        s1.showInfo();
    }

       * 2 一个景区根据游人的年龄收取不同价格的门票。

            请编写游人类,根据年龄段决定能够购买的门票价格并输出

            年龄段:大于等于18岁小于等于60收15块,其余免费

    

        

 

public class Visitor {
    public String name; //姓名
    public int age;     //年龄
    //显示信息方法
    public void show(){
        if(age>=18 && age<=60){     //判断年龄
            System.out.println(name+"年龄为"+age+",价格为15元" );
        }else{
            System.out.println(name + "的年龄为:"+age+",免费");
        }
    }
}


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Visitor v = new Visitor();      
        System.out.print("请输入姓名:");
        v.name = input.next();          
        System.out.print("请输入年龄:");
        v.age = input.nextInt();        
        v.show();                       
    }

3 类的方法

     * 类的无参方法

        * 定义方法

            public  返回值类型  方法名()  {           

             //这里编写方法的主体

                }

        * 返回值两种情况

            *如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型

            * 如果方法没有返回值,返回类型为void

 

        * 业务场景:写出机器人对象的“做饭”方法、 “扫地”方法

 

public class Rabbit {
    public String color;// 属性颜色
    // 做饭
    public void cook() {
        System.out.println("I am cooking");
    }
    // 扫地
    public void sweep() {
        System.out.println("I am sweeping");
    }
    // 说话
    public String speak() {
        String value="I can speak";
        return value;
    }
}
​

 

    


public static void main(String[] args) {
        Rabbit rabbit=new Rabbit();
        rabbit.color="白色";
        rabbit.cook();
        rabbit.sweep();
        String speak = rabbit.speak();
        System.out.println(speak);
    }

    * 方法之间允许相互调用,不需要知道方法的具体实现,提高了效率 

 

    * 方法细节

 

        

 

    * 类带参数的方法

        * <访问修饰符> 返回类型 <方法名>(<形式参数列表>)

               {    

                   //方法的主体

           }

        * 为什么要用带参数的方法

 

        * 业务需求

            * 1编写榨汁机类(Mill)

            * 2 编写mill的方法(可以根据根据放进去的水果,炸不同的汁)

            * 3 编写测试类

        

 

public class Mill {
    public String mill(String fruit) {
        System.out.println("开始搅拌....");
        return fruit+"汁";
    }
}


    public static void main(String[] args) {
        Mill m=new Mill();
        String mill = m.mill("苹果");
        System.out.println("获得"+mill);
    }

    * 业务需求

       * 创建客户业务类,实现客户姓名的添加和显示 

            * 实现思路:

               * 1、创建CustomerBiz类 

               * 2、创建带参方法addName() 

               * 3、创建方法showNames() 

               * 4、创建测试类

        

 


public class StudentsBiz {
    String[] names = new String[30];
​
    // 增加学生姓名
    public void addName(String name) {
        int index = 0;
        for (int i = 0; i < names.length; i++) {
            if (names[i] == null) {
                index = i;
                break;
            }
​
        }
        names[index] = name;
    }
​
    // 显示全部学生姓名
    public void showNames() {
        System.out.print("学生姓名:");
        for (int i = 0; i < names.length; i++) {
            if (names[i] != null) {
                System.out.print(names[i] + " ");
            }
        }
    }
}
​






public static void main(String[] args) {        
        StudentsBiz st = new StudentsBiz();
        Scanner input = new Scanner(System.in);
        for(int i=0;i<3;i++){
            System.out.print("请输入学生姓名:");
            String newName = input.next();  
            st.addName(newName);
        }
        st.showNames(); 
    }
    

            

4 包

       * 为什么需要包

           * 包——解决类的同名问题

       * 为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类

        

 

5 使用eclipse生成注释文档(javadoc)

 * 备注:

    * eclipse 生成doc文档: https://blog.csdn.net/qq_32786873/article/details/53068194

展开阅读全文

没有更多推荐了,返回首页