第三周入门——面向对象(上)

一:面向过程和面向对象的区别

面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。

面向对象:注重找“参与者”,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

二:类和对象的关系

1.万事万物皆对象
2.对象:具体的事物,具体的实体,具体的实例,模板下具体的产品
   类:对对象向上抽取出像的部分,公共的部分,形成类,类是抽象的,是一个模板

3.一般在写代码的时候先写类,然后在根据类创建对应的对象。

三:面向对象三个阶段

1.面向对象分析OOA

2.面向对象设计OOD  

3.面向对象编程OOP

步骤:

  1. 确定类名叫什么
  2. 确定类里有多少个属性,每个属性叫什么名字(只定义,程序中涉及的属性)
  3. 确定类里有多少个方法,每个方法叫什么名字;方法体(只定义,程序中涉及的方法)
  4. 通过类创建对象,通过对象 调用方法。完成任务/功能。

四:局部变量和成员变量(全局变量)的区别

区别1:代码中位置不同
         成员变量:类中方法外定义的变量
         局部变量:方法中定义的变量  代码块中定义的变量
区别2:代码的作用范围
         成员变量:当前类的很多方法
         局部变量:当前一个方法(当前代码块)   

区别3:是否有默认值
         成员变量:有
         局部变量:没有

区别4:是否要初始化
         成员变量:不需要,不建议初始化,后续使用的时候再赋值即可
         局部变量:一定需要,不然直接使用的时候报错

区别5:内存中位置不同
         成员变量:堆内存
         局部变量:栈内存   
区别6:作用时间不同
         成员变量:当前对象从创建到销毁
         局部变量:当前方法从开始执行到执行完毕

五:构造器

//创建一个Person类的具体的对象/实例/实体:
       创建对象的过程:
        1.第一次遇到Person的时候,进行类的加载(只加载一次)
        2.创建对象,为这个对象在堆中开辟空间
        3.为对象进行属性的初始化动作: new关键字实际上是在调用一个方法,这个方法叫构造方法(构造器)调用构造器的时候,如果你的类中没有写构造器,那么系统会默认给你分配一个构造器,只是我们看不到罢了。
        4. 可以自己显式 的将构造器编写出来:
                构造器的格式:
                [修饰符] 构造器的名字(){
                }
                构造器和方法的区别:
                (1).没有方法的返回值类型
                (2).方法体内部不能有return语句
                (3).构造器的名字很特殊,必须跟类名一样
        5.构造器的作用:不是为了创建对象,因为在调用构造器之前,这个对象就已经创建好了,并且属性有默认的初始化的值。
       6. 调用构造器的目的是给属性进行赋值操作的。
        注意:我们一般不会在空构造器中进行初始化操作,因为那样的话每个对象的属性就一样了。 实际上,我们只要保证空构造器的存在就可以了,里面的东西不用写。                                          7.构造器重载:                                                                                                                                               (1).一般保证空构造器的存在,空构造器中一般不会进行属性的赋值操作                                         (2).一般我们会重载构造器,在重载的构造器中进行属性赋值操作                                                     (3).在重载构造器以后,假如空构造器忘写了,系统也不会给你分配默认的空构造器了,那么你要调用的话就会出错了.                                                                                                                           (4). 当形参名字和属性名字重名的时候,会出现就近原则:在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象

六:相关例子

【1】班级和学员信息(两个类依赖)

要求:

  1. 请使用面向对象的思想,描述 班级和学员信息
  2. 分析班级和学员的属性和方法,设计班级类和学员类
  3. 在学员类中通过属性描述所在班级
  4. 通过带参构造函数实现属性赋值
  5. 编写测试方法实现信息输出

参考分析思路:

班级类:

        属性:班级编号,班级名称

        方法:介绍班级信息的方法。通过输入参数描述班级口号,介绍信息中包括编号、名称

学员类:

        属性:学号,姓名,性别,年龄,所在班级

        方法:学习的方法,描述学习状态。描述内容包括姓名、学号、年龄、所在班级信息

【2】论坛用户

要求:

  1. 请使用面向对象的思想,设计注 册用户信息
  2. 分析用户的属性和方法,设计用户类
  3. 设计带参构造函数实现属性赋值
  4. 编写测试方法实现信息输出

参考分析思路:

        用户类:

        属性: 用户昵称,密码,性别,年龄,注册时间,等级

        方法:个人信息展示

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值