面向对象

  1. 概述:

    [!tip|style:flat|label:提示]

    如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合?于大型开发场景。两种开发思想各有长 短。 对于面向过程的思想:需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做) 对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心谁帮我做这件事(偷懒,找人帮我做) 面向对象的三大特征有:封装性、继承性、多态性。

  2. 生活举例

    [!tip | style:flat|label:提示]

    1. 洗衣服

      面向过程(手洗):脱衣服、找一个盆、加水、加洗衣粉、浸泡30分钟、搓洗、拧衣服、倒掉水、再加水、漂洗、拧衣服、倒掉水、晾衣服。

      面向对象(机洗):脱衣服、放入洗衣机、按下开关、拿出衣服晾晒

    2. 买电脑

      面向过程(自己买):需要电脑、查询參数信息、横向比较机型、了解打折信息、与店家讨价还价、下单、收快递、开机验货、确认收货。

      面向对象(找人买):需要电脑、找秘书帮我买、收电脑。

    3. 吃饭

      面向过程(自己做):我饿了、买菜、洗菜择菜、切菜、起火、炒菜、盛菜、吃饭、刷碗。

      面向对象(出去买):我饿了、买饭、

类和对象

面向对象编程的2个非常重要的概念:类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念一一类

1. 类

我们学习编程语言,就是为了模拟现实世界中的事物,实现信息化来提高工作效率。例如银行的业务系统、超市的结账系统等,都是如此、

面向对象的语言当中,“类"就是用来模拟现实事物的,

那么模拟现实世界的事物通常从两方面模拟:

  1. 属性:事物的特征描述信息,用于描述某个特征是什么。静
  2. 行为:事物的能力行动方案,用于说明事物能做什么

类中也有属性、行为两个组成部分,而“对象”是类的具体实例。例如:

  1. 类:抽象的,是一张"手机设计图"
  2. 对象:具体的,是一个"真正的手机实例"

手机

[!tip|style:flat|label:提示]

奔驰汽车 类 奔驰smart 类 张三的那辆奔驰smart 对象 狗 类 大黃狗 类 李四家那只大黃狗 对象 水果 类 苹果 类 红苹果类红富士苹果 类 我嘴里吃了一半的苹果 对象

类的构成

类(class)由三个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对进行操作的方法(行为)

举例:

  1. 人类设计,只关心3样东西
    • 事物名称(类名):人(Person)
    • 属性:身高(height)丶年龄(age)
    • 方法(行为/功能):跑(run)丶打架(fight)
  2. 狗类的设计
    • 类名:狗(Dog)
    • 属性:品种丶毛色丶性别丶名字丶腿儿的数量
    • 方法:(行为/功能):叫丶跑丶咬人丶吃丶摇尾巴

类的抽象

如何把日常生活中的事物抽象成程序中的类?

拥有相同(或者类侧属性和行为的对象都可以抽像出一个类

方法:一般名词都是类(名词提炼法)

坦克发射3颗炮弹轰掉了2架飞机

  1. 坦克-》可以抽象成类
  2. 炮弹--》可以抽象成类
  3. 飞机-》可以抽象成类

小明在公车上牵着一条叼着热狗的狗

  1. 小明--》人类
  2. 公车--》交通工具类
  3. 热狗--》食物类
  4. 狗--》狗类

类的定义

# 类的定义
class Dog(object):  # 推荐使用这种方式
    pass


# 定义方式2
class Dog1():  # 括号中的内容可以不写
    pass


# 定义方式3
class Dog2:  # 括号可以省略
    pass


"""
新式类:直接或间接继承object类的类,在python3中,所以的类默认继承object类,即python3中所有的类都是新式类
旧式类(经典类): 已经过时,不推荐使用
"""

创建对象

在代码中,对象是由类创建的

# 定义类
class Dog(object):
    # 在类中定义的函数,称为方法,函数的所有知识都可以使用
    def play(self):  # 暂时不管self
        print("小狗正在玩耍")


# 创建对象 变量 = 类名()
dog = Dog()  # 类名()创建对象
print(id(dog))

dog1 = Dog()
print(id(dog1))


# 调用方法 对象.方法名()
dog.play()
dog1.play()

results matching ""

    No results matching ""