第八节(面向对象,面向过程)

1:面向过程与面向对象的区别:
为什么会出现面向对象分析方法?
   因为现实世界太复杂多变,面向过程的分析方法无法满足

   面向过程?

采用面向过程必须了解整个过程, 每个步骤都有因果关系, 每个因果关系都构成了一个步骤,多个步骤就构成了一个系统, 因为存在因果关系每个步骤很难分离, 非常紧密, 当任何一步骤出现问题,将会影响到所有的系统。如:采用面向过程生产电脑,那么他不会
分 CPU 、主板和硬盘,它会按照电脑的工作流程一次成型。

   面向对象?
面向对象对会将现实世界分割成不同的单元(对象) ,实现各个对象,如果完成某个功能,
只需要将各个对象协作起来就可以

2:面向对象的三大特性:

万事万物皆对象 , 反映了现实世界中具体事物

封装 (电视机盒子)

继承 (老爸有钱,儿子就有钱)

多态 ( 同一个行为具有多个不同表现形式或形态的能力 )

java中的类

类是对具有共性事物的抽象描述,它描述一类对象的行为和状态(抽象的过程,实际不存在 引用数据类型)来看, 基于面向对象可以

一个类可以包含以下类型变量

局部变量:

在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁

成员变量:

成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

3:类与对象的概念

对象:

对象是类的一个实例,有状态和行为(例如,一条狗是一个对象,它的状态有:颜色、名字、品种)

行为有:摇尾巴、叫、吃等。(具体的实物)

类:类是对具有共性事物的抽象描述,它描述一类对象的行为和状态(抽象的过程,实际不存在 引用数据类型

类是对象的集合,对象是类的具体表现形式

4:面向对象的封装性

封装其实就是封装属性, 让外界知道这个类的状态越少越好

5:构造函数

构造方法主要用来创建类的实例化对象, 可以完成创建实例化对象的初始化工作, 声明格式:

构造方法修饰词列表 类名(方法参数列表)

构造方法修饰词列表:public 、proteced、private

类的构造方法和普通方法一样可以进行重载

构造方法具有的特点:

构造方法名称必须与类名一致

构造方法不具有任何返回值类型,即没有返回值,关键字 void 也不能加入,加入后就不是构造方法了,就成了普通的方法了

任何类都有构造方法, 如果没有显示的定义, 则系统会为该类定义一个默认的构造器, 这个构造器不含任何参数, 如果显示的定义

了构造器, 系统就不会创建默认的不含参数的构造器了

/*
    定义一个现实生活中的 学生的类
    Student 是一个类,学生 ,一种引用类型
    Student 是在概念上是一个定义,现实生活中是不存在的
    语法:
        类的修饰符 class 类名 extends 父对象的名称 implements 接口的名称{
            类体:属性和方法组成
        }
*/
public class Student{

    // 属性
    // 学号
    int id; 

    // 成员变量,实例变量,非静态变量
    // id是对象的级别的,必须现有对象才能访问,不能使用类直接访问
    // 姓名
     public static String name = "ming";

    // 性别
    boolean sex;

    // 年龄
    int age;

    // 住址
    String address;
    // 方法
}
/*

    对象的创建和使用
*/
public class OOTest01{

    // java入口
    public static void main(String[] args){

        // 创建对象
        // Student 是一个学生类
        // stu 是一个局部变量,这个局部变量时Student类型,也就是一个引用类型
        // stu 这个局部变量称之为 引用,引用中保存了对象在堆中 的内存地址。
        // 通过“引用” 去间接访问堆中的对象
        Student stu = new Student();

        // 一个类还可以创建多个对象
        Student stu1 = new Student();
        // 获取属性
        // name 是成员变量,对象相关,必须的现有对象才能访问,必须使用“引用.”
        // 如果跟对象不想关,但是还需要访问:改变的权限 使用“静态变量” 声明static即可
        System.out.println(Student.name);
        String n = stu.name;

        System.out.println("学生姓名:"+n);
        System.out.println("学生编号:"+stu.id);
        System.out.println("学生年龄:"+stu.age);
        System.out.println("学生性别:"+stu.sex);
        // 使用对象
        // 访问成员变量时,必须使用“引用.”        

    }

}
例2:/*
    定义一个ming类型
    类 = 属性 + 方法;

    面向对象的封装性指的是:

        1. 属性私有化;
        2. 对外提供公开的setter and getter

        set方法和get方法 我们的方法名应该遵循规范。

*/
public class ming{

    // 属性
    // 成员变量,实例变量,非静态变量
    // private 修饰数据的 只能在本类中访问
    private int age;
    // set 赋值
    public void setAge(int x){
        // 条件判断
        if(x < 0 || x > 150){
            System.out.println("年龄不合法 !");
            return;
        }
        age = x;
    }

    // get 获取
    // 成员方法必须使用“引用.”的方式来访问
    public int getAge(){    // 成员方法,实例方法,非静态方法
        return age;
    }
}

/*
    面向对象的封装性
*/

public class OOTest02{

    public static void main(String[] args){

        // 创建ming类型的对象
        ming a = new ming();

        // 读取ming的年龄
        //System.out.println(a.age); // Error,因为 age是私有属性

        // 赋值
        // a.age = 30; // Error,因为 age是私有属性

        // 利用set方法赋值
        a.setAge(10000);

        // 读取get
        int age = a.getAge();

        System.out.println("ming的年龄:"+age);
    }
}
例题3:/*
    构造函数

    1. 构造方法的语法:

        【构造方法的修饰词列表】 类名 (方法参数列表){
            方法体;
        }

    2. 构造方法的方法名和类名一致

    3. 构造方法的作用是什么?
        <1> 创建对象
        <2> 给成员变量赋值(初始化成员变量)

    4. 构造方法如何调用
        new 构造方法名(实参);  在堆中开辟空间存储对象

    5. 如果一个类 没有提供任何的构造方法,系统默认提供无参构造方法
    如果一个类,已经手动的提供了构造方法,那么系统不会再提供任何的构造方法;

    6. 成员变量到底什么时候赋值?
        只有在调用方法的时候,才会给成员变量赋值
*/

public class User{

    // 属性
    // 成员变量,实例变量,非静态变量
    String name ;
    int age;

    // 定义一个构造方法(构造方法构成了 重载)
    User(){
        System.out.println("我是第一个构造方法");
        name = "ming";
        age = 30;
    }

    User(int a){
        age = a;
    }

    User(String n){
        name = n;
    }

    User(String n,int a){
        name = n;
        age = a;
    }
}
/*

    构造函数(构造方法,构造器,Constructor)

    语法:

        构造方法 和普通方法一样,都可以进行重载

*/

public class  ConstructorTest01{

    public static void main(String[] args){

        // 创建User类型对象

        User u = new User();

        User u1 = new User(30);

        User u2 = new User("ming哥");

        User u3 = new User("ming",40);
        System.out.println(u.name);
        System.out.println(u.age);

        System.out.println(u1.name);
        System.out.println(u1.age);

        System.out.println(u2.name);
        System.out.println(u2.age);

        System.out.println(u3.name);
        System.out.println(u3.age);
    }
}
时间: 2024-09-30 16:15:35

第八节(面向对象,面向过程)的相关文章

面向过程和面向对象编程

 编程方式可分为:面向过程和面向对象 面向过程:面向过程是我们比较原始的编程方式,它是根据计算机的思维方式进行编程,其缺点是当遇到比较复杂的程序时运用这种编程实现起来比较困难.----------面向对象:万物皆对象,现实生活中每个实实在在的东西都可以称之为对象,面向对象它是人类有史以来就具备的思维方式. 例如:我们看到一辆汽车首先我们就会关注它的颜色.大小.价格.款式等等,这些东西称之为属性或者叫做特征.接下来我们就会想到这辆汽车它能做什么,像这种就是可一称之为方法或者叫做行为.而对于我们没个

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

面向过程与面向对象(一)

一.面向过程与面向对象:   面向过程: 重过程:解决问题,考虑的是解决问题的流程 解决问题的思路清晰,但拓展性不强   面向对象: 重对象:解决问题,找到解决问题的对象 解决问题的思路可能不止一条(理解解决问题的难度增加),但拓展性强 二.名称空间: 能产生名称空间的有:文件 | 函数 | 类 能产生名称空间的对象有__dict__这个值,通过该这个值访问到名字与地址的对应关系 def func(): pass func.__dict__['index'] = 10000 print(func

简说面向过程与面向对象

昨天白天,因为在室外活动,无事可做,所以我思考了一天,在想怎么才能比较清晰的向人解释这两个概念.所以我对这两个概念的字面意思做了一下详细的解释.没想到,这可能真的会帮助我们非常简单的理解这两个概念. 面向:从字面上理解面向,就是我们的脸对着的地方,引申为我们能看到. 过程: 过程是事物从开始,到发展,到结束的整个经历 那么面向过程就是:我们能看到, 一个事物从 开始->发展->结束. 这对于我们写程序的人来说,可能会有感触,因为一开始我们写程序时.都是按照事件的发展.去安排计算机,一步一步的做

【第二周作业】面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

书上的一些概念这里不再复述,仅谈谈自己通过阅读教材.上课听讲后自己的一些理解: 面向过程分析方法注重自顶向下,逐层分析,把整个软件系统的功能逐布分解,各个击破.可以用生活中的一个例子来加以理解——去食堂吃饭.到达食堂(比如琴湖食堂)后,要遵从排队——打饭——阿姨打菜——拿筷子——找位子坐好——开吃,整个过程强调顺序性,比如不拿筷子就坐下是不行的,除非拿手抓.面向过程就是将软件系统所需要实现的功能按照以上类似的思路逐步细分,一步一步要做什么都要分析清楚. 面向对象分析方法则注重分析整个系统的逻辑结

面向过程与面向对象的区别-遁地龙卷风

下面例子根据C和Java编写 面向过程与面向对象之间的区别在于认知世界的方式,后者在前者的基础上提供了更高的抽象层次-类. 也就是抽象.封装.继承.多态. 举个例子 输出 小明20岁<=>A,小明打篮球<=>B. 面向过程相当于在类中调用main方法输出A.B public class Test { public static void main( String[] args ) { System.out.println( "小明去上学" ); System.o

心得 : 面向对象和面向过程的区别

面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思想.就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用. "面向对象"是以"对象"为中心的编程思想. 简单的举个例子:汽车发动.汽车到站.汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身.针对上述两个事件,

面向对象与面向过程

一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则. 二.面向对象的三大特征: ①封装(Encapsulation)②继承(Inheritance)③多态(Polymorphism) 面向对象简称OOP( Object Oriented Programming) 面向过程(procedure oriented programm