面向对象--类与对象及其使用


面向对象的思想概述

面向过程思想概述

那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,

把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。

面向过程的代表语言:C语言

什么是面向对象的思想

面向对象的思想是基于面向过程思想发展而来的。

  • 面向过程:强调的是实现功能每一个步骤
  • 面向对象:强调的是对象,然后由这个对象去调用功能

面向对象的特点:

  • 是一种更符合我们思想习惯的思想
  • 可以将复杂的事情简单化
  • 将我们从执行者变成了指挥者

举例:

吃饭:

面向过程的思想:先去菜市场买菜--洗菜--切菜--做菜--装盘--吃

面向对象的对象:你点外卖--(点菜)--厨师(做菜)--外卖小哥(送餐)

伪代码举例

需求:将大象装进冰箱里

    面向过程的思想:

        分析过程:

            1、打开冰箱门

            2、把大象装进冰箱

            3、关闭冰箱门

        伪代码实现:

            class Demo{

                public static void main(String[] args){

                    System.out.println("打开冰箱门");

                    //打开冰箱门这个动作,肯定不是一行代码就搞得定的

                    //现在仅仅是为了演示面向过程的编码思想

                    //假设我们将来这个程序要打开很多次冰箱门

                    //可以将打开冰箱门这个功能封装成一个方法然后去调用

                    //把大象装进冰箱以及关闭冰箱门这两个功能也可以封装成方法

                    open();

                    put();

                    close();

                }

                public static void open(){

                    //写打开冰箱门的功能实现代码

                }


                public static void put(){

                    //写把大象装进冰箱的功能实现代码

                }

                public static void close(){

                    //写关闭冰箱门的功能实现代码

                }

            }


    面向对象的思想:

        使用面向对象的思想去实现该需求:

  • 我们需要考虑该需求中有哪些类?
  • 每一个类中都有些什么呢?
  • 类与类之间的关系又是什么呢?

        1、我们需要考虑该需求中有哪些类?

            如何分析有哪些类

  • 方式1:需要用到UML这门课的知识
  • 方式2:名词提取法

            有哪些类呢?

                通过名词提取法,我们知道有大象类,冰箱类外加一个测试类

        2、每一个类中都有些什么呢?

            大象类:

                属性:体积,鼻子,脚掌,耳朵...

                功能:被装进冰箱,喝水,叫....

            冰箱类:

                属性:立方体,材质,功率...

                功能:打开冰箱门,关闭冰箱门,冷藏,保鲜....

            测试类:

                main方法,实现需求

        3、类与类之间的关系又是什么呢?

            测试类中使用大象类和冰箱类的功能

    伪代码实现:

        //大象类

        class Elephant{

            体积;

            鼻子;

            脚掌;

            耳朵;

            被装进冰箱();

            喝水();

            叫();

        }

        //冰箱类

        class IceBox{

            立方体;

            材质;

            功率;

            打开冰箱门()

            关闭冰箱门()

            冷藏()

            保鲜()

        }

        //测试类

        class Demo2{

            public static void main(String[] args){

                调用冰箱类中的打开冰箱门的方法;

                调用大象类中的被装进冰箱的方法;

                调用冰箱类中的关闭冰箱门的方法;

            }

        }

3、面向对象开发,设计,特征

面向对象的开发:

    实际上就是不断创建对象,使用对象,指挥对象做事情的过程

面向对象的设计:

    其实就是管理和维护类与类之间的关系的过程

面向对象的特征:

    1、封装

    2、继承

    3、多态

类与对象关系

我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。

比如:去超市买东西的计费系统,去银行办业务的系统。 

我们如何表示一个现实世界事物呢:

属性    就是该事物的描述信息

行为    就是该事物能够做什么

举例:学生事物

我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。 

类:是一组相关的属性和行为的集合

对象:是该类事物的具体体现 

我们学习编程语言的目的,其实就是用来模拟现实世界的事物的
而我们现在所学习的语言叫做: java
java中最基本的单位:类
所以,我们通过java把现实世界的事物给描述出来
所以我们要学习如何用java去描述一个现实世界的事物
得出一个对应关系:
事物:                                   类:
    属性:用来描述事物的信息                  成员变量:用来描述事物的信息          
    行为:用来描述事物能够做什么              成员方法:用来描述事物能够做什么 

类:是一组成员变量和成员方法的集合,其实是一个抽线的概念
对象:是该类事物的具体表现,具体到某一个个体

类的定义 

现实世界的事物

属性    人的身高,体重等

行为    人可以学习,吃饭等

Java中用class描述事物也是如此

成员变量    就是事物的属性

成员方法    就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法) 

举例:
    事物:人                               
        属性:五官,姓名,性别,年龄...         
        行为:吃饭,学习,说话,敲代码...

    类:Person
        成员变量:facialFeatures,name,gender,age
        成员方法:eat(),study(),talk(),coding()

    对象:是该类事物的具体表现,具体到某一个个体
        学生,老师,医生,程序员...

伪代码程序示例

    类是用来描述现实世界中的事物

        现实世界中

             学生:

                属性:学号,姓名,年龄

                行为:吃饭,学习,睡觉

        类中:

            Student:

                成员变量:id,name,age

                成员方法:eat(),study(),sleep()
 
public class Student {

    //定义该类中的成员变量

    //格式:

    //      修饰符 数据类型 变量名;

    //目前还没有系统地学习过修饰符,目前不加修饰符

    //学号

    int id;

    //姓名

    String name;

    //年龄

    int age;

    //定义成员方法

    //目前定义的格式:

    //  修饰符 返回值类型 方法名(参数列表){..}

    //目前修饰符使用 public static

    //吃饭

    public static void eat(){

        System.out.println("吃饭");

    }

    //学习

    public static void study(){

        System.out.println("学习");

    }

    //睡觉

    public static void sleep(){

        System.out.println("睡觉");

    }

测试学生类

        创建对象,调用成员变量和方法

public class StudentDemo {

    public static void main(String[] args) {

        //如何创建对象呢?

        //格式: 类 对象名(自定义) = new 类名(...);

        //创建一个学生对象

        Student xiaozhu = new Student();


        //如何获取成员变量呢?

        //格式:

        // 对象名.成员变量名

        //获取xiaozhu的学号

        System.out.println(xiaozhu.id);

        //获取xiaozhu的姓名

        System.out.println(xiaozhu.name);

        //获取xiaozhu的年龄

        System.out.println(xiaozhu.age);


        System.out.println("=================赋值后:=================");

        //由于我们打印发现结果都是系统给的默认值

        //现在我们想给这个对象的成员变量进行赋值

        //给成员变量赋值的格式:

        // 对象名.成员变量名 = 成员变量对应的数据类型的值;

        //给xiaozhu这个对象的学号进行赋值

        xiaozhu.id = 10001;

        //给xiaozhu这个对象的姓名进行赋值

        xiaozhu.name = "朱佳乐";

        //给xiaozhu这个对象的年龄进行赋值

        xiaozhu.age = 18;

        //获取xiaozhu的学号

        System.out.println(xiaozhu.id);

        //获取xiaozhu的姓名

        System.out.println(xiaozhu.name);

        //获取xiaozhu的年龄

        System.out.println(xiaozhu.age);

        //如何调用该对象中的方法

        //格式:

        //      对象名.成员方法

        //调用xiaozhu中的吃饭方法

        xiaozhu.eat();

        xiaozhu.study();

        xiaozhu.sleep();

    }